良い質問。まず説明。リレーショナル ストアの分野は、各ベンダーが機能や価格設定で付加価値を選択することで、かなり強固な原則の基盤によってまとめられていますが、非リレーショナル (nosql) 分野ははるかに異質です。
コンテンツ管理に最適なドキュメント ストア (MongoDB、CouchDB) や、トピックを中心に構築する可変属性のフラット セットがある同様の状況があります。サイトのカスタマイズを行います。ドキュメント ストアを使用して、ユーザーが自分のページを表示したい方法を定義するカスタム属性を管理することは、プラットフォームに適しています。マーケティングの誇大宣伝にもかかわらず、これらのストアは、テラバイトにうまくスケールする傾向にありません。それは可能ですが、理想的ではありません。MongoDB には、動的インデックス (コレクション/テーブルごとに最大 40) など、リレーショナル データベースに見られる多くの機能があります。CouchDB は、障害が発生した場合に完全に回復できるように構築されています。
高度に分散されたストレージに最適なキー/値ストア (Cassandra、HBase...) があります。低レイテンシーには Cassandra、高レイテンシーには HBase。これらの秘訣は、データを入力する前にクエリのニーズを定義する必要があることです。これらは、属性に対する動的クエリには効率的ではありません。たとえば、顧客イベント ログ サービスを構築している場合は、顧客の一意の属性にキーを設定する必要があります。そこから、さまざまなログ構造をストアにプッシュし、オンデマンドで顧客キーによってすべてのログを取得できます。ただし、セカンダリ キーを作成しない限り、ログを調べて、タイプが「失敗」であるログ イベントを探すのは、はるかにコストがかかります。もう 1 つ: 私が最後に Cassandra を見たとき、あなたはできませんでした。M/R クエリ内で regexp を実行します。つまり、フィールド内のパターンを探したい場合は、そのフィールドのすべてのインスタンスを取得してから正規表現を実行して、必要なタプルを見つける必要があります。
グラフ データベースは、上記の 2 つとは大きく異なります。項目 (オブジェクト、タプル、要素) 間の関係は流動的です。テラバイト単位に拡張することはできませんが、それは設計された目的ではありません。「ねえ、私のユーザーの何人が緑が好きですか?そのうち何人がカリフォルニアに住んでいますか?」などの質問をするのに最適です。リレーショナル データベースでは、静的な構造になります。グラフ データベース (もちろん単純化しすぎています) では、属性とオブジェクトがあります。スキーマを強制せずに、理にかなった方法でそれらを接続します。
非リレーショナル ストアに重要なものは入れません。たとえば、製品を配送する前にトランザクションが完了したことを保証したい商取引。完全性が保証されていること (または、少なくとも完全性が保証される可能性が最も高いこと) が必要です。ユーザーがサイトのカスタマイズ設定を失ったとしても、大したことではありません。商取引を失うと、大変なことになります。異論のある方もいらっしゃるかもしれません。
また、複雑な構造を上記の非リレーショナル ストアのいずれにも配置しません。それらは大規模な結合をうまく行いません。そして、それは彼らが働くべき方法ではないので大丈夫です。リレーショナル システムの customer_address テーブルに address_type の ID を配置する場合は、ドキュメントまたはキー/値に格納されている顧客のタプルに address_type 情報を埋め込む必要があります。データ効率は、ドキュメントやキー/バリュー ストアの領域ではありません。ポイントは配信と純粋なスピードです。犠牲はフットプリントです。
「nosql」とラベル付けされたストアのファミリーには、ここでは取り上げていないサブタイプが他にもあります。さまざまな種類のデータ問題に対する非リレーショナル ソリューションに焦点を当てた、膨大な数 (最終的には 122) のさまざまなプロジェクトがあります。Riak は、私がよく耳にするもう 1 つのツールであり、試してみるのが待ちきれません。
そして、ここにトリックがあります。大金を投じるリレーショナル ベンダーは注目しており、自社製品と連携する独自の非リレーショナル ソリューションを構築している、または構築を計画している可能性があります。今後数年のうちに、この動きが成熟し、大企業が最善の組み合わせを買収し、リレーショナル ベンダーが統合ソリューションをまだ提供していない企業向けに提供し始めるのを見るでしょう。
データ管理の分野で働くのは非常にエキサイティングな時期です。これらのいくつかを試してみてください。Couch または Mongo をダウンロードして、数分で稼働させることができます。HBase は少し難しいです。
いずれにせよ、重大な偏見や誤りなしに啓蒙したことを混乱させることなく伝えられたことを願っています.