1

私は、グラフ データベース (生データを保存するため) とドキュメント データベース (生データから抽出されたレポート) の両方が提供する機能を必要とするアプリケーションに取り組んでいます。neo4j と mongodb を使用する予定でした。私はorientDBについて考え直し、見ています。2 つの別個のデータベースよりも単一のマルチモデル データベースの方が優れているか? 私が neo4j に傾倒した理由は、大規模なグラフのメモリの局所性に役立つネイティブのグラフ ストレージです。OrientDB はグラフをネイティブに保存しません。またはそれはありますか?

4

2 に答える 2

1

用語に惑わされないでください。「インデックスのない隣接関係」とは、単にグラフの頂点がそのエッジと共に格納されることを意味する用語です。各データベースは、これをわずかに異なる方法で行います。Neo4J はそれらをディスク上のリンク リストに格納します。それらがメモリにあり、それらの数が多すぎない場合、それらは高速です。それらをディスク上でヒットする必要がある場合は、インデックスが必要になる場合があります。Titan は、それらを Cassandra などのワイドカラム データベースにカラムとして格納します。それらがメモリ内にある場合、それらは高速です。それらをディスク上でヒットする必要がある場合、基盤となるデータベースの範囲クエリにより一括読み込みが速くなり、追加のインデックス作成により大きなエッジ リストを検索するコストを削減できます。

この議論は非常に価値があります: Titan は HBase / Cassandra を使用して一定時間のルックアップをどのように実現していますか?

OrientDB を使用しているか、他のデータベースを使用しているかに関係なく、グラフ クエリの効率は、比較的小さなノード セットでグラフ クエリを開始し、トラバースするように配置したインデックスに大きく依存します。実行中のクエリのいくつかをモデル化して、選択したデータベースが、グラフ全体にわたるか、各頂点にローカルであるかにかかわらず、適切なインデックスをサポートするようにしてください。

于 2015-12-09T14:05:46.300 に答える