私はアプリケーションを構築しており、クエリとトラバースが可能な相互接続されたオブジェクトのデータ構造が必要です。オブジェクト間の接続は任意であり、必ずしも事前にわかっているとは限りません。このデータ構造は、クエリ可能 (通常の 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 のトラバースなどを定義し、いつ停止するかを定義します。検索中。
これを隣接リストを持つ頂点としてモデル化しようとしましたが、もっと良い方法があるはずです。何か案は?