Молния! ⚡️⚡️⚡️
В Postgres 18 готовят поддержку property graph query language! А в Oracle 23 она уже есть.
Пример
SELECT DISTINCT id, fof_parents, details
FROM GRAPH_TABLE(
characters
MATCH (a IS node WHERE a.name='Samwise Gamgee')-[x IS relationship WHERE x.type='friend']->
(b IS node)-[y IS relationship WHERE y.type='friend']->
(c IS node)<-[z IS relationship WHERE z.type='parent']-
(d IS node)
COLUMNS (d.id, d.name as fof_parents, d.details as details)
);
id | fof_parents | details
----+----------------+-----------------------
2 | Bilbo Baggins | {"species": "Hobbit"}
4 | Hamfast Gamgee | {"species": "Hobbit"}
7 | Arathorn | {"species": "Human"}
9 | Thranduil | {"species": "Elf"}
11 | Gloin | {"species": "Dwarf"}
Источник примера
И дев-сборку можно уже руками потрогать.
Кажется, это наконец-то решит проблему выборки иерархичных данных (aka json-ов) из реляционных СУБД.