Byla vydána distribuovaná databázová SYSTÉMA rqlite 7.0, která používá SQLite jako úložiště a umožňuje organizaci práci kaskády synchronizovaných úložišť. Mezi zvláštnostmi rqlite se uvádí snadnost instalace, nasazení a údržby rozděleného odolného úložiště, které je částečně podobné etdc a Consul, ale používá relační model pro práci s daty namísto formátu klíč/hodnota. Kód projektu je napsán v jazyce Go a je distribuován pod licencí MIT.
Pro udržení všech uzlů ve synchronizovaném stavu se používá algoritmus dosažení konsenzu Raft. Rqlite používá originální knihovnu SQLite a ovladač go-sqlite3, na nichž běží vrstva, která zpracovává požadavky klientů, provádí replikaci na další uzly a sleduje dosažení konsenzu při výběru vedoucího uzlu.
Změny v databázi mohou být prováděny pouze uzlem, který byl zvolen jako vedoucí, avšak spojení s operacemi zápisu mohou být směřována i na další uzly kaskády, které vrátí adresu vedoucího pro opakování požadavku (v další verzi slibují přidání automatického přesměrování k vedoucímu). Hlavní důraz je kladen na odolnost vůči chybám, proto je databázová SYSTÉMA škálována pouze pro operace čtení, zatímco operace zápisu představují úzké místo. Je možné spustit kaskádu rqlite z jednoho uzlu a takové řešení může být použito pro organizaci přístupu k SQLite přes HTTP bez poskytnutí odolnosti vůči chybám.
Data SQLite na každém uzlu nejsou uložena v souboru, ale v paměti. Na úrovni vrstvy s implementací protokolu Raft se vede záznam všech příkazů SQLite, které vedou ke změnám databáze. Tento záznam se používá při replikaci (replikace na úrovni reprodukce požadavků na jiných uzlech), při spuštění nového uzlu nebo k obnovení po ztrátě konektivity. Pro zkrácení velikosti záznamu se používá automatické balení, které se spouští po zadaném počtu změn a vede k uložení snímku, na jehož základě se začíná zaznamenávat nový záznam (stav databáze v paměti je identický se snímkem + nahromaděným záznamem změn).
Vlastnosti rqlite:
- Snadnost nasazení kaskády, bez potřeby samostatné instalace SQLite.
- Možnost rychle získat replikované SQL úložiště.
- Připravenost k použití v pracovních projektech (production-grade).
- Přítomnost HTTP(S) API, které umožňuje aktualizovat data v dávkách a určovat vedoucí uzel clusteru. K dispozici je také příkazový řádek a klientské knihovny pro různé programovací jazyky.
- Existence služby pro určování dalších uzlů, která umožňuje dynamicky vytvářet clustery.
- Podpora šifrování výměny dat mezi uzly.
- Možnost nastavení úrovně kontroly aktuálnosti a konzistence dat při čtení.
- Volitelná možnost připojení uzlů v režimu pouze pro čtení, které se nepodílí na určování konsensu a používají se pro zvýšení škálovatelnosti clusteru u operací čtení.
- Podpora vlastní formy transakcí založené na sloučení příkazů do jednoho dotazu (transakce založené na BEGIN, COMMIT, ROLLBACK, SAVEPOINT a RELEASE nejsou podporovány).
- Podpora vytváření horkých záloh.
V novém vydání:
- Byla přidána podpora automatizovaného klasterování rqlite pomocí nové služby určování uzlů, která může fungovat na základě distribuovaných úložišť Consul a etcd. Služba umožňuje uzlům rqlite automaticky se najít — administrátor potřebuje pouze spustit několik uzlů na různých serverech, určením společné adresy clusteru Consul nebo etcd (například „example.com:8500“), a uzly budou automaticky začleněny do clusteru. Vedoucí uzel pravidelně aktualizuje v úložišti Consul nebo etcd informace o své adrese, což umožňuje později měnit vedoucího bez nutnosti přenastavení ostatních uzlů, stejně jako přidávat nové uzly i po změně vedoucího. Podpora staré služby určování uzlů (Discovery mode), která fungovala na základě AWS Lambda, byla ukončena.
- V CLI rozhraní je povoleno zadání několika hostitelů — pokud první uzel nebude dostupný, dojde k dotazu na další hostitele.
- Byl přepracován kód pro analýzu argumentů příkazového řádku rqlited.
- Bylo ukončeno použití zastaralého balíčku protobuf.
- Úložiště BoltDB, používané v implementaci protokolu Raft, bylo nahrazeno bbolt, forkem projektu etcd.
Zdroj: opennet.ru
