Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. rész

Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. rész A valódi adatbázisok globális szuperfegyverei régóta ismertek, de még mindig kevesen tudják őket hatékonyan használni, vagy egyáltalán nem rendelkeznek ezzel a szuperfegyverrel.

Ha a globális adatokat olyan feladatok megoldására használjuk, amelyekben valóban jók, figyelemre méltó eredményeket érhetünk el. Legyen szó teljesítményről vagy a feladat egyszerűsítéséről.1, 2).

A globálisok egy speciális adatkezelési és tárolási módot jelentenek, teljesen eltérőek a SQL tábláitól. 1966-ban jelentek meg a M(UMPS) programozási nyelvben. M(UMPS) (evolúciós fejlődés — Caché ObjectScript, később COS) orvosi adatbázisokban, és azóta is aktívan használják őket, és más területekre is behatoltak, ahol megbízhatóságra és magas teljesítményre van szükség: pénzügy, kereskedés stb. jelenleg is aktívan használják,és behatoltak más területekre is, ahol megbízhatóságra és magas teljesítményre van szükség: pénzügy, kereskedés stb.

A modern DBMS-ekben a globálisok támogatják a tranzakciókat, naplózást, replikációt és partícionálást. Azaz, korunk modern, megbízható, elosztott és gyors rendszereinek alapját képezhetik.

A globálisok nem korlátoznak a relációs modell határai között. Szabadságot adnak az adatstruktúrák megalkotásában, amelyek az adott feladatokhoz optimalizáltak. Sok alkalmazás esetében a globálisok értelmes használata valóban titkos fegyver lehet, biztosítva a teljesítményt, amelyről a relációs alkalmazások fejlesztői csak álmodozhatnak.

A globálisok mint adat tárolási módszer számos modern programozási nyelvben felhasználhatóak, legyenek azok magas- vagy alacsony szintűek. Ezért ebben a cikkben kifejezetten a globálisokra fogok koncentrálni, nem pedig arra a nyelvre, amelyből valaha származtak.

2. Hogyan működnek a globálisok

Kezdjük azzal, hogy megértjük, hogyan működnek a globálisok, és mi az erősségük. A globálisokra többféleképpen is tekinthetünk. A cikk ezen részében úgy fogunk róluk beszélni, mint fákról. Vagy mint hierarchikus adatkezelési tárolókról.

Egyszerűsítve, a globális egy tartós tömb. Egy tömb, amely automatikusan mentésre kerül a lemezre.
Nehezen elképzelhető ennél egyszerűbb módszer az adatok tárolására. A kódban (COS/M nyelveken) csupán a név előtt lévő szimbólummal különbözik a szokásos asszociatív tömbtől. ^ jelzi a név előtt.

A globálisban történő adatmentéshez nincs szükség SQL lekérdező nyelv ismeretére; a velük való munka parancsai nagyon egyszerűek. Ezeket egy óra alatt meg lehet tanulni.

Kezdjük a legegyszerűbb példával. Egy szintű fa 2 ággal. A példák COS-ban íródtak.

Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. rész

Set ^a("+7926X") = "John Sidorov"
Set ^a("+7916Y") = "Sergey Smith"



Amikor információt illesztünk a globálisba (Set parancs), automatikusan 3 dolog történik:

  1. Az adatok mentése a lemezre.
  2. Indexelés. A zárójelben szereplő kulcs (az angol szakirodalomban – „subscript”), míg a jobb oldalon található egyenlőségjel után a szintaktikus érték („node value”).
  3. Rendezés. Az adatok kulcs szerint rendeződnek. A továbbiakban, amikor bejárjuk a tömböt, az első elem „Sergey Smith”, a második „John Sidorov” lesz. A globálból felhasználói lista lekérdezésekor az adatbázis nem pazarolja az időt a rendezésre. Ezen kívül bármilyen kulccsal kérhetjük a rendezett lista előállítását, még akkor is, ha az nem létezik (a kimenet az első valódi kulcs után kezdődik, ami a nem létező után következik).

Mindezek az operációk elképesztően gyorsan zajlanak. Az otthoni számítógépemen akár 750 000 bejegyzést is kaptam másodpercenként egy folyamatban. Többmagos processzorokon ezek az értékek elérhetik több tízmilliót bejegyzés/másodperc.

Természetesen az önmagában vett beillesztési sebesség nem mond sokat. Például nagyon gyorsan írhatunk információt szöveges fájlokba – így pletykák szerint működik a Visa feldolgozás. De globálok esetén strukturált, indexelt tárolót kapunk, amellyel később egyszerűen és gyorsan dolgozhatunk.

Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. rész

  • A globálok legnagyobb előnye az új csomópontok beillesztésének sebessége.
  • A globálban az adatok mindig indexelve vannak. Azok bejárása, akár egy szinten, akár a fa mélyén, mindig gyors.

Adjunk hozzá még néhány második és harmadik szintű ágat a globálishoz.

Set ^a("+7926X", "city") = "Moszkva"
Set ^a("+7926X", "city", "street") = "Req Square"
Set ^a("+7926X", "age") = 25
Set ^a("+7916Y", "city") = "London"
Set ^a("+7916Y", "city", "street") = "Baker Street"
Set ^a("+7916Y", "age") = 36

Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. rész

Nyilvánvaló, hogy a globálok alapján sokszintű fákat lehet építeni. A hozzáférés bármely csomóponthoz gyakorlatilag azonnali a beillesztésnél végzett automatikus indexelés miatt. Ráadásul a fa bármely szintjén az összes ág kulcs szerint rendezett.

Ahogy látható, az információkat tárolhatjuk akár a kulcsban, akár az értékben. A kulcs általános hossza (az összes index hosszának összege) elérheti 511 bájt, az értékek pedig 3,6 MB a Caché számára. A fa szintjeinek száma (a dimenziók száma) – 31.

Még egy érdekes pont. Fát lehet építeni anélkül, hogy a felső szintek csomópontjainak értékeit meghatároznánk.

Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. rész

Állítsa be ^b("a", "b", "c", "d") = 1
Állítsa be ^b("a", "b", "c", "e") = 2
Állítsa be ^b("a", "b", "f", "g") = 3

Üres körök azok a csomópontok, amelyeknek nincs értéke.

A globális változók jobb megértéséhez hasonlítsuk össze őket más fákat: a kerti fákkal és a fájlrendszerek fáival.

Hasonlítsuk össze a globális fát a legjobban ismert hierarchikus struktúrákkal: a hétköznapi fákkal, amelyek kertekben és mezőkön nőnek, valamint a fájlrendszerekkel.

Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. rész

Mint láthatjuk, a kerti fák levelei és gyümölcsei csak az ágak végén vannak.
A fájlrendszerekben az információ csak az ágak végén tárolódik, amelyek a fájlok teljes neveit jelentik.

Íme a globális változó adatstruktúrája.

Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. részKülönbségek:

  1. Belső csomópontok: A globális változókban az információ bármely csomópontban tárolható, nem csak az ágak végén.
  2. Külső csomópontok: A globális változóknál a végpontoknál kötelező a definált érték, míg a fájl- és kerti fák esetében ez nem szükséges.



A belső csomópontok egy részénél elmondható, hogy a globális struktúra a fájlrendszerek neveinek fáira és a kerti fáknak egy túlsó halmazát képezi. Tehát rugalmasabb.

Általános esetben a globális változó egy sorrendbe állított fa, amely lehetővé teszi az adatok tárolását minden csomópontban.

A globális változók működésének jobb megértése érdekében képzeljük el, mi lett volna, ha a fájlrendszerek készítői a globális változókhoz hasonló tárolási megközelítést alkalmaztak volna?

  1. Ha egy fájlt törölünk a könyvtárból, automatikusan törlődne a könyvtár is, valamint az összes felette lévő könyvtár, amelyek csak a nemrég törölt könyvtárat tartalmazták.
  2. A könyvtárak szükségessége megszűnne. Csak fájlok lennének almappákkal és fájlok almappa nélkül. Ha a hagyományos fára hasonlítunk, akkor minden ág gyümölcse lenne.

    Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. rész

  3. Olyan dolgok, mint a README.txt fájlok valószínűleg eltűnnének. Minden, amit a könyvtár tartalmáról tudni kell, a könyvtár fájljába lenne írva. Az útvonalak térében a fájl neve megkülönböztethetetlen a könyvtár nevéhez, így elegendő lenne csak fájlokat használni.
  4. A könyvtárak törlésének sebessége, amelyek almappákat és fájlokat tartalmaznak, drasztikusan megnövekedne. Sokszor olvashattunk az interneten arról, mennyire hosszú és nehéz több millió kis fájl törlése.1, 2). Azonban, ha globális szintű ál-fájlrendszert hozunk létre, az másodperceket vagy azok töredékeit fogja igénybe venni. Amikor a fáfák alsóbb ágait töröltem a saját számítógépemen, egy másodperc alatt 96-341 millió csomópontot töröltem egy kéte szintű fáfából HDD-n (nem SSD-n). Itt a fa egy részének törléséről van szó, nem csupán a globális fájl teljes törléséről.

Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. rész
A fáfa alsóbb ágainak törlése egy újabb erőssége a globálisoknak. Ehhez nincs szükség rekurzióra. Ez hihetetlenül gyorsan történik.

A mi fáfánkban ezt a parancssal lehetne megtenni Kill.

Kill ^a("+7926X")

Globálisok — a gyorsított adatok tárolásához használt kardok. Fák. 1. rész

A globálisokon végrehajtható műveletek jobb megértése érdekében itt egy rövid táblázat.

Fő parancsok és funkciók a globálisokkal kapcsolatban a COS-ban

Beállít
Ágak beállítása a csomópontig (ha még nincsenek meghatározva) és a csomópont értéke

Merge
Alfáfa másolása

Kill
Alfáfa törlése

ZKill
Egy adott csomópont értékének törlése. A csomópontból kivezető alfával nem foglalkozik

$Query
Teljes fáfa bejárás mélyre hatolva

használatával. Ez különösen kényelmes olyan területeken, ahol az indexek nem kvantáltak (térképezés).
Egy adott csomópont ágának bejárása

$Data
Ellenőrzés, hogy a csomópont meghatározott-e

$Increment
A csomópont értékének atomikus növelése. Olvasás és írás elkerülésére, az ACID-ért. Az utóbbi időben ajánlott a következőre váltani $Sequence

Köszönjük a figyelmet, szívesen válaszolunk kérdéseikre.

Megjegyzés: Ez a cikk és az ehhez fűzött megjegyzéseim a saját véleményemet tükrözik, és nem állnak kapcsolatban az InterSystems vállalat hivatalos álláspontjával.

Folytatás A globális platformok - a tárolt adatok kincsei. Fák. 2. rész. Megtudhatja, milyen adat típusokat lehet megjeleníteni a globálisokon és mely feladatoknál nyújtanak maximális előnyt.

Forrás: habr.com

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster