MongoDB + Neo4J vs OrientDB vs ArangoDB [fermé]

je suis actuellement en phase de conception d'un jeu de navigateur MMO, jeu inclura tilemaps pour certains emplacements en temps réel (donc des données de carrelage pour chaque cellule) et une carte du monde général. Le moteur de jeu que je préfère utilise MongoDB pour le monde de données persistant.

je vais également mettre en œuvre une simulation d'expédition (que je vais expliquer plus loin) qui est essentiellement un module Dijkstra, j'avais décidé d'utiliser une base de données graphique en espérant qu'il va rendre les choses plus faciles, a trouvé Neo4j comme il est très populaire.

J'étais heureux avec la configuration de MongoDB + Neo4J mais j'ai remarqué ensuite OrientDB, qui agit apparemment comme MongoDB et Neo4J (le meilleur des deux mondes?), ils ont même des pages VS pour MongoDB et Neo4J.

Point est, j'ai entendu des histoires d'horreur de MongoDB perdre des données (mais pas sûr qu'il fait encore) et je n'ai pas un tel luxe. Et pour Neo4J, Je ne suis pas grand fan de 12K€ par an" startup friendly " coût bien que je ne vais probablement pas avoir un DB de millions de vertex. OrientDB semble une option viable, car il peut y avoir aussi des possibilités d'utiliser une solution de base de données.

dans ce cas, un mouvement logique pourrait sauter à OrientDB mais il a une petite communauté et tbh n'a pas trouvé beaucoup de commentaires à ce sujet, MongoDB et Neo4J sont des outils populaires largement utilisés, j'ai des préoccupations si OrientDB est une aventure.

Mon première question ce serait si vous avez de l'expérience/avis sur ces bases de données.

Et seconde question serait le Graphique de la Base de données est mieux pour une expédition à la simulation. La base de données utilisée est censée calculer l'itinéraire le moins cher de n'importe quel vertex à n'importe quel vertex et le traverser (Dijkstra classique). Mais aussi de changer les poids en fonction de situations comme " le pays B a un embargo sur le pays A de sorte que tout article provenant du pays a ne peut pas passer par B, il y a une inondation à la région XYZ de sorte qu'aucun transport terrestre n'est possible " etc. De plus, cette base de données est censée mettre en cache les résultats. Je n'attends pas plus de 1000 Vertex mais beaucoup de bords.

Merci d'avance et mes excuses à l'avance si les questions sont un peu ambigus

PS: J'ai ajouté ArangoDB au titre mais tbh, n'a pas eu beaucoup de chance de jeter un oeil.


dernière édition le 18 avril 2016 : après avoir évalué les réponses à mes questions et les stratégies de développement, j'ai décidé d'utiliser ArangoDB comme leur feuille de route est plus prometteur pour moi comme ils apparemment pas essayer d'ajouter des tonnes de traits de battage qui sont à moitié cuit.

44
demandé sur projectUnduli 2014-11-02 23:40:41

3 réponses

clause de non-responsabilité: je suis l'auteur et le propriétaire D'OrientDB.

en tant que développeur, en général, je n'aime pas les entreprises qui cachent des coûts et vous laissent jouer avec leur technologie pendant un certain temps et dès que vous êtes proche avec elle, commencer à demander de l'argent. En fait, une fois que vous avez investi des mois pour développer votre application qui utilise une langue ou une API non standard, vous êtes foutu: payer ou migrer l'application avec des coûts énormes.

vous savez, OrientDB est gratuit pour tout usage, même commercial. En outre, OrientDB prend en charge des standards tels que SQL (avec extensions) et L'API Java principale est le Blueprints de TinkerPop, la norme "JDBC" pour les bases de données graphiques. En outre OrientDB soutient aussi Gremlin .

le projet OrientDB se développe chaque jour avec de nouveaux contributeurs et utilisateurs. Le groupe communautaire (canal gratuit pour demander de l'aide) est le le plus actif communauté sur le marché du GraphDB .

si vous avez des doutes avec le GraphDB à utiliser, ma suggestion est d'obtenir ce qui est plus proche de vos besoins, mais puis utiliser les normes autant que vous le pouvez. De cette façon, un éventuel interrupteur aurait un faible impact.

43
répondu Lvca 2016-04-02 13:44:24

il semble que votre cas d'utilisation est exactement ce pour quoi ArangoDB est conçu: vous semblez avoir besoin de différents modèles de données (documents et graphiques) dans la même application et pourrait même vouloir les mélanger dans une seule requête. C'est là qu'une base de données multi-modèles comme ArangoDB brille.

si MongoDB vous a bien servi jusqu'à présent, alors vous vous sentirez immédiatement à l'aise avec ArangoDB, car il est très similaire dans l'apparence et la sensation. En outre, vous pouvez modéliser des graphiques en stockant votre les sommets dans une (ou plusieurs) collection, et vos bords dans une ou plusieurs soi-disant "edge-collections". Cela signifie que les bordures individuelles sont simplement des documents à part entière et peuvent contenir des données JSON arbitraires. La base de données offre alors des travers, personnalisable avec JavaScript pour correspondre à tous les besoins que vous pourriez avoir.

pour vos variations de requêtes, Vous pouvez par exemple ajouter des attributs sur ces embargos à vos vertices et programmer les requêtes/traversals pour prendre ces en compte.

la base de données ArangoDB est sous licence Apache 2, et la communauté ainsi que le support professionnel sont facilement disponibles.

si vous avez des questions plus précises, n'hésitez pas à les poser à google group ""

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

ou de contact

hackers (au) arangodb.org

directement.

38
répondu Max Neunhöffer 2015-04-01 08:56:32

le prix de Neo4j est en fait assez flexible, donc ne vous laissez pas distancer par les prix sur le site. Vous pouvez également commencer avec l'édition communautaire ou l'édition personnelle pour une longue période.

la communauté de Neo4j est très active et serviable et fournit rapidement du soutien et de l'aide pour vos questions. Je pense que c'est le plus grand plus à part la performance et la commodité. Je n général utilisant un modèle de graphique

à propos de votre étui:

Neo4j est utilisé exactement pour ce calcul d'itinéraire scénario par l'une des plus grandes entreprises de logistique dans le monde où il achemine jusqu'à 4000 paquets par seconde à travers le pays.

et il est utilisé dans d'autres moteurs de jeu, comme ici à GameSys pour la simulation d'économie de jeu et dans un autre pour le routage (pas en coordonnées terrestres mais dans le jeu-world-coordonnées en utilisant Neo4j-Spatial).

je suis curieux de savoir pourquoi vous avez seulement ces quelques noeuds? Ce sont des portails de transport? Je me demande où vous stockez les détails et la dynamique des routes (comme les critères que vous avez mentionnés) viennent - ils de l'extérieur-dans l'état de mémoire du moteur de jeu?

vous devriez probablement partager plus de détails sur votre modèle et le cas d'utilisation du béton.

et ça pourrait aider de savoir que tous les deux Emil, l'un des fondateurs de Neo4j et moi sommes des anciens joueurs de donjons multi-utilisateurs (Boues), de sorte qu'il est certainement un cas d'utilisation à proximité de notre cœur :)

13
répondu Michael Hunger 2014-11-02 21:00:55