Ubunlog David Naranjo  

Canonical anuncio la versión 1.0 de Dqlite, una biblioteca en C para SQL

Canonical

La semana pasada Canonical anuncio el lanzamiento de una versión importante del proyecto Dqlite 1.0, que está desarrollando un motor SQL incorporado compatible con SQLite que admite la replicación de datos, la recuperación automática ante desastres y la tolerancia a fallas al abarcar múltiples nodos.

Dqlite es una biblioteca en C que implementa un motor de base de datos SQL y replicado con alta disponibilidad y conmutación por error automática. El acrónimo “dqlite” significa “SQLite distribuido”, lo que significa que dqlite extiende SQLite con un protocolo de red que puede conectar varias instancias de su aplicación y hacer que actúen como un clúster de alta disponibilidad, sin dependencia de bases de datos externas.

Tal como se menciono el DBMS se implementa en forma de una biblioteca C adjunta a las aplicaciones y se distribuye bajo la licencia Apache 2.0 (el SQLite original se suministra como dominio público). La biblioteca es un complemento sobre la base de código SQLite existente, que agrega soporte para el protocolo de red para vincular múltiples instancias de la aplicación que se ejecuta en diferentes hosts.

Una aplicación creada con Dqlite puede funcionar como un clúster de conmutación por error autónomo, independiente de los DBMS externos.

En la práctica, Canonical utiliza Dqlite en el 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 fallas en los sistemas informáticos Edge .

Para garantizar la coherencia en la replicación de datos, se utiliza un método de consenso basado en el algoritmo Raft , que se utiliza en proyectos como etcd, RethinkDB, CockroachDB y OpenDaylight. Dqlite usa su propia implementación asincrónica de C-raft , escrita en C.

Para multiplexar el procesamiento de conexiones y organizar el lanzamiento de corutinas, se utilizan las bibliotecas preparadas libuv y libco .

En comparación con un proyecto rqlite similar , Dqlite proporciona soporte completo de transacciones, puede comunicarse con cualquier proyecto C, le permite usar la función time () y usa la replicación basada en marcos en lugar de la replicación basada en la traducción de expresiones SQL.

De las características que se pueden destacar de Dqlite son las siguientes:

  • Realizar todas las operaciones de disco y red en modo asíncrono
  • La presencia de un conjunto de pruebas para confirmar la exactitud de los datos
  • Bajo consumo de memoria e intercambio de datos eficiente a través de la red
  • Almacenamiento permanente en el disco de la base de datos y registro de transacciones (con posibilidad de almacenamiento en caché en la memoria)
  • Recuperación rápida después de fallas
  • Cliente CLI estable en lenguaje Go, que puede usarse 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 de la transacción.
  • Implementación asincrónica de un solo subproceso utilizando libuv como bucle de eventos.
  • Protocolo de cable personalizado optimizado para primitivas SQLite y tipos de datos.
  • Replicación de datos basada en el algoritmo Raft y su eficiente implementación en C-raft.

¿Como instalar Dqlite en Ubuntu y derivados?

Canonical proporciona información sobre como se puede construir un cliente para la interacción con Dqlite esto lo puedes consultar en el siguiente enlace.

Ahora en cuanto a la instalación de la biblioteca en el sistema, esta puede ser instalada de dos formas para el caso de los que son usuarios de Ubuntu o cualquier otro derivado de este. Canonical proporciona un PPA desde donde se puede obtener de una forma bastante sencilla.

Este PPA puede ser añadido desde una terminal y ejecutando en ella los siguientes comandos:

sudo add-apt-repository ppa:dqlite/v1
sudo apt-get update
sudo apt-get install libdqlite-dev

El otro método para poder instalar esta biblioteca es realizando la compilacion de esta en el sistema por lo que este es un método más general tanto para Ubuntu y otras distribuciones de Linux.

Para ello solamente deben de abrir una terminal y ejecutar los siguientes comandos:

git clone --depth 100 https://github.com/canonical/sqlite.git
cd sqlite
./configure --enable-replication
make
sudo make install
cd ..
git clone https://github.com/canonical/libco.git
cd libco
make
sudo make install
cd ..
git clone https://github.com/canonical/raft.git
cd raft
autoreconf -i
./configure
make
sudo make install
cd ..

Una vez que se instalan todas las bibliotecas necesarias, para poder construir la biblioteca compartida dqlite, pueden ejecutar:

autoreconf -i
./configure
make
sudo make install

Leave A Comment

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.