web-dev-qa-db-ja.com

NoSQL over SQLを使用する理由

可能性のある重複:
誰かが従来のRDMSよりもMongoDB(または類似のもの)を使用するのはいつですか?

SQLとNoSQLがどれだけうまく対戦できるか。 SQLデータベースは、適切に構造化されたデータや、それに関連するグラフらしさを備えたデータには適していないとどこかで読んだことがあります。それは本当ですか?

Facebook、Google、およびその他のWeb上のいくつかの大規模プレーヤーとは別に、小規模プレーヤーや新興企業がこれらのツールをどれだけうまく使用しているかはわかりません。同じ here について別の同様の質問を見つけました。しかし、ここから多くの統計を収集することができませんでした。これらは特定の特定のケースであり、これらのNoSQLデータベースを使用できる一般的なパターン(前述のものなど)はありますか?

関係するデータの量が少し大きく、適切に構成されているが、頻繁なCRUD操作が必要であることを開発者が知っている場合、新興企業がNoSQLデータベースに行くのはどの程度賢明でしょうか。

ここで、stackoverflowで、SQLを使用しない場合に関する質問を見つけることができますが、NoSQLデータベースの使用を避けるべきシナリオはありますか?また、両方を同時に使用して、両方を最大限に活用することはどの程度効果的ですか?

最後の質問ですが、これらの分散NoSQLデータベースは、単一ノードのセットアップで使用しても同等に機能しますか?

14
c0da

以下は、NO/SQLに対するOracle、MS SQL、Sybase、DB/2などの従来のSQLデータベースの長所です。

  • とても成熟した
  • 既存のエコシステム(ドキュメント、ツール、多数のサードパーティベンダー、さまざまなプログラミング言語へのバインディングなど)
  • 広範なセキュリティモデル
  • 非常に強力なクエリ言語を使用した簡単なアドホッククエリ
  • それらのほとんどは、数百のユーザー/接続に対して拡張可能です
  • ビューとストアドプロシージャ
  • 信頼できるトランザクションモデル
  • さまざまなインデックス機能
  • レプリケーションメカニズム、地理データタイプなどのさまざまな利点.

これらの機能は、エンタープライズソフトウェアシステムを開発する場合に非常に役立ちます。エンタープライズソフトウェアシステムでは、数年後にこれらのデータを使用するアプリケーションが正確にわからない場合があります。 「大きな」SQLデータベースとリストされた機能で競合できるNo/SQLデータベースは現在利用できないと思います。

一方、NO/SQLデータベースは、それらの多くを必要としない場合に利点を示します。たとえば、Webアプリケーションのバックエンドデータベースとして、複雑なセキュリティモデルは必要ありません。 1人のユーザー(アプリケーションサーバープロセス)が、運用時にdbに接続しました。もちろん、これらの種類のアプリケーションにはSQLliteのような軽量のSQLデータベースを使用することもできます(多くの人がこれを行います)が、保存するデータの構造を検討する必要もあります。たとえば、ブログシステム、QAフォーラム、コンテンツ管理システム、Wiki:保存するテキストまたはHTMLコードまたはXMLコードが多く、管理データが少ない。それは、NO/SQLがその利点を示すことができるシステムかもしれません。

8
Doc Brown

NoSQLを使用する1つのみシナリオがあります。データベーストラフィックに関して非常に柔軟である必要があるのはそのときです。

つまり、データベース要求が突然、たとえば10または100倍に爆発することを予期する必要があります。このような状況に対応する機能は、弾力性と呼ばれます。

ここでは、クラシックリレーショナルデータベースに問題があります。JOINの最適化に関する専門性のため、リレーショナル整合性を保証しながら、別のサーバーにコピーすることはできません。それでも、これらの巨大なデータベースをコピーするには、かなりの時間がかかります。

そのため、リクエスト状況の爆発的な増加に対処するために、企業はそれに特化したさまざまなデータベースコンセプトを考え出しました。

リクエストロードでこのような極端な変動を期待する必要がない場合は、リレーショナルが適しています。そして、これはおそらく永遠に、多くの人々が理解していないことの原因は、関係性が前世紀の単なる技術的な話題ではないということです。

6
Raffael