SQLite

Software captura de pantalla:
SQLite
Detalles de software:
Versión: 3.24.0 Actualizado
Fecha de carga: 22 Jun 18
Promotor: D. Richard Hipp
Licencia: Libre
Popularidad: 21

Rating: 5.0/5 (Total Votes: 1)

SQLite es una biblioteca C de código abierto, multiplataforma, gratuita y pequeña que implementa un motor de base de datos SQL autónomo, incrustable, transaccional, sin servidor y de configuración cero. Es el motor de base de datos SQL más utilizado del mundo.


Características de un vistazo

Las características clave incluyen soporte para transacciones aisladas, atómicas, duraderas y consistentes, implementación de SQL92, archivos de bases de datos que pueden compartirse libremente entre computadoras, admite bases de datos de hasta 2 terabytes, soporte para blobs y cadenas de tamaño de gigabyte, huella de código pequeño, así como una API fácil de usar y muy simple (interfaz de programación de aplicaciones).

Además, SQLite no requiere configuración inicial o administración adicional, permite a los desarrolladores almacenar una base de datos completa en un solo archivo de disco multiplataforma, que es perfecto para usar formatos de archivos de aplicaciones, no tiene dependencias externas, viene con en enlaces TCL (Tool Command Language) y documentación completa.

Los enlaces para muchos otros lenguajes de programación están disponibles por separado. Su código fuente está bien comentado y viene con un cliente independiente CLI (Interfaz de línea de comandos) que se ha diseñado a partir del desplazamiento que se utilizará para la administración de bases de datos SQLite.


¿Para qué puedo usarlo?

El motor de base de datos SQLite se puede usar para cualquier propósito, personal o comercial. Los usos sugeridos para SQLite incluyen una base de datos para gadgets, bases de datos de sitios web, un sustituto para un RDBMS empresarial (sistema de gestión de bases de datos relacionales), así como el formato de archivo de la aplicación.


Debajo del capó y sistemas operativos compatibles

La distribución SQLite viene con un programa de acceso de línea de comandos independiente (sqlite) que se puede usar para administrar una base de datos SQLite y que sirve como un ejemplo de cómo usar la biblioteca SQLite. Está escrito completamente en el lenguaje de programación ANSI-C.

Los sistemas operativos de escritorio compatibles incluyen GNU / Linux, Mac OS X y Microsoft Windows. Los sistemas operativos móviles compatibles incluyen Android e iOS. Se ha probado con éxito con plataformas de hardware de 32 bits y de 64 bits, y es fácilmente transferible a otros sistemas operativos.

Qué hay de nuevo en esta versión:

  • Los aspectos más destacados de esta versión incluyen soporte para UPSERT al estilo PostgreSQL y un rendimiento mejorado, especialmente para consultas ORDER BY LIMIT.

Qué hay de nuevo en la versión:

  • Aproveche las capacidades de escritura atómica en el sistema de archivos F2FS cuando esté disponible, para una sobrecarga de transacción muy reducida. Esto actualmente requiere la opción de tiempo de compilación SQLITE_ENABLE_BATCH_ATOMIC_WRITE.
  • Permitir que los comandos ATTACH y DETACH funcionen dentro de una transacción.
  • Permitir que las tablas virtuales SIN ROWID puedan escribirse si la PRIMARY KEY contiene exactamente una columna.
  • El & quot; fsync () & quot; eso ocurre después de que el encabezado se escribe en un reinicio WAL ahora usa la configuración de sincronización para los puntos de control. Esto significa que usará un & quot; fullfsync & quot; en Mac si PRAGMA checkpoint_fullfsync está activado.
  • La función sqlite3_sourceid () intenta detectar si el código fuente se ha modificado desde lo que está registrado en el control de la versión y si hay modificaciones, los últimos cuatro caracteres del hash de la versión se muestran como & quot; alt1 & quot; o & quot; alt2 & quot ;. El objetivo es detectar ediciones accidentales y / o descuidadas. Un falsificador puede subvertir esta característica.
  • Decisiones mejoradas de los nombres de columna para las sentencias CREATE TABLE AS con una consulta agregada en el lado derecho.
  • Menos & quot; stat () & quot; llamadas al sistema emitidas por unix VFS.
  • Se mejoró la optimización LIKE para que funcione con una cláusula ESCAPE.
  • Enhanced PRAGMA integrity_check y PRAGMA quick_check para detectar la corrupción oscura de la fila que antes faltaban. Actualice también ambos pragmas para que devuelvan texto de error en lugar de SQLITE_CORRUPT cuando detectan daños en los registros.
  • El planificador de consultas ahora prefiere implementar subconsultas de cláusula FROM utilizando co-rutinas en lugar de utilizar la optimización del acoplador de consultas. El soporte para el uso de co-rutinas para subconsultas ya no se puede deshabilitar.
  • Pase información sobre las restricciones! =, IS, IS NOT, NOT NULL e IS NULL en el método xBestIndex de tablas virtuales.
  • Se mejoró la tabla virtual CSV para que acepte la última fila de entrada si falta el carácter final de la nueva línea.
  • Elimina el & quot; scratch & quot; raramente usado. asignador de memoria. Reemplácelo con la configuración de configuración SQLITE_CONFIG_SMALL_MALLOC que da a SQLite una pista de que las asignaciones de memoria grandes deben evitarse siempre que sea posible.
  • Se agregó la tabla virtual swarm a la extensión existente de la tabla virtual de unión.
  • Agregó la tabla virtual sqlite_dbpage para proporcionar acceso directo a las páginas del archivo de base de datos. El código fuente está integrado en la fusión y se activa con la opción de tiempo de compilación -DSQLITE_ENABLE_DBPAGE_VTAB.
  • Agregue un nuevo tipo de tabla virtual fts5vocab - & quot; instancia & quot; - que proporciona acceso directo a un índice de texto completo FTS5 en el nivel más bajo posible.
  • Elimina una llamada a rand_s () en Windows VFS porque causaba problemas en Firefox en algunas computadoras portátiles más antiguas.
  • El código fuente de src / shell.c para el shell de línea de comandos ya no se encuentra bajo control de versión. Ese archivo ahora se genera como parte del proceso de compilación.
  • Las microoptimizaciones varias reducen el uso de la CPU en aproximadamente un 2,1%.
  • Corrección de errores:
  • Corrige una declaración assert () defectuosa descubierta por OSSFuzz. Entrada cb91bf4290c211d
  • Corrige una fuga de memoria oscura en sqlite3_result_pointer (). Entrada 7486aa54b968e9b
  • Evite un posible error de uso después de la liberación aplazando los reinicios de esquema hasta después de que el planificador de consultas haya terminado de ejecutarse. Entrada be436a7f4587ce5
  • Solo use indexes-on-expressions para optimizar ORDER BY o GROUP BY si COLLATE es correcto. Entrada e20dd54ab0e4383
  • Soluciona un error de aserción que surgía cuando la expresión en un índice-en-expresiones es realmente una constante. Entrada aa98619ad08ddca
  • Soluciona un error de aserción que podría ocurrir después de PRAGMA reverse_unordered_selects. Entrada cb91bf4290c211d
  • Corrige un error de segmentación que puede ocurrir para las consultas que usan funciones con valores de tabla en una subconsulta IN o EXISTS. Entrada b899b6042f97f5
  • Soluciona un posible problema de desbordamiento de enteros al compilar una expresión de tabla común horrenda. Este fue otro problema descubierto por OSSFuzz. Check-in 6ee8cb6ae5.
  • Corrige una posible lectura fuera de límite al consultar un archivo de base de datos corrupto, un problema detectado por Natalie Silvanovich de Google Project Zero. Check-in 04925dee41a21f.

Qué hay de nuevo en la versión 3.20.1:

  • La versión del parche de la versión 3.20.1 cambia dos líneas de código en la interfaz sqlite3_result_pointer () para solucionar una fuga de memoria rara.

Qué hay de nuevo en la versión 3.9.2:

  • La versión 3.9.2 de SQLite es una versión de parche que soluciona dos errores desconocidos.

Qué hay de nuevo en la versión 3.8.9:

  • Las nuevas características en esta versión incluyen el comando PRAGMA index_xinfo, la interfaz sqlite3_status64 () y el comando ".dbinfo" del shell de línea de comandos.

Qué hay de nuevo en la versión 3.8.8.2:

  • La versión de parche 3.8.8.2 corrige un problema menor: asegura que la operación sqlite3_wal_checkpoint (TRUNCATE) truncará siempre el registro de escritura anticipada incluso si el registro ya se ha restablecido y no contiene contenido nuevo. No está claro si se trata de una corrección de errores o una nueva función.
  • Normalmente, algo así pasaría a la próxima versión programada regularmente, pero un usuario destacado de SQLite necesitaba el cambio de prisa, así que nos alegramos de apresurarlo a través de este parche.
  • No hay ninguna razón para actualizar a menos que realmente necesite el comportamiento mejorado de sqlite3_wal_checkpoint (TRUNCATE).

Qué hay de nuevo en la versión 3.8.8.1:

  • Se corrigió un error en la lógica de clasificación, presente desde la versión 3.8.4, que puede hacer que el resultado aparezca en el orden incorrecto en consultas que contienen una cláusula ORDER BY, una cláusula LIMIT, y que tienen aproximadamente 60 o más columnas en el conjunto de resultados. Entrada f97c4637102a3ae72b79.
  • SQLITE_SOURCE_ID: "2015-01-20 16:51:25 f73337e3e289915a76ca96e7a05a1a8d4e890d55"
  • SHA1 para sqlite3.c: 33987fb50dcc09f1429a653d6b47672f5a96f19e

Qué hay de nuevo en la versión 3.8.8:

  • Nuevas características:
  • Agregó el comando PRAGMA data_version que se puede usar para determinar si un archivo de base de datos ha sido modificado por otro proceso.
  • Agregó la opción SQLITE_CHECKPOINT_TRUNCATE a la interfaz sqlite3_wal_checkpoint_v2 (), con las mejoras correspondientes a PRAGMA wal_checkpoint.
  • Se agregó la interfaz sqlite3_stmt_scanstatus (), disponible solo cuando se compila con SQLITE_ENABLE_STMT_SCANSTATUS.
  • El archivo sqlite3_table_column_metadata () se ha mejorado para que funcione correctamente en las tablas SIN ROWID y para verificar la existencia de una tabla si el parámetro del nombre de la columna es NULL. La interfaz ahora también se incluye en la compilación de forma predeterminada, sin requerir la opción de tiempo de compilación SQLITE_ENABLE_COLUMN_METADATA.
  • Agregó la opción de tiempo de compilación SQLITE_ENABLE_API_ARMOR.
  • Agregó la opción de tiempo de compilación SQLITE_REVERSE_UNORDERED_SELECTS.
  • Agregó la opción de tiempo de compilación SQLITE_SORTER_PMASZ y la opción SQLITE_CONFIG_PMASZ start-time.
  • Agregó la opción SQLITE_CONFIG_PCACHE_HDRSZ a sqlite3_config (), lo que facilita a las aplicaciones determinar la cantidad adecuada de memoria para usar con SQLITE_CONFIG_PAGECACHE.
  • El número de filas en una cláusula VALUES ya no está limitado por SQLITE_LIMIT_COMPOUND_SELECT.
  • Se agregó la extensión cargable eval.c que implementa una función SQL eval () que evaluará recursivamente SQL.
  • Mejoras de rendimiento:
  • Reduce el número de operaciones memcpy () involucradas en el equilibrio de un árbol b, para un aumento del rendimiento general del 3.2%.
  • Mejoras en las estimaciones de costos para la optimización de skip-scan.
  • La optimización de indexación automática ahora es capaz de generar un índice parcial si es apropiado.
  • Corrección de errores:
  • Asegure la durabilidad después de una pérdida de energía con "PRAGMA journal_mode = TRUNCATE" llamando a fsync () justo después de truncar el archivo del diario.
  • El planificador de consultas ahora reconoce que cualquier columna en la tabla de la derecha de un LEFT JOIN puede ser NULL, incluso si esa columna tiene una restricción NOT NULL. Evite tratar de optimizar las pruebas NULL en esos casos. Solución para el ticket 6f2222d550f5b0ee7ed.
  • Asegúrese de que ORDER BY ponga las filas en orden ascendente incluso si el operador DISTINCT se implementa utilizando un índice descendente. Solución para el ticket c5ea805691bfc4204b1cb9e.
  • Arregla las carreras de datos que pueden producirse bajo tensión cuando se ejecutan con muchos subprocesos en el modo de caché compartida donde algunos de los subprocesos son de apertura y cierre de conexiones.
  • Arregla errores de bloqueo oscuros encontrados por el borroso americano. Ticket a59ae93ee990a55.
  • Trabajar alrededor de un error del optimizador de GCC (para gcc 4.2.1 en MacOS 10.7) que causó que la extensión de R-Tree calculara resultados incorrectos cuando se compiló con -O3.
  • Otros cambios:
  • Deshabilita el uso de la rutina de la biblioteca C de strchrnul () a menos que esté habilitada específicamente mediante la opción de tiempo de compilación -DHAVE_STRCHRNULL.
  • Mejoras en la efectividad y precisión de las funciones de sugerencias SQL de probabilidad (), probable () y poco probable ().
  • SQLITE_SOURCE_ID: "2015-01-16 12:08:06 7d68a42face3ab14ed88407d4331872f5b243fdf"
  • SHA1 para sqlite3.c: 91aea4cc722371d58aae3d22e94d2a4165276905

Qué hay de nuevo en la versión 3.8.7.4:

  • Esta versión corrige las adiciones en un mutex que requieren los cambios del parche 3.8.7.3, pero se omitió accidentalmente. El mutex no fue requerido por ninguna de las pruebas internas de SQLite, pero Firefox falla sin él. Se agregaron casos de prueba para garantizar que el mutex nunca más se pierda.

Qué hay de nuevo en la versión 3.8.7.3:

  • Corrección de errores: asegúrese de que los objetos KeyInfo almacenados en memoria caché (una abstracción interna no visible para la aplicación) no se vuelven obsoletos al operar en modo caché compartido y cierran y vuelven a abrir frecuentemente algunas conexiones de bases de datos mientras dejan abiertas otras conexiones de bases de datos en el mismo caché compartido. continuamente. Entrada e4a18565a36884b00edf.
  • Corrección de errores: reconozca que cualquier columna en la tabla de la derecha de un LEFT JOIN puede ser NULL incluso si la columna tiene una restricción NOT NULL. No aplique optimizaciones que supongan que la columna nunca es NULL. Ticket 6f2222d550f5b0ee7ed.
  • SQLITE_SOURCE_ID: "2014-12-05 22:29:24 647e77e853e81a5effeb4c33477910400a67ba86"
  • SHA1 para sqlite3.c: 3ad2f5ba3a4a3e3e51a1dac9fda9224b359f0261

Qué hay de nuevo en la versión 3.8.7.2:

  • El motivo principal de esta versión es mejorar el comando ROLLBACK para permitir que las consultas en ejecución en la misma conexión de base de datos continúen ejecutándose mientras ROLLBACK no cambie el esquema. En todas las versiones anteriores de SQLite, un ROLLBACK haría que las consultas pendientes se detuvieran inmediatamente y devolviera SQLITE_ABORT o SQLITE_ABORT_ROLLBACK. Las consultas pendientes aún se cancelan si ROLLBACK cambia el esquema de la base de datos, pero a partir de esta versión del parche, las consultas pueden continuar ejecutándose si el esquema no se modifica.
  • Además de la mejora ROLLBACK, esta versión de parche también incluye correcciones para tres errores desconocidos.

Qué hay de nuevo en la versión 3.8.7.1:

  • La razón principal para este lanzamiento de errores es solucionar un problema con la actualización del valor de los campos al final de una tabla que se agregaron mediante ALTER TABLE ADD COLUMN. Este problema 1 apareció por primera vez en la versión 3.8.7.
  • Otra pequeña molestia en el lanzamiento de la versión 3.8.7 fue el hecho de que la versión de Android intentó usar la función strchrnul () de la biblioteca C estándar, pero esa función no está disponible en Android. Las versiones de Android tuvieron que agregar -DHAVE_STRCHRNUL = 0 para solucionar el problema. Este parche lo corrige para que las compilaciones de Android ahora funcionen sin ningún cambio.
  • La operación de PRAGMA journal_mode = TRUNCATE se ha mejorado para que invoca fsync () después de truncar el archivo de diario cuando PRAGMA synchronous = FULL. Esto ayuda a preservar la durabilidad de la transacción en el caso de una pérdida de energía que ocurre poco después de la confirmación.
  • Finalmente, se corrigieron un par de problemas ocultos de larga data asociados con ejecutar ACTUALIZAR y ELIMINAR en VIEW.

Qué hay de nuevo en la versión 3.8.7:

  • La mayoría de los cambios de la versión anterior han sido micro optimizaciones diseñadas para ayudar a SQLite a ejecutarse un poco más rápido. Cada optimización individual tiene un impacto de rendimiento inmensurablemente pequeño. Pero las mejoras se suman. Medido en una carga de trabajo bien definida (que los desarrolladores de SQLite usan como proxy para una carga de trabajo de aplicación típica) usando cachegrind en Linux y compilado con gcc 4.8.1 y -Os en x64 linux, la versión actual hace más de un 20% más de trabajo para la misma cantidad de ciclos de CPU en comparación con la versión anterior. Cachegrind no es una CPU real, y la carga de trabajo utilizada para la medición es solo un proxy. Entonces tu rendimiento puede variar. Esperamos ver aproximadamente la mitad de las mejoras medidas y notificadas en las aplicaciones del mundo real. El 10% es menos del 20% pero sigue siendo bastante bueno, creemos.
  • Esta versión incluye un nuevo conjunto de interfaces de lenguaje C que tienen parámetros de longitud de 32 bits sin firmar en lugar de con signo de 32 bits. Las nuevas API no proporcionan nuevas capacidades. Pero hacen que sea más fácil escribir aplicaciones que son más resistentes a las vulnerabilidades de desbordamiento de enteros.
  • Esta versión también incluye un nuevo clasificador que puede usar varios subprocesos para ayudar con las operaciones de clasificación de gran tamaño. (Algunas veces, se requieren operaciones de ordenación para implementar las cláusulas ORDER BY y / GROUP BY y casi siempre son necesarias para CREATE INDEX.) El clasificador de múltiples subprocesos está desactivado de manera predeterminada y debe habilitarse utilizando el comando PRAGMA threads SQL. Tenga en cuenta que el clasificador de subprocesos múltiples proporciona un rendimiento en tiempo real más rápido para clases grandes, pero también utiliza más ciclos de CPU y más energía.

Qué hay de nuevo en la versión 3.8.3.1:

  • La versión 3.8.3.1 de SQLite corrige un error presente en las versiones 3.8.1, 3.8.2 y 3.8.3 que puede provocar que las consultas omitan filas de salida válidas. Se recomienda actualizar desde esas versiones.
  • El problema solo aparece si SQLite se compila con las opciones SQLITE_ENABLE_STAT3 o SQLITE_ENABLE_STAT4 en tiempo de compilación. En ese caso, si una consulta tiene una cláusula WHERE que contiene expresiones como esta:
  • WHERE (expr1 O expr2 O ... O exprN) Y la columna NO ES NULA
  • Donde todos los expr1 a exprN son adecuados para su uso por índices, entonces durante la planificación de la consulta SQLite puede convertir erróneamente el término "column IS NOT NULL" en "column & gt; NULL". Pero el último término nunca es verdadero, por lo que la consulta no devolverá filas.

Qué hay de nuevo en la versión 3.8.3:

  • Se agregó soporte para expresiones de tabla comunes y la cláusula WITH.
  • Agregó la función de SQL printf ().
  • Agregó SQLITE_DETERMINISTIC como un bit opcional en el 4º argumento de sqlite3_create_function () y las interfaces relacionadas, proporcionando a las aplicaciones la capacidad de crear nuevas funciones que se pueden factorizar desde bucles internos cuando tienen argumentos constantes.
  • Agregue el código de error SQLITE_READONLY_DBMOVED, devuelto al comienzo de una transacción, para indicar que el archivo de base de datos subyacente ha sido renombrado o movido desde SQLite.
  • Permitir expresiones arbitrarias, incluidas llamadas a funciones y subconsultas, en el argumento de nombre de archivo a ATTACH.
  • Permitir que una cláusula VALUES se use en cualquier lugar en que sea válida una instrucción SELECT.
  • Reseed el PRNG utilizado por sqlite3_randomness (N, P) cuando se invoca con N == 0. Resembrar automáticamente después de un tenedor () en Unix.
  • Mejora la tabla virtual spellfix1 para que pueda buscar eficientemente por rowid.
  • Mejoras de rendimiento.
  • Mejoras en los comentarios en la visualización del código de bytes de VDBE cuando se ejecuta EXPLAIN.
  • Agregue la directiva "% token_class" al generador de analizadores LEMON y úselo para simplificar la gramática.
  • Cambia el código fuente de LEMON para evitar llamar a las funciones de biblioteca C que OpenBSD considera peligrosas. (Por ejemplo: sprintf).
  • Corrección de errores: en la función de importación de CSV de shell de línea de comandos, no finalice un campo cuando se produce una comilla doble escapada al final de una línea CRLN.
  • SQLITE_SOURCE_ID: "2014-02-03 13:52:03 e816dd924619db5f766de6df74ea2194f3e3b538"
  • SHA1 para sqlite3.c: 98a07da78f71b0275e8d9c510486877adc31dbee

Programas parecidos

Cego
Cego

17 Feb 15

H2 Database Engine
H2 Database Engine

17 Feb 15

Apache Cassandra
Apache Cassandra

19 Feb 15

MckoiDDB
MckoiDDB

14 Apr 15

Comentarios a la SQLite

Comentarios que no se encuentran
Añadir comentario
A su vez en las imágenes!