MongoDB + Neo4J vs OrientDB vs ArangoDB

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

Je vais également implémenter une simulation d’expédition (que j’expliquerai plus en détail ci-dessous) qui est essentiellement un module de Dijkstra, j’avais décidé d’utiliser une firebase database de graphes en espérant que cela faciliterait les choses, a trouvé Neo4j très populaire.

J’étais content de la configuration de MongoDB + Neo4J mais j’ai ensuite remarqué que OrientDB, qui semble agir à la fois comme MongoDB et Neo4J (le meilleur des deux mondes?), A même des pages VS pour MongoDB et Neo4J.

Le fait est que j’ai entendu des histoires d’horreur de la perte de données par MongoDB (mais je ne suis pas sûr que ce soit toujours le cas) et je n’ai pas ce luxe. Et pour Neo4J, je ne suis pas un grand fan du coût de 12K € par an “amical au démarrage” bien que je n’aurai probablement pas de DB de millions de sumts. OrientDB semble être une option viable, car il peut également y avoir des possibilités d’utiliser une solution de firebase database.

Dans ce cas, un mouvement logique peut être un saut vers OrientDB mais il a une petite communauté et pas beaucoup de commentaires à son sujet, MongoDB et Neo4J sont des outils populaires largement utilisés, j’ai des inquiétudes si OrientDB est une aventure.

Ma première question serait si vous avez une expérience / opinion sur ces bases de données.

Et la deuxième question serait de savoir quelle firebase database graphique est la meilleure pour une simulation d’expédition. La firebase database utilisée est supposée calculer la route la moins chère de tout sumt à tout sumt et la parcourir (Dijkstra classique). Mais aussi changer de poids selon les situations comme “le pays B a un embargo sur le pays A, donc tout article provenant du pays A ne peut pas passer par B, il y a des inondations dans la région XYZ donc pas de transport terrestre possible” etc. devrait mettre en cache les résultats. Je n’attends pas plus de 1000 sumts, mais beaucoup de bords.

Merci d’avance et excuses d’avance si les questions sont un peu ambiguës

PS: j’ai ajouté ArangoDB au titre mais tbh, n’avait pas beaucoup de chance de jeter un coup d’oeil.


Édition tardive du 18 avril 2016: après avoir évalué les réponses à mes questions et stratégies de développement, j’ai décidé d’utiliser ArangoDB car leur feuille de route était plus prometteuse car ils n’essayaient apparemment pas d’append des tonnes de fonctionnalités.

Disclaimer: Je suis l’auteur et le propriétaire d’OrientDB.

En tant que développeur, en général, je n’aime pas les entresockets qui cachent les coûts et vous permettent de jouer avec leur technologie pendant un certain temps et dès que vous en avez besoin, commencez à demander de l’argent. En fait, une fois que vous avez investi des mois pour développer votre application qui utilise un langage non standard ou une API, vous êtes foutu: payez ou migrez l’application avec des coûts énormes.

Vous savez, OrientDB est GRATUIT pour tout usage, même commercial. De plus, OrientDB prend en charge des normes telles que SQL (avec des extensions) et la principale API Java est les TinkerPop Blueprints, le standard “JDBC” pour les bases de données graphiques. De plus, OrientDB prend également en charge Gremlin .

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

Si vous avez des doutes quant à l’utilisation de GraphDB, je vous suggère de vous rapprocher de vos besoins, mais d’utiliser les normes autant que possible. De cette manière, un éventuel changement aurait un impact faible.

Il semble que votre cas d’utilisation soit exactement ce pour quoi ArangoDB est conçu: il semble que vous ayez besoin de différents modèles de données (documents et graphiques) dans la même application et que vous souhaitiez même les mélanger en une seule requête. C’est là que réside une firebase database multi-modèles comme ArangoDB.

Si MongoDB vous a bien servi jusqu’ici, alors vous vous sentirez immédiatement à l’aise avec ArangoDB, car son apparence et son aspect sont très similaires. De plus, vous pouvez modéliser des graphiques en stockant vos sumts dans une (ou plusieurs) collections et vos arêtes dans une ou plusieurs «collections d’arêtes». Cela signifie que les arêtes individuelles sont simplement des documents à part entière et peuvent contenir des données JSON arbitraires. La firebase database propose ensuite des parcours personnalisables avec JavaScript pour répondre à tous vos besoins.

Pour vos variantes des requêtes, vous pouvez par exemple append des atsortingbuts sur ces embargos à vos sumts et programmer les requêtes / parcours pour les prendre en compte.

La firebase database ArangoDB est concédée sous licence Apache 2, et un support communautaire et professionnel est facilement disponible.

Si vous avez des questions plus spécifiques, n’hésitez pas à demander au groupe Google

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

ou contacter

les pirates (at) arangodb.org

directement.

La tarification de Neo4j est en fait assez flexible, alors ne vous laissez pas abattre par les prix sur le site. Vous pouvez également commencer avec l’édition communautaire ou l’édition personnelle pendant longtemps.

La communauté Neo4j est très active et utile et fournit rapidement une assistance et une aide pour vos questions. Je pense que c’est le plus grand avantage en plus de la performance et de la commodité. I n général en utilisant un modèle graphique

En ce qui concerne votre cas d’utilisation:

Neo4j est utilisé exactement pour ce scénario de calcul d’itinéraire par l’une des plus grandes sociétés de logistique au monde, qui achemine jusqu’à 4 000 colis 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 en coordonnées de jeu dans le monde en utilisant Neo4j-Spatial).

Je suis curieux de savoir pourquoi vous avez seulement quelques nœuds? Sont-ce des portails de transport? Je me demande où vous stockez les détails et la dynamic à propos des routes (comme les critères que vous avez mentionnés) proviennent-elles de l’extérieur – en mémoire du moteur de jeu?

Vous devriez probablement partager plus de détails sur votre modèle et le cas d’utilisation concret.

Et il pourrait être utile de savoir qu’Emil, l’un des fondateurs de Neo4j et moi-même, sums des acteurs de longue date des donjons multi-utilisateurs (MUD).