2016-12-22 3 views
0

В моем проекте у меня довольно большое дерево префикса, потенциально содержащее миллионы узлов (около 250 тыс. Узлов в моем экземпляре разработки), управляемых в OrientDB (указывающих на другие вершины на моем графике).Оптимизация дерева префикса в OrientDB

Узлы дерева префикса представлены типом вершины Token. Каждый токен имеет свойство «ключ» и связан с его дочерними вершинами «дочерним» типом ребер. Таким образом, последовательность, как «привет мир» будет представлена ​​как:

root -child-> "hello" -child-> "world" 

В настоящее время у меня есть NOTUNIQUE_HASH_INDEX на Token.key и я запрашивая структуру данных, как это:

SELECT EXPAND(OUT('child')[key=:k]) FROM :p 

где к является дочерним ключом, который я ищу, и p является RID родительского узла.

Как правило, производительность очень хорошая, но я ищу идеи по улучшению запроса, индексации или и того и другого для этого варианта использования. В частности, запросы, начинающиеся с корневого узла, у которого много детей, занимают заметно больше, чем другие, менее связанные узлы.

Любые предложения? Заранее спасибо!

+0

Вы можете увидеть ответ на сообществе. –

ответ

0

Luigi Dell'Aquila от команды OrientDB предоставил отличный ответ в группе OrientDB Google. Подводя итог, следующий запрос (предложенный Луиджи) резко улучшил производительность.

SELECT FROM Token where key = :k AND in('Child') contains :p 

Я только что провел реалистичное испытание, и время запроса сократилось на 97%! См. https://groups.google.com/forum/#!topic/orient-database/mUkz6Z7hSwk для более подробной информации.

Смежные вопросы