web-dev-qa-db-ja.com

NoSql vsリレーショナルデータベース

最近NoSQLは非常に人気があります。

NoSQLの従来のRDBMS

151
user496949

すべてのデータがリレーショナルではありません。こうした状況では、NoSQLが役立ちます。

そうは言っても、NoSQLは「SQLだけではない」の略です。 SQLをノックしたり、それに取って代わるものではありません。

SQLには、いくつかの非常に大きな利点があります。

  1. 強力な数学的基礎。
  2. 宣言構文。
  3. 構造化照会言語(SQL)でよく知られている言語。

それらは消えていません。

これをどちらかまたは両方の引数と考えるのは間違いです。 NoSQLは、人々が適切なときに考慮する必要がある代替手段であり、それがすべてです。

ドキュメントは、CouchDBなどの非リレーショナルデータベースに保存できます。

多分 this が読めるでしょう。

121
duffymo

履歴は次のように見えます。

  1. Googleには、逆引き検索インデックス用のストレージレイヤーが必要です。彼らは、従来のRDBMSはそれを削減しないと考えています。そのため、GFSファイルシステム上にBigTableのNoSQLデータストアを実装しています。主要な部分は、数千の安価な市販のハードウェアマシンが速度と冗長性を提供することです。

  2. 他の誰もが、Googleが今やったことを理解しています。

  3. 醸造者 CAP定理 が証明されています。使用するすべてのRDBMSシステムはCAシステムです。人々はCPおよびAPシステムでも遊んでいます。 K/Vストア は非常に単純なので、研究の主要な手段です。

  4. 一般に、サービスとしてのソフトウェアシステムは、SQLのようなストアを提供しません。したがって、人々はNoSQLタイプのストアにより興味を持ちます。

離陸の多くはこの歴史に関連していると思います。 Googleのスケーリングは、Googleでいくつかの新しいアイデアを取り入れ、他のすべての人がこれに追従しているのは、これが現在スケーリングの問題を知っている唯一のソリューションだからです。したがって、特定のサイズを超えてスケ​​ーリングする唯一の方法であるため、Googleの分散データベースアイデアの周りのすべてをやり直します。

C-一貫性
A-可用性
P-パーティション許容値
K/V-キー/値

92

NoSQLの次の理由/特性により、NoSQLはRDBMSよりも優れています

  1. 半構造化データと揮発性データをサポートします
  2. スキーマがありません
  3. 読み取り/書き込みスループットが非常に高い
  4. 水平方向の拡張性を簡単に実現できます
  5. Terra BytesおよびPeta BytesのボリュームでBigdataをサポートします
  6. Bigdataに加えて分析ツールを適切にサポートします
  7. 安価なハードウェアマシンでホストできます
  8. クエリのパフォーマンスを向上させるために、メモリ内キャッシュオプションが利用可能
  9. 開発者向けの開発ライフサイクルの短縮

編集:

「RDBMSがスケーリングできない理由」に答えるには、Stavros Harizopoulos、Daniel J. Abadi、Samuel Madden、Michael Stonebrakerによって書かれた RDBMS Overheads pdfをご覧ください。

RDBMSには、テラバイトおよびPetaバイトの膨大なデータボリュームの処理に課題があります。 Redundant Array of Independent/Inexpensive Disks(RAID)およびデータシュレッディングを使用している場合でも、膨大な量のデータに対して適切に拡張できません。非常に高価なハードウェアが必要です。

Loggingデータベース構造のすべての変更をログレコードにまとめて追跡すると、パフォーマンスが低下します。回復可能性が要件でない場合、または他の手段(ネットワーク上の他のサイトなど)を介して回復可能性が提供される場合、ログ記録は必要ない場合があります。

ロック:データベース構造へのすべてのアクセスは別のエンティティによって管理されるため、従来の2フェーズロックはかなりのオーバーヘッドをもたらします。ロックマネージャー。

ラッチング:マルチスレッドデータベースでは、アクセスする前に多くのデータ構造をラッチする必要があります。この機能を削除してシングルスレッドアプローチに移行すると、パフォーマンスに顕著な影響があります。

バッファ管理:メインメモリデータベースシステムは、バッファプールを介してページにアクセスする必要がなく、レベルの間接性を排除します。すべてのレコードアクセス。

これは、NoSQL over SQLを使用する必要があるという意味ではありません。

RDBMSの次の理由/プロパティにより、RDBMSはNoSQLよりも優れています

  1. ACIDプロパティを持つトランザクション-原子性、一貫性、分離および耐久性
  2. 書き込み/読み取り中のデータの強力なスキーマの順守
  3. リアルタイムクエリ管理(データサイズ<10テラバイトの場合)
  4. join&group by句を含む複雑なクエリの実行

ビジネスケースと要件に応じて、RDBMS(SQL)とNoSQL(SQLだけでなく)を使用する必要があります

37
Ravindra babu

NOSQLには、リレーショナルデータベースモデルに対する特別な利点はありません。 NOSQLは現在のSQL DBMSの特定の制限に対処しますが、以前のデータモデルを超える根本的に新しい機能を意味するものではありません。

NOSQLはSQL(または「SQLだけではない」)のみを意味しますが、no relationalと同じ意味ではありません。リレーショナルデータベースは、原則として非常に優れたNOSQLソリューションになります。現在のNOSQL製品セットでは、リレーショナルモデルを使用していないだけです。

14
nvogel

NoDBのRDBMSに対する最大の利点は、スケーラビリティです。 NoSQLデータベースは多くのノードに簡単にスケールアウトできますが、RDBMSにとっては非常に困難です。スケーラビリティは、より多くのストレージスペースを提供するだけでなく、多くのホストが同時に機能するため、パフォーマンスも大幅に向上します。

3
Jon

大量のデータを高性能で処理する必要がある場合

OR

データモデルが事前に決定されていない場合

それから

NoSQLデータベースの方が適しています。

3
Chris

RDBMS関係を重視し、NoSQLストレージを重視します。

RDBMSがボトルネックに達したときにNoSQLを使用することを検討できます。 NoSQLによりRDBMSがより柔軟になります。

3
suiwenfeng

上記のすべての情報に追加するだけです

NoSqlの利点:

1)NoSQLは、スキーマレスでオブジェクト指向のアーキテクチャをサポートしているため、すぐに本番環境に対応したい場合に適しています。

2)NoSql dbは最終的に一貫性があり、これは単純な言語ではRDBMSの場合のようにデータ(ドキュメント)のロックを提供しないことを意味し、データの最新のスナップショットが常に利用できるため、アプリケーションのレイテンシが増加することを意味します。

3)MVCC(マルチビュー同時実行制御)戦略を使用して、データ(ドキュメント)のスナップショットを維持および作成します。

4)データにインデックスを付けたい場合は、指定したビュー定義によってデータに自動的にインデックスを付けるビューを作成できます。

NoSqlの欠点:

1)最終的に一貫性があり、ACIDプロパティをサポートしないため、大規模なトランザクションアプリケーションには明らかに適していません。

2)また、同時実行制御にMVCC方法論を使用するため、データ(ドキュメント)の複数のスナップショット(リビジョン)を作成します。その結果、スペースが以前よりも速く消費され、圧縮が行われ、インデックスの再作成がより頻繁になり、アプリケーションのデータとトランザクションが増加するにつれて、アプリケーションの応答。これに対抗するには、ノードを水平方向にスケーリングできますが、SQLデータベースと比較してコストが高くなります。

1
Manvendra Jina

mongodb.com から:

NoSQLデータベースは、次の4つの主要な点で古いリレーショナルテクノロジーと異なります。

データモデル:NoSQLデータベースを使用すると、スキーマを定義するリレーショナルデータベースとは異なり、スキーマを最初に定義する必要なくアプリケーションを構築できます。システムへのデータ。事前定義されたスキーマがないため、データや要件の変化に合わせてNoSQLデータベースをはるかに簡単に更新できます。

データ構造:リレーショナルデータベースは、データがかなり構造化され、関係によって明確に定義された時代に構築されました。 NoSQLデータベースは、今日存在するデータの多くを構成する非構造化データ(テキスト、ソーシャルメディアの投稿、ビデオ、電子メールなど)を処理するように設計されています。

スケーリング:安価なコモディティサーバーをスケールアウトすることで容量を追加できるため、NoSQLデータベースのスケールはリレーショナルデータベースよりもはるかに安価です。一方、リレーショナルデータベースでは、データベース全体をホストするために単一のサーバーが必要です。拡張するには、より大きく、より高価なサーバーを購入する必要があります。

開発モデル:NoSQLデータベースはオープンソースですが、リレーショナルデータベースは通常、ソフトウェアの使用にライセンス料が組み込まれたクローズドソースです。 NoSQLを使用すると、ソフトウェア料金に多額の投資をすることなく、プロジェクトを開始できます。

1
deadpool