8

ドキュメント指向の NoSQL DB は、単一のルックアップ キー以上のクエリを実行できるという点で、KV モデルの「拡張」であることを理解しています。しかし、何かが「ドキュメント」になると、すでにリレーショナル モデルが組み込まれているように感じます。

"myJson": {
    "fizz": 4,
    "buzz": "true",
    "widget" : {
        ...etc.
    }
}

私には、この JSON と、 andフィールドjson_objectsを持つテーブル、および 2 番目のテーブルへの外部キー リレーションシップの違いがわかりません。fizzbuzzwidgets

また、Cassandra のような「列型」DB は、単純なリレーショナル/テーブル DB のように聞こえます。

ドキュメント指向の DB と列指向の DB の違いは何ですか? (RDBMS とは) 違いますか? 特定の状況下で、リレーショナル DB よりも優れた解決に最適な問題は何ですか? 前もって感謝します!

4

2 に答える 2

17

最初に、 NoSql はリレーショナル データベースとは異なるため、比較するのは難しいというあなたの意見は非常に正しいと言いたいです。そうは言っても、比較できる2つの間には多くの大きな違いがあります。

スケーリング
MySql データベースをシャーディングすることはできますが、RDMS が複数のマシン上にある場合、シャーディングとACID プロパティの適用に問題があります。問題なくクラスター化。Cassandra データベースは簡単に拡張できるだけでなく、パフォーマンスが低下することもありません。

スキーマ(レス) モデル。
NoSQL データベース システムは、固定スキーマに従わない大量のデータを管理するために開発されました。これは、たとえば、Cassandra の既存の列ファミリーに新しい列を追加する場合、戻って列ファミリーを修正する必要がないため、次のようにする必要がないことを意味します。

ALTER TABLE table_name ALTER COLUMN column_name datatype;

代わりに、新しい列を追加するだけで、次の「テーブル」になる可能性があります。

 key         | follower1  | follower2   | follower2          
-------------+------------+-------------+-----------
 lyubent     | joeb       | chuckn      | gordonf     
 chuckn      | joeb       | gordonf                   
 gordonf     | chuckn                                 
 joeb        | chuckn     | lyubent     | joeb        

これにより、データ モデルを柔軟かつ簡単に拡張できますが、そうするとデータの構造化が不十分になります。

速度NoSql データベースは高い書き込み速度
に最適化されていますが、RDBM は高い読み取り速度を目指しています。しかし、それを念頭に置いても、読み取りに関しては、NoSql ソリューションは依然として RDBM システムよりも優れている傾向があります。これは、ACID プロパティやトランザクションなど、リレーショナル モデルの読み取り/書き込み/更新操作を遅くする関数の多くが NoSql データベースに実装されていないためです。

いつ使用する必要がありますか?

  • アプリケーション/Web サイトは急速に成長する必要がありますが、最初は小さく始めたいと考えています。
  • データを読み戻すよりも、データを書き込むことに関心があります。(たくさんのつぶやきが投稿されていますが、すべてが読まれているわけではありません)
  • システムの可用性は、データが 100% 更新されることよりも重要です。(したがって、銀行の場合は NoSql は必要ありませんが、100% のアップタイムが必要な Web サイトの場合は、NoSql を選択することをお勧めします)。
  • 書き込まれるデータが 100% の確率で成功する必要があるが、結果整合性は問題にならない場合。

視覚的な説明として、これは、さまざまな SQL ソリューションがデータベースの世界のどこに適合し、それぞれが目的にどのように適合するかを理解するのに大いに役立ちました。

データベースのトライアド - 可用性、一貫性、分断耐性

于 2013-03-08T22:45:27.713 に答える
2

no schema db では、列と型が固定されていません。

たとえば、商品「ジーンズ」には属性「価格」、「長さ」、および「モデル」(M/W) を含めることができますが、商品本には属性「価格」、「著者」、および「タイトル」を含めることができます。携帯電話の場合は、「画面の種類」、「オペレーティング システム」などがあります。

柔軟性がなく、ユーザーが任意の属性を挿入できないため、RDBMS でそれをモデル化することは非常に困難です。したがって、この種のデータ用に最適化されたドキュメント データベースを使用する方が簡単で、任意の属性の値で簡単に検索およびフィルタリングできます。 (例: 長さが 30 を超え、モデルが w のすべての製品)。

于 2013-03-11T02:42:36.133 に答える