Az rqlite 7.0 kiadása, egy elosztott, hibatűrő SQLite alapú DBMS

Megtörtént az elosztott DBMS rqlite 7.0 kiadása, amely az SQLite-ot használja tárolómotorként, és lehetővé teszi egy fürt munkájának megszervezését egymással szinkronizált tárolókból. Az rqlite egyik jellemzője az elosztott hibatűrő tárolók egyszerű telepítése, üzembe helyezése és karbantartása, amely némileg hasonlít az etcd-hez és a Consulhoz, de kulcs/érték formátum helyett relációs adatmodellt használ. A projekt kódja Go nyelven íródott, és az MIT licenc alatt kerül terjesztésre.

Az összes csomópont szinkronizált állapotban tartásához a Raft konszenzus algoritmust használjuk. Az Rqlite az eredeti SQLite könyvtárat és a go-sqlite3 illesztőprogramot használja, amelyek tetején egy réteg indul el, amely feldolgozza az ügyfelek kéréseit, replikációt hajt végre más csomópontokra, és figyeli a konszenzus elérését a vezető csomópont kiválasztásában.

Az adatbázist csak a vezetőként kiválasztott csomópont módosíthatja, de írási műveletekkel járó kapcsolatokat a klaszter más csomópontjainak is el lehet küldeni, amelyek visszaadják a vezető címét a kérés megismétléséhez (a következő verzióban ígéretet tesz a kérések automatikus továbbítására a vezetőnek). A fő hangsúly a hibatűrésen van, így a DBMS csak olvasási műveletekkel skálázódik, és az írási műveletek jelentik a szűk keresztmetszetet. Lehetőség van egy rqlite-fürt futtatására egyetlen csomópontból, és ez a megoldás használható az SQLite-hoz való hozzáférés biztosítására HTTP-n keresztül anélkül, hogy hibatűrést biztosítana.

Az egyes csomópontokon lévő SQLite adatok nem fájlban, hanem a memóriában tárolódnak. A Raft protokoll megvalósításával a rétegszinten minden SQLite parancsról naplót vezetnek, amely az adatbázis módosításához vezet. Ezt a naplót a replikáció során használják (más csomópontokon a kérések reprodukálásának szintjén), egy új csomópont indításakor vagy a kapcsolat elvesztése utáni helyreállításhoz. A napló méretének csökkentésére automatikus csomagolást alkalmaznak, amely meghatározott számú változtatás után indul, és egy pillanatkép rögzítéséhez vezet, amelyhez képest új naplót kezdenek karbantartani (az adatbázis állapota a memóriában azonos a pillanatfelvétellel + a felhalmozott változásnaplóval).

Az rqlite jellemzői:

  • Könnyen telepíthető egy fürt, külön SQLite-telepítés nélkül.
  • Replikált SQL tárhely gyors beszerzése.
  • Felhasználásra kész gyártási projektekben (gyártási fokozat).
  • Egy HTTP(S) API jelenléte, amely lehetővé teszi az adatok kötegelt módban történő frissítését és a fürt vezető csomópontjának meghatározását. Különféle programozási nyelvekhez parancssori felület és klienskönyvtárak is rendelkezésre állnak.
  • Más csomópontok azonosítására szolgáló szolgáltatás elérhetősége, amely lehetővé teszi a fürtök dinamikus létrehozását.
  • A csomópontok közötti adatcsere titkosításának támogatása.
  • Lehetőség az adatok relevanciájának és konzisztenciájának ellenőrzési szintjének konfigurálására olvasás közben.
  • Opcionális lehetőség olyan csomópontok csak olvasható módban történő összekapcsolására, amelyek nem vesznek részt a konszenzus meghatározásában, és a fürt skálázhatóságának növelésére szolgálnak az olvasási műveletekhez.
  • A saját tranzakciós formájának támogatása a parancsok egy kérésben történő kombinálása alapján (a BEGIN, COMMIT, ROLLBACK, SAVEPOINT és RELEASE alapú tranzakciók nem támogatottak).
  • Támogatás forró biztonsági mentések készítéséhez.

Az új kiadásban:

  • Hozzáadott támogatás az automatikus rqlite-fürtözéshez egy új csomópont-észlelési szolgáltatás segítségével, amely a Consul és az etcd elosztott tárhelyen működik. A szolgáltatás lehetővé teszi, hogy az rqlite csomópontok automatikusan megtalálják egymást – a rendszergazdának csak több csomópontot kell elindítania különböző szervereken, megadva a Consul vagy etcd fürt közös címét (például „example.com:8500”), és a csomópontok automatikusan egy klaszterbe egyesítik. A vezető csomópont rendszeresen frissíti a címével kapcsolatos információkat a Consul vagy etcd tárolóban, ami lehetővé teszi a vezető utólagos megváltoztatását anélkül, hogy más csomópontokat újra kellene konfigurálnia, valamint új csomópontokat adhat hozzá még a vezető megváltoztatása után is. Az AWS Lambdán futó korábbi Discovery mód szolgáltatás megszűnt.
  • A CLI interfész lehetővé teszi több gazdagép megadását egyszerre – ha az első csomópont nem elérhető, a következő gépekkel lép kapcsolatba a rendszer.
  • Az rqlited parancssori argumentumok elemzésére szolgáló kódot átdolgoztuk.
  • Az elavult protobuf csomag gyártása megszűnt.
  • A Raft protokoll megvalósítása során használt BoltDB tárolót az etcd projektből származó bbolt váltotta fel.

Forrás: opennet.ru

Hozzászólás