Kuidas saab SQL-andmebaasides salvestada graafiandmeid ja nendega töötada?

Postitas Erki Eessaar 09.12.2023 19:57 (muudeti 27.08.2024 14:47)
Paljusid asju ja nähtuseid meie ümber võib ette kujutada graafina (näiteks sõprade ja tuttavate võrgustik - kes kellega suhtleb). Võimalusi, kuidas saaks SQL-andmebaasis salvestada graafide andmeid, et nende pealt oleks võimalikult lihtne otsingut teha, on otsitud juba kaua. SQL-andmebaasis graafiandmete põhjal päringute tegemist lihtsustas võimalus hakata tegema rekursiivseid päringuid.

Selles magistritöös esitatakse kokku 16 erinevat SQL-andmebaasis graafiandmete esitamise disainilahendust, kusjuures vaatluse alt jäid välja disainid, kus graafi andmed oleks esitatud hierarhiliste JSON või XML dokumentidena. Töös eksperimenteeriti kahe andmebaasisüsteemiga (PostgreSQL 9.5 ja Oracle 12.1) ning kahe populaarse disainiga. Seega SQL-andmebaasisüsteemides on võimalused olemas, kuid need on siiski võibolla liiga kohmakad ja keerukad ning otsingud graafide põhjal pole piisavalt kiired, mis omakorda on inspireerinud selliste andmebaasisüsteemide turule tulekut, mille andmemudel (andmebaasi ehitusplokkide kirjeldus) põhinebki graafidel. Üks populaarsemaid selliseid andmebaasisüsteeme on Neo4j. Turule tuli mitmeid erinevaid graafipõhiseid andmebaasisüsteeme - igaühes oma andmebaasikeel. Kõik need süsteemid kuuluvad NoSQL vihmavarju alla - andmebaasi ehitusplokid on midagi muud kui "tabelid". Lõpuks saadi aru, et ühise standardiseeritud keele puudumine pärsib nende süsteemide arengut ja laiemat kasutuselevõttu ja nii käivitus püüdlus töötada välja esimene uus andmebaasikeele standard peale SQL-i - Graph Query Language (GQL) standard. See standard peaks valmima 2024. aasta kevadel.

Ühe osana sellest püüdlusest lisandus SQL:2023 standardi versiooni uus osa - osa 16 - Property Graph Queries (SQL/PGQ). Selle kohaselt saab SQL-andmebaasis deklareerida omaduste graafi (lausega CREATE PROPERTY GRAPH), määrates ära, millistes andmebaasis olemasolevates tabelites on tippude (vertex) ja millistes tabelites on servade (edge) andmed. Seejärel saab omaduste graafi põhjal teha päringuid. Graaf on nagu vaade üle olemasolevate tabelite. Eesmärk on võimaldada SQL-andmebaasis graafipõhiseid päringuid lihtsamini teha. Graafi põhjal tehtavas päringu üks osa on MATCH klausel, kus on avaldis graafi mustrile vastavuse kontrolli alamkeeles (GPML). Selle avaldise abil saab kirjeldada graafis olevaid teid. GPML on ühine GQL ja SQL/PGQ jaoks. Seega SQL/PGQ toob osa GQL keele võimalustest otse SQLi. Teisalt pärib GQL mõned SQLi omadused.

Graafi põhjal tehtava päringu tulemuseks on tabel, millega saab selles samas päringus teha neid samu operatsioone, mida kõigi teiste tabelitega – näiteks eemaldada korduseid, ridu sorteerida või ühendada teiste tabelitega.
  • Kui soovida piirata graafi omaduste väärtuseid, siis tuleb deklareerida kitsendused graafi aluseks olevatele tabelitele.
  • Graafi andmete muutmiseks tuleb muuta andmeid graafi aluseks olevates tabelites.
  • Päringud täidetakse graafi aluseks olevate tabelite põhjal.
  • Päringute kiirendamiseks tuleb luua indekseid graafi aluseks olevatele tabelitele.

Oracle 23ai, mis tuli välja samal aastal kui SQL:2023, pakub SQL/PGQ tuge. SIIN on näide Oracle andmebaasis omaduste graafi defineerimise ja selle põhjal päringute tegemise kohta. Iga soovija saaks seda Oracle tasuta pakutava Oracle Free andmebaasisüsteemiga ise järgi proovida.

Hinda postitust:

Keskmine hinne : Pole veel hinnanguid!