SQLite | |
---|---|
Tipo de | sistema de gestión de base de datos relacional sin servidor [d] |
Desarrollador | Ricardo Hipp [d] |
Escrito en | C [2] |
Sistema operativo | multiplataforma |
Primera edición | agosto de 2000 |
ultima versión |
|
Formatos de archivo legibles | Formato de archivo de base de datos SQLite [d] , base de datos SQLite 3.x [d] y diario rollbak de SQLite [d] |
Formatos de archivo generados | Formato de archivo de la base de datos SQLite [d] , base de datos SQLite 3.x [d] , base de datos comprimida SQLite Zipvfs [d] y diario rollbak de SQLite [d] |
Licencia | 🅮 [d] [3] |
Sitio web | sqlite.org _ |
Archivos multimedia en Wikimedia Commons |
SQLite ( / ˌ ɛ s ˌ k juː ˌ ɛ l ˈ aɪ t / , [4] [5] / ˈ s iː k w ə ˌ la aɪ t / [6] ) es un DBMS integrado compacto . El código fuente de la biblioteca ha sido liberado al dominio público . En 2005, el proyecto recibió los premios Google-O'Reilly Open Source Awards [7] .
La palabra "incrustado" ( eng. incrustado ) significa que SQLite no utiliza el paradigma cliente-servidor , es decir, el motor de SQLite no es un proceso de trabajo separado con el que interactúa el programa, sino una biblioteca con la que el programa está vinculado . , y el motor se convierte en una parte integral de los programas. Por lo tanto, las llamadas a funciones ( API ) de la biblioteca SQLite se utilizan como protocolo de intercambio. Este enfoque reduce los gastos generales, el tiempo de respuesta y simplifica el programa. SQLite almacena toda la base de datos (incluidas definiciones, tablas, índices y datos) en un solo archivo estándar en la máquina donde se ejecuta el programa. La facilidad de implementación se logra debido al hecho de que antes del inicio de la ejecución de la transacción de escritura, se bloquea todo el archivo que almacena la base de datos; Las funciones ACID se logran, entre otras cosas, mediante la creación de un archivo de registro.
Varios procesos o subprocesos pueden leer simultáneamente datos de la misma base de datos sin ningún problema. Solo se puede escribir en la base de datos si no se están atendiendo otras solicitudes actualmente; de lo contrario, el intento de escritura falla y se devuelve un código de error al programa. Otra opción para el desarrollo de eventos es la repetición automática de intentos de registro dentro de un intervalo de tiempo determinado.
El paquete también incluye una parte de cliente funcional en forma de un archivo sqlite3 ejecutable , que demuestra la implementación de las funciones de la biblioteca principal. La parte del cliente es una utilidad de línea de comandos multiplataforma .
SQLite se puede usar tanto en sistemas integrados como en máquinas dedicadas con arreglos de datos de gigabytes.
SQLite admite la tipificación dinámica de datos. Los posibles tipos de valores son INTEGER, REALy . El valor especial también es compatible . [ocho]TEXTBLOBNULL
Los tamaños de los valores TEXT y BLOB no están limitados por nada, excepto por una constante SQLITE_MAX_LENGTHen las fuentes de SQLite igual a mil millones (10 9 ) [9] .
Cada valor en cualquier campo de cualquier registro puede ser de cualquiera de estos tipos, independientemente del tipo especificado al declarar los campos de la tabla. El tipo especificado cuando se declara un campo se almacena como referencia en su ortografía original y se utiliza como base para elegir preferencias (la llamada "afinidad de tipo": este es un enfoque que rara vez se encuentra en otros DBMS) al realizar conversiones de tipo implícitas basado en la similitud de este nombre de tipo con cualquier cosa familiar con SQLite. Este algoritmo tiene una extensa lista de variantes de nombres de tipos de datos practicados en otros DBMS. Si un valor de escritura no se puede convertir de forma segura a su tipo preferido, SQLite escribe el valor en su forma original. Para obtener valores de la base de datos, hay una serie de funciones para cada uno de los tipos, y si el tipo del valor almacenado no coincide con el solicitado, también se convierte, si es posible. [diez]
Las versiones antiguas de SQLite se diseñaron sin ninguna restricción, la única condición era que la base de datos cupiera en la memoria, en la que todos los cálculos se realizaban con números enteros de 32 bits. Esto creó ciertos problemas. Debido a que los límites superiores no se han definido ni probado adecuadamente, a menudo se han encontrado errores al usar SQLite en condiciones bastante extremas. Por lo tanto, las versiones más nuevas de SQLite introdujeron límites que ahora se verifican junto con el conjunto de pruebas general.
Durante la compilación de la biblioteca SQLite, se establecen los siguientes límites, que se pueden aumentar si es necesario:
Descripción | Sentido | Constante en el código fuente |
---|---|---|
Longitud máxima de una cadena o campo BLOB | 1,000,000,000 | SQLITE_MAX_LENGTH |
Número máximo de columnas | 2000 | SQLITE_MAX_COLUMN |
Longitud máxima de una instrucción SQL | 1,000,000,000 | SQLITE_MAX_SQL_LENGTH |
Número máximo de tablas en expresiones con JOIN | 64 | |
Profundidad máxima del árbol de expresión | 1000 | SQLITE_MAX_EXPR_DEPTH |
Número máximo de argumentos de función | 127 | SQLITE_MAX_FUNCTION_ARG |
Número máximo de términos en una expresión combinada con SELECT | 500 | SQLITE_MAX_COMPOUND_SELECT |
La longitud máxima de un patrón como argumento para los operadores LIKE o GLOB | 50,000 | SQLITE_MAX_LIKE_PATTERN_LENGTH |
Número máximo de caracteres de marcador de posición en una instrucción SQL | 999 | SQLITE_MAX_VARIABLE_NUMBER |
Profundidad máxima de recursividad del disparador | 1000 | SQLITE_MAX_TRIGGER_DEPTH |
Número máximo de bases adjuntas | diez | SQLITE_MAX_ATTACHED |
Tamaño máximo de página de la base de datos | 65 536 | SQLITE_MAX_PAGE_SIZE |
Número máximo de páginas en un archivo de base de datos | 1 073 741 823 | SQLITE_MAX_PAGE_COUNT |
A partir de la versión 3.37.0, el valor de SQLITE_MAX_PAGE_SIZE no puede ser mayor que el valor predeterminado, que se indica explícitamente en el código fuente. El número máximo de páginas en la base de datos es 4294967294. Por lo tanto, el tamaño máximo de la base de datos es 1.4e+14 bytes (281 terabytes decimales o 256 TiB ). [once]
Algunos límites se pueden cambiar hacia abajo en el tiempo de ejecución especificando una categoría y el valor correspondiente de la función sqlite3_limit() :
int sqlite3_limit ( sqlite3 * , int id , int newVal )Categoría | Descripción |
---|---|
SQLITE_LIMIT_LENGTH | La longitud máxima de cualquier cadena o campo BLOB o fila |
SQLITE_LIMIT_SQL_LENGTH | Longitud máxima de sentencia SQL |
SQLITE_LIMIT_COLUMN | Número máximo de columnas en una definición de tabla o resultado seleccionado o índice o expresiones con cláusulas ORDER BY o GROUP BY |
SQLITE_LIMIT_EXPR_DEPTH | La profundidad máxima del árbol analizado de cualquier expresión. |
SQLITE_LIMIT_COMPOUND_SELECT | Número máximo de términos en una expresión combinada con SELECT |
SQLITE_LIMIT_VDBE_OP | Número máximo de instrucciones de programa de máquina virtual de una instrucción SQL ejecutable |
SQLITE_LIMIT_FUNCTION_ARG | Número máximo de argumentos de función |
SQLITE_LIMIT_ATTACHED | Número máximo de bases adjuntas |
SQLITE_LIMIT_LIKE_PATTERN_LENGTH | La longitud máxima de un patrón como argumento para los operadores LIKE o GLOB |
SQLITE_LIMIT_VARIABLE_NUMBER | El número máximo de variables en una instrucción SQL que se puede vincular |
SQLITE_LIMIT_TRIGGER_DEPTH | Profundidad máxima de recursividad del disparador |
Esto puede ser útil si SQLite se usa en aplicaciones web , ya que los límites reducidos pueden evitar ataques DoS de clientes externos que no son de confianza.
La biblioteca SQLite en sí está escrita en C ; hay muchos enlaces a otros lenguajes de programación, incluidos Apple Swift, Delphi , C++ , Java , C# , VB.NET , Python , Perl , Node.js , PHP , PureBasic [12] , Tcl (se incluyen herramientas para trabajar con Tcl con SQLite), Ruby , Haskell , Scheme , Smalltalk , Lua y Parser , y muchos más. Una lista completa de las herramientas existentes está disponible en la página del proyecto [13] .
La facilidad y conveniencia de incrustar SQLite ha llevado a que la biblioteca se use en navegadores , reproductores de música y muchos otros programas.
En particular, SQLite se usa en:
Muchos programas admiten SQLite como formato de almacenamiento de datos (especialmente en Mac OS e iOS , Android ), incluidos:
Sistemas de gestión de bases de datos (DBMS) | |
---|---|
Servidor de cliente | |
Motores | |
Servidor de archivos |
Base de datos | |
---|---|
Conceptos | |
Objetos |
|
Llaves | |
sql |
|
Componentes |