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, поскольку их дорожная карта более перспективна для меня, поскольку они, по-видимому, не пытаются добавить тонны функций шумихи, которые наполовину запеченные.
Ответы
Ответ 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), поэтому он определенно подходит к нашему сердцу:)