В OrientDB каждая вершина имеет присоединенные кромки. Это означает, что можно явно перемещать узлы из коллекции с помощью вложенных операторов «select».Эффективный обход ArangoDB через атрибуты узла
В качестве примера: с учетом пути атрибутов узла найдите соответствующий конечный узел. Путь состоит из списка атрибутов узла (например, kind
уникален в узлах пути).
Теперь предположим, что у меня было дерево:
kind=site, name=site1
-- kind=project, name=project1
-- kind=library, name=library1
kind=site, name=site2
-- kind=project, name=project2
-- kind=library, name=library1
Пользователь хочет информацию из библиотеки под названием Library1 с пути:
[{kind=site},{kind=project,name=project1},{kind=library,name=library1}]
Не имея каждый узел полностью квалифицированное для обхода это нормально пока результат будет единственным узлом.
В OrientDB, процесс будет:
- начала со всеми узлами рода = сайт
- Прогулка по краю «ребенок» и собрать все предметы, которые имеют Kind = проекта и имя = project1
- прогулки по детским краям и собрать все предметы, которые имеют Kind = библиотека и имя = Library1
Это может быть сделаны в п sted select statement. Поле вида индексируется, поэтому начальные узлы собираются быстро из большого количества объектов. Чтобы еще больше повысить производительность, я знаю, какие типы существуют в таблицах (коллекциях), чтобы я мог охватить количество объектов, которые вы выбрали (выберите из таблицы <> где kind = site).
В ArrangoDB только ребра имеют информацию привязки узла, поэтому с узлом я не могу напрямую пройти через связанный край. В функции GRAPH_TRAVERSAL я могу указать начальную коллекцию на примере. Таким образом, пример будет {kind = site}. Разве это не означает, что начальный список узлов должен быть почерпнут путем сканирования всех графов графа, в основном глядя на каждый узел, подключенный к входу каждого ребра во всем графике?
Как будет сформулирован такой запрос (в AQL и/или arangojs), чтобы он не начинал с полной проверки объектов, связанных с ребрами?
Я также не вижу, как отправить примерную вершину в функцию обхода arangojs. Кажется, что всегда требуется явная начальная вершина.
Это именно то, что я искал. Я собираюсь аннотировать места в моем коде, где запрос будет полезен для этой функции. Мы все еще находимся на стадии технико-экономического обоснования, поэтому у меня есть немного времени. – ggendel