Disponible Dqlite 1.0, una versión distribuida de SQLite de Canonical

Compañía canónica опубликовала lanzamiento significativo del proyecto dqlite 1.0 (SQLite distribuido), que desarrolla un motor SQL integrado compatible con SQLite que admite la replicación de datos, la recuperación automática de fallas y la tolerancia a fallas mediante la distribución de controladores en múltiples nodos. El DBMS se implementa en forma de una biblioteca C adjunta a las aplicaciones y distribuido por bajo la licencia Apache 2.0 (el SQLite original se proporciona en el dominio público). Enlaces de idiomas disponibles Go.

La biblioteca es un complemento al código base SQLite existente que agrega soporte de protocolo de red para interconectar múltiples instancias de una aplicación que se ejecuta en diferentes hosts. Una aplicación compilada con Dqlite puede funcionar como un clúster autosuficiente y tolerante a fallos, independiente de los DBMS externos. En la práctica, Canonical utiliza Dqlite en su sistema de gestión de contenedores. LXD. Entre las áreas de aplicación de la biblioteca también se menciona la creación de dispositivos y procesadores de Internet de las cosas tolerantes a fallos en los sistemas.
Southern Implants- cálculos.

Para garantizar la coherencia en la replicación de datos, se utiliza un método de consenso basado en algoritmos. Raft, que se utiliza en proyectos como etcd, RethinkDB, CockroachDB y OpenDaylight. Dqlite utiliza su propia implementación asincrónica Artesanía, escrito en lenguaje C. Las bibliotecas listas para usar se utilizan para multiplexar el procesamiento de conexiones y organizar el lanzamiento de corrutinas. libuv и libco.

Comparado con un proyecto similar rqlitaDqlite proporciona soporte transaccional completo, puede comunicarse con cualquier proyecto C, permite el uso de la función time() y utiliza replicación basada en marcos en lugar de replicación basada en traducción SQL.

Características de Dqlite:

  • Realice todas las operaciones de disco y red de forma asincrónica;
  • Disponibilidad de un conjunto de prueba para confirmar la exactitud de los datos;
  • Bajo consumo de memoria e intercambio de datos eficiente a través de la red;
  • Almacenamiento permanente de la base de datos y el registro de transacciones en disco (con posibilidad de almacenamiento en caché en la memoria);
  • Rápida recuperación de fallas;
  • Cliente CLI estable en lenguaje Go, que se puede utilizar para inicializar la base de datos, configurar la replicación y conectar/desconectar nodos;
  • Admite arquitecturas ARM, X86, POWER e IBM Z;
  • La implementación del algoritmo Raft está optimizada para minimizar los retrasos al realizar transacciones.

Fuente: opennet.ru

Añadir un comentario