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


回答:


123

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

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

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

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

それらは去っていません。

これをどちらか一方の議論として考えるのは誤りです。NoSQLは、適切な場合に検討する必要がある代替手段です。それがすべてです。

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

多分これを読むことは役立つでしょう。


10
非リレーショナルデータの例をいくつか挙げていただけますか?
user496949 2010年

7
ドキュメントと画像は、SQL ServerやOracleのようにRDBMS内に格納することもできますか?では、なぜNoSQLなのでしょうか。
user496949

2
半構造化データはそのようなクラスの1つです。XML、メール、JSONなどが含まれています。ウィキペディアのページを参照してください。一般的な規則は、構造は存在するが、大まかに定義され、動的に拡張可能であることです(後者は、リレーショナルモデルでクラス化される傾向があり、モデル化することは不可能ではありませんが、明らかに面倒です)。もう1つのクラスは「自然データ」です。メタデータが添付されていない、小説、画像です。
私は、

2
さて、できませんSELECT blob FROM images WHERE blob CONTAINS('red car')。したがって、データベースに生データを保存することはできますが、メタデータを添付せずにデータを検索することはできません。RDBMSシステムの全文検索モジュールは、半構造的なギャップの一部を埋めます。
解答を

1
@duffymo:ドキュメントは「非リレーショナル」ではありません。ドキュメントはSQL DBMSに保存されることが多く、そのためにNOSQL DBMSは必要ありません。実際にはNOSQLデータベースは、多くの場合、あるデータモデルを使用以下の一般的な、よりリレーショナルモデルより適用に限定します。たとえば、グラフデータベース。保存されるデータのタイプは、NOSQLの利点を説明していません。
nvogel

98

歴史はこのように見えます:

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

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

  3. Brewers CAPの定理は証明されています。使用するすべてのRDBMSシステムはCAシステムです。人々は同様にCPとAPシステムで遊んでいます。K / Vストアは非常にシンプルなので、調査の主要な手段です。

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

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

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


10
CAP、CP、AP、K / Vとは何ですか?
既知の

3
ウィキペディアでCAP定理を調べてください。CAとCPはそこから派生しています。K / Vは、キーから値への(分散)有限マッピングであるキー/値の略です。
2012

他の誰もがグーグルがやったことを理解している」笑 私へのスコットランドの答えのようです(別名CRAPではありません)。
ルフィン、

38

NoSQLはRDBMSよりも優れています。これは、NoSQLの次の理由/性質のためです。

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

編集:

「RDBMSがスケーリングできない理由」に答えるには、Stavros Harizopoulos、Daniel J. Abadi、Samuel Madden、Michael Stonebrakerが作成したRDBMSオーバーヘッド pdf をご覧ください。

RDBMSには、テラバイトおよびペタバイトの膨大なデータ量を処理する際に課題があります。独立型/安価なディスクの冗長アレイ(RAID)とデータの細断処理がある場合でも、膨大な量のデータには適切に拡張できません。非常に高価なハードウェアが必要です。

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

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

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

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

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

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

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

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


2
一部のNoSQLデータベースはACIDトランザクションをサポートしていることに注意してください。
デイブカッセル

15

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

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


4
最近のO'Reilly Strata Conferenceで、Mark Madsenが彼のデータベースの歴史の中で「NoSQL」の新しい解釈を作成して、「Not Only SQL」に取って代わったようです。現在は「いいえ、SQL」です;-)
Lukas Eder

4

RDBMSは関係に重点を置き、NoSQLはストレージに重点を置いています。

RDBMSがボトルネックに達した場合は、NoSQLの使用を検討できます。NoSQLRDBMSをより柔軟にします。


4

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


3

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

または

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

その後

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


2

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

NoSqlの利点:

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

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

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

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

NoSqlの欠点:

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

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


1

mongodb.comから:

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

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

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

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

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

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