Подтвердить что ты не робот

MongoDB + Neo4J против OrientDB против ArangoDB

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

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

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

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

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

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

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

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

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


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

4b9b3361

Ответ 1

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

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

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

Проект OrientDB растет с каждым днем ​​с новыми участниками и пользователями. Сообщество Group (бесплатный канал для запроса поддержки) является самым активным сообществом на рынке GraphDB.

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

Ответ 2

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

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

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

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

Если у вас есть более конкретные вопросы, не стесняйтесь спрашивать в группе google

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

или контакт

хакеры (at) arangodb.org

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

Ответ 3

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

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

Что касается вашего прецедента:

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

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

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

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

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