2012-04-12 3 views
0

Я все еще довольно новичок в neo4j. Я написал небольшую услугу RESTFUL, которая вставляет узлы в neo4j db (сервер) через REST в качестве PoC. Структура выглядит следующим образом: root - [NODES] -> n -> [NODE] -> nodeNeo4j cypher query performance через REST на центрированных узлах

n узел - это «центрированный». Я планировал добавить другой центрированный узел в качестве разных типов узлов (например, продуктов/категорий/документов/атрибутов/пользователей ...)

В моем первом примере я добавил ок. 1.000 узлов. Теперь я попытался увеличить количество узлов и запрос для этих узлов. Теперь я столкнулся с проблемой «проблем». Это мои запросы, выполненные на веб-консоли neo4j (1.6.1)

START x = node (0) MATCH PATH = (x - [: NODES] -> centered - [: NODE] -> node) return узел ORDER BY node.id LIMIT 10

START х = узел (0) MATCH PATH = (х - [: - NODES]> по центру - [: уЗЕЛ] -> узла) счетчик возврата (*)

Мне нужны запросы для разбивки на страницы. Первый должен выбрать элементы для отображения, а второй - для расчета страниц.

раз Запрос: +1,000 узлы: ~ 120мс 4,000 узлы: ~ 200 - 300мс 6,000 узлы: ~ 250 - 500мс

шифровальщиком время запроса растет очень быстро (на мой взгляд). Я планировал добавить ~ 2.000.000 узлов таким образом. Что-то не так с моими запросами? Возможно ли получить их быстрее? (Я уже установил свой размер кучи neo4j до 100M, что должно быть в порядке для узлов 10k)

Заранее спасибо!

ответ

1

Первое, что вы можете сделать, это удалить назначение пути - вы не используете путь PATH, поэтому нет необходимости его создавать.

Кроме этого, вы, кажется, ничего не делаете неправильно.

Производительность Cypher для этого типа запросов намного выше на 1,7, чем 1,6. Вчера мы выпустили 1.7.M03, вы можете принять это за спину, если вы не привязаны к 1.6.

+0

Я попробую :) Спасибо Andres! – Alebon

+0

Да, это кажется лучше. Теперь у меня есть 10k узлов. Первый запрос опустился с ~ 300-500 мс до ~ 100 мс, а запрос счетчика упал с ~ 110 мс до 50-60 мс. Нравится это;) – Alebon

+0

Еще один вопрос: часто ли использовать эти центрированные узлы? – Alebon

0

Это может помочь не иметь «центрированных» узлов вообще, если они являются только дескрипторами следующего узла. Я думаю, что это будет быстрее и лучше организовано, если вы просто используете узлы индекса с метками для описания типов узлов (например, продуктов/категорий/документов/атрибутов/пользователей ...). см. labels

+0

Это верно для более новых выпусков - включая ярлыки;) – Alebon

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