Los proyectos CBS y sqld desarrollan versiones en la nube y de servidor de SQLite

Los desarrolladores de SQLite están desarrollando un módulo VFS CBS (Cloud Backed SQLite) experimental que le permite almacenar el contenido de la base de datos no en un archivo local, sino en un almacenamiento externo en la nube. Para el almacenamiento, se utiliza un formato de base de datos especialmente optimizado para almacenamiento externo, que le permite cargar datos desde un almacenamiento externo de forma dinámica según sea necesario, sin copiar primero toda la base de datos en el sistema local. De los almacenamientos en la nube, actualmente se admiten Azure Blob Storage y Google Cloud Storage. Cualquier aplicación que admita SQLite regular se puede convertir para usar CBS.

El módulo VFS puede funcionar en segundo plano y en modo activo. En segundo plano, un proceso en segundo plano se ejecuta constantemente en el sistema, lo que permite el acceso a la base de datos externa en modo de solo lectura, pero mantiene un caché compartido que puede ser compartido por diferentes procesos. En modo activo, se permiten lecturas y escrituras, pero solo se usa la memoria caché local del proceso actual. Solo un cliente puede escribir a la vez, y otros clientes no verán los cambios escritos hasta que los soliciten explícitamente desde el almacenamiento en la nube. Para separar diferentes solicitudes de escritura, se utiliza un sistema de bloqueo típico de SQLite basado en el registro WAL.

Los desarrolladores cuentan con una API de C extendida y una interfaz de línea de comandos que les permite realizar operaciones como crear y borrar almacenamiento externo, cargar y descargar una base de datos a/desde un almacenamiento externo, crear una copia de una base de datos en un almacenamiento externo, ver una lista de bases de datos en el almacenamiento en la nube, eliminando bloques no utilizados del almacenamiento en la nube.

Por separado, los desarrolladores del proyecto libSQL (una bifurcación extendida de SQLite) anunciaron la versión de servidor de SQLite - sqld, que le permite organizar el trabajo de un DBMS compartido, cuya conexión de clientes se realiza mediante PostgreSQL o HTTP protocolo. Por ejemplo, para conectarse a sqld, se pueden usar las bibliotecas de cliente existentes creadas para PostgreSQL DBMS y, entre otras cosas, la interfaz CLI de psql. También se puede acceder al servidor sqld mediante una API basada en HTTP, lo que facilita la integración con aplicaciones web. El código sqld está escrito en Rust y se distribuye bajo la licencia MIT.

Las áreas de aplicación de sqld incluyen copias de seguridad, replicación a otros sistemas y acceso a la base de datos SQLite en infraestructuras sin servidor donde el almacenamiento persistente es insuficiente y es imposible mantener una base de datos de archivos local. En sistemas sin servidor, la base de datos con la que trabaja sqld puede replicarse desde otros sistemas. servidoresPara garantizar una alta disponibilidad y tolerancia a fallos, se admite la integración con mvSQLite (una variante distribuida de SQLite que se ejecuta sobre FoundationDB). Se implementa un modo de copia de seguridad activa mediante instantáneas periódicas del estado de la base de datos y la replicación de los cambios del registro WAL a 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 pasar de almacenar datos en un archivo local a trabajar a través de sqld. Es posible descargar extensiones a SQLite. Las bibliotecas de cliente están preparadas para TypeScript, JavaScript, Rust, Go y Python. Puede trabajar con una base de datos vinculada a sqld al mismo tiempo utilizando las herramientas estándar de SQLite, es decir, sqld actúa como complemento para proporcionar acceso de red a la base de datos, replicación y copia de seguridad. Por ejemplo: # Inicie 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 # Acceda a la base de datos utilizando las utilidades de PostgreSQL: psql -q postgres ://127.0.0.1 # Conéctese localmente a la base de datos utilizando el kit de herramientas de SQLite: sqlite3 foo.db # Acceda a través de HTTP: curl -s -d "{\"declaraciones\": [\"SELECCIONAR * de bases de datos; \"] } »\http://127.0.0.1:8000

Como conclusión, podemos 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 varios hosts. LiteFS replica el estado de la base de datos entre varios sistemas al interceptar las operaciones de escritura en un archivo de la base de datos y transmitir estas operaciones a otros sistemas, utilizando un tipo de mecanismo de transacción y guardando las transacciones en un archivo separado en formato LTX. El código LiteFS está escrito en Go y se distribuye bajo la licencia Apache 2.0.

Fuente: opennet.ru

Compre alojamiento confiable para sitios con protección DDoS, servidores VPS VDS 🔥 Compra alojamiento web fiable con protección DDoS, servidores VPS VDS | ProHoster