Доступний Dqlite 1.0, розподілений варіант SQLite від Canonical

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

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

Для забезпечення несуперечності при реплікації даних застосовується метод досягнення консенсусу на основі алгоритму Пліт, який використовується в таких проектах, як etcd, RethinkDB, CockroachDB та OpenDaylight. У Dqlite застосовується власна асинхронна реалізація C-raftнаписана мовою Сі. Для мультиплексування обробки з'єднань та організації запуску співпрограм використовуються готові бібліотеки libuv и libco.

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

Особливості Dqlite:

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

Джерело: opennet.ru

Додати коментар або відгук