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

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

Собственная проекция
Обеспечивает наилучшую производительность ...

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

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

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

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

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


person JoyfulPanda    schedule 29.05.2020    source источник


Ответы (1)


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

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

person Tomaž Bratanič    schedule 30.05.2020
comment
Собственная проекция будет использовать SPI очень низкого уровня для загрузки данных непосредственно из файлов хранилища, минуя уровень планирования и выполнения шифрования. Вот почему он также ограничен в том, что он может выразить. - person Michael Hunger; 30.05.2020