Я начинаю новый проект, и я рассматриваю использование MongoDB в качестве хранилища документов и Neo4j как механизм для сопоставления отношений между документами, а затем я хочу разоблачить результаты своих запросов через API останова. Что можно сказать о преимуществах и недостатках такого поведения? Есть ли лучшие способы достижения этого, возможно, с использованием другого хранилища документов NoSQL? Есть ли примеры, которые можно найти в Интернете, где кто-то пытался сделать что-то подобное?
Использование MongoDB и Neo4j вместе
Ответ 1
Я думал об использовании этих двух вместе некоторое время, потому что мои данные уже находятся в mongodb. Но я не хочу добавлять еще одну вершину DB существующей архитектуры, потому что добавление neo4j потребует больше ресурсов, например. памяти, дискового пространства и не говоря уже о времени, затраченном на поддержку двух БД.
Еще одна проблема, о которой я могу думать, - это когда вы очертите свои данные с помощью mongodb, вам также придется управлять вашими данными neo4j w.r.t. эти новые осколки. Масштабирование в neo4j осуществляется через кластеры, и это часть корпоративного выпуска, которое является коммерческим.
Я провел дальнейшие исследования и выяснил, что OrientDB может хранить данные в виде документов и свой график дб.
Другой способ - построить отношения в MongoDB и написать свою логику поверх этого и разоблачить эту логику через REST API.
Ответ 2
Если вам нравится Neo4j, вы должны взглянуть на Structr (https://github.com/structr/structr, http://structr.org).
С помощью Structr вы можете определить пользовательскую схему поверх Neo4j (в Java или начиная с 0.7, даже через интерфейс), и она создаст для вас (почти) готовый RESTful JSON API.
"Документы JSON" создаются Structr "на лету" в реальном времени как любая совокупность или отображение подграфа в Neo4j. Это позволяет вам определять произвольное количество разных представлений на одни и те же данные.
Structr имеет встроенные функции, такие как поиск (полнотекстовый, ключевой/точный, диапазон местоположения w/Neo4j пространственный), пейджинг, сортировка, ограничения, пользователи/группы, управление доступом, похожие на cron задания, команды обслуживания, и дополнительный (бета) пользовательский интерфейс для операций CRUD и базовые функциональные возможности CMS.
Отказ от ответственности: Я основатель Structr.
Ответ 3
Вам может быть интересен Neo4j Doc Manager для Mongo Connector. Это расширение для проекта Mongo Connector, которое позволяет в реальном времени синхронизировать данные в режиме реального времени с MongoDB на Neo4j. Документы, вставленные в MongoDB, преобразуются в график свойств и автоматически вставляются в Neo4j. Конфигурация коллекции и полей, которые будут синхронизированы от Mongo до Neo4j, можно настроить.
Идея здесь заключается в том, чтобы упростить использование Neo4j и MongoDB вместе в одном приложении без необходимости писать код на прикладном уровне для синхронизации данных.
Ответ 4
Я бы посмотрел на Гремлина.
Ознакомьтесь с этой статьей: http://thinkaurelius.com/2013/02/04/polyglot-persistence-and-query-with-gremlin/ Я лично считаю синтаксис Groovy отличным при работе с данными.
Ответ 5
В результате мы использовали Neo4j как "индекс" для расчета маршрутизации (в поиске автобусов/поездов). Основная часть данных хранилась в MongoDB. Мы использовали MongoConnector в качестве способа синхронизации двух баз данных. Mongo был превосходным для управления сырыми данными JSON.
Мы попытались сначала сохранить "все" в Neo4j, но затем запросы начали принимать +2 минуты, поэтому потом мы сохранили только минимальные данные. Кроме того, Neo4j имеет ограничения на то, что вы можете индексировать. Например, у них нет типа "дата", поэтому запросы диапазона по датам громоздки. Также у вас возникают проблемы, когда у вас есть "super node", node с тысячами или сотнями тысяч ссылок (отношений). Отношения сохраняются как список ссылок в Neo4j, поэтому произвольный доступ может быть очень медленным (для поиска отношений).
Вы должны быть разборчивы, как вы используете Neo4j, в конце мы использовали его для кратчайших вычислений/поиска путей, что является силой Neo4j.
Подробнее о просмотре видео и презентации наших результатов на GraphConnect NY 2013: https://vimeo.com/79477603
Ответ 6
в neo4j вы должны построить свои отношения, например, если у вас есть 2 пользователя в mongodb, если вы следуете за другим, вы должны установить отношения узлов в neo4j, а затем создавать другие коллекции с информацией. вы должны использовать 2 базы данных как один.