Я экспериментирую с идеей хранения иерархии DNS в графе OrientDB, и мне трудно найти подходящее место для добавления новой вершины для данного домена.Поиск известного пути в OrientDB
Я начинаю с этой структурой:
CREATE CLASS Zone EXTENDS V
CREATE CLASS Subdomain_of EXTENDS E
CREATE VERTEX Zone CONTENT {name: '.'} #12:0
CREATE VERTEX Zone CONTENT {name: 'com'} #12:1
CREATE VERTEX Zone CONTENT {name: 'net'} #12:2
CREATE VERTEX Zone CONTENT {name: 'org'} #12:3
CREATE VERTEX Zone CONTENT {name: 'example'} #12:4
CREATE VERTEX Zone CONTENT {name: 'www'} #12:5
CREATE EDGE Subdomain FROM #12:1 TO #12:0
CREATE EDGE Subdomain FROM #12:2 TO #12:0
CREATE EDGE Subdomain FROM #12:3 TO #12:0
CREATE EDGE Subdomain FROM #12:4 TO #12:1
CREATE EDGE Subdomain FROM #12:5 TO #12:4
Я хочу создать сохраненную функцию, которая будет принимать имя домена строки в качестве входных данных и добавить соответствующие поддомены к графе.
Представьте, что я хочу добавить домен "mail.example.com". Функция должна будет сначала выполнить поиск, чтобы увидеть, существует ли путь .com.example.mail - если нет, тогда он должен проверить .com.example и добавить новую вершину для «почты» с краем субдомена в «примерную» вершину ,
Есть ли способ поиска листового узла на основе определенного пути? Что-то похожее на Neo4j/Cypher синтаксис:
MATCH
(:Zone {name: ‘.’})<-[Subdomain]-(:Zone {name: ‘com’})<-[:Subdomain]-(a:Zone {name: ‘example’})
RETURN (ID(a))
Спасибо,
Чарльз
О функции, для вы более полезны в Java или Javascript? Я не понял, что вы подразумеваете под «поиском листового узла», вы хотите выполнить поиск, если, например, есть «лист вершин», который называется «www»? – lsavio