web-dev-qa-db-ja.com

SQLServerとNoSQL

だから私は最終的にかなり高いトラフィックを得ることができるウェブサイトを持っています。私のDB実装は、現在SQL Server2008にあります。私は実際には2つのテーブルといくつかのストアドプロシージャしか持っていません。ほとんどのDBは、参加しなくても機能するように再設計できます(ただし、SQL Server内で簡単に参加できる場合は意味がありません)。

DiggやFacebookのようなサイトは、基本的なデータアクセスの多くにNoSQLデータベースを使用していると聞きました。これは調べる価値のあるものですか、それともSQL Serverは私をそれほど遅くしませんか?

私は自分のサイトでページングを使用しています(これは将来変更される可能性があります)。また、ほとんどの「ライブ」データにAJAXのデータアクセスを使用しているため、現時点ではパフォーマンスの妨げにはならないようです。しかし、データが指数関数的に拡大し始めるのではないかと思います。

NoSQLに移行することで、多くのパフォーマンスが得られますか?正直なところ、今のところ私はNoSQLを完全には理解していません。そのため、howに関するヒントは、改善に役立ちます。

みんなありがとう。

25
slandau

実際、Facebookはそのコアでリレーショナルデータベースを使用しています。 SOCC基調講演:Facebookの構築:大規模なパフォーマンス を参照してください。また、他の多くのWebスケールサイトも同様です。 QuoraがCassandra、MongoDB、CouchDBなどのNoSQLの代わりにMySQLをデータストアとして使用するのはなぜですか? を参照してください。 SQL ServerをWebスケールサイズにスケーリングする方法についての説明もあります。 大規模なサイトとアプリケーションをSQLベースのままにする方法は? これはMySpaceのアーキテクチャに基づいています(詳細は- ReliableMessagingを使用してSQLServerをスケールアウトします )。 NoSQLにユースケースがないと言っているのではなく、白と黒の間に多くのグレーの色合いがあることを指摘したいと思います。

現在のソリューションが拡張できないのではないかと心配している場合は、現在のソリューションのスケーラビリティを妨げる要因を確認する必要があります。テストデータは安価に作成でき、「指数関数的に増加した」データ量をロードしてテストハーネスを実行し、どこでクラックが発生するかを確認します。 NoSQLソリューションはどれも、既成のスケーラビリティをもたらすものではありません。それらはすべて、それらを効果的に使用して正しく展開する方法を理解する必要があります。また、大規模な成功を保証したい場合は、大量のテストを行う必要があります。従来のリレーショナルソリューションについても同じです。

43
Remus Rusanu

SQLServerはかなりうまく拡張できます。たとえば、StackOverflowはこのページを提供するためにそれを使用しました。 FacebookとGoogleはnosqlの形式を使用するかもしれませんが、それを本当に大きくしても、そのレベルに上がる可能性は低いです。

8
Joel Coehoorn

シンプルなテーブル構造と1つのサーバーに収まるデータにより、使用するプラットフォームはそれほど重要ではありません。 NoSQLに移行する必要がある理由はいくつか考えられます。

  • データのスケーリング-SQLは、すべてのデータが1つのサーバー(最大数TB)に収まる場合に最適に機能します。多くのNoSQLストアに結合がない理由は、すべてのオブジェクトが1つのサーバー上にある必要がないように設計されているためです。

  • パフォーマンスのスケーリング-NoSQLストアは、高トラフィックの処理が高速になる傾向がありますが、必ずしも問題になるほどで​​はありません。データサイズの問題が発生しない限り、レプリケーションとキャッシュを使用してSQLのパフォーマンスを大幅に向上させることができます。通常、書き込みは1つのサーバーで実行する必要がありますが、ほとんどの場合、書き込みパフォーマンスが問題になるずっと前に、読み取りパフォーマンスを改善する必要があります。

  • 複雑なデータアクセス-一部のタイプのクエリは、単にリレーショナルモデルにうまく適合しません。グラフストアとセットストアは、リレーショナルデータベースとはまったく異なる動作をするため、一部のアプリケーションに適しています。

  • 開発の容易化-SQLデータベースとそれをサポートするすべてのコードがまだない場合は、スキーマレスデータストアを使用すると、開発時間を大幅に節約できます。

7
Tom Clarkson

何千ものTBデータを提供するまで、データベースをSQLからNoSQLに移動する必要はないと思います。テーブルを適切に正規化してデータを提供し、さらに動作する適切なアーカイブメカニズムを設定します。

それでも何をどのように選択するかについて疑問がある場合は、 これを確認してください 。マーケットプレーヤーがたくさんいるよりも、NoSQLデータベースに移行することにしたとしましょう。 list を見てください。これも、必要性とデータの種類によって異なります。

1

NoSQLに移行することで、多くのパフォーマンスが得られますか?

場合によります。

チェックアウト NoSQLを使用したくない7つの理由からこの記事 。何も当てはまらない場合は、さらに読んでください。

従来のエンタープライズニーズに対する ドキュメントベースのNoSQL の主な利点は、CPU使用率が低いため、大規模なホスティングが安価であるということです。非正規化されたデータのクエリ(最も頻繁に要求)。キーポイント:

  • CPUはJOINsとGROUP BYsは、非正規化されたデータ構造がJOINsを含まない、または少なくすることを意味する場合、CPUへのストレスが少なくなります。
  • CPUはクラウドで最も高価なリソースであり、ストレージが最も安価です。また、非正規化されたデータは、より高いストレージをより低いCPUと交換します。

そこに着く方法?

  1. [〜#〜] ddd [〜#〜] (ドメイン駆動設計)をマスターします。
  2. [〜#〜] cqrs [〜#〜] (コマンドクエリ責任分離)および 結果整合性 について十分に理解してください。
  3. ドメインとビジネスプロセスを理解します。
  4. アクセスパターンに合わせて調整された設計モデル。
  5. レビュー。
  6. 手順3〜5を繰り返します。
0
Alex Klaus