カスケードの更新/削除(ユーザー、ユーザーの役割、ユーザーと役割の権限)をサポートする関連エンティティがあります。
アプリケーションサーバーは頻繁にそれを使用し、私はそれに高速アクセスを実装する必要があります。その目的のために、私はそれをアプリケーションキャッシュに入れます。
質問は、そのデータを介してカスケード操作を実行すると、DBとキャッシュの間の同期化を提供する方法ですか?たとえば、私はいくつかの役割を落とす場合、私はまた、すべての役割の権限を削除する必要がありますか私はすべての役割とその権限を削除する必要がありますユーザーをドロップします。
キャッシュ内の実際のデータをサポートするにはいくつかの方法がありますが、いくつかの欠点もあります。何が最善の解決策であるか教えてください。キャッシング関連のデータ
- すべてのカスケード操作は、トリガーを使用してデータベースで行われます。アプリケーションは、
SqlCacheDependency
メカニズムを介して通知を受け取ります。問題:Whnサーバーの負荷が大きいのはどうですか?通知が遅れ、DB /アプリケーションサーバーが "select SomeField from DataTable where id = @x
"のような多くの正確な依存関係に対応するにはコストがかかりますか? - すべてのカスケード操作は、アプリケーションのビジネスレイヤーで行われます。すべてのDB更新/削除操作の後にキャッシュ無効化操作が続きます。問題:論理が2倍になり、ネットワークトラフィックが多い(代わりに多くの更新)
- DBでのカスケード操作、キャッシュでのカスケード無効化は
CacheDependency
を使用します。問題:ロジックが2倍になりました。
良い解決策はありますか? ありがとうございました!
2)すべてのカスケード操作はアプリケーションのビジネスレイヤーで行われます。>>私はデータアクセスレイヤーを意味します – Jim
Entity Frameworkは自動的にカスケード変更を行うようにそのような機能を提供しますか? – sll