¿Qué es SQLite? | Biblioteca de programas

El software SQLite es una biblioteca de programas ampliamente utilizada. Ofrece el entorno de ejecución completo para una base de datos basada en SQL. La especialidad es que mantiene los datos en un solo archivo. También es compatible con el lenguaje de consulta SQL. El software es de dominio público, es decir, libre de derechos de autor. SQLite se implementa en todos los sistemas operativos comunes.

Historia y orígenes

SQLite fue desarrollado en 2000 por D. Richard Hipp como parte de su trabajo para la empresa estadounidense General Dynamics. Esto se hizo en nombre de la Armada del ejército estadounidense. Inicialmente, era una extensión del lenguaje de programación Tcl. SQLite ahora es compatible con numerosos lenguajes de programación y secuencias de comandos.

El nombre está compuesto por la abreviatura del lenguaje de consulta Structured Query Language (SQL) y el término coloquial Lite, para una versión «reducida». El proyecto SQLite está siendo continuado actualmente por D. Richard Hipp y otros dos desarrolladores.

Aunque SQLite se ofrece libre de regalías, es posible comprar soporte y mejoras a los desarrolladores por una tarifa.

Detalles sobre cómo funciona

La biblioteca SQLite se incluye en sistemas operativos de escritorio como Windows, MacOS y las distribuciones de Linux. Los populares sistemas operativos de teléfonos inteligentes Android e iOS también admiten SQLite de forma nativa.

Toda la aplicación se ejecuta en un proceso. A diferencia de otros sistemas de bases de datos como MySQL, no se requiere una arquitectura servidor-cliente.

SQLite utiliza una base de datos relacional. Los datos se almacenan en tablas que se pueden direccionar en columnas mediante un identificador. Esto tiene la ventaja de que los datos no tienen que almacenarse de forma redundante. Más bien, el contenido de una tabla se puede vincular a una o más columnas de otras tablas, es decir, se pueden establecer en relación.

Es típico del almacenamiento en bases de datos relacionales que los datos se almacenen en diferentes tablas según el propósito. Un software de correo podría, por ejemplo, realizar las siguientes tablas en su base de datos:

  • Contactos: Contiene las direcciones de correo de los interlocutores,
  • Conversación: guarda el historial de correo con un compañero de conversación,
  • Correos: contiene los metadatos de correos individuales,
  • Ataques: muestra metadatos y rutas de archivos adjuntos.

En lugar de enumerar las direcciones de los remitentes y destinatarios en cada columna de la tabla «Mails», solo se almacena allí el número de serie del contacto. El adjunto de los archivos adjuntos y la asignación de un solo correo electrónico a una conversación se llevan a cabo en consecuencia.

Tipos de datos en SQLite

Tipos de datos en SQLite
Tipos de datos en SQLite

Los datos se pueden almacenar en varios formatos. Esto facilita el procesamiento posterior sin conversión previa. Los posibles tipos de datos son: cero (valor cero), entero (valor numérico), real (número de punto flotante), texto (contenido de texto sin formato) y blob (valor binario).

Esto significa que se pueden asignar todos los tipos de datos. Los valores de fecha a menudo se almacenan como valores numéricos, por ejemplo, en el formato de hora Unix (segundos desde el 01/01/1970). Alternativamente, también hay una notación en formato de fecha de texto sin formato.

El tipo de datos Blob (Binary Large Object) se utiliza de forma muy universal. Por ejemplo, en él se pueden almacenar imágenes de vista previa. Los archivos de configuración, por ejemplo en formato XML o PLIST, también se pueden encontrar en los campos de datos de blobs.

Seguridad de datos y archivos temporales

SQLite tiene dos métodos para garantizar la consistencia de una base de datos.

Una posibilidad es llevar un diario de reversión. Aquí se crea un diario temporal cuando se abre la base de datos. Se le da el nombre de la base de datos con la terminación «-journal». Los cambios realizados se documentan en el archivo. De esta forma, se puede realizar una recuperación (reversión) si se producen problemas .

La otra alternativa es utilizar Write-Ahead-Log (WAL). Con este método, los cambios se escriben primero en el archivo de registro. La transferencia permanente a la base de datos tiene lugar cuando la base de datos se cierra correctamente o mediante el almacenamiento manual con un comando de confirmación.

Además, en este caso se guarda un índice en el archivo de “memoria compartida” (SHM). En consecuencia, con este método se crean dos archivos temporales. Estos reciben el nombre de la base de datos con las terminaciones «-shm» y «-wal».

Intersecciones con SQL

El procesamiento de los contenidos en las bases de datos SQLite se realiza mediante el lenguaje de consulta según el estándar SQL-92. Esto asegura que se puedan utilizar comandos y consultas SQL.

Un contacto podría guardarse, por ejemplo, mediante un comando de acuerdo con el patrón

INSERT INTO contactos (número de serie, nombre, nombre, dirección de correo electrónico, número de teléfono) VALORES (1, «Luis», «José», «[email protected]», «012345678»)

respectivamente. Como resultado, los valores del segundo corchete se ingresarían en las columnas dentro del primer corchete en la tabla «contactos» .

Los contenidos de diferentes tablas se pueden combinar usando el comando JOIN. También es posible vincular la salida a las condiciones, por ejemplo, utilizando comandos como WHERE y LIKE.

Áreas de aplicación de SQLite

Mientras tanto, las bases de datos SQLite se pueden encontrar como la base de muchas aplicaciones. Las aplicaciones comunes en los teléfonos inteligentes, por ejemplo, mensajeros como WhatsApp y Facebook, almacenan sus datos allí. Además de navegadores como Firefox y Chrome en PC de escritorio.

Incluso los programas comerciales usan SQLite. Esto es útil para aplicaciones distribuidas. Solo la base de datos debe estar disponible para todos los usuarios. Esto significa que ya no es necesario un rendimiento especial y es muy posible proporcionarlo en servidores virtuales.

Un dispositivo de este tipo no tiene por qué estar ubicado físicamente en su propia red. Se pueden utilizar servidores alojados externamente para garantizar la disponibilidad.

Deja un comentario