2014-11-02 100 views
43

我目前正在設計MMO瀏覽器遊戲階段,遊戲將包括一些實時位置(所以每個單元格的瓷磚數據)和一般世界地圖的地圖。遊戲引擎我更喜歡使用MongoDB來實現持久的數據世界。MongoDB + Neo4J與OrientDB與ArangoDB

我還將實現一個航運模擬(我將在下面進行更多解釋),它基本上是一個Dijkstra模塊,我決定使用圖形數據庫,希望它能使事情變得更簡單,發現Neo4j,因爲它很受歡迎。我很滿意MongoDB + Neo4J的設置,但後來注意到了OrientDB,它似乎同樣適用於MongoDB和Neo4J(這兩個世界都是最好的),它們甚至有用於MongoDB和Neo4J的VS頁面。

問題是,我聽說MongoDB丟失數據的一些恐怖故事(雖然不知道它還是如此),我沒有那麼奢侈。對於Neo4J,我並不是每年12K歐元「啓動友好」成本的大粉絲,儘管我可能沒有擁有數百萬頂點的數據庫。 OrientDB似乎是一個可行的選擇,因爲使用一個數據庫解決方案也可能有一些機會。

在這種情況下,一個邏輯移動可能會跳到OrientDB,但它有一個小社區,tbh沒有找到太多的評論,MongoDB和Neo4J是廣泛使用的流行工具,我擔心OrientDB是否是一個冒險。

我的第一個問題將是如果您有任何關於這些數據庫的經驗/意見。

第二個問題將是哪個圖形數據庫更適合航運模擬。預計使用的數據庫將計算從任何頂點到任何頂點的最便宜路線並穿過它(經典Dijkstra)。但也必須根據情況改變權重,例如「國家B對A國實行禁運,所以任何源自國家A的項目都不能通過B,在XYZ地區存在洪水,因此不能進行陸地運輸」等。此外,該數據庫預計會緩存結果。我期望不超過1000個頂點但有很多邊緣。

在此先感謝和道歉事先如果問題是有點曖昧

PS:我添加ArangoDB的冠軍,但TBH,沒有多少機會去看看。


後期編輯的18-APR-2016:評價我的問題和發展戰略的迴應後,我決定用ArangoDB作爲他們的路線圖是對我更有前途,因爲他們顯然沒有嘗試添加噸炒作功能半烤。

+0

你也可以看看Structr的JSON/REST後端(https://structr.org,它也是開源的)。它基本上將Neo4j變成一個文檔數據庫。免責聲明:我是該項目的發起人。 – 2014-11-02 22:00:02

+1

您將使用哪種語言?您還應該考慮每個數據庫社區的規模,您能夠輕鬆找到兼容的軟件包,文檔的質量以及驅動程序的成熟度。 MongoDB在所有方面都很成熟,Neo4j(我使用並強烈推薦)可能是第二。正如Michael Hunger所說,不要讓授權頁面嚇到你。 – subvertallchris 2014-11-03 01:29:47

+0

@subvertallchris:目前的計劃是使用node.js和laravel,但可能會切換到純JS解決方案。 – projectUnduli 2014-11-03 08:59:47

回答

42

聲明:我是OrientDB的作者和所有者。

至於開發商,一般來說,我不喜歡隱藏費用,讓你用自己的技術發揮了一段時間,只要你緊它,開始要錢公司。實際上,一旦您投入了數月的時間來開發使用非標準語言或API的應用程序,您就被搞砸了:以巨大的成本支付或遷移應用程序。

你知道,OrientDB免費任何使用,甚至是商業。此外,OrientDB支持像SQL這樣的標準(帶有擴展),主要的Java API是TinkerPop Blueprints(圖形數據庫的「JDBC」標準)。此外OrientDB還支持Gremlin

OrientDB項目每天都在增加新的貢獻者和用戶。社區組(免費頻道請求支持)是most active community in GraphDB market

如果您對使用GraphDB有疑問,我的建議是獲得更接近您的需求的東西,然後儘可能多地使用標準。通過這種方式,最終的開關將會產生較小的影響。

+0

問這個問題是爲了得到更接近我的需求,盧卡。如果OrientDB更適合或者不適合,我希望你會更加清楚。 – projectUnduli 2014-11-03 18:19:14

+1

OrientDB具有兩種模型,因此您可以將數據建模爲具有MongoDB等複雜類型的圖形。大多數用戶在OrientDB中利用這種混合模式不會對域複雜性產生影響。此外,只要您需要擴展,您可以添加零配置的服務器。 – Lvca 2014-11-05 21:50:33

+4

要添加到Lvca的想法,似乎圖形數據庫是你自然。不要被挑釁性的營銷誤導,OrientDB正在與許多大公司評估和選擇這個領域的其他選項的巨大眼淚。我在團隊中處理很多客戶的問題。最近幾個月,我看到最大的科技公司有開發團隊進行廣泛的評估,並選擇OrientDB來滿足圖需求。所以這是一次冒險,因爲它對你來說是新的,而不是因爲它沒有經過證明或以任何方式粗略。讓我們知道你是否需要幫助入門。 – 2014-11-05 22:17:28

13

Neo4j的定價實際上非常靈活,所以不要被網站上的價格收起來。 您也可以長時間開始使用社區版或個人版。

Neo4j社區非常活躍且樂於助人,並且可以快速爲您的問題提供支持和幫助。除了性能和便利之外,我認爲這是最大的優勢。我 ñ一般使用圖形模型

關於你提到的用例:

的Neo4j是由最大的物流公司,在世界上的一個人完全用於此路線計算場景,每秒其路由可達4000包全國各地。

它用於其他遊戲引擎,如here at GameSys用於遊戲經濟模擬,另一個用於路由(不是在地球座標中,而是在使用Neo4j-Spatial的遊戲世界座標中)。

我很好奇你爲什麼只有那麼幾個節點?那些像傳送門戶一樣?我想知道你在哪裏存儲細節和關於路線的動態(如你提到的標準)是從外部來的 - 在遊戲引擎的記憶狀態中?

您應該分享一些關於您的模型和具體使用案例的更多細節。

,它可能有助於知道,無論埃米爾的Neo4j的創始人之一,我是多用戶地牢(MUD遊戲)的老玩家的時間,所以它肯定是一個用例貼近我們的心臟:)

+0

嗨, 正如你提到的那樣,它們正是運輸門戶(海港,機場,火車站等),認爲如果更深入(或者不會是?)它就會失控。對於有關「禁運,災難,戰爭等等」的數據,我對任何選項都很滿意(儘管我最初的想法是將它們保留在圖形數據庫中)。感謝您的回覆,btw – projectUnduli 2014-11-02 21:13:05

37

聽起來好像您的用例正是ArangoDB的設計用途:您似乎在同一個應用程序中需要不同的數據模型(文檔和圖表),甚至可能希望將它們混合到一個查詢中。這就是ArangoDB發揮的多模型數據庫的地方。

如果MongoDB到目前爲止已經爲你服務,那麼你會立即感覺與ArangoDB相適應,因爲它在外觀和感覺上非常相似。此外,您可以通過將頂點存儲在一個(或多個)集合中,並將邊緣存儲在一個或多個所謂的「邊緣集合」中來爲圖形建模。這意味着單獨的邊緣本身就是文檔,可以保存任意的JSON數據。然後數據庫提供遍歷,可以使用JavaScript進行自定義,以滿足您可能需要的任何需求。

爲了您的查詢的變化,例如,您可以添加有關這些禁運屬性的頂點和編程查詢/遍歷來考慮這些因素。

ArangoDB數據庫根據Apache 2許可證授權,社區和專業支持隨時可用。

如果您有任何更具體的問題,不要猶豫了谷歌組

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

在詢問或諮詢

黑客(AT)arangodb.org

直接。

+1

另外在ArangoDB中,基於Dijkstra的最短路徑實現已經在查詢語言中可用。 – mchacki 2014-11-02 23:52:29