В Neo4j v4.0 библиотека Graph Data Science Library: почему Native Projection лучше, чем Cypher Projection с точки зрения производительности? - PullRequest
3 голосов
/ 30 мая 2020

Документация Создание графиков в каталоге утверждает такое преимущество производительности при использовании Native Projection по сравнению с Cypher Projection, но не дает подробных объяснений.

Native projection Обеспечивает наилучшую производительность ...

Cypher projection Более гибкий, выразительный подход с меньшим упором на производительность.

Насколько я понимаю, все прогнозы будут иметь следующий вид:

Графические проекции полностью хранятся в памяти с использованием сжатого структуры данных, оптимизированные для операций поиска топологии и свойств.

Так почему же прирост производительности?

Кроме того, предполагаемая улучшенная производительность предназначена для загрузки (материализации) проектируемого графа или более поздней версии для обработки, например, с алгоритмом PageRank?

1 Ответ

2 голосов
/ 30 мая 2020

Вы правы, все прогнозы в конечном итоге полностью сохраняются в памяти. Разница между проекцией шифра и собственной проекцией заключается в том, насколько быстро мы можем сохранить или материализовать проецируемый граф. Насколько мне известно, встроенная проекция использует внутренний API Neo4j, что ускоряет загрузку графа, но ограничивается только указанием меток узлов и типов отношений. Cypher projection, с другой стороны, поддерживает все функции cypher и может использоваться для очень гибкой фильтрации подграфа, который мы хотим спроецировать. Мы также можем спроектировать виртуальный граф. Очень распространенная проекция виртуального графа - это проецирование двудольного графа как однодольного графа с использованием только цифровой проекции. Однако вы должны понимать, что чем сложнее ваши шифровальные запросы, тем медленнее будет проекция графа. И даже простое проецирование метки одного узла и типа взаимосвязи будет медленнее при проецировании шифра, чем при собственном проецировании. Но я бы не стал сильно беспокоиться об этом, пока ваш граф не станет больше, чем 10 миллионов узлов и взаимосвязей

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

...