neo4j vs mongodb для пространственного поиска - PullRequest
11 голосов
/ 07 марта 2012

Я готовлюсь начать проект, где я буду создавать механизм рекомендаций для ресторанов. Я колебался между neo4j (график db) и mongodb (документ db). мои узлы / документы будут такими вещами, как ресторан и человек. я знаю, что захочу некоторые преимущества, что-то вроде person-> likes-> restaurant или person-> ate_at-> restaurant. Мой основной вопрос, однако, будет найти рестораны в пределах X миль от местоположения Y.

если у меня 20 ресторанов в пределах X миль от Y, но не соединенных какими-либо краями, как neo4j сможет обрабатывать пространственный запрос? я знаю, что с mongodb я могу индексировать по широте / долготе и запрашивать все типы ресторанов. neo4j предлагает такую ​​же функциональность в отключенном графе?

когда дело доходит до ответов на такие вопросы, как «в каких ресторанах мои друзья едят чаще всего?», Стоит ли идти к neo4j (график д.б.)? или mongodb (document db) предоставит мне аналогичную функциональность?

Ответы [ 4 ]

10 голосов
/ 08 марта 2012

Neo4j Spatial представляет Spatial RTree (или другое средство) индекс, который является частью самого графика. Это означает, что даже отсоединенные доменные сущности будут найдены через пространственный поиск, если вы их проиндексируете (то есть отношения соединят пространственный индекс с ресторанами). Кроме того, это достаточно гибко, так что вы можете комбинировать поиск Raw BBox в RTree с другими вещами, такими как проверка категорий ресторанов за один раз, так как вы можете прыгать и в разных частях графика.

Таким образом, neo4j Spatial поддерживает весь спектр возможностей поиска, которые вы ожидаете сформировать из полной топологии, например, комбинированный поиск и поиск по полигонам с дырами и т. Д.

Помните, что Neo4j Spatial находится в 0,7, поэтому будьте осторожны и спросите http://groups.google.com/group/neo4j/about:)

7 голосов
/ 07 марта 2012

Я не очень хорошо знаком с Neo4J Spatial, но может показаться, что MongoDB как минимум хорошо подходит, поскольку это база данных, которую Foursquare использует именно для той цели, которую вы описываете.Географическое индексирование MongoDB чрезвычайно быстрое и хорошо масштабируется.

1 голос
/ 18 апреля 2012

Другим возможным решением является использование CouchBase. Он также использует модель документа - хотя вам нужно быть намного удобнее с MapReduce для запросов. Благодаря MongoDB, он обладает лучшими пространственными возможностями, но со временем он может измениться.

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

0 голосов
/ 21 января 2014

Neo4j геопространственные не так хорошо масштабируются.Я создал геопространственный слой в neo4j и добавил узлы в этот слой.За пределами 10000 узлов добавление узлов в слой становится очень медленным даже при использовании neo4j2.0

С другой стороны, геолокация mongodb работает сравнительно быстрее и более масштабируема.

...