2014-11-02 3 views
43

В настоящее время я на этапе разработки игры с MMO-браузером, в игру будут включены tilemaps для некоторых местоположений в реальном времени (так что данные плитки для каждой ячейки) и общая карта мира. Я предпочитаю использовать движок MongoDB для постоянного мира данных.MongoDB + Neo4J vs OrientDB vs ArangoDB

Я также смогу реализовать симуляцию доставки (которая я объясню ниже), которая в основном является модулем Dijkstra, я решил использовать базу данных графа, надеясь, что это упростит ситуацию, нашел Neo4j, поскольку он довольно популярен.

Я был доволен установкой MongoDB + Neo4J, но затем заметил OrientDB, который, по-видимому, действует как MongoDB и Neo4J (лучший из обоих миров?), Они даже имеют VS-страницы для MongoDB и Neo4J.

Точка зрения, я слышал некоторые ужасные истории MongoDB, теряющие данные (хотя и не уверен, что это так и есть), и у меня нет такой роскоши. И для Neo4J, я не большой поклонник 12K € в год «стартовой дружественной» стоимости, хотя у меня, вероятно, не будет DB миллионов миллионов вершин. OrientDB представляется жизнеспособным вариантом, так как могут быть некоторые возможности использования одного решения для базы данных.

В этом случае логический ход может быть переходом на OrientDB, но у него небольшое сообщество, и tbh не нашел много отзывов об этом, MongoDB и Neo4J - популярные широко используемые инструменты, у меня есть проблемы, если OrientDB - приключение ,

Мой первый вопрос был бы, если у вас есть опыт и мнение относительно этих баз данных.

И второй вопрос был бы тем, какой график базы данных лучше для симуляции доставки. Ожидается, что используемая база данных рассчитает самый дешевый маршрут от любой вершины до любой вершины и пересечет ее (классический Dijkstra). Но также приходится менять весы в зависимости от ситуаций, таких как «страна B имеет эмбарго на страну A, поэтому любой элемент, происходящий из страны A, не может пройти через B, есть наводнение в регионе XYZ, поэтому наземный транспорт невозможен» и т. Д. Также эта база данных как ожидается, будут кэшировать результаты. Я ожидаю не более 1000 вершин, но много ребер.

Заранее спасибо и извинения заранее, если вопросы немного неоднозначным

PS: Я добавил ArangoDB в названии, но ТБХ, было не так много шансов, чтобы взглянуть.


Late редактировать в 18-Apr-2016: После оценки ответов на мои вопросы и стратегии развития, я решил использовать ArangoDB как их дорожная карта является более перспективным для меня, как они, видимо, не пытаясь добавить тонны обмана функции, которые наполовину испечены.

+0

Вы также можете взглянуть на бэкэнд JSON/REST для Structr (https://structr.org, это также с открытым исходным кодом). Это в основном превращает Neo4j в базу данных документа. Отказ от ответственности: Я являюсь инициатором проекта. –

+1

На каких языках вы будете работать? Вы также должны учитывать размер сообщества каждой базы данных, насколько легко вы сможете найти совместимые пакеты, качество документации и зрелость драйверов. MongoDB является зрелым во всех аспектах, и Neo4j (который я использую и рекомендую), вероятно, второй. Как сказал Майкл Хунгер, не пугай страницу лицензирования. – subvertallchris

+0

@subvertallchris: Текущий план - использовать node.js и laravel, но может переключиться на чистое решение JS. – projectUnduli

ответ

42

Отказ от ответственности: Я являюсь автором и владельцем OrientDB.

Как разработчик, в общем, мне не нравятся компании, которые спрятали расходы и позволяют вам играть с их технологиями на некоторое время, и как только вы напрягаетесь с ним, начните просить денег. Фактически, как только вы вложили месяцы для разработки своего приложения, использующего нестандартный язык или API, вы прикручиваете: платите или переносите приложение с огромными затратами.

Знаете ли вы, что OrientDB является БЕСПЛАТНО для любого использования, даже коммерческого. Кроме того, OrientDB поддерживает такие стандарты, как SQL (с расширениями), а основным API Java является TinkerPop Blueprints, стандарт JDBC для баз данных Graph. Кроме того, OrientDB поддерживает также Gremlin.

Проект OrientDB растет с каждым днем ​​новыми участниками и пользователями. Группа сообщества (бесплатный канал для запроса поддержки) - most active community in GraphDB market.

Если у вас есть сомнения в использовании GraphDB, мое предложение - получить то, что ближе вашим потребностям, но затем использовать стандарты как можно больше. Таким образом, потенциальный коммутатор будет иметь низкое влияние.

+0

Задавая этот вопрос - получить то, что ближе к моим потребностям, Лука. Надеюсь, вы потеряете больше света, если OrientDB лучше подходит или нет. – projectUnduli

+1

С OrientDB у вас есть обе модели, поэтому вы можете моделировать свои данные в виде графика со сложными типами, такими как MongoDB. Большинство пользователей используют эту гибридную модель в OrientDB, чтобы не иметь компромиссов в отношении сложности домена. Кроме того, как только вам нужно масштабировать, вы можете просто добавить серверы с нулевой конфигурацией. – Lvca

+4

Чтобы добавить к мыслям Львы, кажется, что база данных графов является естественной для вас. Не следует вводить в заблуждение провокационный маркетинг, OrientDB находится на огромной слезе, когда многие крупные компании оценивают и выбирают ее по другим параметрам в этой области. Я нахожусь в команде и обрабатываю многие запросы клиентов. Последние несколько месяцев, когда я видел, что крупнейшие технологические компании имеют TEAMS разработчиков, делают обширные оценки и выбирают OrientDB для потребностей графа. Так что это приключение, потому что оно для вас нова, а не потому, что оно недоказано или каким-то образом отрывочным. Сообщите нам, если вам нужна помощь при запуске. –

13

Цены Neo4j на самом деле довольно гибкие, поэтому не убирайтесь по ценам на веб-сайте. Вы также можете начать работу с изданием сообщества или личным изданием в течение длительного времени.

Сообщество Neo4j очень активно и полезно и быстро предоставляет поддержку и помощь в решении ваших вопросов. Я думаю, что это самый большой плюс помимо производительности и удобства. Я п вообще с помощью модели графа

Что касается вашего сценария использования:

Neo4j используется именно для этого сценария расчета маршрута одним из крупнейших логистических компаний в мире, где он перенаправляет до 4000 пакетов в секунду по всей стране.

И используется в других игровых двигателях, таких как here at GameSys для моделирования игровой экономики, а в другом - для маршрутизации (не в земных координатах, а в координатах игрового мира с использованием Neo4j-Spatial).

Мне любопытно, почему у вас есть только несколько узлов? Это такие, как транспортные порталы? Интересно, где вы храните детали и динамику маршрутов (например, упомянутые вами критерии), они появляются извне - в состоянии памяти игрового движка?

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

И это может помочь узнать, что и Эмиль, один из основателей Neo4j и я старые время игроки нескольких подземелий пользователей (ил), так что это, безусловно, варианта использования близко к сердцу :)

+0

Привет, Это точно транспортные порталы (морской порт, аэропорт, железнодорожная станция и т. Д. В этом случае), как вы упомянули, думали, что это будет из-под контроля, если будет глубже (или не так ли?). И для данных относительно «эмбарго, бедствий, войны и т. Д.», Я в порядке с любыми параметрами (моя первоначальная идея сохранить их в базе данных графа). Спасибо за ответ, btw – projectUnduli

37

Звучит так, как будто ваш прецедент - это именно то, для чего предназначен ArangoDB: вам, похоже, нужны разные модели данных (документы и графики) в одном приложении и даже могут смешивать их в одном запросе. Здесь сияет многомодельная база данных, как ArangoDB.

Если MongoDB послужит вам хорошо до сих пор, вы сразу почувствуете себя комфортно с ArangoDB, так как он очень похож на внешний вид. Кроме того, вы можете моделировать графики, сохраняя свои вершины в одной (или нескольких) коллекциях, а ваши ребра в одной или нескольких так называемых «краевых коллекциях». Это означает, что отдельные ребра являются просто документами в своем собственном праве и могут содержать произвольные данные JSON. Затем база данных предлагает обходные возможности, настраиваемые с помощью JavaScript для соответствия любым запросам.

Для ваших вариантов запросов вы можете, например, добавить атрибуты об этих эмбарго в свои вершины и запрограммировать запросы/обходы, чтобы учесть их.

База данных ArangoDB лицензируется в соответствии с лицензией Apache 2, и сообщество, а также профессиональная поддержка легко доступны.

Если у вас есть какие-либо более конкретные вопросы, не стесняйтесь обращаться к нам в группе Google

https://groups.google.com/forum/#!forum/arangodb

или связаться с

хакеров (на) arangodb.org

непосредственно.

+1

Кроме того, в ArangoDB реализация кратчайшего пути на основе Dijkstra уже доступна на языке запросов. – mchacki