Az SQLite fejlesztők HC-tree háttérrendszert fejlesztenek párhuzamos írások támogatásával

Az SQLite projekt fejlesztői megkezdték egy kísérleti HCtree háttérrendszer tesztelését, amely támogatja a sorszintű zárolást, és magas szintű párhuzamosítást biztosít a lekérdezések feldolgozásakor. Az új háttérrendszer célja, hogy javítsa az SQLite használatának hatékonyságát olyan kliens-szerver rendszerekben, amelyeknek nagyszámú egyidejű írási kérést kell feldolgozniuk az adatbázisba.

Az SQLite-ben az adatok tárolására natívan használt b-tree struktúrák nem ilyen típusú terhelésre lettek tervezve, ami korlátozza az SQLite-ot, hogy csak egy szálra írjon. Kísérletként a fejlesztők egy olyan alternatív megoldás kidolgozásába kezdtek, amely HC-tree struktúrákat használ tárolásra, amelyek alkalmasabbak az írási műveletek párhuzamosítására.

Több művelet egyidejű futtatásának lehetővé tétele érdekében a HCtree rekord egy tranzakció-particionálási mechanizmust használ, amely oldalszintű zárolást használ, és hasonló az MVCC-hez (Multi-Version Concurrency Control), de oldalkészletek helyett kulcsokon és kulcstartományokon alapuló tranzakció-ellenőrzéseket használ. Az olvasási és írási műveletek egy adatbázis-pillanatfelvételhez kapcsolódnak, amelynek változásai csak a tranzakció befejezése után válnak láthatóvá a fő adatbázisban.

Az ügyfelek három nyitott tranzakciós műveletet használhatnak:

  • „KEZDÉS” – a tranzakciók nem veszik figyelembe más ügyfelek hozzáférési adatait. Ha egy tranzakción belül írási műveleteket hajtanak végre, akkor a tranzakció csak akkor véglegesíthető, ha a végrehajtás során nem volt más írási művelet az adatbázisban.
  • "KEZDÉS EGYESÜLT" - a tranzakciók információkat gyűjtenek más ügyfelek hozzáféréséről. Ha egy tranzakción belül írási műveleteket hajtanak végre, akkor a tranzakció véglegesíthető, ha a pillanatkép létrehozása óta más tranzakciók is véglegesítésre kerültek az adatbázisban.
  • „KIZÁRÓZÁS BEÁLLÍTÁSA” - a tranzakció megnyitása után blokkolja a műveleteket a többi tranzakciótól, amíg az be nem fejeződik.

A HCtree támogatja a master-slave replikációt, amely lehetővé teszi a tranzakciók áttelepítését egy másik adatbázisba, és a másodlagos adatbázisok szinkronban tartását az elsődleges adatbázissal. A HCtree emellett megszünteti az adatbázis méretének korlátozását is – a 32 bites adatoldal-azonosítók helyett a HCtree 48 biteseket használ, ami 16 tebibyte-ról 1 exbibyte-ra (millió tebibyte) növeli a maximális adatbázisméretet. Várhatóan a HCtree háttérrendszerrel rendelkező SQLite teljesítménye nem lesz alacsonyabb, mint a klasszikus egyszálú háttérprogramé. A HCtree támogatással rendelkező SQLite kliensek hozzáférhetnek mind a HC-fa alapú adatbázisokhoz, mind a régi SQLite adatbázisokhoz.

Forrás: opennet.ru

Hozzászólás