Mi az a gráfadatbázis (graph database) és mire jó?

gráf adatok

A gráfadatbázisok speciális adatbázisok, melyek olyan komplex adatstruktúrákat tárolnak, melyeket lehetetlen lenne hagyományos relációd adatbázisokban tárolni. Főleg szociális hálózatokban és adatbázisokban használják őket, mivel bizonyos lekérdezéseknél sokkal jobban működnek e téren.graph database
A gráfadatbázisokat olyan esetben ajánlatos használni, amikor az adatok szoros kapcsolatban állnak egymással és a kapcsolatok száma is igen magas. Olyankor hasznosak, amikor maga az adat tartalma fontosabb, mint az adatbázis struktúrája. Tegyük fel, hogy van egy adatbázisunk, ahol minden személynek van egy barát listája, továbbá kapcsolatban áll más emberekkel is barát vagy ismerős szinten. Ezen felül minden személy posztol, ezeket a posztokat pedig mások is láthatják. Minden posztra emberek ezrei reagálhatnak. Szóval, habár egy tweet max 280 karakter lehet, ez jó eséllyel azért van, mert rengeteg egyéb információt kell egy tweet-el kapcsolatban elraktározni.graf adatbazis
Ez persze nem csak az egyetlen szituáció, ahol a gráfadatbázisokat használják, csupán a legkézzelfoghatóbb. Az ilyen adatbázisokat használják például csalások leleplezésére is. Tegyük fel, hogy egy bank vagyunk és a gyanús fiókokat meg akarjuk jelölni. Két külön bankfiók esetében például kicsit fura lehet, ha ugyanarra a címre vannak bejelentve és ugyanaz a telefonszám. Egy gráfadatbázissal felállíthatunk egy kapcsolati hálót a kettő között és hatékonyabban kideríthetjük a csalást.
A gráfok gócokból (node) épülnek fel, és ezek tárolják az adatokat. Számos tulajdonsága lehet egy gócnak, ezáltal hasonlóan működik a gráfadatbázis egy dokumentum adatbázishoz. A különbség az, hogy az utóbbiban a dokumentumok külön vannak tárolva és nincs megjelölve, hogy milyen kapcsolatban állnak egymással. A gráfadatbázisban viszont van ilyen jellegű információ, amit éleknek nevezünk. Ezek kötik össze a gócokat és megadják a kapcsolat jellegét is különböző gócok között. Visszatérve a szociális hálóra, két barát például egy „barát” éllel lenne összekötve, míg egy felhasználó a saját posztjához egy „user” vagy „posted” éllel. Miért jó nekünk mindez?grafadatbazis
Nem az a probléma, hogy a hagyományos relációs adatbázisok, mint a MySQL nem tudnak gráfszerű egységeket eltárolni. A probléma a linkek, élek jellegével és természetével van. A szociális háló esetében például nem akarnánk eltárolni egy felhasználó barátjai nevének teljes listáját, mivel a barát a nevét megváltoztathatja. Éppen ezért inkább az azonosítóját (ID) tároljuk. Ha viszont meg akarjuk tudni az összes személy nevét, akinek közös barátja van egy adott személlyel, akkor a relációs adatbázisok össze-vissza fognak ugrálni az emberek barát listáján és a feladat annál hamarabb felemészti a számítógép erőforrásait, minél nagyobb adatbázisban kell keresgélni. Ehhez képest a gráfadatbázis minden hasonló keresést 2 másodperc alatt lefuttat. Miért? Nos, ez elég bonyolult a matek miatt. Talán egy későbbi részben!

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük

Ez az oldal az Akismet szolgáltatást használja a spam csökkentésére. Ismerje meg a hozzászólás adatainak feldolgozását .