La empresa Canonical una importante publicación del proyecto (Distributed SQLite), que desarrolla un motor SQL embebido compatible con SQLite, que soporta replicación de datos, recuperación automática de fallos y garantiza alta disponibilidad al distribuir los manejadores en múltiples nodos. La base de datos está implementada como una biblioteca en C que se puede adjuntar a aplicaciones y bajo la licencia Apache 2.0 (SQLite original se proporciona como dominio público). Hay enlaces disponibles para el lenguaje .
La biblioteca es una extensión de la base de código existente de SQLite, que añade soporte para un protocolo de red para vincular múltiples instancias de aplicaciones que se ejecutan en diferentes hosts. La aplicación compilada con Dqlite puede operar como un clúster autónomo y tolerante a fallos, sin depender de bases de datos externas. En la práctica, Dqlite es utilizado por Canonical en su sistema de gestión de contenedores . También se menciona el uso de la biblioteca para crear dispositivos de internet de las cosas altamente disponibles y manejadores en sistemas
.
Para asegurar la consistencia en la replicación de datos, se aplica un método para alcanzar consenso basado en el algoritmo , que se utiliza en proyectos como etcd, RethinkDB, CockroachDB y OpenDaylight. Dqlite emplea una implementación asíncrona propia de , escrita en C. Para el multiplexado de conexiones y la gestión del lanzamiento de corutinas, se utilizan bibliotecas ya existentes y .
En comparación con un proyecto similar , Dqlite ofrece soporte completo para transacciones, puede enlazarse con cualquier proyecto en C, permite el uso de la función time() y aplica replicación basada en instantáneas en lugar de replicación basada en la transmisión de expresiones SQL.
Características de Dqlite:
- Realización de todas las operaciones de disco y red en modo asíncrono;
- Disponibilidad de un conjunto de pruebas para confirmar la corrección de los datos;
- Bajo consumo de memoria y eficiente intercambio de datos por la red;
- Almacenamiento permanente en disco de la base de datos y del log de transacciones (con posibilidad de caché en memoria);
- Recuperación rápida tras fallos;
- Cliente CLI estable escrito en Go, que se puede utilizar para inicializar la base de datos, configurar la replicación y conectar/desconectar nodos;
- Soporte para arquitecturas ARM, X86, POWER e IBM Z;
- La implementación del algoritmo Raft está optimizada para minimizar la latencia al confirmar transacciones.
Fuente: opennet.ru
