2012-03-21 18 views
0

私はAzureに移行しているASP.netアプリケーションを持っています。このアプリケーションでは、9つのテーブルを結合してユーザーレコードを生成するクエリがあります。各レコードはjsonで直列化され、クライアントとの間でやりとりされます。クエリのパフォーマンスを向上させるために、9つのクエリが初めて実行され、レコードがjsonでシリアル化されると、結果の文字列はJsonUserCacheという名前のテーブルに保存されます。テーブルには2つの列しかありません:JsonUserRecordID(これはユニークです)とJsonRecordです。ユーザーレコードがクライアントから要求されるたびに、JsonUserCacheテーブルが最初に照会され、9つの結合でクエリを実行する必要がなくなります。ユーザーがログオフすると、JsonUserCacheで作成したレコードが削除されます。NoSQLとAppFabric with Azure

テーブルJsonUserCacheはSQL Serverです。私は単にすべてをそのまま残すことができましたが、よりよい方法があるかどうか疑問に思っています。私はキー/値を格納し、その辞書をAppFabricに置く簡単な辞書を作成することを考えています。また、NoSQLプロバイダの使用や、Azureのオプションがある場合、またはAppFabricの辞書に固執する必要があるかどうかを検討しています。あるいは、別の選択肢がありますか?

ご意見ありがとうございます。

+0

AppFabricという用語を使用していることを明確にすることはできますか?あなたはキャッシングサービスを意味しますか?または、他の何か? –

+0

辞書をAppFabricに格納することを意味します。私はAppFabricがRAMストレージだと読んでいるので、これらの2つはハードドライブIOに依存しているので、SQL Azureまたはテーブルストレージより高速かもしれないと思った。 – frenchie

答えて

1

"コンピュータサイエンスには2つの困難な問題があります:キャッシュの無効化と名前の付け方です。"

フィルKarlton

あなたは明らかにキャッシュについて話しているとあなたがキャッシュの期限切れの問題を抱えているような一般的原則として、あなたは(SQLまたはどこか他の)任意のキャッシュされたデータを永続化するべきではありません(現在のように)削除を実行する必要があります。結果をどこかに保存して後で消去しても構いませんが、それをAzureのBLOBに入れて見てください。これはブラウザから簡単にアクセスでき、独自のアプリケーションでリクエストを処理する必要はありません。

これを従来のキャッシュとして実装するには、これらのオプションを見てください。

  1. すぐに使用できるASP.NETキャッシュを使用して、Webロールのメモリにキャッシュします。これは、ユーザーが行くすべてのインスタンスで結合が再実行されることを意味しますが、インスタンスの数と平均セッションの期間によって実装が最も簡単になる場合があります。
  2. AppFabricキャッシュを使用します。これは学習する余分なAPIであり、ユニークな訪問者がたくさんいる場合はかなりの費用がかかる可能性があります。
  3. Memcachedなどの特殊な分散キャッシュを使用します。これはあなた自身ですべてを実行しなければならないという追加のコスト/手間がありますが、長期的には柔軟性があります。

編集:すべてがRAMベースです。 ASP.NETキャッシュの使用は実装が簡単で、同じマシン上にあるためキャッシュからデータを取得する方が高速ですが、Webロールの各インスタンス(つまり分散されていない)ごとにキャッシュを作成する必要があります。 AppFabricのキャッシングは分散されていますが、ネットワークのレイテンシが少し遅くなりますが、スケーラブルなAppFabricキャッシングが意味することに応じて、現在不規則に動作しています。スケーラブルで機能豊富な分散キャッシングが必要な場合は、アプリケーションの大きな部分を占め、Memcachedに入ります。

+0

これらのオプションのどれがRAMから機能するだろうか?私はAppFabricがこれを行うと思います。 ASP.netキャッシュも?私は、wcfサービスに沿って実行されているasp.netエンジンを使用して、複数のインスタンスでアプリケーションを実行する予定であることを述べておく必要があります。あまりにも遅れて従業員の役割が発生します。 ASP.netキャッシュとAppFabricの違いは何ですか?私はコスト、スケーラビリティ、パフォーマンスには関心がありません。ブロブが機能しないように見えます.json文字列は、HTTPS経由で転送されるユーザーに敏感なデータです。 – frenchie

関連する問題