Миналата седмица Canonical обяви пускането на основна версия на проекта Dqlite 1.0, разработвате SQL двигател Вграден SQLite съвместим, който поддържа репликация на данни, автоматично възстановяване при аварийни ситуации и толерантност към грешки чрез обхващане на множество възли.
Dqlite е C библиотека Той изпълнява репликиран и SQL механизъм за бази данни с висока наличност и автоматичен отказ. Съкращението "dqlite" означава "Разпределен SQLite", което означава, че dqlite разширява SQLite с мрежов протокол, който може да свърже множество екземпляри на вашето приложение и да ги накара да действат като високодостъпен клъстер, без зависимост от външни бази данни.
Както е споменато СУБД е реализирана под формата на C библиотека, прикрепена към приложения и се разпространява под лиценза Apache 2.0 (оригиналният SQLite се предоставя в публичното пространство). Библиотеката е приставка на базата на съществуващ код на SQLite, което добавя поддръжка на мрежов протокол за свързване на множество екземпляри на приложението, работещо на различни хостове.
Приложение, изградено с Dqlite, може да функционира като клъстер за отказоустойчивост по автономна грешка, независимо от външна СУБД.
На практика, Canonical използва Dqlite в системата за управление на контейнери LXD. Сред областите на приложение на библиотеката се споменава и създаването на устройства и процесори Internet of Things, устойчиви на грешки в изчислителните системи Edge.
За да се осигури последователност в репликацията на данни, се използва консенсусен метод, базиран на алгоритъма Raft, който се използва в проекти като etcd, RethinkDB, CockroachDB и OpenDaylight. Dqlite използва собствена асинхронна реализация на C-raft, написана на C.
За да се мултиплексира обработката на връзката и да се организира стартирането на съпрограми, се използват подготвените библиотеки libuv и libco.
В сравнение с подобен rqlite проект, Dqlite предоставя пълна поддръжка на транзакции, той може да комуникира с всеки проект на C, позволява ви да използвате функцията time () и използва репликация въз основа на рамка вместо репликация, базирана на превод на SQL изрази.
От функциите, които могат да бъдат подчертани в Dqlite, са следните:
- Извършвайте всички дискови и мрежови операции в асинхронен режим
- Наличието на набор от тестове за потвърждаване на точността на данните
- Ниска консумация на памет и ефективен обмен на данни по мрежата
- Постоянно съхранение на диска на базата данни и регистър на транзакциите (с възможност за кеширане в паметта)
- Бързо възстановяване след неуспехи
- Стабилен клиент на CLI в език Go, който може да се използва за инициализиране на базата данни, конфигуриране на репликация и свързване / изключване на възли
- Поддръжка за ARM, X86, POWER и IBM Z архитектури
- Внедряването на алгоритъма Raft е оптимизирано за минимизиране на латентността на транзакциите.
- Асинхронно изпълнение с единична резба, използващо libuv като цикъл на събития.
- Персонализиран кабелен протокол, оптимизиран за примитиви на SQLite и типове данни.
- Репликация на данни въз основа на алгоритъма на Raft и ефективното му прилагане в C-raft.
Как да инсталирам Dqlite на Ubuntu и деривати?
Canonical предоставя информация за това как можете да изградите клиент за взаимодействие с Dqlite, можете да се консултирате с това В следващия линк.
Що се отнася до инсталирането на библиотеката в системата, Това може да се инсталира по два начина за тези, които са потребители на Ubuntu или всяко друго производно от него. Canonical предоставя PPA откъдето може да се получи по доста прост начин.
Този PPA може да бъде добавен от терминал и да изпълнява следните команди в него:
sudo add-apt-repository ppa:dqlite/v1 sudo apt-get update sudo apt-get install libdqlite-dev
Другият метод за инсталиране на тази библиотека е чрез компилиране от това в системата, така че това е по-общ метод както за Ubuntu, така и за други Linux дистрибуции.
За целта трябва само да отворят терминал и да изпълнят следните команди:
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 ..
След като бъдат инсталирани всички необходими библиотеки, за да изградите споделената библиотека dqlite, можете да стартирате:
autoreconf -i ./configure make sudo make install