Bueno a quien en el mundo de la programación no se le ha presentado un momento en el que tienen que hacer un programa que va a utilizar base de datos y se comienza a pensar en la correcta solución a utilizar para el programita. Recordemos que como buenos programadores que somos primero haremos bien el diseño de nuestra futura aplicación y tomaremos en cuenta los pro y los contra de las diferentes alternativas para darle solucion a nuestro problema.
Se pueden presentar diferentes ambientes en los que se desenvolvera nuestro programa. Los casos que vale mas la pena mencionar serian los siguientes.
1- Entorno de varias maquinas en red , con una maquina dispuesta a hacer las funciones de servidor para nuestro programa.
2- Entorno de varias maquinas en red , con una maquina dispuesta a compartir el folder en la que se encuentra nuestra aplicacion y que podamos ejecutar la misma(aplicacion) en modo de red.
3- Una sola maquina ejecutando la aplicación.
A mi manera de verlo los casos 2 y 3 vendrian a caer en un mismo tipo de programación y el caso 1 seria un tipo diferente.
Posibles Soluciones
Para 1: Gestor de Base de datos de tipo servidor.
Para 2 y 3 : Gestor de Base de datos de tipo archivos.
(Sabemos que los dos guardan los datos en archivos pero la manera en que se tratan es la diferente a eso me refiero con tipo servidor y tipo archivos).
Sabemos tambien que la solucion para el caso 1 seria la de las empresas mas grandes , en donde se haran varias peticiones(conexiones) al servidor, en donde se espera que sea una base de datos de tipo formal, que permita integridad , relaciones , y todas esas cosas que los grandes gestores de base de datos tienen. Y que tambien contaremos con una maquina que hara las funciones de SERVER y no en todas las empresas contamos con la facilidad de que las personas esten buscando esta solucion. Muchas veces ellos los que quieren es aprovechar cada una de las maquinas que se encuentran en su oficina y no estan dispuestos a ofrecer una maquina para manejar las funciones de server.
Ahora caemos en el caso 2 , 3. de los tipos de soluciones. La mas utilizada en las pequeñas empresas que es aquel programa que ellos se comparten las carpetas , lo trabajan de un lugar a otro, de repente quieren migrar el folder hacia otra maquina y una seria de relajos que ya todos nos imaginamos.
Empezamos a pensar en la solucion que debemos de darle a este caso, tomaremos en cuenta que tenemos descartada la idea de pensar en los GBD como eran mysql, postgre , etc. Venimos a caer (por lo menos en mi caso) en el tipico ejemplo (el quizas mas usado en El Salvador) debido a la abundancia de las pequeñas empresas <<me explico a mi mismo>> , que es el
foxpro, (tomaremos en cuenta para esta tema que ms access esta totalmente afuera del rango de nuestros deseos de un sistema de base de datos).
Pero foxpro ? , en realidad quienes lo han usado (me incluyo) , sabemos que es muy agradable programar en el sobre todo por la facilidad de programacion en el mismo ya que la mayoria de cosas se desenvuelven en un ambiente grafico , una gran implementeacion con su sistema de base de datos que nos permite agregar graficamente las tablas , arrastrar campos de un lado para otro, hacer las relaciones y demas con un simple arrastre de mouse, etc.
Pero que sucede cuando el programador no le interesa programar en fox ? , es un fanatico a morir de otros lenguajes como java , .net , c++ ,etc. Y ya se puede una y mil funciones y demas cosas que le hacen la vida en su programación facilisima.
O que me dicen de la implementacion de los .dbf en red , cuando se les hace un programita en vb o algo asi por el estilo y se vuelve mas lento de lo imaginable.
O el ultimo caso que se me ocurre , el tipico apagon , en la maquina que estaba felizmente ejecutando una aplicacion de foxpro , y de repente la proxima vez que abrio el programita ya todo esta desordenado , no funciona el programa, esta dando errores que sucedio ?? "Señor entre en el modo de administrador y corra la opcion que dice Reindexar". Que sucedio ?? Bueno al no ser un modelo exactamente de lo que podriamos llamar ACID resulta que se dañaron los indices y todo esta mas fregado que asaber que !
Bueno y entonces cual es otra solucion que puedo utilizar

, si ya descartamos .mdb y .dbf que mas me queda por ver

.
Aqui es donde viene lo que de verdad les traigo
About SQLite
SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine. Features include:
* Transactions are atomic, consistent, isolated, and durable (ACID) even after system crashes and power failures.
* Zero-configuration - no setup or administration needed.
* Implements most of SQL92. (Features not supported)
* A complete database is stored in a single disk file.
* Database files can be freely shared between machines with different byte orders.
* Supports databases up to 2 terabytes (241 bytes) in size.
* Sizes of strings and BLOBs limited only by available memory.
* Small code footprint: less than 250KiB fully configured or less than 150KiB with optional features omitted.
* Faster than popular client/server database engines for most common operations.
* Simple, easy to use API.
* TCL bindings included. Bindings for many other languages available separately.
* Well-commented source code with over 95% test coverage.
* Self-contained: no external dependencies.
* Sources are in the public domain. Use for any purpose.
The SQLite distribution comes with a standalone command-line access program (sqlite) that can be used to administer an SQLite database and which serves as an example of how to use the SQLite library.
Con muy pero muy pocas de las sentencias de SQL92 no soportadas como son:
FOREIGN KEY constraints
Complete trigger support
Complete ALTER TABLE support
Nested transactions
RIGHT and FULL OUTER JOIN
Writing to VIEWs
GRANT and REVOKE
http://www.sqlite.org/omitted.htmlLo unico que si le hace falta muchisima falta es la validacion de foreign keys como podriamos esperar de un mysql con innodb o del sqls. Podria ser algo por lo que no lo quisieramos usar ? pero la pregunta es , valida esto msaccess ?? valida esto foxbase

, hasta donde yo se no lo hace , podria ser que se me pasara por alto.
Inclusive ganador en el 2005 de un prepio google o'reilly open source awards , comentado de esta manera
One person was able to get Python, Perl & PHP people to all agree on something. No small feat. They all agreed on the success of SQlite, and began using it in earnest by being small as well as extremely fast for all the most common database functions. Our server budgets also thank you.
Dr Richard Hipp (SQLite)
Ahi les dejo con toda esta platica una opcion mas para sus base de datos http://www.sqlite.org/.