Megjelent az rqlite 7.0 elosztott adatbázis-kezelő rendszer, amely az SQLite-t használja tárolómotorjaként, és lehetővé teszi egy szinkronizált tárolókból álló klaszter működtetését. Az rqlite sajátosságai közé tartozik a könnyű telepítés, beüzemelés és fenntartás, hasonlóan az etcd-hez és a Consulhoz, de relációs adatkezelési modellt használ kulcs/érték helyett. A projekt kódja Go nyelven készült, és MIT licenc alatt terjesztik.
A szinkronizált állapot fenntartásához a Raft konszenzusvalósító algoritmust alkalmazzák. Az rqlite az eredeti SQLite könyvtárat és a go-sqlite3 drivert használja, amelyre egy réteg kerül, amely kezeli az ügyfélkérelmeket, replikálja azokat más csomópontokra és nyomon követi a vezető csomópont kiválasztásához szükséges konszenzus elérését.
Az adatbázisba történő módosításokat csak a kiválasztott vezető csomópont végezheti, de a írási műveletekkel kapcsolatos kapcsolatok más klaszterre vonatkozó csomópontokhoz is irányíthatók, amelyek visszaküldik a vezető címét a kérés megismétléséhez (a következő verzióban automatikus átirányítást ígérnek a vezetőhez). Fő hangsúly a hibatűrésre helyeződik, ezért az adatbázis-kezelő csak olvasási műveletek esetén skálázható, míg az írási műveletek szűk keresztmetszetet jelentenek. Egy tengeren működő rqlite klaszter is elindítható, amely a SQLite HTTP-n keresztüli elérésére használható, hibatűrés biztosítása nélkül.
Minden csomópont SQLite adatai nem fájlban, hanem memóriában tárolódnak. A Raft protokoll megvalósításának rétegén naplózza az összes SQLite parancsot, amely változást idéz elő az adatbázisban. Ezt a naplót használják a replikálás során (a kérdések más csomópontok közötti replikálása), új csomópont indításakor vagy helyreállítás esetén a kapcsolat megszakadása után. A napló méretének csökkentése érdekében automatikus tömörítést alkalmaznak, amely a megadott számú változtatás után indul el, és egy pillanatképet rögzít, amelyhez új napló készül (a memória állapota megegyezik a pillanatképpel + az összegyűlt változásnaplóval).
Az rqlite jellemzői:
- A klaszter telepítése egyszerű, nincs szükség külön SQLite telepítésre.
- Lehetőség gyorsan előállítani egy SQL tárolót másolás révén.
- Készen áll a valódi projektek (production-grade) használatára.
- HTTP(S) API elérhetősége, amely lehetővé teszi az adatok kötegelt frissítését és a klaszter vezető csomópontjának meghatározását. Parancssori felület és klienskönyvtárak is rendelkezésre állnak különböző programozási nyelvekhez.
- Szolgáltatás elérhetősége, amely lehetővé teszi más csomópontok meghatározását, így dinamikusan létrehozhatók klaszterek.
- Adatok közötti titkosítás támogatása a csomópontok között.
- Olvasási élményegyeztetés és adatkonzisztencia szintjének beállításának lehetősége.
- Opcionális lehetőség a csomópontok csatlakoztatására csak olvasási módban, amelyek nem vesznek részt a konszenzus meghatározásában, és a klaszter olvasási műveleteinek skálázhatóságát növelik.
- Saját tranzakciós forma támogatása, amely lehetővé teszi több parancs egy kérésbe való egyesítését (BEGIN, COMMIT, ROLLBACK, SAVEPOINT és RELEASE alapú tranzakciók nem támogatottak).
- Forró biztonsági mentések létrehozásának támogatása.
Az új kiadásban:
- Hozzáadva az automatikus klaszterezés támogatása rqlite számára, új csomópontmeghatározó szolgáltatással, amely a Consul és etcd elosztott tárolóin működhet. A szolgáltatás lehetővé teszi a rqlite csomópontok számára, hogy automatikusan megtalálják egymást — az adminisztrátornak elegendő, ha elindít néhány csomópontot különböző, közös Consul vagy etcd klasztercímmel, például „example.com:8500”, és a csomópontok automatikusan klaszterbe szerveződnek. A vezető csomópont időszakosan frissíti a Consul vagy etcd tárolóban a címét, ami lehetővé teszi, hogy a vezetőt később újra meg lehessen határozni anélkül, hogy a többi csomópontot újra kellene konfigurálni, és új csomópontokat is hozzá lehet adni a vezető megváltoztatása után. A régi csomópontmeghatározó szolgáltatás (Discovery mode) használata, amely az AWS Lambda alapjaira épült, megszűnt. szervereken, a CLI felületen megengedett egyszerre több hoszt megadása — ha az első csomópont nem érhető el, a következő hosztokhoz fog fordulni.
- Újrahasznosításra került a parancssori argumentumok elemzésére szolgáló kód rqlited.
- Az elavult protobuf csomag használata megszűnt.
- A Raft protokoll megvalósításában használt BoltDB tárolót bbolt-ra cserélték, amely az etcd projekt forkja.
- A BoltDB tárolót, amelyet a Raft protokoll megvalósításában használnak, bbolt-ra cserélték, amely az etcd projekt forkja.
Forrás: opennet.ru
