2011-10-06 43 views
2

在工作中,我們希望我們的下一代產品基於圖形數據庫。我在尋找什麼數據庫引擎可能適合我們的新項目的建議:我正在尋找以Java/Python爲中心的組織的圖形數據庫

Out產品旨在跟蹤大量的商品價格。這是一個簡單的例子 - 假設你想估計英國的汽油價格 - 你知道汽油是從原油中提煉出來的。如果您在英國新增原油價格,您可以簡單地通過增加煉油,運輸(等)成本來估算任何價格。實際上情況更復雜,因爲有許多原油和數百種成品油的來源。石油產品的價格可能受到其他能源(如核能,風能,天然氣)和需求的影響。這有點複雜!

這個想法是我們想要將各種相關貨物及其煉油,運輸(等)成本建模爲一個無環有向圖。這個想法是,當某個事件導致價格發生變化時,我們希望能夠迅速確定哪些事情受到影響,並儘快重新計算這些價格。

本質上,我們需要一個數據庫,它可以將單個商品表示爲圖中的節點。每個節點將存儲許多與產品有關的信息曲線和表面。

我們想要將各種成本&變換(如精煉,運輸)表示爲邊上的標籤。與節點一樣,我們要存儲的信息可能相當複雜 - 不僅僅是單個值,還有曲線和曲面。

我們所做的計算都與對象的大小有關,但由於圖形可能非常大,我們需要能夠非常快地遍歷圖形。

我們是以Java和Python爲中心的 - 理想情況下,我們是在JVM上運行的產品之後,但對Python和Java都有非常好的API。我們不太關心其他語言......但.Net會很高興(儘管可能需要幾年時間才能完成某些工作)。

我們肯定會喜歡高性能的東西 - 但更重要的是系統需要具有一定程度的硬件容錯性。例如,我們希望將數據庫分佈在多個物理服務器上。如果任何一臺服務器出現故障,我們希望能夠不中斷地繼續運行。

哦,我們真的很懶。我們不想花太多時間編寫基礎架構 - 所以如果數據庫附帶的工具允許我們儘可能多地做這種事情,而且工作很少,那麼我們就可以做到。如果有一個與圖形數據庫相關的網格技術,這也是一個真正的好處,這樣我們就可以將一系列重新計算的工作推到一個計算網格上,並且我們的大部分計算都以並行方式完成。

所以,這是我們要建立的東西的描述。我想知道的是,是否有任何成熟的技術可以幫助我們實現這一目標。正如我之前提到的,我們偏好Python & JVM,但是如果技術真的很好,並且對Python + Java有很好的綁定,我們幾乎可以考慮任何東西。

+1

什麼[Neo4j的(http://neo4j.org/)? – Thomas

回答

3

的Neo4j是最成熟的graphDB我知道的 - 並且是用java,用綁定蟒蛇太過,或REST

+1

對於neo4j +1。去年我在一個側面項目中使用它,一旦我經歷了學習曲線,我就喜歡它。如果我記得正確的話,他們也已經從一開始就在多臺機器上進行擴展。 – FloppyDisk

+1

請注意,emboeded Neo4j的綁定已更新:http://blog.neo4j.org/2011/10/from-neo4j-import-graphdatabase.html以及更多關於Neo4j + Python的鏈接:http:// delicious。 COM/Neo4j的/蟒蛇 – nawroth