我目前正在设计一款MMO浏览器游戏,该游戏将包括一些实时位置的平铺地图(因此每个单元格都有平铺数据)和一个普通的世界地图。我喜欢的游戏引擎使用MongoDB来保存持久化数据。
我还将实现一种运输模拟(我稍后会更详细地解释),它基本上是一个Dijkstra模块,我决定使用一个图形数据库,希望这样做会使事情变得更容易,找到了颇受欢迎的Neo4j。
我对MongoDB + Neo4J组合感到满意,但随后发现了OrientDB,据说它就像MongoDB和Neo4J的结合体(两全其美?),他们甚至为MongoDB和Neo4J提供了VS页面。
重点是,我听说MongoDB有丢失数据的恐怖故事(虽然不确定现在是否仍然如此),而我没有这种奢侈品。对于Neo4J,我不是很喜欢每年12000欧元的“创业友好”费用,尽管我可能不会拥有数百万的顶点数据库。OrientDB似乎是一个可行的选择,因为也许可以有一些使用单一数据库解决方案的机会。
在这种情况下,一个逻辑上的举措可能是转向OrientDB,但它有一个小社区,tbh并没有找到太多关于它的评论,MongoDB和Neo4J是广泛使用的流行工具,我担心OrientDB是一次冒险。
我的第一个问题是您是否对这些数据库有任何经验/意见。
我的第二个问题是哪种图形数据库更适合运输模拟。使用的数据库预计将从任何顶点到任何顶点计算最便宜的路线并遍历它(经典Dijkstra)。但是还必须根据情况更改权重,例如“B国对A国实施禁运,因此任何源自A国的物品都不能通过B国”,“XYZ地区发生洪水,因此无法进行陆路运输”等。此外,该数据库预计将缓存结果。我预计不会超过1000个顶点,但有很多边缘。
提前感谢您,如果问题有点模糊,请提前道歉。
PS:我在标题中加入了ArangoDB,但tbh还没有太多时间去看。
最新编辑时间为2016年4月18日:在评估了对我的问题和开发策略的回应后,我决定使用ArangoDB,因为他们的路线图对我来说更有前途,因为他们显然没有试图添加大量半烤特性。