Доступен Dqlite 1.0, распределённый вариант SQLite от компании Canonical

1 сентября 2019 года

Wikinews-logo-ru.svg

Компания Canonical опубликовала значительный выпуск проекта Dqlite 1.0 (Distributed SQLite), развивающего совместимый с SQLite встраиваемый SQL-движок, поддерживающий репликацию данных, автоматическое восстановление после сбоев и обеспечение отказоустойчивости через разнесение обработчиков на несколько узлов. СУБД реализована в форме прикрепляемой к приложениям Си-библиотеки и распространяется под лицензией Apache 2.0 (оригинальный SQLite поставляется как общественное достояние). Доступны биндинги для языка Go.

Библиотека является надстройкой над существующей кодовой базой SQLite, которая добавляет поддержку сетевого протокола для связывания между собой нескольких экземпляров приложения, запущенных на разных хостах. Собранное с Dqlite приложение может функционировать как самодостаточный отказоустойчивый кластер, не зависящий от внешних СУБД. На практике Dqlite используется компанией Canonical в системе управления контейнерами LXD. Среди областей применения библиотеки также упоминается создание отказоустойчивых устройств интернета-вещей и обработчиков в системах Edge -вычислений.

Для обеспечения непротиворечивости при репликации данных применяется метод достижения консенсуса на базе алгоритма Raft, который используется в таких проектах, как etcd, RethinkDB, CockroachDB и OpenDaylight. В Dqlite применяется собственная асинхронная реализация C-raft, написанная на языке Си. Для мультиплексирования обработки соединений и организации запуска сопрограмм используются готовые библиотеки libuv и libco.

По сравнению с похожим проектом rqlite, Dqlite обеспечивает полную поддержку транзакций, может связываться с любыми проектами на языке Си, позволяет использовать функцию time() и применяет репликацию на основе кадров вместо репликации на основе трансляции SQL-выражений.

Особенности Dqlite:

  • Выполнение всех дисковых и сетевых операций в асинхронном режиме;
  • Наличие тестового набора для подтверждения корректности данных;
  • Низкое потребление памяти и эффективный обмен данными по сети;
  • Постоянное хранение на диске БД и лога транзакций (c возможностью кэширования в памяти);
  • Быстрое восстановление после сбоев;
  • Стабильный CLI-клиент на языке Go, который можно использовать для инициализации БД, настройки репликации и подключения/отключения узлов;
  • Поддержка архитектур ARM, X86, POWER и IBM Z;
  • Реализация алгоритма Raft оптимизирована для минимизации задержек при фиксации транзакций.
 

ИсточникиПравить


Эта статья содержит материалы из статьи «Доступен Dqlite 1.0, распределённый вариант SQLite от компании Canonical», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
 

Комментарии:Доступен Dqlite 1.0, распределённый вариант SQLite от компании Canonical