14

私は主に、「ArangoDB は真のグラフ データベースですか?」という質問をするつもりでした。

しかし、この質問はかなり不快に聞こえるでしょう。

triAGENS の皆さんは、「マルチパラダイム」データベースの作成において本当に素晴らしい仕事をしました。PostgreSQL、PostGIS、MongoDB、Neo4J/Titan のユーザーとして、「オールインワン」ソリューションを見て本当に感謝しています :)

基本的に ArangoDB でグラフを作成するには、2 つの個別のコレクションを作成する必要があります。1 つはエッジ用、もう 1 つは頂点用です。したがって、私が理解している限りでは、頂点と関連するエッジは「物理的に」隣接していないことをすでに意味しています。

さらに、適切なインデックスを作成した後でも、Gremlin でこの種のことを行うと、重大なパフォーマンスの問題に直面しています。

g.v('an_id').out('likes').in('likes').count()

〜3秒(知覚時間)後に結果を返す

Gremlin と Blueprint/ArangoDB がどのように機能するかをよく理解していなかったので、AQL を使用して同じクエリを書き直そうとしました。

LET lst = (FOR e1 in NEIGHBORS(vertices, edges, "an_id", "outbound", [ { "$label": "likes" } ] )
    FOR e2 in NEIGHBORS(vertices, edges, e1.edge._to, "inbound", [ { "$label": "likes" } ] )
        RETURN 1
    )
RETURN length(lst)

これにより、同じ桁の遅延が発生します。

Titan または Neo4j データベースで (まったく同じデータを使用して) 同じクエリを実行しようとすると、クエリはすぐに返されます (知覚時間: <200ms)

したがって、ArangoDB のグラフ機能は「従来のドキュメント データベース」の上の「スマート グラフ レイヤー」ですが、ArangoDB は「ネイティブ」グラフ データベースではないように思えます。

この感覚を確認するために、データを変換して PostgreSQL にロードし、クエリを実行し (想定できるように複数のテーブル JOIN を使用)、同様の (ArangoDB との) 実行遅延が発生しました。

(AQL クエリで) 何か間違ったことをしましたか?

より良いトラバーサル時間を得るためにデータベースを最適化する方法はありますか?

PostgreSQL では、概念的にはエッジとノードを混在させ、CLUSTER 句を使用してデータを物理的に並べ替えますが、ArangoDB で同様のことができますか? (エッジとノードを「インターレース」する必要があるため、直感だけで難しいと思います)

4

1 に答える 1

6

私は ArangoDB のコア開発者です。使用しているデータの次元について、もう少し情報を教えていただけますか?

  • 頂点の量
  • エッジの量

次に、同じ寸法で独自のセットアップを作成し、最適化できます。

于 2014-01-10T10:54:28.410 に答える