Се случи објавувањето на дистрибуираниот DBMS rqlite 7.0, кој користи SQLite како мотор за складирање и ви овозможува да ја организирате работата на кластерот од складишта синхронизирани едни со други. Една од карактеристиките на rqlite е леснотијата на инсталација, распоредување и одржување на дистрибуирано складирање толерантно на грешки, нешто слично на etcd и Consul, но со користење на модел на релациски податоци наместо формат на клуч/вредност. Проектниот код е напишан во Go и дистрибуиран под лиценцата MIT.
За да се задржат сите јазли во синхронизирана состојба, се користи алгоритам за консензус Raft. Rqlite ја користи оригиналната библиотека SQLite и двигателот go-sqlite3, на врвот на кој работи слој кој ги обработува барањата на клиентот, врши репликација на други јазли и го следи постигнувањето на консензус за изборот на водечки јазол.
Промените во базата на податоци може да се направат само од јазолот што е избран за лидер, но врските со операциите за пишување може да се испратат и до други јазли во кластерот, кои ќе ја вратат адресата на лидерот за да го повтори барањето (во следната верзија тие ветување дека ќе додаде автоматско препраќање барања до лидерот). Главниот акцент е на толеранцијата на грешки, така што DBMS скалира само со операции за читање, а операциите за пишување се тесно грло. Можно е да се изврши кластер rqlite од еден јазол и ова решение може да се користи за да се обезбеди пристап до SQLite преку HTTP без да се обезбеди толеранција на грешки.
Податоците SQLite на секој јазол не се чуваат во датотека, туку во меморија. На ниво на слој со имплементација на протоколот Raft, се чува дневник на сите SQLite команди кои водат до промени во базата на податоци. Овој дневник се користи за време на репликација (репликација на ниво на репродукција на барања на други јазли), при започнување нов јазол или за опоравување од губење на поврзувањето. За да се намали големината на дневникот, се користи автоматско пакување, кое започнува по одреден број промени и доведува до фиксирање на снимка, во однос на која започнува да се одржува нов дневник (состојбата на базата на податоци во меморијата е идентично со снимката + акумулираниот дневник за промени).
Карактеристики на rqlite:
- Лесно се распоредува кластер, без потреба од посебна инсталација на SQLite.
- Способност за брзо добивање на реплицирано складирање SQL.
- Подготвен за употреба во производствени проекти (производство-одделение).
- Присуство на HTTP(S) API што ви овозможува да ажурирате податоци во сериски режим и да го одредите водечкиот јазол на кластерот. Обезбедени се и интерфејс за командна линија и библиотеки на клиенти за различни програмски јазици.
- Достапност на услуга за идентификација на други јазли, што ви овозможува динамично да креирате кластери.
- Поддршка за шифрирање на размена на податоци помеѓу јазли.
- Можност за конфигурирање на нивото на проверка на релевантноста и конзистентноста на податоците при читање.
- Изборна можност за поврзување јазли во режим само за читање, кои не учествуваат во одредувањето на консензус и се користат за зголемување на приспособливоста на кластерот за операции за читање.
- Поддршка за сопствена форма на трансакции врз основа на комбинирање на команди во едно барање (трансакции базирани на BEGIN, COMMIT, ROLLBACK, SAVEPOINT и RELEASE не се поддржани).
- Поддршка за создавање жешки резервни копии.
Во новото издание:
- Додадена е поддршка за автоматско rqlite групирање со користење на нова услуга за откривање јазли што може да работи на дистрибуирано складирање како Consul и etcd. Оваа услуга им овозможува на rqlite јазлите автоматски да се пронајдат едни со други - администраторот треба само да стартува повеќе јазли на различни сервери. сервери, наведувајќи ја споделената адреса на кластерот Consul или etcd (на пр., „example.com:8500“), и јазлите автоматски ќе бидат приклучени кон кластерот. Водечкиот јазол периодично ги ажурира своите информации за адресата во складиштето Consul или etcd, овозможувајќи ви подоцна да го промените лидерот без да мора да ги реконфигурирате другите јазли, како и да додавате нови јазли дури и откако лидерот ќе се промени. Поддршката за старата услуга за откривање јазли (режим на откривање), поддржана од AWS Lambda, е прекината.
- CLI интерфејсот овозможува специфицирање на неколку хостови одеднаш - ако првиот јазол е недостапен, ќе се контактираат следните домаќини.
- Преработен кодот за парсирање rqlited аргументи на командната линија.
- Застарениот пакет protobuf е прекинат.
- Складирањето BoltDB што се користи во имплементацијата на протоколот Raft е заменето со bbolt, вилушка од проектот etcd.
Извор: opennet.ru
