0

32台のサーバーで実行されている大規模なデータベースアプリケーションを書き直す必要があります。ハードウェアは最新であり、各マシンには2つのクアッドコアXeonと32GバイトのRAMが搭載されています。

データベースはマルチテナントであり、各顧客はそれぞれ約5〜10ギガバイトの独自のファイルを持っています。このハードウェアで約50のデータベースを実行しています。アプリはウェブに公開されているので、負荷を制御することはできません。本当に複雑なクエリはないので、より良い解決策があればSQLは必要ありません。

データベースは、毎日深夜にFTP経由で更新されます。データベースは読み取り専用です。C#は私のお気に入りの言語であり、ASP.NETMVCを使用したいと思います。

私は次のオプションについて考えました:

  • SQL Server 2012を実行している2つの大きなSQLサーバーを使用して、32台のサーバーにデータを提供します。RESTサービスを提供するIISホスティングを実行している32台のサーバー。

  • データベースを非正規化し、各WebサーバーでRedisを使用します。BooksleeveをRedisクライアントとして使用します。

  • SQLServerとRedisを組み合わせて使用​​する

  • SQLServer2012をHadoopと一緒に使用する

  • SQLServerなしでHadoopを使用する

保守性を失うことなく最高のパフォーマンスを得るには、読み取り専用データベースの最良の方法は何ですか?そのようなシナリオでは、Map-Reduceはまったく意味がありますか?

書き直しの理由は、ISAMテクノロジを使用してC ++で記述された古いアプリが遅すぎること、インターフェイスが古風であり、特にajaxを使用している場合にWebサイトから使用するのが適切でないことです。

このアプリは、多くのテーブルを持つリレーショナルデータモデルを使用しますが、すべてのクエリを実行できる1つのアクセラレータテーブルを作成することができ、他のテーブルからの他のすべての情報は、単純なキールックアップによって可能になります。

4

2 に答える 2

1

いくつかの質問。これを書き直していると、どのような問題が発生しましたか?クエリパターンはどのように見えますか?これを書き直す原因となっている問題に対処するには、SQLServer +キャッシング(memcached)を使用するのが最も快適なようです。Redisは優れていますが、db処理クエリを使用したデータ構造機能は必要ありません。また、キャッシュとしてのみ使用されている場合は永続性は必要ありません。問題について詳しく知らなくても、データシャーディング、冗長ストレージ、キャッシングをすべて1つのソリューションで処理するMongoDBを検討したいと思います。このセットアップには特別なマシンはなく、冗長性を構成でき、負荷のバランスが取れている必要があります。

于 2012-06-30T21:13:52.053 に答える
1

この質問はほとんど意見記事です。パフォーマンスが最も重要であり、日中の同時読み取りの量が多い場合は、キャッシュにTimesTenを備えたOracleRACを個人的に使用したいと思います。

ここにホワイトペーパーがあります...

http://www.oracle.com/us/products/middleware/timesten-in-memory-db-504865.pdf

ただし、ディスクサブシステムの仕様と、物理ディスク全体のインデックスとデータファイルの編成がおそらく最も重要な要素です。

于 2012-06-30T23:44:17.927 に答える