NCache Open Source Nhibernate の XNUMX 番目のレベルのキャッシュとして

NHibernate は、.NET 用の一般的なオブジェクト リレーショナル マッピング (ORM) ソリューションです。また、データベースとデータ ストレージが原因でアプリケーションがパフォーマンスとスケーラビリティのボトルネックに直面する高トランザクション環境でよく使用されます。

これに対処するために、Hibernate は 1 種類のキャッシュ、First Level Cache (2st Level Cache) と Second Level Cache (XNUMXnd Level Cache) を提供します。第 XNUMX レベル キャッシュは組み込みでユーザーの「セッション オブジェクト」に関連付けられていますが、第 XNUMX レベル キャッシュはプラグイン可能なアーキテクチャを提供し、「セッション ファクター」レベル (アプリケーション レベルを意味します) に関連付けられています。これは、キャッシュがユーザー セッションの出入りの影響を受けないことを意味します。サードパーティのキャッシュを Hibernate Second Level Cache としてプラグインできます。

NCache は、.NET アプリケーション用の非常に高速で線形にスケーラブルな分散キャッシュです。 NCache キャッシュ サーバーを追加して、より大きなトランザクション負荷を処理できるようになります。プラグインできます NCache NHibernateの第XNUMXレベルのキャッシュとして。

セットアップ NCache NHibernateの第XNUMXレベルのキャッシュとして

NHibernate Second Level Cache プロバイダー アーキテクチャの一部として、 NCache 実装済み ICacheProvider & ICacheinterfaces。 その結果、設定できるようになります NCache プログラミングを必要とせず、設定ファイルを変更するだけで NHibernate の 2 番目のレベル キャッシュとして使用できます。

単に変更するだけです app.config と指定します NCache 2次キャッシュプロバイダーとして設定し、そのプロパティを追加します。また、app.config で NHibernate の 2 番目のレベルのキャッシュとその他のサブ キャッシュを有効にします。以下にその例を示します app.config 変更点:

<hibernate-configurationxmlns="urn:nhibernate-configuration-2.2">
...
  <session-factory>
  ...
    <property name="cache.provider_class">
      Alachisoft.NCache.Integrations.NHibernate.Cache.NCacheProvider,
      Alachisoft.NCache.Integrations.NHibernate.Cache
    </property>
    <property name="cache.use_second_level_cache">
      true
    </property>
  ...
  </session-factory>
</hibernate-configuration>
  
<appSettings>
  <add key="ncache.application_id" 
       value="myapp" />
</appSettings>

キャッシュ可能な領域の構成

NCache オブジェクトをキャッシュするための独自のプロパティを使用して、各 NHibernate 領域を個別に設定できます。この目的のために NCache という名前の設定ファイルがあります NCacheNHibernate.xml、これには、NHibernate Second Level Cache によって使用されるすべての領域設定が含まれます。以下はその構成ファイルのサンプルです。

<configuration>
  <application-config application-id="myapp"
                      enable-cache-exception="true"
                      default-region-name="default"
                      key-case-sensitivity="false">
    <cache-regions>
      <region name="default"
              cache-name="mycache"
              priority="default"
              expiration-type="none"
              expiration-period="0" />
      <region name="AbsoluteExpirationRegion"
              cache-name="myRegioncache"
              priority="Default"
              expiration-type="sliding"
              expiration-period="180" />
    </cache-regions>
    ...
  </application-config>
</configuration>

データベース同期の構成

NCache は .NET 用の強力な分散キャッシュであり、多くの豊富な機能を提供します。これらの機能の 1 つは、キャッシュがデータベースの変更を追跡し、データベース内の対応するデータが変更された場合にキャッシュされた項目を無効にするか再ロードするデータベース同期です。

NHibernateセカンドレベルキャッシュプロバイダーを設定できます NCache データベース同期を使用します。 変更するだけ NCacheNHibernate.xml 次のような構成ファイル:

<configuration>
  <application-config application-id="myapp" 
                      enable-cache-exception="true" 
                      default-region-name="default"
                      key-case-sensitivity="false">
    ...
    <database-dependencies>
      <dependency entity-name="nhibernator.BLL.Customer" 
                  type="sql" 
                  sql-statement="SELECT ContactName FROM dbo.Customers
                                 WHERE CustomerID =?" 
                  cache-key-format="depdency.customer:[pk]"/>
    </database-dependencies>
  </application-config>
</configuration>

Hibernate クエリ キャッシュの構成

Hibernate は、クエリの結果を 2 番目のレベルのキャッシュにキャッシュするクエリ キャッシュの機能を提供します。 NHibernate Query Cache を有効にできます。 app.config 次のような構成ファイル:

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2">
  ...
  <session-factory>
  ...
    <property name="cache.use_query_cache">
    true
    </property>
    ...
  </session-factory>
</hibernate-configuration>

クエリは、結果セットの主キーとともに、という名前のデフォルトのクエリ領域に保存されます。 NHibernate.Cache.StandardQueryCache。ただし、クエリの結果として取得されたオブジェクトは、それぞれの領域にキャッシュされます。さらに、クエリ キャッシュを有効にしても、デフォルトでは各クエリはキャッシュされません。代わりに、次のようにコード内で各クエリをキャッシュ可能として設定する必要があります。

IQuery qry = session.CreateQuery("from Customer c").SetCacheable(true);

のメリット NCache NHibernateの第XNUMXレベルのキャッシュとして

NHibernate アプリケーションがマルチサーバー環境で実行されている場合は、次のような分散キャッシュが必要です。 NCache 次の理由により、NHibernate の 2 次キャッシュ プロバイダーとして機能します。

  • 線形スケーラビリティ: トランザクション負荷の増加に応じてキャッシュ サーバーを追加することで、アプリケーションを直線的に拡張できます。これにより、トランザクション容量とストレージ容量の両方が増加します。
  • 真に柔軟なキャッシュ: NCache は、ピアツーピア キャッシュ クラスタリング アーキテクチャと、ミラー キャッシュ、レプリケート キャッシュ、パーティション キャッシュ、パーティション レプリカ キャッシュなどの豊富なキャッシュ トポロジ セットを備えた真の弾力性のあるキャッシュです。これにより、100% の稼働時間とデータ損失のないことが保証されます。使用すると、これらすべてが自動的に取得されます NCache NHibernateで。
  • データベースの同期: キャッシュをデータベース (SQL Server、Oracle、および OLEDB) と同期できるため、データベース内のデータが変更された場合、キャッシュは対応するキャッシュされたアイテムを無効にするか再ロードします。これにより、キャッシュが常に最新の状態になります。上に示すように、NHibernate を使用してこの機能を有効にすることができます。
  • 非同期操作: NCache には非同期操作があり、アプリケーションはキャッシュが更新されるまで待つ必要がありません。これは NHibernate で有効にできます。
  • コンパクトなシリアル化: NCache には、通常の .NET シリアル化よりもはるかに高速な独自のシリアル化があります。コードを変更せずにこれを有効にすることができます。 NCache 実際には、初期化時にシリアル化コードを生成し、それをメモリ内でコンパイルし、シリアル化/逆シリアル化操作に使用します。これを通常の .NET シリアル化と組み合わせて使用​​できます。

次はどうする?

お問い合わせ(英語)

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