EntityFrameworkの第XNUMXレベルのキャッシュと NCache

Entity Framework は、Microsoft による .NET 用の人気のあるオブジェクト リレーショナル マッピング フレームワークです。これにより、ドメイン オブジェクトを通じてリレーショナル データを操作できるようになります。また、これにより、作成する必要があるデータベース永続化コードのほとんどが不要になります。

Entity Framework は人気があるため、パフォーマンスとスケーラビリティが重要な高トランザクション アプリケーションで頻繁に使用されるようになりました。ただし、トランザクション量が多いケースのほとんどでは、データベースがすぐにボトルネックになります。これは、拡張の必要に応じてアプリケーション サーバーを追加できるアプリケーション層とは異なり、データベース層では同じことができないためです。

このスケーラビリティを実現する唯一の方法は、次のような分散キャッシュを使用することです。 NCache. NCache は、.NET アプリケーション用の非常に高速でスケーラブルな分散キャッシュです。これにより、アプリケーション データをキャッシュし、高価なデータベース トリップを削減し、アプリケーションのパフォーマンスとスケーラビリティを向上させることができます。

Entity Framework はセカンド レベル (2nd Level) キャッシュ プロバイダー モデルを提供しませんが、 NCache Entity Framework 用のカスタム ADO.NET プロバイダーを実装しました。 NCache Entity Framework クエリの結果をプラグインしてキャッシュできます。これにより、コードを変更せずに Entity Framework アプリケーションで分散キャッシュの使用を開始できるようになります。

ドキュメントを見る

なぜ使うの? NCache Entity Frameworkの第XNUMXレベルのキャッシュとして?

Entity Frameworkアプリケーションがマルチサーバー環境で実行されている場合は、EntityFrameworkの第XNUMXレベルのキャッシュとして分散キャッシュが必要です。 と、 NCache はマルチサーバー構成に理想的なEntityFrameworkの第XNUMXレベルのキャッシュであり、次の理由で使用する必要があります。

  1. NCache 非常に高速です: NCache は非常に高速な分散キャッシュであり、ミリ秒未満の応答時間を実現します。
  2. NCache 線形スケーラビリティを提供します。 NCache スケーラビリティのボトルネックになることはありません。 これにより、サーバーをキャッシュクラスターに追加して、線形スケーラビリティを実現し、極端なトランザクション負荷を処理できます。
  3. キャッシュサイズは無限に大きくなる可能性があります。 NCache キャッシュのパーティショニングを提供し、そのためにすべてのキャッシュ サーバーのメモリをまとめてプールします。したがって、キャッシュ クラスターにサーバーを追加するだけで、キャッシュ ストレージを拡張できます。
  4. NCache データをインテリジェントに複製します。 NCache パフォーマンスを損なうことなく、キャッシュをインテリジェントに複製できます。そのため、キャッシュサーバーがダウンしてもキャッシュデータが失われることはありません。
  5. NCache 100%の稼働時間を提供します: NCache 単一障害点のない自己修復動的キャッシュ クラスターを備えています。結果として、 NCache を使用すると、アプリケーションやキャッシュを停止することなく、実行時にキャッシュ サーバーを追加または削除できます。

  NCache プログラミングなしのEntityFramework第XNUMXレベルキャッシュとして

使用についての最もよい事 NCache Entity Frameworkの場合、プログラミングは必要ありません。 アプリケーションの構成ファイルを変更して、 NCache 第XNUMXレベルのキャッシュプロバイダーとして。 app.configの変更の例を次に示します。

<interceptors>
	<interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, 
	                   Alachisoft.Integrations.EntityFramework.CachingProvider" />
</interceptors>

分析モードとキャッシングモードを使用する

Since NCache Entity Frameworkの第XNUMXレベルのキャッシュプロバイダーは、カスタムADO.NETプロバイダーとしてプラグインされ、アプリケーションがEntityFrameworkに発行しているさまざまなクエリをすべてログに記録する分析モードで実行できます。 これらのクエリは、この分析モード中にこのクエリが呼び出された回数とともにファイルに記録されます。 以下に例を示します。

<analysis-report>
<!--Call-count = 21-->
 <query query-text="" ["SELECT FROM Products"] | 
        [stored-procedure-name = ""] 
        caching = "true"
        expiration-type="absolute" | 
        sliding = "" 
        expiration-time="180"
        dbsyncdependency = "true"/>
</analysis-report>

これにより、キャッシュするクエリとその期間を決定できます。 一部またはすべてのクエリに対してデータベース同期を指定することもできます。

NCache EntityFrameworkの第XNUMXレベルキャッシュの機能

プラグを差し込むことによって NCache app.configの変更を通じてEntityFrameworkの第XNUMXレベルのキャッシュプロバイダーを使用すると、アプリケーションのエンタープライズレベルの分散キャッシュを取得できます。 ここにいくつかの機能があります NCache EntityFrameworkアプリを提供します。

  1. キャッシュをデータベースと同期します。 キャッシュ内の一部のデータは、アプリケーションの知識や関与なしにデータベース内で変更される可能性があります。また、このデータに対して、データベース同期機能に対応するクラスを指定できます。 NCache。 これにより、 NCache 次に、データベースに接続し、データの変更を監視し、キャッシュを自動的に更新して、キャッシュ内のデータが常にデータベースと同期していることを確認します。 NCache SQL ServerにはSqlDependency、OracleにはOracleDependency、OLEDB準拠のデータベースにはDbDependencyを提供します。
  2. 絶対有効期限: の絶対有効期限 NCache キャッシュされた項目ごとに個別に指定され、日時値です。 NCache アイテムは自動的に期限切れになります。エンティティフレームワークの場合、 NCache 「間隔」値を指定するように求められ、「Now() + 間隔」公式を使用して絶対有効期限の日時値を計算します。
  3. スライドの有効期限: スライディング有効期限 NCache は、キャッシュされた項目ごとに個別に指定され、間隔値です。 NCache この間隔でキャッシュされたアイテムが取得または更新されなかった場合、そのアイテムは期限切れになります。この間隔は次のように指定できます。 NCache EntityFrameworkの第XNUMXレベルのキャッシュプロバイダー構成ファイル。
  4. コンパクトなシリアル化: .NET オブジェクトをアウトプロセス キャッシュまたは分散キャッシュにキャッシュする場合は、必ず最初にシリアル化する必要があります。また、通常の .NET シリアル化は実行時に .NET Reflection を使用するため遅くなります。 NCache クラスを登録する方法を提供します NCache & NCache アプリケーションがキャッシュに接続するときにシリアル化コードを生成します。 NCache 次に、このコードをメモリ内でコンパイルし、シリアル化に使用します。これは、通常の .NET シリアル化よりもほぼ 10 倍高速です。また、この機能は Entity Framework で使用できます。 Entity Framework のエンティティ クラスを次のように登録するだけです。 NCache コンパクト連載用。

使い方 NCache EntityFrameworkアプリケーションから直接

ただし、 NCache Entity Framework の第 2 レベル キャッシュは非常に迅速かつ簡単であるため、限られたセットのみを提供します。 NCache 特徴。その理由は、 NCache カスタム ADO.NET プロバイダーとしてプラグインされており、SQL クエリ レベルで処理する必要があるという事実に拘束されます。たくさんあります NCache 使用することにした場合に使用できない機能 NCache Entity Framework の第 2 レベルのキャッシュ プロバイダーとして。

あなたのための代替手段は使用することです NCache Entity Framework アプリケーション内から直接作成することで、 NCache 他のすべての非 Entity Framework .NET アプリケーションと同様の API 呼び出し。この方法を採用するには多少のプログラミング作業が必要になりますが、追加のプログラミング作業を上回る利点があると判断する場合もあります。

NCache EntityFrameworkの第XNUMXレベルのキャッシュにない機能

以下は、Entity Frameworkの第XNUMXレベルのキャッシュとして使用した場合と、使用した場合に見落とす可能性のある機能のリストです。 NCache アプリケーションから直接。

  1. 一括操作
  2. キャッシュの依存関係
    • キーベース
    • ファイルベース
    • カスタム
  3. グループとサブグループ
  4. タグ
  5. 名前付きタグ
  6. オブジェクト クエリ言語 (OQL) および LINQ ベースの検索
  7. キャッシュされたアイテムのロックとロック解除
  8. キャッシュアイテムのバージョン管理
  9. ストリーミング API
  10. リードスルー、ライトスルー、ライトビハインド
  11. イベント通知
    • アイテムベース(更新および削除)
    • 汎用(追加、更新、削除)
    • カスタム
  12. 連続クエリ
  13. ランタイムデータ共有
  14. キャッシュローダー

次はどうする?

お問い合わせ(英語)

電話
©著作権 Alachisoft 2002 - . All rights reserved. NCache はダイヤテック株式会社の登録商標です。