Los proyectos CBS y sqld desarrollan variantes en la nube y en servidores de SQLite.

Los desarrolladores de SQLite están desarrollando un módulo VFS experimental llamado CBS (Cloud Backed SQLite), que permite almacenar el contenido de la base de datos no en un archivo local, sino en un almacenamiento en la nube externo. Para el almacenamiento se utiliza un formato de base de datos especialmente optimizado para el almacenamiento externo, que permite cargar datos del almacenamiento externo de forma dinámica según sea necesario, sin la necesidad de copiar previamente toda la base de datos al sistema local. Actualmente, se admiten Azure Blob Storage y Google Cloud Storage como almacenamiento en la nube. Cualquier aplicación que sea compatible con SQLite estándar puede ser migrada para utilizar CBS.

El módulo VFS puede operar en modo activo y en segundo plano. En el modo de segundo plano, un proceso de fondo se ejecuta constantemente en el sistema, permitiendo acceder a la base de datos externa solo en modo de lectura, pero manteniendo una caché compartida que puede ser utilizada por diferentes procesos. En el modo activo, se permite la lectura y escritura, pero solo se utiliza la caché local del proceso actual. En cada momento, solo un cliente puede realizar escrituras, y otros clientes no verán los cambios escritos hasta que los soliciten explícitamente del almacenamiento en la nube. Para separar diferentes solicitudes de escritura, se utiliza el sistema de bloqueos típico de SQLite basado en el registro WAL.

Se proporciona a los desarrolladores una API C ampliada y una interfaz de línea de comandos que permite realizar operaciones como crear y limpiar el almacenamiento externo, cargar y descargar la base de datos de/en el almacenamiento externo, crear una copia de la base de datos en el almacenamiento externo, ver la lista de bases de datos en el almacenamiento en la nube y eliminar bloques no utilizados del almacenamiento en la nube.

Los desarrolladores del proyecto libSQL (un fork ampliado de SQLite) han anunciado una versión de servidor de SQLite llamada sqld, que permite organizar el funcionamiento de un sistema de gestión de bases de datos compartido, al cual se puede conectar clientes a través de un protocolo PostgreSQL o HTTP. Por ejemplo, se pueden utilizar bibliotecas de cliente existentes diseñadas para bases de datos PostgreSQL para conectarse a sqld, incluyendo la interfaz de línea de comandos psql. También se puede acceder al servidor sqld mediante una API basada en el protocolo HTTP, lo que simplifica la integración con aplicaciones web. El código de sqld está escrito en Rust y se distribuye bajo la licencia MIT.

Las áreas de aplicación de sqld incluyen la copia de seguridad, la replicación a otros sistemas y la organización del acceso a bases de datos SQLite en infraestructuras sin servidor, donde no hay almacenamiento permanente y no se puede mantener una base de datos en un archivo local. En sistemas sin servidor, la base de datos con la que trabaja sqld puede replicarse desde otras. servidores. Para garantizar una alta disponibilidad y resistencia a fallos, se mantiene la integración con mvSQLite (una variante distribuida de SQLite que funciona sobre FoundationDB). Hay un modo de mantenimiento de una copia de seguridad activa, que se realiza mediante la conservación periódica de instantáneas del estado de la base de datos y la replicación de cambios desde el registro WAL en un almacenamiento en la nube compatible con Amazon S3.

Para las aplicaciones, se proporciona una biblioteca compatible con SQLite que se puede cargar a través de LD_PRELOAD para cambiar de almacenamiento de datos en un archivo local a trabajar a través de sqld. Es posible cargar extensiones para SQLite. Las bibliotecas del cliente están preparadas para TypeScript, JavaScript, Rust, Go y Python. Con la base de datos asociada a sqld, se puede trabajar simultáneamente con las herramientas estándar de SQLite, es decir, sqld actúa como una capa adicional para proporcionar acceso en red a la base de datos, replicación y copias de seguridad. Por ejemplo: # Iniciar el servidor para la base de datos SQLite foo.db: sqld -d foo.db -p 127.0.0.1:5432 —http-listen-addr=127.0.0.1:8000 # Consultar la base de datos utilizando las utilidades de PostgreSQL: psql -q postgres://127.0.0.1 # Conectar localmente a la base de datos utilizando las herramientas de SQLite: sqlite3 foo.db # Consultar a través de HTTP: curl -s -d "{\"statements\": [\"SELECT * from databases;\"] }" \ http://127.0.0.1:8000

En conclusión, se puede mencionar el proyecto LiteFS, desarrollado por Fly.io. LiteFS es un módulo FUSE para organizar el trabajo con una base de datos SQLite compartida en múltiples hosts. LiteFS replica el estado de la base de datos entre varios sistemas mediante la interceptación de las operaciones de escritura en el archivo de la base de datos y la transmisión de estas operaciones a otros sistemas, utilizando un mecanismo similar a las transacciones y el almacenamiento de transacciones en un archivo separado en formato LTX. El código de LiteFS está escrito en Go y se distribuye bajo la licencia Apache 2.0.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster