2010-01-16 67 views
2

我正在構建一個應用程序,並需要可以查詢和遍歷的互連對象的數據結構。對象之間的連接可以是任意的,並不一定在手之前就知道。我需要這個數據結構是可查詢的(通常SQL提供的),也可以遍歷(像neo4j提供的新圖數據庫)。我試圖找到能夠同時處理大量數據集的方法。我們稱之爲數據結構dao。我就如下原始的方法:大量查詢和遍歷數據結構

// dealing with the objects 
dao.save(s); 
Something s = dao.load(Something.class, 5); 
dao.update(s); 
dao.delete(s); 

// dealing with the relations 
dao.relate(s, t); 
dao.unrelate(s, t); 

// the tricky methods 
dao.querier(Something.class).filter(...).sort(...).values(); 
dao.traverser(Something.class).start(s).path(...).filter(...).sort(...).values(); 

過濾會是這樣的SQL WHERE子句,排序會是這樣的SQL命令子句,開始將是起始節點用於遍歷,並且路徑將定義諸如BFS和DFS遍歷以及何時停止搜索。

我試圖把它建模爲具有鄰接列表的頂點,但必須有更好的方法。有任何想法嗎?

回答

0

是的,Neo4j將是一個不錯的選擇。除了Java的原始用法外,Jo4neo還爲您的對象模型在圖上提供了基於註釋的持久性。對於查詢,您可以使用Neo4j高速Java Traversers,也可以使用諸如JRuby Wrapper之類的東西,它爲JRuby的查詢提供了非常方便的抽象。此外,Gremlin專門用於深度圖遍歷,但尚未針對速度進行優化。