Regisztráció és bejelentkezés

LINQ-to-Gremlin - adatbázis provider gráfadatbázisokhoz

Az adatbázisok piacát korábban egyértelműen a relációs adatmodellre épülő relációs adatbázisok uralták. Ezek egyik legfontosabb és legkiemelkedőbb tulajdonsága, hogy feltételezi: a tárolni kívánt adataink egyáltalán nem vagy csak ritkán megváltozó, kötött struktúrával rendelkeznek, azokat ún. relációkba lehet szervezni. Az ilyen elven működő adatbázisokat többek között az erős matematikai háttér, a lekérdezés-optimalizációs lehetőségei, valamint a tranzakciókezelés támogatása tette oly széles körben elterjedtté.

A mai „adatcentrikus” világban ugyanakkor komoly igény mutatkozik arra, hogy a nem (jól) strukturálható, vagy az időben gyakran megváltozó struktúrájú adatainkat is természetes módon, hatékonyan tudjuk tárolni, és – nem utolsó sorban – kezelni, feldolgozni. Ez a tény pezsdítette fel az ún. NoSQL (not only SQL) adatbázisok területét, úgy termékpiaci értelemben, mint – természetesen az előbbivel összefüggésben – tudományos kutatási témaként. A NoSQL adatbázisok világa rendkívül sokszínű és szerteágazó: saját témám gyanánt az egyik legáltalánosabb kategóriát, a gráfadatbázisokat választottam.

Visszatérve még a relációs adatbázisokhoz, érdemes kiemelni, hogy elterjedtsége révén gyakorlatilag valamennyi objektum-orientált programozási nyelven elérhetőek olyan szegényebb-gazdagabb funkcionalitású keretrendszerek, amelyek segítségével az adatbázis rekordjait le tudjuk képezni a saját programunk üzleti objektumaira. NoSQL adatbázisok esetében ez közel sincs így, ami talán nem is véletlen: eleve egy kiforratlan területről beszélünk, valamint idegenül hangzik, hogy a deklaráltan strukturálatlan adatainkat mégis strukturált, objektum formába szeretnénk átalakítani.

Jelen dolgozat tartalmilag egy olyan, általam készített osztálykönyvtár létrejöttét, működését mutatja be, amely az Entity Framework Core keretrendszerbe integrálódva lehetővé teszi, hogy a programozó LINQ kifejezésekkel manipuláljon egy gráfadatbázist, kihasználva annak előnyeit anélkül, hogy másképpen kellene szerveznie programját, mint ha relációs adatbázist használna. Megoldásom a LINQ kifejezéseket Gremlin nyelvű kifejezésekké alakítja át (innen ered az elnevezése: LINQ-to-Gremlin), amelyekből ún. Gremlin bytecode-ot generálva valamennyi olyan gráfadatbázis implementáció megszólítható, amely támogatja az Apache TinkerPop Stacket. Az elterjedt gráfadatbázis termékek többsége ezt teljesíti.

Struktúráját tekintve a dolgozat a témaválasztás indoklásával, a LINQ-to-Gremlin létjogosultságának indoklásával kezdődik. Ezután összefoglalom azt a féléves kutatómunkát, amit az objektum-gráf leképző rendszerek területének feltérképezése végett végeztem. Később bemutatom a megoldásom tervezési fázisának fontosabb pontjait, ezt követően pedig ismertetem az implementáció folyamatát, miközben rávilágítok a teljes munka során felmerült érdekesebb kihívásokra, az elém tárult alternatívákra, és természetesen megindokolom a jelentősebb mérnöki döntéseket. A dolgozatot validációs tervvel zárom.

szerző

  • Nagy Attila
    Mérnök informatikus szak, mesterképzés
    mesterképzés (MA/MSc)

konzulens

  • Simon Gábor
    ügyvivő szakértő, Automatizálási és Alkalmazott Informatikai Tanszék