1

この質問を投稿するのにこれが正しい StackExchange ボードかどうかはわかりませんが、試してみます。

ASP.NET アプリケーションには、かなり大規模な SQL Server バックエンドがあります。これには、複雑なテーブル構造、複数のビュー、ストア プロシージャ、および関数が含まれます。現在、社内の SQL Server 2005/2008 ボックスで実行しています。数年前から生産されており、かなり良好に動作します。

しかし最近、システムに追加されるデータが大幅に増加し、大量のデータがシステムの速度を低下させ始めました。ストアド プロシージャはデータの処理にかなりの時間を要します (できる限り最適化し、必要なすべてのインデックスをテーブルに追加するなど)。

1 つの提案は、プロジェクトを「ビッグ データ」サービスに移行することでした。それは実現可能ですか?これは既存の SQL Server プロジェクトで実行できますか? 何が関係していますか?既存のコード/構造は機能しますか、それとも大幅な再設計が必要ですか? Google、Microsoft、Amazon のうち、このような動きに最適なプロバイダーはどこでしょうか?

ありがとう!

4

1 に答える 1

4

SQL Server からビッグ データ サービスに移行する際に直面するであろう最大の違いは、データの構造です。

グラフ データベース (Neo4j)、バッチ処理 (Hadoop)、ドキュメント データベース (Mongo) などはすべて、非常に異なるデータ モデルを持っています。

通常、大きな動きは、正規化されたデータから非正規化されたデータに移行することです。これはかなり苦痛で、大変な作業になる可能性があります。たとえば、4 ~ 5 個の表を 1 つのドキュメントに統合する方法を見つける必要があります。

データベース全体の移行を本当に進めたい場合は、次のようにします。

  1. 移動先のデータ モデルを調べます。MySQL のようなものは、SQL Server よりも安価な方法で水平方向にスケーリングするのでしょうか? 文書データベースは開発を容易にするのでしょうか?

  2. 新しいモデルを理解したら、その分野でさまざまなテクノロジーを試してください。非常に多くのビッグデータ データベースは非常に新しいため、(Mongo のような) 優れたコミュニティを持つデータベースを見つけることをお勧めします。

  3. テーブルごとに移動し、新しいシステム/データベースでモデル化する方法を決定します。

  4. 新しいデータベースで、sproc、ビュー、関数を同等のアイデアに置き換える方法を見つけてください。これらは多くのビッグデータ データベースには存在しないため、これは非常に困難な場合があります。その機能の多くをアプリケーション層にプッシュすることになります。(MySQLを使用しない限り)。

代わりに、SQL Server を使い続けることをお勧めします。SQL Server の負担を軽減するための考慮事項:

  1. 最も苦痛を引き起こしているデータのサブセットを見つけます。それをビッグデータシステムに移します。

  2. アプリケーション層でキャッシュを導入します (まだ持っていない場合)。読むプレッシャーを和らげるのに役立ちます。

  3. 破片。読み取りの問題/パフォーマンスを軽減するのに役立つ SQL Server をいつでもシャードできます。

  4. 使用されていない古いデータをアーカイブするジョブを書き込みます。そのデータを「オフライン」の別の SQL Server インスタンスに移動します。

于 2013-06-28T18:09:18.270 に答える