NCache Open Source Nhibernate 두 번째 수준 캐시로

NHibernate는 .NET용으로 널리 사용되는 ORM(객체 관계형 매핑) 솔루션입니다. 또한 데이터베이스 및 데이터 스토리지로 인해 애플리케이션이 성능 및 확장성 병목 현상에 직면하는 트랜잭션이 많은 환경에서 자주 사용됩니다.

이를 처리하기 위해 NHibernate는 First Level Cache(1st Level Cache)와 Second Level Cache(2nd Level Cache)의 두 가지 유형의 캐싱을 제공합니다. 첫 번째 수준 캐시는 내장되어 사용자의 "세션 개체"에 연결되어 있는 반면, 두 번째 수준 캐시는 플러그형 아키텍처를 제공하고 "세션 요소" 수준(애플리케이션 수준을 의미)에 연결되어 있습니다. 이는 캐시가 들어오고 나가는 사용자 세션의 영향을 받지 않는다는 것을 의미합니다. NHibernate Second Level Cache로 타사 캐시를 플러그인할 수 있습니다.

NCache .NET 애플리케이션을 위한 매우 빠르고 선형적으로 확장 가능한 분산 캐시입니다. NCache 더 많은 캐시 서버를 추가하여 더 많은 트랜잭션 로드를 처리할 수 있습니다. 꽂을 수 있어요 NCache Hibernate 두 번째 레벨 캐시로.

설정 NCache Hibernate 두 번째 레벨 캐시로

NHibernate Second Level Cache 제공자 아키텍처의 일부로서, NCache 구현했다 ICacheProviderICacheinterfaces. 결과적으로 다음을 구성할 수 있습니다. NCache 프로그래밍 없이 간단히 구성 파일 변경을 통해 NHibernate 두 번째 수준 캐시로 사용됩니다.

당신은 단순히 app.config 지정 NCache 두 번째 수준 캐시 공급자로 지정하고 이에 대한 속성을 추가합니다. 또한 app.config에서 NHibernate의 두 번째 수준 캐싱 및 기타 하위 캐시를 활성화합니다. 다음은 예입니다. 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 두 번째 수준 캐시에서 사용되는 모든 지역 구성이 포함되어 있습니다. 다음은 해당 구성 파일의 샘플입니다.

<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을 위한 강력한 분산 캐시이며 다양한 풍부한 기능을 제공합니다. 이러한 기능 중 하나는 캐시가 데이터베이스 변경 사항을 추적하고 데이터베이스에서 해당 데이터가 변경되면 캐시된 항목을 무효화하거나 다시 로드하는 데이터베이스 동기화입니다.

다음을 위해 NHibernate Second Level Cache 제공자를 구성할 수 있습니다. 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 쿼리 캐시 구성

NHibernate는 쿼리 결과를 두 번째 수준 캐시에 캐시하는 쿼리 캐싱 기능을 제공합니다. NHibernate 쿼리 캐시를 활성화할 수 있습니다. 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);

Benefits of NCache Hibernate 두 번째 레벨 캐시로

NHibernate 애플리케이션이 다중 서버 환경에서 실행되고 있다면 다음과 같은 분산 캐시가 필요합니다. NCache 다음과 같은 이유로 Hibernate 두 번째 수준 캐시 공급자로 사용됩니다.

  • 선형 확장성: 트랜잭션 로드가 증가함에 따라 더 많은 캐시 서버를 추가하여 애플리케이션을 선형적으로 확장할 수 있습니다. 이렇게 하면 거래 용량과 저장 용량이 모두 늘어납니다.
  • 진정한 탄력적 캐시: NCache P100P 캐시 클러스터링 아키텍처와 미러링, 복제, 분할 및 분할-복제 캐시와 같은 풍부한 캐싱 토폴로지를 갖춘 정말 탄력적인 캐시입니다. 이를 통해 XNUMX% 가동 시간을 보장하고 데이터 손실이 없습니다. 사용할 때 이 모든 것이 자동으로 제공됩니다. NCache NHibernate로.
  • 데이터베이스 동기화: 캐시를 데이터베이스(SQL Server, Oracle 및 OLEDB)와 동기화할 수 있으므로 데이터베이스의 데이터가 변경되면 캐시는 해당 캐시 항목을 무효화하거나 다시 로드합니다. 이렇게 하면 캐시가 항상 최신 상태로 유지됩니다. 위에 표시된 대로 NHibernate를 사용하여 이 기능을 활성화할 수 있습니다.
  • 비동기 작업: NCache 캐시가 업데이트될 때까지 애플리케이션이 기다릴 필요가 없는 비동기 작업이 있습니다. NHibernate를 사용하여 이를 활성화할 수 있습니다.
  • 컴팩트 직렬화: NCache 일반 .NET 직렬화보다 훨씬 빠른 자체 직렬화가 있습니다. 코드 변경 없이 이를 활성화할 수 있습니다. NCache 실제로 초기화 시 직렬화 코드를 생성하고 이를 메모리에서 컴파일한 후 직렬화/역직렬화 작업에 사용합니다. 이를 일반 .NET 직렬화와 혼합하여 일치시킬 수 있습니다.

다음에 무엇을할지?

© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.