Vastus (11.12.2023 11:38): 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 23c, 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.