SQLite 3.40 llega con soporte oficial para Wasm y mas
Se dio a conocer el lanzamiento de la nueva versión del popular DBMS «SQLite 3.40», un DBMS liviano diseñado como una biblioteca de complementos.
SQLite es un motor de base de datos relacional liviano accesible a través del lenguaje SQL. A diferencia de los servidores de bases de datos tradicionales, como MySQL o PostgreSQL, su particularidad es no reproducir el esquema cliente-servidor habitual, sino integrarse directamente en los programas. De hecho, toda la base de datos (declaraciones, tablas, índices y datos) se almacena en un archivo independiente de la plataforma.
Gracias a su extrema ligereza, SQLite es uno de los motores de bases de datos más utilizados en el mundo. Se utiliza en muchos programas de consumo y también es muy popular en los sistemas integrados, incluidos los teléfonos inteligentes más modernos.
Principales novedades de SQLite 3.40
En esta nueva versión que se presenta, se destaca que se implementó una capacidad experimental para compilar SQLite en un código WebAssembly intermedio que se puede ejecutar en un navegador web y es adecuado para organizar el trabajo con la base de datos desde aplicaciones web en el lenguaje JavaScript.
Los desarrolladores web cuentan con una interfaz orientada a objetos de alto nivel para trabajar con datos al estilo de sql.js o Node.js, vinculando una API C de bajo nivel y una API basada en el mecanismo Web Worker que permite crear controladores asincrónicos que se ejecutan en subprocesos separados. Los datos que las aplicaciones web almacenan en la versión WASM de SQLite se pueden almacenar en el lado del cliente utilizando OPFS (Origin-Private FileSystem) o la API window.localStorage.
Otro de los cambios que se destaca de esta nueva versión, es el rendimiento mejorado del planificador de consultas, ademas se eliminaron las restricciones al utilizar índices con tablas de más de 63 columnas (anteriormente no se aplicaba la indexación para operaciones con columnas cuyo número ordinal excediera de 63).
SQLite 3.40 tambien presenta una indexación mejorada de los valores utilizados en las expresiones, tambien se dejó de cargar cadenas grandes y blobs del disco al procesar los operadores NOT NULL y IS NULL. Materialización excluida de vistas para las que se realiza un escaneo completo solo una vez.
Se han añadido comprobaciones adicionales a la implementación del parámetro «PRAGMA Integrity_check». Por ejemplo, las tablas sin el atributo STRICT no deben contener valores numéricos en columnas de texto y valores de cadena con números en columnas numericas.
Ademas de ello, tambien se destaca que se ha agregado la extensión de recuperación, diseñada para recuperar datos de archivos dañados de la base de datos. La interfaz de línea de comandos utiliza el comando «.recover» para restaurar.
De los demás cambios que se destacan de esta nueva versión:
- En el código base, en lugar del tipo «char *», se usa un tipo sqlite3_filename separado para representar nombres de archivo.
- Se agregó la función interna sqlite3_value_encoding().
- Se agregó el modo SQLITE_DBCONFIG_DEFENSIVE para evitar cambiar la versión del esquema de almacenamiento.
- También se agregó verificar la corrección del orden de las filas en las tablas con el signo «SIN ROWID».
- La expresión «VACUUM INTO» tiene en cuenta los ajustes «PRAGMA synchronous».
- Se agregó la opción de compilación SQLITE_MAX_ALLOCATION_SIZE, que permite limitar el tamaño de los bloques al asignar memoria.
- El algoritmo para generar números pseudoaleatorios integrado en SQLite se ha transferido del uso del cifrado de flujo RC4 a Chacha20.
- Se permite utilizar índices con el mismo nombre en diferentes esquemas de datos.
- Se han realizado optimizaciones de rendimiento para reducir la carga en la CPU en aproximadamente un 1 % durante la actividad típica.
Finalmente, si estás interesado en poder conocer más al respecto debes saber que el código SQLite se distribuye en el dominio público, es decir se puede utilizar sin restricciones y de forma gratuita para cualquier propósito.
El apoyo financiero para los desarrolladores de SQLite lo proporciona un consorcio especialmente creado, que incluye empresas como Adobe, Oracle, Mozilla, Bentley y Bloomberg.
Puedes consultar más detalles sobre este nuevo lanzamiento en el siguiente enlace.