Javaで書かれた組み込みNoSQLデータベースのオプションを見ると、グラフデータベースが出てきます。グラフデータベースとは何ですか(特にKey-Valueストアやドキュメント指向データベースとは対照的です)。いつ使用しますか(使用しない場合)。
3 に答える
私は学校で彼らについて少し学びました(ずっと前に)。リレーショナルはまだ完全に世界を席巻していませんでしたが、それに近づいていたので、グラフ データベースがざっと言及されました。IIRC は当時ほとんど死んでいました。これが実際にどれほど有益かはわかりませんが、誰かの役に立てば幸いです。
基本的に、私の記憶が正しければ、グラフ データベースは本質的にグラフです。グラフからデータ (ノード) を取得し、関連情報を見つけるために、グラフ構造内の関連データへのリンク (エッジ) をトラバースします。
データがグラフのようであり、使用するのがより高速で自然である可能性があるという明らかなケースを除いて、利点を思い出すことはできません。不利な点は思い浮かびませんが、リレーショナル データベースが得意とする種類の処理 (つまり、タプルの大きなセットをクランキングすること) ではうまくいかないのではないかと思います。
これを含む、「何」の質問に答えるために利用できるいくつかの情報源:
http://www.infinitegraph.com/what-is-a-graph-database.html
グラフ データベースはいつ使用する必要がありますか?
データに多数の多対多の関係が含まれている場合、再帰的な自己結合がコストがかかりすぎるか、アプリケーションとスケーリングのニーズを制限している場合、および/または主な目的が、データ内のオブジェクト間の接続、パターン、および関係をすばやく見つけることである場合データ。
グラフ データベースは、ソーシャル ネットワーク、ウィキペディアなどの書誌データベース、不正行為の検出、メディア分析、レコメンデーション、生物学的ネットワーク分析など、情報が固有のグラフのような性質を持つシナリオで役立ちます。これらのシナリオでは、結果のリストのみを取得しますが、特定の制約を満たすエンティティのセットを取得します。
グラフ データベースは、次の理由で役立ちます。
Relationships between entities are implicit in the model
They are more flexible to manage unknown or dynamic schemas
Favor structural and navigational queries
They are more efficient solving network operations