Trabajo SQLite
Trabajo SQLite
Podemos encontrar grandes titanes, como Oracle, Informix, PostgreSQL, MySQL y Firebird., entre
otros.
Esto reduce la latencia en el acceso a la base de datos, debido a que las llamadas a funciones son
más eficientes que la comunicación entre procesos. El conjunto de la base de datos (definiciones,
tablas, índices, y los propios datos), son guardados como un sólo fichero estándar en la máquina
host.
En enero de 2000 yo estaba trabajando con un equi po de la General Dynamics en la Fuerza naval
de los Estados Unidos, en un proyecto de software, el cual se conectaba a una base de datos
Informix, el motor fun cionaba muy bien, pero habíamos tenido problemas para hacer una
reconfiguración cuando el sistema se reinicia ba. Luego cambiamos a PostgreSQL, pero administra
la base de datos era un problema. Si bien aún estaba luchando para hacer frente a estas cuestiones,
surgió la idea de escribir un simple motor de base de datos SQ L que permitiera leer los archivos del
disco duro, y lueg o ser llamados en diferentes solicitudes. Cinco meses más tarde, yo estaba sin un
contrato por algunos meses y por lo que comencé a escribir SQLite, con el pensamiento de que sería
útil en algún problema similar, más adelante.
Tamaño: SQLite tiene una pequeña memoria y una única biblioteca es necesaria para acceder a
bases de datos, lo que lo hace ideal para aplicaciones de bases de datos incorporadas .
Rendimiento de base de datos: SQLite realiza operaciones de manera eficiente y es más rápido que
MySQL y PostgreSQL .
Estabilidad: SQLite es compatible con ACID, reunión de los cuatro criterios de Atomicidad,
Consistencia, Aislamiento y Durabilidad
Interfaces: SQLite cuenta con diferentes interfaces del API, las cuales permiten trabajar con C++,
PHP, Perl, Python, Tcl, groovy, etc.
Costo: SQLite es de dominio público, y por tanto, es libre de utilizar para cualquier propósito sin
costo y se puede redistribuir libremente.
Caracteristicas de SQLite
SQLite goza de unas caracteristicas que lo hacen unico, algunos se detallan a continuacion:
Cero Configuración
De la forma en que fue concebido SQLite, NO necesita ser instalado
reiniciar o apagar un servidor, No Prender, reiniciar o apagar un servidor, e incluso configurarlo.
Esta cualidad permite que no haya un administrador de base de datos para crear tablas, vistas,
asignar permisos. O bien la adopción de medidas de recuperación por cada caída del sistema.
Portabilidad:
SQLite puede ser ejecutado en diferentes sistemas operativos: Windows, Linux, BSD, Mac OS X,
Solaris, HPUX,AIX, o estar embebido en muchos otros como QNX, VxWorks, Symbian, Palm OS,
Windows CE. Se pude notar que muchos de ellos trabajan a 16, 32 y 64 Bits.
La portabilidad no está dada en sí por el software, sino por la base de datos condensada en un solo
archivo, que puede estar situado en cualquier directorio, trayendo como ventaja que la base de datos
puede ser fácilmente copiada a algún dispositivo USB o ser enviada vía correo electrónico.
Pedagógico
Algunas veces cuando se está en un ámbito educativo, se tiende a enseñar SQL para administrar las
bases de datos. Muchas veces transportar una base a casa no es tarea fácil, por eso SQLite está
siendo adoptado de una forma pedagógica. Por ejemplo, los estudiantes pueden enviar vía e-mail las
bases de datos a los docentes para su presentación y los docentes realizarán las observaciones
necesarias. Para los estudiantes más avanzados que están interesados en el estudio de cómo trabaja
un RDBMS, el código SQLite puede servir como una buena base. Esto no quiere decir que es un
modelo exacto de la forma en que los motores de bases de datos se apliquen, sino una forma en la
que un estudiante que entiende cómo funciona SQLite puede comprender los principios operativos
de otros sistemas.
La arquitectura SQLite
Cada motor de base de datos compila cada sentencia SQL en algún tipo de estructura de datos
interna que luego se utilizará para llevar a cabo la labor de la declaración. En SQLite, compilar la
forma de las declaraciones es un breve programa en un lenguaje de máquina como representación.
Los usuarios podemos ver la máquina virtual antes poniendo EXPLAIN como palabra clave para
una consulta. El uso de la VM dentro de SQLite ha sido un gran beneficio para el desarrollo de la
biblioteca, ya que proporciona un cruce entre la interfaz de usuario que analiza las sentencias SQL y
la parte en la cual la máquina virtual ejecuta el código para calcular el resultado, así también utilizar
la capacidad de rastreo de la ejecución de la VM en cada sentencia e imprimir las mismas.
Limitaciones
Una vez escuché decir que no existía un software al cual no se le encontraran limitaciones. SQLite
no está exento de esto, algunas de las limitaciones son las siguientes:
• Limitaciones en Where: esta limitación está dada por el soporte para clausuras anidadas.
• Falta de Clave Foránea: se hace caso omiso
de las claves foráneas; esto quiere decir, cuando se realice la creación de la tabla desde el modo
consola, está permitiendo el uso de la clausura, aunque no realizara el chequeo de la misma.
• Falta de documentación en español: es muy escasa la documentación disponible en español sobre
SQLite.
Instalación:
Su instalación se puede realizar por medio de los repositorios o a través de su fuente:
En Debian o derivados:
#aptitude install sqlite3
Gentoo:
#emerge sqlite (como es metadistribucion, bajara las dependencias, al sqlite y los configurara,
compilara e instalara )
Si contamos con los códigos fuentes descargados desde el sitio oficial de SQLite
http://www.sqlite.org/download.html, simplemente deberemos realizar los siguientes pasos:
• Descomprimimos los fuentes de SQLite
en alguna carpeta con tar xzf sqlite.tar.gz
• Ejecutamos el script ./configure
• Ejecutamos make install para realizar la instalación en el sistema (ese método en lo personal no
me gusta).
$sqlite3 prueba.db
SQLite version 3.7.5
Enter ".help" for instructions
sqlite> CREATE TABLE personal (
...> id smallint primary key,
...> nombre varchar(25),
...> apellido varchar(25),
...> direccion varchar(25)
...> );
sqlite>
Estructura Sql :
CREATE TABLE nombre (campo1 tipo, campo2 tipo, campo3 tipo,.., campoN tipo);
Podemos observar que la forma de escritura es más cómoda, puesto que podemos escribir de
manera prolija el armado de una tabla, con los delimitadores en sentencia “,” y el fin de la misma a
través del limitador”;”. Ahora realizaremos la inserción de algunos datos para el ejemplo que hemos
creado de la siguiente manera:
La consulta realizada anteriormente lista todos los campos y todos los registros de la tabla personal,
pero es posible listar únicamente los campos que deseamos que aparezcan en la consulta.
Para ello los separamos por medio del “,” y además podemos agregarle la cláusula WHERE para
poder filtrar registros que cumplan con una determinada condición, por ejemplo:
Una vez creada la base de datos, si se quiere cerrar SQLite, se debe tipear lo siguiente:
sqlite>.quit
SQLite reune las características de un pseudomotor, algo que aparenta ser un motor pero no lo es.
Esto se debe a que contiene dentro de sí mismo muchas características de los grandes motores de
base de datos, como ser: la creación de usuarios, vistas, triger, etc, otra característica es la capacidad
de poder definir la integridad referencial a través de los trigger, haciéndolo casi similar a un motor
de base de datos, pero manteniendo la sencillez y simplicidad de una librería.
Existe un módulo DBI/DBD para Perl disponible en CPAN, DBD::SQLite, no es una interface para
SQLite, sino que incluye el motor completo de SQLite en sí mismo por lo cual no necesita ningún
software adicional.
PHP incluye SQLite, desde la versión 5. SQLite también funciona con PHP 4 pero no viene incluido
en él. Para más detalles vea el manual y PECL info.
Desde Lazarus 0.9.8 y Free Pascal 2.0.0, SQLite está disponibles para programadores de Pascal.
Mac OS X v10.4 incluye SQLite, y es una de las opciones en la Core Data API de Apple.
AppleScript puede abrir, crear, y manipular base de datos SQLite por medio de la aplicación de
ayuda "Database Events" de Mac OS X 10.4.
BlitzMAX posee un MOD que permite trabajar con bases de datos SQLite. Para más detalles y
descarga del MOD
El componente de base de datos (gb.db) de Gambas soporta SQLite en sus versiones 1, 2 y 3
Varias aplicaciones de Apple utilizan SQLite, incluyendo Apple Mail y el gestor de RSS que se
distribuye con OS X. El software Aperture de Apple guarda la información de las imágenes en una
base de datos SQLite, utilizando la API Core Data.
Conclusión
Día a día se avanza a pasos agigantados en el desarrollo, pero siempre existe ese desafío que hace al
desarrollador definir la herramienta que ha de utilizar para realizar el manejo de los datos dentro de
su implementación. Se pueden ver claras ventajas con SQLite, frente a otros motores de base de
datos, una mayor velocidad en la consulta, o el manejo de datos, se debe al no haber un proceso
intermedio, para la comunicación con el motor de la BD.
Los puntos fuertes de SQLite son su Cero configuración, y tener la DB en un solo archivo, con lo
cual la base de datos es mas portable.
Pero tiene puntos débiles, como por ejemplo al intentar implemantarlo para aplicaciones cliente-
servidor o implementaciones en escala mayor. Aunque existen motores de base de datos colosos, el
querer implementarlas para base de datos pequeñas o menos extensas lo hace mas complejo, eso
causo la busqueda de una implementacion mas pequeña pero funcional, y sin las dessoventajas de
ellas.
Bibliografia
La información del siguiente informe, fue sacada de los siguientes sitios:
http://es.wikipedia.org/wiki/SQLite
http://sqlite-latino.blogspot.com/
Anexos
Consola de SQLite, al hacer uso del query de SQL: select from, para acceder a la base de datos del
historial, del cliente de mensajeria instantánea Gajim:
Consulta de la base de datos en sqlite, Prueba.db