MongoDBとCassandraについて話すとき、「ドキュメント指向」と「Key-Value」とはどういう意味ですか?


回答:


153

キーと値のストアは、できるだけ簡単なデータモデルを提供し、その名前が示唆する、まさにです:店舗の値はキーによってインデックス付けすることをストレージシステムです。キーによるクエリに制限されており、値は不透明で、ストアは何も認識していませんそれらについて。これにより、非常に高速な読み取りおよび書き込み操作(単純なディスクアクセス)が可能になり、このモデルは一種の不揮発性キャッシュ(つまり、長期間のデータへのキーによる高速アクセスが必要な場合に適しています)と考えています。

ドキュメント指向データベースは、以前のモデルを拡張し、値がに格納されている構造化データベースが理解できる(したがって、その名前、ドキュメント)フォーマット。たとえば、ドキュメントはブログ投稿であり、コメントタグは非正規化された方法で保存されます。データは透過的であるため、ストアはより多くの作業(ドキュメントのフィールドのインデックス作成など)を実行でき、キーによるクエリに限定されません。私がほのめかしたように、そのようなデータベースは単一のクエリでページ全体のデータをフェッチすることを可能にし、コンテンツ指向のアプリケーション(FacebookやAmazonのような大きなサイトがそれらを好む理由です)に適しています。

その他の種類のNoSQLデータベースには、列指向のストアグラフデータベース、さらにはオブジェクトデータベースが含まれます。しかし、これは問題を超えています。

こちらもご覧ください


2
キー値ストアはディスクアクセスで実行する必要はなく、一部の実装ではそれらを非揮発性と呼ぶのは正しくありません。不揮発性ストレージメディアへのライトスルーまたはライトバックなしで、メモリ内にキー値ストアを作成できます。データの存続期間は、データの取得方法とは関係がないため、長期間存続するデータを呼び出すことも誤解を招く可能性があります。
Anthony

17

さて、私はこの1か月ほど、自分でNoSQLを調査してきました。私はそれは一般的に次のように述べることができると思います

  • KVストアは、キーに対して実際に保存されているコンテンツの値を認識していません
  • ドキュメントベースでは、dbがドキュメント構造(ブログ投稿のタグなど)を知っているため、値のコンテンツ内にセカンダリインデックスを定義できます。
  • NoSQLソリューションにはそれぞれ、次のような考慮すべき特定の機能があります。
    • KVストアの特別なデータ型(例:redisのように左/右のポップ/プッシュのセット)
    • riakが言うように簡単なクラスターのスケールアップ/ダウン(私はまだ試していません...)
    • Voldemortのようなプラグ可能なデータストア
    • CouchDB / couchappのような組み込みのWeb設定とWebアプリのサポート

2

ドキュメント指向のデータベース、またはドキュメントストアは、半構造化データであるドキュメント指向の情報を格納、取得、および管理するためのものです。キー値ストアは、ドキュメント指向のデータベースを継承しています。違いは、データの処理方法にあります。Key-Valueストアでは、データはデータベースに対して本質的に不透明であると見なされますが、ドキュメント指向のシステムは、データベースエンジンがさらに最適化するために使用するメタデータを抽出するためにドキュメントの内部構造に依存します。

MOngoDbとCassandraの違いについて説明します。MongoDBはリレーショナルデータベースのように機能します。そのデータモデルは、最上位レベルのデータベース、MySQLのテーブルのようなコレクション(たとえば)、次にMySQLの行のようなコレクション内に含まれるドキュメントで構成されます。各ドキュメントにはフィールドと値があり、これはMySQLの列と値に似ています。フィールドは、単純なキー/値にすることができます(例:{'name': 'David Mytton'})。ただし、他のドキュメントを含めることもできます(例:{'name':{'first':David、 'last': 'Mytton'}})。Cassandraでは、ドキュメントは「列」と呼ばれ、実際には単一のキーと値にすぎません。例:{'key': 'name'、 'value': 'David Mytton'}。内部レプリケーションと一貫性のためのタイムスタンプフィールドもあります。値は単一の値にすることも、別の「列」を含めることもできます。これらの列は列ファミリー内に存在し、キーによって参照される列の特定の値に基づいてデータを順序付けします。

しかし、トップレベルには、MongoDBデータベースに似たキースペースがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.