Я надеюсь услышать от любого из вас, кто архивировал и реализовал приложение Neo4j с приличным размером (10 миллионов узлов/rels) - и ваши рекомендации особенно подходят для моделирования и различных API (ванильный java/groovy Neo4j vs Spring -Data-Neo4j против Grails GORM/Neo4j).Архитектура приложения на основе Neo4j - придерживайтесь API ванили с использованием простых узлов и связей или используйте Spring/GORM?
Мне интересно, если он действительно окупается, чтобы добавить дополнительный OGM (объект-граф-сопоставление) и связанные с ним абстракции?
Имеет ли кто-либо опыт, что лучше придерживаться «простого» графического моделирования с помощью узлов + свойств, отношений + свойств, обходов и (например,) Cypher для моделирования и хранения своих данных?
Мое беспокойство заключается в том, что «принудительное» выделение OGM в базе данных графа повлияет на будущую гибкость при адаптации/изменении модели домена и/или гибкости при запросе данных.
Мы магазин Grails, и я экспериментировал с GORM/Neo4J, а также с spring-data-neo4j.
Основная цель набора данных - моделировать и запрашивать отношения между широкими числами людей, их псевдонимами, их сотрудниками и всеми видами преступной деятельности и истории. Будет более 50 основных классов домена. Должна быть гибкость в модели (которая должна быстро развиваться на ранних этапах проекта), а также в скорости и гибкости запросов.
Должен признаться, я изо всех сил пытаюсь найти вескую причину использовать слой OGM, когда я могу использовать (например) POJO или POGO, небольшую магию Groovy и некоторый простой ручной объект домена < -> node/отношения. Насколько я могу судить, я думаю, я был бы счастлив, просто имея дело с узлами & обходов & Cypher (aka KISS). Но я был бы очень рад услышать опыт и рекомендации других людей.
Спасибо за ваше время & мысли,
TP
Поблагодарите Stefan, на самом деле я собирался напрямую связаться с вами, чтобы спросить вас о «реальном» опыте с плагином GORM/Neo4J. Я стараюсь избегать общих архитектур и кодировок «gotchas» при использовании Neo4J, особенно в случае, когда используется слой отображения объекта-графа. –