+38/050/370-3627
+38/093/220-0872
+38/044/257-2444
Новини

Dqlite 1.0 (Distributed SQLite) – анонсований розподілений варіант SQLite від компанії Canonical

Dqlite 1.0 (Distributed SQLite) - анонсований розподілений варіант SQLite від компанії Canonical

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:

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

Інші новини