Trabajo SQLite

18
Trabajo de Investigacion SQLite

Transcript of Trabajo SQLite

Page 1: Trabajo SQLite

Trabajo de Investigacion SQLite

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

Page 2: Trabajo SQLite

Indice

Introducción Pág 3¿Qué es SQLite? Pág 4Breve Historia de SQLite Pág 4Razones para elegir SQLite Pág 5Caracteristicas de SQLite Pág 5-6Introducción al uso de SQLite Pág 6-7 Primeros Pasos con SQLite Pág 7-8SQLite y los lenguajes de programación: Pág 8-9Productos que usan SQLite Pág 9Conclusión Pág 10Bibliografia Pág 11

Page 3: Trabajo SQLite

IntroducciónCada vez que los desarrolladores nos enfrentamos a nuevos desafíos, es primordial saber optar por la mejor herramienta para el tratamiento de los datos. Desde que en la informática se comenzó a trabajar con datos, la mayor preocupación e interrogante fue cómo manipular esos datos. Hace décadas 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 Configuración.

Page 4: Trabajo SQLite

¿Qué es SQLite? SQLite es un sistema de gestión de bases de datos relacional compatible con ACID, contenida en una relativamente pequeña (~275 kiB)2 biblioteca en C. SQLite es un proyecto de dominio público creado por D. Richard Hipp.

A diferencia de los sistema de gestión 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 través 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 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.

Breve Historia de SQLiteCuando D. Richard Hipp trabajaba desarrollando software para la fuerza naval de los Estados Unidos, comen zó a desarrollar SQLite , según é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 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.

(Extracto del Prólogo de SQLite escrito por Richard Hipp).

Page 5: Trabajo SQLite

Razones para elegir SQLiteSe presentan varias ventajas de SQLite:

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 .

Portabilidad: SQLite se ejecuta en muchas plataformas y sus bases de datos pueden ser fácilmente portadas sin ninguna configuración o administración

Estabilidad: SQLite es compatible con ACID, reunión de los cuatro criterios de Atomicidad, Consistencia, Aislamiento y Durabilidad

SQL: SQLite implementa un gran subconjunto de la ANSI - 92 SQL estándar, incluyendo subconsultas, generación 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 público, y por tanto, es libre de utilizar para cualquier propósito sin costo y se puede redistribuir libremente.

Caracteristicas de SQLiteSQLite goza de unas caracteristicas que lo hacen unico, algunos se detallan a continuacion:

Cero ConfiguraciónDe 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.

Registros de longitud variableGeneralmente los motores asignan una cantidad fija de espacio en disco para cada fila en la mayoría 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 información 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 información real del campo. Tomando el ejemplo anterior, si quisiera almacenar un solo carácter en un campo definido como VARCHAR(100), entonces un único byte de espacio de disco se consume. Realmente una característica especial para ahorrar espacio en memoria. El uso de registros de longitud variable por SQLite, tiene una serie de ventajas, entre ellas el

Page 6: Trabajo SQLite

resultado de un pequeño archivo de base de datos y optimización de la velocidad de la misma, puesto que hay menos información desperdiciada que leer y recorrer.

PedagógicoAlgunas 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 SQLiteCada 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.

LimitacionesUna 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.

Introducción al uso de SQLiteSQLite, al igual que muchos de los motores de bases de datos, posee su administración predefinida a través del uso de la consola o terminal, aquellas personas que pudieron administrar antes otros motores como por ejemplo es el caso de MySQL, sabrán que no es el único administrador que se conoce sino más bien existen una amplia gama para la elección, por ejemplo phpMyAdmin. Con SQLite sucede lo mismo: es posible administrarlo desde varios sistemas, como es el caso de phpSQLiteAdmin, Visual SQLite, entre otras

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 sqlite3Gentoo:#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:

Page 7: Trabajo SQLite

• 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).

Si se desea instalar en Windows, la instalación se realizará de la siguiente forma: descargamos los ejecutables de SQLite, usamos la consola de línea 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 SQLiteUna vez que hemos instalado SQLite en nuestro sistema, nos posicionaremos en algún directorio vacío y realizaremos la creación de una nueva base de datos. Recordemos que él, a diferencia de los otros motores de bases de datos, se encapsula en un sólo archivo que vamos a crear. Como habrán 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, dirección).

$sqlite3 prueba.dbSQLite 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:

sqlite> INSERT INTO personal VALUES(1, 'Juan', 'Perez', 'YYYXXXZZZ');sqlite> INSERT INTO personal VALUES(2, 'Ramon', 'Gomez', 'ZZZXXXYYY');Estructura en SQL:INSERT INTO TABLAVALUES(val1,val2,val3,.., valn);

Nuevamente observemos la inserción de los datos con la sentencia INSERT de SQL, haciendo referencia a la tabla y posteriormente los valores para el nuevo registro. Seguramente en algún 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

Page 8: Trabajo SQLite

2|Ramon|Gomez|ZZZXXXYYYsqlite>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 además podemos agregarle la cláusula WHERE para poder filtrar registros que cumplan con una determinada condición, 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 más simples: la integridad referencial es el control de la clave foránea. 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 librería, SQLite ha abierto un nuevo ENTORNO Y ENFOQUE al tratamiento de base de datos, pasó de ser una simple librería a un esquema mucho más amplio.

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.

SQLite y los lenguajes de programaciónLa biblioteca puede ser usada desde programas en C/C++, aunque enlaces para Tcl y muchos otros lenguajes de programación interpretado están 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 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.

Hay también un módulo para Python llamado PySQLite.3. Hay otro módulo para Visual Basic 6 llamado VBSqlite.

Page 9: Trabajo SQLite

Desde Delphi se puede usar SQLite a través de los componentes libres ZeosLib

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 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 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 MODEl componente de base de datos (gb.db) de Gambas soporta SQLite en sus versiones 1, 2 y 3

El lenguaje de programación de vídeo juegos Bennu tiene un mod de SQlite disponible.

Productos que usan SQLiteDesde hace tiempo Mozilla Firefox usa SQLite para almacenar, por ejemplo, las cookies, los favoritos, el historial, las direcciones de red válidas.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 números publicados de la revista The New Yorker.El cliente de mensajeria instantánea 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á todavía en estado de alpha. Actualmente han decidido [5] usar HSQLDB, pero la opción está todavía abierta siempre y cuando el driver sqlite-sdbc acabe siendo maduro y de confianza.Clementine usa SQLite para guardar su colección de datos por defecto.Adobe Photoshop Elements utiliza SQLite como motor de base de datos en su última versión del producto (la 6.0) en sustitución 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 información de las imágenes en una base de datos SQLite, utilizando la API Core Data.

Page 10: Trabajo SQLite

ConclusiónDí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.

Page 11: Trabajo SQLite

BibliografiaLa información del siguiente informe, fue sacada de los siguientes sitios:http://es.wikipedia.org/wiki/SQLitehttp://sqlite-latino.blogspot.com/

Page 12: Trabajo SQLite

AnexosConsola 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:

Page 13: Trabajo SQLite

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

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