1

私はアプリケーションを構築しており、クエリとトラバースが可能な相互接続されたオブジェクトのデータ構造が必要です。オブジェクト間の接続は任意であり、必ずしも事前にわかっているとは限りません。このデータ構造は、クエリ可能 (通常の 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 の order 句のようなものになり、startはトラバーサルの開始ノードになり、パスは BFS や DFS のトラバースなどを定義し、いつ停止するかを定義します。検索中。

これを隣接リストを持つ頂点としてモデル化しようとしましたが、もっと良い方法があるはずです。何か案は?

4

2 に答える 2

0

多分neo4jにsparqlクエリエンジンを使用していますか?

于 2010-01-16T05:09:10.143 に答える
0

はい、Neo4jは良い選択肢です。Jo4neoは、Java からそのまま使用するだけでなく、オブジェクト モデルの注釈ベースの永続性をグラフに提供します。クエリには、Neo4j 高速 Java Traversersを使用するか、JRubyからのクエリに非常に便利な抽象化を提供するJRuby Wrapperなどを使用できます。また、Gremlinは深いグラフ トラバーサルに特化していますが、速度についてはまだ最適化されていません。

于 2010-01-17T16:09:48.377 に答える