最近NoSQLは非常に人気を博しています。
従来のRDBMSに対するNoSQLの利点は何ですか?
最近NoSQLは非常に人気を博しています。
従来のRDBMSに対するNoSQLの利点は何ですか?
回答:
すべてのデータがリレーショナルであるとは限りません。このような状況では、NoSQLが役立ちます。
そうは言っても、NoSQLは「SQLだけではない」の略です。SQLをノックしたり、それに取って代わったりすることは意図されていません。
SQLには、いくつかの非常に大きな利点があります。
それらは去っていません。
これをどちらか一方の議論として考えるのは誤りです。NoSQLは、適切な場合に検討する必要がある代替手段です。それがすべてです。
ドキュメントは、CouchDBなどの非リレーショナルデータベースに保存できます。
SELECT blob FROM images WHERE blob CONTAINS('red car')
。したがって、データベースに生データを保存することはできますが、メタデータを添付せずにデータを検索することはできません。RDBMSシステムの全文検索モジュールは、半構造的なギャップの一部を埋めます。
歴史はこのように見えます:
Googleは、逆検索インデックス用のストレージレイヤーを必要としています。彼らは、従来のRDBMSはそれを削減しないと考えています。そのため、彼らはNoSQLデータストア、BigTableをGFSファイルシステムの上に実装しています。主な部分は、何千もの安価な汎用ハードウェアマシンが速度と冗長性を提供することです。
他の誰もがGoogleが今やったことを理解しています。
Brewers CAPの定理は証明されています。使用するすべてのRDBMSシステムはCAシステムです。人々は同様にCPとAPシステムで遊んでいます。K / Vストアは非常にシンプルなので、調査の主要な手段です。
一般に、サービスとしてのソフトウェアシステムは、SQLのようなストアを提供しません。したがって、人々はNoSQLタイプのストアにもっと興味を持つようになります。
離陸の多くはこの歴史に関係していると思います。Googleのスケーリングでは、Googleでいくつかの新しいアイデアが取り入れられました。これが、現在スケーリングの問題について知っている唯一のソリューションであるため、他の誰もがそれに倣います。したがって、それが特定のサイズを超えてスケーリングする唯一の方法であるため、Googleの分散データベースのアイデアを中心にすべてをやり直すことになります。
C-一貫性
A-可用性
P-パーティションの許容範囲
K / V-キー/値
NoSQLはRDBMSよりも優れています。これは、NoSQLの次の理由/性質のためです。
編集:
「RDBMSがスケーリングできない理由」に答えるには、Stavros Harizopoulos、Daniel J. Abadi、Samuel Madden、Michael Stonebrakerが作成したRDBMSオーバーヘッド pdf をご覧ください。
RDBMSには、テラバイトおよびペタバイトの膨大なデータ量を処理する際に課題があります。独立型/安価なディスクの冗長アレイ(RAID)とデータの細断処理がある場合でも、膨大な量のデータには適切に拡張できません。非常に高価なハードウェアが必要です。
ロギング:ログレコードを収集し、データベース構造のすべての変更を追跡すると、パフォーマンスが低下します。回復可能性が要件ではない場合、または回復可能性が他の手段(ネットワーク上の他のサイトなど)によって提供される場合、ログは必要ない場合があります。
ロック:従来の2フェーズロックでは、データベース構造へのすべてのアクセスが個別のエンティティであるロックマネージャーによって管理されるため、かなりのオーバーヘッドが発生します。
ラッチング:マルチスレッドのデータベースでは、多くのデータ構造は、彼らがアクセスする前にラッチする必要があります。この機能を削除してシングルスレッドアプローチに移行すると、パフォーマンスに大きな影響があります。
バッファ管理:メインメモリデータベースシステムは、バッファプールを介してページにアクセスする必要がないため、すべてのレコードアクセスで間接レベルがなくなります。
これは、SQLではなくNoSQLを使用する必要があるという意味ではありません。
それでも、RDBMSの次の理由/特性により、RDBMSはNoSQLよりも優れています。
ビジネスケースと要件に応じて、RDBMS(SQL)とNoSQL(SQLだけでなく)を使用する必要があります。
NOSQLには、リレーショナルデータベースモデルに勝る特別な利点はありません。NOSQLは現在のSQL DBMSの特定の制限に対処しますが、以前のデータモデルに対する根本的な新機能を意味するものではありません。
NOSQLはSQLだけを意味しない(または「SQLだけではない」)ことを意味しますが、リレーショナルがないことを意味するわけではありません。リレーショナルデータベースは、原則として非常に優れたNOSQLソリューションになります。現在のNOSQL製品のセットでリレーショナルモデルが使用されていないだけです。
上記のすべての情報に追加するだけ
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を使用すると、ソフトウェア料金に多額の投資をせずにプロジェクトを開始できます。