LSM fa

Az LSM-fa (a Log-structured merge-tree  - log- structed merge tree kifejezésből) számos DBMS -ben használt adatstruktúra , amely gyors indexelérést biztosít gyakori beszúrási kérések esetén (például tranzakciós naplók tárolásakor ). Az LSM fák más fákhoz hasonlóan kulcs-érték párokat tárolnak. Egy LSM-fa két vagy több különböző struktúrát tart fenn, amelyek mindegyike arra az eszközre van optimalizálva, amelyen tárolni fogja. A struktúrák közötti szinkronizálás blokkokban történik.

Hogyan működik

Az LSM fa egyszerű változata, egy kétszintű fa, két faszerű struktúrából áll, C 0 és C 1 . A C 0 kisebb, és teljes egészében a RAM-ban van tárolva, míg a C 1 a nem felejtő memóriában van. Az új bejegyzések a C 0 -ba kerülnek . Ha a beillesztés után a C 0 mérete meghalad egy előre meghatározott küszöbértéket, akkor az összefüggő szegmenst eltávolítják a C 0 -ból, és a folyamatos tárolás során egyesítik a C 1 -gyel. A jó teljesítményt az a tény éri el, hogy a fák tárolására optimalizálva vannak, és az összevonás hatékonyan, több rekordból álló csoportokban történik, egy összevonási rendezésre emlékeztető algoritmus segítségével .

A legtöbb gyakorlatban használt LSM fa több szintet valósít meg. A 0. szint (nevezzük MemTable-nek) a RAM-ban van tárolva, és egy normál fával ábrázolható. A perzisztens tárolóeszközök adatait kulcsok szerint rendezett táblázatok ( SSTable ) formájában tárolják. A táblázat tárolható külön fájlként vagy fájlok halmazaként, amelyek nem átfedő kulcsértékekkel rendelkeznek. Egy adott kulcs megtalálásához ellenőriznie kell annak jelenlétét a MemTable-ben, majd át kell tekintenie az állandó tárolóeszköz összes SST-tábláját.

Az LSM-fával való munka séma:

A keresett kulcs a perzisztens tárolóeszközökön egyszerre több táblázatban is megjelenhet, és a végső válasz a programtól függ. A legtöbb alkalmazásnak csak az adott kulcshoz tartozó utolsó értékre van szüksége. Másoknak, mint például az Apache Cassandra , amelyben minden érték egy adatbázissor (és egy sor különböző számú oszlopot tartalmazhat a perzisztens tárolástól eltérő táblázatokban), valamilyen módon fel kell dolgozni az összes értéket, hogy megkapja a helyes eredmény [1] . A lekérdezés végrehajtási idejének csökkentése érdekében a gyakorlatban igyekeznek elkerülni azt a helyzetet, hogy a perzisztens tárolóeszközökön túl sok tábla legyen.

A B+-struktúrák karbantartására szolgáló "szint" módszerhez kiterjesztéseket fejlesztettek ki , mint például a bLSM [2] és a Diff-Index. [3]

Nyitva tartás

Az LSM-fa architektúra lehetővé teszi az olvasási kérések kielégítését akár RAM-ból, akár egyetlen hívással az állandó tárolóeszközök felé. Az írás is mindig gyors, függetlenül a tárhely méretétől.

Az állandó tárolóeszközökön lévő SSTable változatlan. Ezért a változtatásokat a MemTable tárolja, és a törléseknek speciális értéket kell hozzáadniuk a MemTable-hez. Mivel az új olvasások egymás után következnek be az indexben, a frissített érték vagy értéktörlési bejegyzés a régi értékek előtt fog megjelenni. A régi SST-táblák állandó tárolón rendszeresen futtatott egyesítése végrehajtja ezeket a változtatásokat, és ténylegesen törli és frissíti az értékeket, megszabadulva a szükségtelen adatoktól.

Jegyzetek

  1. ↑ Szintezett tömörítés az Apache Cassandra / datastax.com webhelyen
  2. Margo Seltzer | MARGO I. SELTZER a British Columbia Egyetem Kanada 150 Számítástechnikai Kutatószéke. Kutatási területe a rendszerek, konstruált q... . Letöltve: 2016. november 5. Az eredetiből archiválva : 2017. január 3..
  3. Archivált másolat . Letöltve: 2016. november 5. Az eredetiből archiválva : 2016. augusztus 3..

Linkek