最近NoSQLは非常に人気があります。
NoSQLの従来のRDBMS?
すべてのデータがリレーショナルではありません。こうした状況では、NoSQLが役立ちます。
そうは言っても、NoSQLは「SQLだけではない」の略です。 SQLをノックしたり、それに取って代わるものではありません。
SQLには、いくつかの非常に大きな利点があります。
それらは消えていません。
これをどちらかまたは両方の引数と考えるのは間違いです。 NoSQLは、人々が適切なときに考慮する必要がある代替手段であり、それがすべてです。
ドキュメントは、CouchDBなどの非リレーショナルデータベースに保存できます。
多分 this が読めるでしょう。
履歴は次のように見えます。
Googleには、逆引き検索インデックス用のストレージレイヤーが必要です。彼らは、従来のRDBMSはそれを削減しないと考えています。そのため、GFSファイルシステム上にBigTableのNoSQLデータストアを実装しています。主要な部分は、数千の安価な市販のハードウェアマシンが速度と冗長性を提供することです。
他の誰もが、Googleが今やったことを理解しています。
醸造者 CAP定理 が証明されています。使用するすべてのRDBMSシステムはCAシステムです。人々はCPおよびAPシステムでも遊んでいます。 K/Vストア は非常に単純なので、研究の主要な手段です。
一般に、サービスとしてのソフトウェアシステムは、SQLのようなストアを提供しません。したがって、人々はNoSQLタイプのストアにより興味を持ちます。
離陸の多くはこの歴史に関連していると思います。 Googleのスケーリングは、Googleでいくつかの新しいアイデアを取り入れ、他のすべての人がこれに追従しているのは、これが現在スケーリングの問題を知っている唯一のソリューションだからです。したがって、特定のサイズを超えてスケーリングする唯一の方法であるため、Googleの分散データベースアイデアの周りのすべてをやり直します。
C-一貫性
A-可用性
P-パーティション許容値
K/V-キー/値
NoSQLの次の理由/特性により、NoSQLはRDBMSよりも優れています
編集:
「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よりも優れています
ビジネスケースと要件に応じて、RDBMS(SQL)とNoSQL(SQLだけでなく)を使用する必要があります
NOSQLには、リレーショナルデータベースモデルに対する特別な利点はありません。 NOSQLは現在のSQL DBMSの特定の制限に対処しますが、以前のデータモデルを超える根本的に新しい機能を意味するものではありません。
NOSQLはSQL(または「SQLだけではない」)のみを意味しますが、no relationalと同じ意味ではありません。リレーショナルデータベースは、原則として非常に優れたNOSQLソリューションになります。現在のNOSQL製品セットでは、リレーショナルモデルを使用していないだけです。
NoDBのRDBMSに対する最大の利点は、スケーラビリティです。 NoSQLデータベースは多くのノードに簡単にスケールアウトできますが、RDBMSにとっては非常に困難です。スケーラビリティは、より多くのストレージスペースを提供するだけでなく、多くのホストが同時に機能するため、パフォーマンスも大幅に向上します。
大量のデータを高性能で処理する必要がある場合
OR
データモデルが事前に決定されていない場合
それから
NoSQLデータベースの方が適しています。
RDBMS関係を重視し、NoSQLストレージを重視します。
RDBMSがボトルネックに達したときにNoSQLを使用することを検討できます。 NoSQLによりRDBMSがより柔軟になります。
上記のすべての情報に追加するだけです
NoSqlの利点:
1)NoSQLは、スキーマレスでオブジェクト指向のアーキテクチャをサポートしているため、すぐに本番環境に対応したい場合に適しています。
2)NoSql dbは最終的に一貫性があり、これは単純な言語ではRDBMSの場合のようにデータ(ドキュメント)のロックを提供しないことを意味し、データの最新のスナップショットが常に利用できるため、アプリケーションのレイテンシが増加することを意味します。
3)MVCC(マルチビュー同時実行制御)戦略を使用して、データ(ドキュメント)のスナップショットを維持および作成します。
4)データにインデックスを付けたい場合は、指定したビュー定義によってデータに自動的にインデックスを付けるビューを作成できます。
NoSqlの欠点:
1)最終的に一貫性があり、ACIDプロパティをサポートしないため、大規模なトランザクションアプリケーションには明らかに適していません。
2)また、同時実行制御にMVCC方法論を使用するため、データ(ドキュメント)の複数のスナップショット(リビジョン)を作成します。その結果、スペースが以前よりも速く消費され、圧縮が行われ、インデックスの再作成がより頻繁になり、アプリケーションのデータとトランザクションが増加するにつれて、アプリケーションの応答。これに対抗するには、ノードを水平方向にスケーリングできますが、SQLデータベースと比較してコストが高くなります。
mongodb.com から:
NoSQLデータベースは、次の4つの主要な点で古いリレーショナルテクノロジーと異なります。
データモデル:NoSQLデータベースを使用すると、スキーマを定義するリレーショナルデータベースとは異なり、スキーマを最初に定義する必要なくアプリケーションを構築できます。システムへのデータ。事前定義されたスキーマがないため、データや要件の変化に合わせてNoSQLデータベースをはるかに簡単に更新できます。
データ構造:リレーショナルデータベースは、データがかなり構造化され、関係によって明確に定義された時代に構築されました。 NoSQLデータベースは、今日存在するデータの多くを構成する非構造化データ(テキスト、ソーシャルメディアの投稿、ビデオ、電子メールなど)を処理するように設計されています。
スケーリング:安価なコモディティサーバーをスケールアウトすることで容量を追加できるため、NoSQLデータベースのスケールはリレーショナルデータベースよりもはるかに安価です。一方、リレーショナルデータベースでは、データベース全体をホストするために単一のサーバーが必要です。拡張するには、より大きく、より高価なサーバーを購入する必要があります。
開発モデル:NoSQLデータベースはオープンソースですが、リレーショナルデータベースは通常、ソフトウェアの使用にライセンス料が組み込まれたクローズドソースです。 NoSQLを使用すると、ソフトウェア料金に多額の投資をすることなく、プロジェクトを開始できます。