Vous êtes sur la page 1sur 13

Trabajo de Investigacion SQLite

Nombre: Helmuth Andrs Schmelzer Campos Curso: 2do Ingenieria en Informatica Instituto: Instituto Diego Portales Fecha de Entrega: 27/04/2011

Indice
Introduccin Qu es SQLite? Breve Historia de SQLite Razones para elegir SQLite Caracteristicas de SQLite Introduccin al uso de SQLite Primeros Pasos con SQLite SQLite y los lenguajes de programacin: Productos que usan SQLite Conclusin Bibliografia Pg 3 Pg 4 Pg 4 Pg 5 Pg 5-6 Pg 6-7 Pg 7-8 Pg 8-9 Pg 9 Pg 10 Pg 11

Introduccin
Cada vez que los desarrolladores nos enfrentamos a nuevos desafos, es primordial saber optar por la mejor herramienta para el tratamiento de los datos. Desde que en la informtica se comenz a trabajar con datos, la mayor preocupacin e interrogante fue cmo manipular esos datos. Hace dcadas era dificil para el programador manipular esos datos. Eso causo que surgieran alternativas, para separar al programa de los datos, as surgi los primeros motores de base de datos. Podemos encontrar grandes titanes, como Oracle, Informix, PostgreSQL, MySQL y Firebird., entre otros. SQLite surgi de la necesidad, de buscar sencillez, robustez, y sobretodo Cero Configuracin.

Qu es SQLite?
SQLite es un sistema de gestin de bases de datos relacional compatible con ACID, contenida en una relativamente pequea (~275 kiB)2 biblioteca en C. SQLite es un proyecto de dominio pblico creado por D. Richard Hipp. A diferencia de los sistema de gestin de bases de datos cliente-servidor, el motor de SQLite no es un proceso independiente con el que el programa principal se comunica. En lugar de eso, la biblioteca SQLite se enlaza con el programa pasando a ser parte integral del mismo. El programa utiliza la funcionalidad de SQLite a travs de llamadas simples a subrutinas y funciones. Esto reduce la latencia en el acceso a la base de datos, debido a que las llamadas a funciones son ms eficientes que la comunicacin entre procesos. El conjunto de la base de datos (definiciones, tablas, ndices, y los propios datos), son guardados como un slo fichero estndar en la mquina host.

Breve Historia de SQLite


Cuando D. Richard Hipp trabajaba desarrollando software para la fuerza naval de los Estados Unidos, comen z a desarrollar SQLite , segn l cuenta con sus propia s palabras: SQLite surgi de una necesidad personal, para mi propio uso. 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 habamos tenido problemas para hacer una reconfiguracin cuando el sistema se reinicia ba. Luego cambiamos a PostgreSQL, pero administra la base de datos era un problema. Si bien an 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 ms tarde, yo estaba sin un contrato por algunos meses y por lo que comenc a escribir SQLite, con el pensamiento de que sera til en algn problema similar, ms adelante. (Extracto del Prlogo de SQLite escrito por Richard Hipp).

Razones para elegir SQLite


Se presentan varias ventajas de SQLite: Tamao: SQLite tiene una pequea 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 ms rpido que MySQL y PostgreSQL . Portabilidad: SQLite se ejecuta en muchas plataformas y sus bases de datos pueden ser fcilmente portadas sin ninguna configuracin o administracin Estabilidad: SQLite es compatible con ACID, reunin de los cuatro criterios de Atomicidad, Consistencia, Aislamiento y Durabilidad SQL: SQLite implementa un gran subconjunto de la ANSI - 92 SQL estndar, incluyendo subconsultas, generacin de usuarios, vistas y triggers 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 pblico, y por tanto, es libre de utilizar para cualquier propsito 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 Configuracin 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 adopcin de medidas de recuperacin por cada cada 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 fcilmente copiada a algn dispositivo USB o ser enviada va correo electrnico. Registros de longitud variable Generalmente los motores asignan una cantidad fija de espacio en disco para cada fila en la mayora de los campos de una determinada tabla. Por ejemplo, tomemos un campo de tipo VARCHAR(100), esto significa que el motor le asignar 100 bytes de espacio fijo en disco, independientemente de la cantidad de informacin que se almacene en ese campo. En cambio, SQLite realizar todo lo contrario, utilizando para ello la cantidad de espacio en disco necesario para almacenar la informacin real del campo. Tomando el ejemplo anterior, si quisiera almacenar un solo carcter en un campo definido como VARCHAR(100), entonces un nico byte de espacio de disco se consume. Realmente una caracterstica especial para ahorrar espacio en memoria. El uso de registros de longitud variable por SQLite, tiene una serie de ventajas, entre ellas el

resultado de un pequeo archivo de base de datos y optimizacin de la velocidad de la misma, puesto que hay menos informacin desperdiciada que leer y recorrer. Pedaggico Algunas veces cuando se est en un mbito educativo, se tiende a ensear SQL para administrar las bases de datos. Muchas veces transportar una base a casa no es tarea fcil, por eso SQLite est siendo adoptado de una forma pedaggica. Por ejemplo, los estudiantes pueden enviar va e-mail las bases de datos a los docentes para su presentacin y los docentes realizarn las observaciones necesarias. Para los estudiantes ms avanzados que estn interesados en el estudio de cmo trabaja un RDBMS, el cdigo 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 cmo funciona SQLite puede comprender los principios operativos de otros sistemas. La arquitectura SQLite Cada motor de base de datos compila cada sentencia SQL en algn tipo de estructura de datos interna que luego se utilizar para llevar a cabo la labor de la declaracin. En SQLite, compilar la forma de las declaraciones es un breve programa en un lenguaje de mquina como representacin. Los usuarios podemos ver la mquina 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 mquina virtual ejecuta el cdigo para calcular el resultado, as tambin utilizar la capacidad de rastreo de la ejecucin de la VM en cada sentencia e imprimir las mismas. Limitaciones Una vez escuch decir que no exista 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 limitacin est dada por el soporte para clausuras anidadas. Falta de Clave Fornea: se hace caso omiso de las claves forneas; esto quiere decir, cuando se realice la creacin de la tabla desde el modo consola, est permitiendo el uso de la clausura, aunque no realizara el chequeo de la misma. Falta de documentacin en espaol: es muy escasa la documentacin disponible en espaol sobre SQLite.

Introduccin al uso de SQLite


SQLite, al igual que muchos de los motores de bases de datos, posee su administracin predefinida a travs del uso de la consola o terminal, aquellas personas que pudieron administrar antes otros motores como por ejemplo es el caso de MySQL, sabrn que no es el nico administrador que se conoce sino ms bien existen una amplia gama para la eleccin, por ejemplo phpMyAdmin. Con SQLite sucede lo mismo: es posible administrarlo desde varios sistemas, como es el caso de phpSQLiteAdmin, Visual SQLite, entre otras Instalacin: Su instalacin se puede realizar por medio de los repositorios o a travs 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 cdigos 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 instalacin en el sistema (ese mtodo en lo personal no me gusta). Si se desea instalar en Windows, la instalacin se realizar de la siguiente forma: descargamos los ejecutables de SQLite, usamos la consola de lnea de comandos de Windows cmd, nos posicionamos en la carpeta y ejecutamos el archivo sqlite3.exe, el cual disparar la consola de sqlite3.

Primeros Pasos con SQLite


Una vez que hemos instalado SQLite en nuestro sistema, nos posicionaremos en algn directorio vaco y realizaremos la creacin de una nueva base de datos. Recordemos que l, a diferencia de los otros motores de bases de datos, se encapsula en un slo archivo que vamos a crear. Como habrn podido observar en el ejemplo, una vez creado el archivo prueba.db (de ahora en adelante nuestra base de datos) y con la ayuda del lenguaje SQL, hemos creado una tabla llamada personal con cuatro campos (id, nombre, apellido, direccin). $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 ms cmoda, puesto que podemos escribir de manera prolija el armado de una tabla, con los delimitadores en sentencia , y el fin de la misma a travs del limitador;. Ahora realizaremos la insercin de algunos datos para el ejemplo que hemos creado de la siguiente manera: sqlite> INSERT INTO personal VALUES(1, 'Juan', 'Perez', 'YYYXXXZZZ'); sqlite> INSERT INTO personal VALUES(2, 'Ramon', 'Gomez', 'ZZZXXXYYY'); Estructura en SQL: INSERT INTO TABLA VALUES(val1,val2,val3,.., valn); Nuevamente observemos la insercin de los datos con la sentencia INSERT de SQL, haciendo referencia a la tabla y posteriormente los valores para el nuevo registro. Seguramente en algn momento vamos a contar con la necesidad de realizar consultas sobre las tablas creadas. Para este fin podemos realizarlo de la siguiente manera: sqlite> SELECT * FROM personal; 1|Juan|Perez|YYYXXXZZZ

2|Ramon|Gomez|ZZZXXXYYY sqlite> Estructura en SQL: SELECT Campo1, Campo2,.., Campo4 FROM Tabla ; 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 adems podemos agregarle la clusula WHERE para poder filtrar registros que cumplan con una determinada condicin, por ejemplo: sqlite> SELECT id, nombre, apellido FROM personal WHERE id <= 2; 1|Juan|Perez 2|Ramon|Gomez sqlite> Una vez creada la base de datos, si se quiere cerrar SQLite, se debe tipear lo siguiente: sqlite>.quit con ello cerramos al programa.

SQLite: ser o no ser un motor


sta es la pregunta que todos deben realizarse en este punto. Muchos de los usuarios de software libre y desarrolladores, al ver el funcionamiento de SQLite, afirman que es un motor de base de datos, aunque en realidad no lo es, puesto que no posee la integridad referencial. En palabras ms simples: la integridad referencial es el control de la clave fornea. Si bien en SQLite, cuando se crea una tabla, se pude invocar a la palabra reservada forean key. Pero el compilador realizar caso omiso de la misma dentro de su estructura. A pesar de ser considerado una librera, SQLite ha abierto un nuevo ENTORNO Y ENFOQUE al tratamiento de base de datos, pas de ser una simple librera a un esquema mucho ms amplio. SQLite reune las caractersticas de un pseudomotor, algo que aparenta ser un motor pero no lo es. Esto se debe a que contiene dentro de s mismo muchas caractersticas de los grandes motores de base de datos, como ser: la creacin de usuarios, vistas, triger, etc, otra caracterstica es la capacidad de poder definir la integridad referencial a travs de los trigger, hacindolo casi similar a un motor de base de datos, pero manteniendo la sencillez y simplicidad de una librera.

SQLite y los lenguajes de programacin


La biblioteca puede ser usada desde programas en C/C++, aunque enlaces para Tcl y muchos otros lenguajes de programacin interpretado estn disponibles. SQLite se encuentra embebido en el REALbasic framework, haciendo posible que aplicaciones desarrolladas en REALbasic para Windows, Linux o Mac OS X usen la base de datos SQLite. Existe un mdulo 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 ningn software adicional. Hay tambin un mdulo para Python llamado PySQLite.3 . Hay otro mdulo para Visual Basic 6 llamado VBSqlite.

Desde Delphi se puede usar SQLite a travs de los componentes libres ZeosLib PHP incluye SQLite, desde la versin 5. SQLite tambin funciona con PHP 4 pero no viene incluido en l. Para ms detalles vea el manual y PECL info. Desde Java se puede acceder mediante el driver de SQLiteJDBC 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 aplicacin de ayuda "Database Events" de Mac OS X 10.4. BlitzMAX posee un MOD que permite trabajar con bases de datos SQLite. Para ms detalles y descarga del MOD El componente de base de datos (gb.db) de Gambas soporta SQLite en sus versiones 1, 2 y 3 El lenguaje de programacin de vdeo juegos Bennu tiene un mod de SQlite disponible.

Productos que usan SQLite


Desde hace tiempo Mozilla Firefox usa SQLite para almacenar, por ejemplo, las cookies, los favoritos, el historial, las direcciones de red vlidas. SQLite es usado por el entorno de base de datos Kexi como un motor de base de datos interno por defecto. SQLite se ha usado para guardar el ndice para un set de DVD conteniendo todos los nmeros publicados de la revista The New Yorker. El cliente de mensajeria instantnea que usa el protocolo Jabber (XMMP) Gajim, utiliza SQLite para guardar el historial en formato SQLite3 Los desarrolladores de OpenOffice.org han considerado embeber SQLite en el modelo de base de datos de Base, pero esto depende en gran manera del progreso de sqlite-sdbc-driver, que est todava en estado de alpha. Actualmente han decidido [5] usar HSQLDB, pero la opcin est todava abierta siempre y cuando el driver sqlite-sdbc acabe siendo maduro y de confianza. Clementine usa SQLite para guardar su coleccin de datos por defecto. Adobe Photoshop Elements utiliza SQLite como motor de base de datos en su ltima versin del producto (la 6.0) en sustitucin del Microsoft Access, utilizado en las versiones anteriores. Open Outlook Connector, un conector open source de Microsoft Outlook/MAPI ha sido hecho usando SQLite. 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 informacin de las imgenes en una base de datos SQLite, utilizando la API Core Data.

Conclusin
Da a da se avanza a pasos agigantados en el desarrollo, pero siempre existe ese desafo que hace al desarrollador definir la herramienta que ha de utilizar para realizar el manejo de los datos dentro de su implementacin. 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 comunicacin con el motor de la BD. Los puntos fuertes de SQLite son su Cero configuracin, y tener la DB en un solo archivo, con lo cual la base de datos es mas portable. Pero tiene puntos dbiles, como por ejemplo al intentar implemantarlo para aplicaciones clienteservidor o implementaciones en escala mayor. Aunque existen motores de base de datos colosos, el querer implementarlas para base de datos pequeas o menos extensas lo hace mas complejo, eso causo la busqueda de una implementacion mas pequea pero funcional, y sin las dessoventajas de ellas.

Bibliografia
La informacin 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 instantnea Gajim:

Consulta de la base de datos en sqlite, Prueba.db

Contenido de la base de datos Prueba.db usando un comando de SQLite (.dump):