rqlite, una excelente DBMS relacional distribuida y ligera

Si estas en busca de un DBMS distribuido que utilice SQLite como motor de almacenamiento, dejame decirte que rqlite es el indicado para ti, ya que permite organizar el trabajo de un clúster a partir de almacenamientos sincronizados entre sí.

De las características de rqlite, se destaca la facilidad de instalación, implementación y mantenimiento del almacenamiento distribuido tolerante a fallas, que es algo similar a etcd y Consul, pero utiliza un modelo de datos relacionales en lugar de un formato clave/valor.

Sobre rqlite

El algoritmo de consenso de Raft se utiliza para mantener todos los nodos sincronizados. Rqlite usa la biblioteca SQLite original y el controlador go-sqlite3, además de los cuales ejecuta una capa que procesa las solicitudes del cliente, se replica en otros nodos y monitorea el consenso alcanzado sobre la elección del nodo principal.

Los cambios en la base de datos solo pueden ser realizados por el nodo seleccionado como líder, pero las conexiones con operaciones de escritura pueden dirigirse a otros nodos del clúster, que devolverán la dirección del líder para repetir la solicitud (en la próxima versión, prometen agregar el desvío automático de la llamada al líder).

El enfoque principal está en la tolerancia a fallas, por lo que el DBMS escala solo en operaciones de lectura, y las operaciones de escritura son el cuello de botella. Es posible ejecutar un clúster rqlite desde un solo nodo y dicha solución se puede utilizar para proporcionar acceso a SQLite a través de HTTP sin proporcionar tolerancia a fallas.

Los datos de SQLite en cada nodo no se almacenan en un archivo, sino en la memoria. En el nivel de la capa con la implementación del protocolo Raft, se mantiene un registro de todos los comandos SQLite que conducen a un cambio en la base de datos.

Este registro se utiliza para la replicación (replicación en el nivel de reproducción de la consulta en otros nodos), al iniciar un nuevo nodo o para recuperarse de una pérdida de conectividad.

Para reducir el tamaño del registro, se utiliza el empaquetado automático, que comienza después de un número específico de cambios y conduce a la confirmación de una instantánea, con respecto a la cual comienza un nuevo registro (el estado de la base de datos en la memoria es idéntico al instantánea + el registro de cambios acumulados).

De las características de rqlite:

  • Facilidad de implementación de clústeres, sin la necesidad de una instalación de SQLite por separado.
  • Capacidad para obtener rápidamente almacenamiento SQL replicado.
  • Listo para usar en proyectos de producción.
  • Disponibilidad de HTTP (S) API, que permite actualizar datos en modo batch y determinar el nodo líder del cluster. También se proporcionan una interfaz de línea de comandos y bibliotecas de cliente para varios lenguajes de programación.
  • La presencia de un servicio para definir otros nodos que le permite crear clústeres de forma dinámica.
  • Soporte para el cifrado del intercambio de datos entre nodos.
  • La capacidad de personalizar el nivel de verificación de la relevancia y la coherencia de los datos al leer.
  • Capacidad opcional para conectar nodos de solo lectura que no participan en la determinación del consenso y se utilizan para aumentar la escalabilidad del clúster para operaciones de lectura.
  • Soporte para la forma nativa de transacciones basadas en la combinación de comandos en una sola solicitud (las transacciones basadas en BEGIN, COMMIT, ROLLBACK, SAVEPOINT y RELEASE no son compatibles).

Sobre rqlite 6.0

La nueva versión introduce cambios arquitectónicos significativos destinados a mejorar la confiabilidad del clúster al mejorar el proceso de dirigir las solicitudes de lectura y escritura a los nodos del clúster correctos.

Los nodos de Rqlite ahora pueden multiplexar múltiples conexiones lógicas entre ellos utilizando las conexiones TCP establecidas entre los nodos por el protocolo Raft. Si la solicitud requiere la autoridad del nodo líder, pero se envía al nodo secundario, el nodo secundario puede determinar la dirección del líder y transmitirla al cliente, sin realizar el cálculo de consenso de Raft.

El cambio también eliminó el componente separado para sincronizar metadatos y eliminó el manejo separado del estado y metadatos de Raft.

Los nodos secundarios ahora envían solicitudes al nodo líder solo cuando es necesario, cuando es necesario averiguar la dirección del nodo líder. La API ofrece la posibilidad de obtener información sobre el estado de otros nodos del clúster. Comando Sysdump agregado a CLI.

Finalmente si estás interesado en conocer más al respecto o consultar las instrucciones de instalación y manual de uso, puedes hacerlo desde el siguiente enlace.


El contenido del artículo se adhiere a nuestros principios de ética editorial. Para notificar un error pincha aquí.

Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada.

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.