MongoDB + Neo4J vs OrientDB vs ArangoDB

I am currently at the development stage of an MMO browser, the game will include tilemaps for some places in real time (so there is tile data for each cell) and a general world map. I prefer to use the MongoDB engine for a permanent data world.

I will also be able to implement a delivery simulation (which I will explain below), which is mainly a Dijkstra module, I decided to use a graphical database, hoping that this would simplify the situation, and found Neo4j as it is quite popular.

I was pleased with the setup of MongoDB + Neo4J, but then I noticed OrientDB, which apparently acts like MongoDB and Neo4J (best of both worlds?), They even have VS pages for MongoDB and Neo4J.

Point, I heard some terrible stories that MongoDB lost data (although I’m not sure that it is), and I do not have such luxury. And for Neo4J, I'm not a big fan of 12K € per year of “starting friendly” value, although I probably won't have DB of millions of tops. OrientDB seems to be a viable option, as there may be some possibilities for using a single database solution.

In this case, the logical move may jump to OrientDB, but it has a small community, and tbh did not find many reviews about it, MongoDB and Neo4J are popular widely used tools, I have problems if OrientDB is an adventure.

My first question will be if you have any experience / opinion regarding these databases.

And the second question would be that Graph Database is better for modeling delivery. It is expected that the database used will calculate the cheapest route from any vertex to any vertex and cross it (classic Dijkstra). But you also have to change the scales depending on situations, such as “country B has an embargo on country A, so any element originating from country A cannot pass through B, there is flooding in the XYZ region, therefore land transport is impossible”, etc. d. Also, this database is expected to cache results. I expect no more than 1000 vertices, but many edges.

Thanks in advance and apologize in advance if the questions are a bit ambiguous

PS: I added ArangoDB to the header, but tbh, didn't have much chance to take a look.




Later editing from April 18 to 2016: after evaluating the answers to my questions and development strategies, I decided to use ArangoDB, since their roadmap is more promising for me, since they apparently do not try to add tons of hype features that are half baked.

+43
mongodb neo4j dijkstra orientdb arangodb
Nov 02 '14 at 20:40
source share
3 answers

Disclaimer: I am the author and owner of OrientDB.

As a developer, in general, I do not like companies that hide costs and allow you to play with their technologies for a while, and as soon as you are connected with it, start asking for money. In fact, as soon as you have invested months to develop your application using a non-standard language or API, you tighten: pay or transfer the application at a huge cost.

You know, OrientDB is FREE for any use, even commercial. OrientDB also supports standards such as SQL (with extensions), and the main Java API is TinkerPop Blueprints, the JDBC standard for Graph databases. In addition, OrientDB also supports Gremlin .

The OrientDB project is growing every day with new members and users. The Community Group (a free channel for requesting support) is the most active community on the GraphDB market .

If you have any doubts about using GraphDB, my suggestion is to get what is closer to your needs, but then use the standards as much as possible. Thus, the potential switch will have a low level of exposure.

+42
Nov 03 '14 at 14:22
source share
— -

It sounds as if your use case is exactly what ArangoDB is for: you seem to need different data models (documents and graphics) in one application and can even mix them in one request. Here shines a multi-model database like ArangoDB.

If MongoDB still serves you, then you will immediately feel comfortable with ArangoDB, since it is very similar in appearance. In addition, you can simulate graphs by storing your vertices in one (or several) collections, and your edges in one or more so-called "edge collections". This means that individual edges are just documents in their own right and can contain arbitrary JSON data. The database then offers JavaScript customizable crawls to fit any needs that might arise.

For your query options, you can, for example, add attributes about these embargoes to your vertices and program queries / workarounds to take them into account.

The ArangoDB database is licensed under the Apache 2 license, and the community as well as professional support are easily accessible.

If you have more specific questions, feel free to ask in the google group

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

or contact

hackers (at) arangodb.org

directly.

+35
Nov 02 '14 at 22:12
source share

The prices of Neo4j are actually quite flexible, so do not get rid of the prices on the website. You can also get started with a community edition or personal edition for a long time.

The Neo4j community is very active and helpful and quickly provides support and assistance in resolving your issues. I think this is the biggest plus in addition to performance and convenience. i n using graph model

Regarding your use case:

Neo4j is used specifically for this scenario of calculating the route of one of the largest logistics companies in the world, where it routes up to 4000 packets per second throughout the country.

And it is used in other game engines, such as here in GameSys for modeling the game economy, and in another for routing (not in earth coordinates, world coordinates using Neo4j-Spatial).

I'm curious why you only have a few nodes? Is it like transport portals? I wonder where you store the details and the dynamics of the routes (for example, the criteria you mentioned), they come from outside - in the state of memory of the game engine?

You should probably share some details about your model and a specific use case.

And it can help to find out that both Emil, one of the founders of Neo4j and I, are old-fashioned players in multiplayer dungeons (MUD), so he definitely suits our heart :)

+13
Nov 02 '14 at 21:00
source share



All Articles