Entity Framework 두 번째 수준 캐시 NCache

Entity Framework는 .NET용으로 검증된 Microsoft 객체-관계 매핑 프레임워크입니다. 도메인 객체를 통해 관계형 데이터를 다룰 수 있도록 지원합니다. 또한, 기존에 작성해야 했던 대부분의 데이터베이스 지속성 코드가 필요 없습니다.

Entity Framework는 성능과 확장성이 중요한 고트랜잭션 애플리케이션에 사용됩니다. 하지만 이러한 애플리케이션의 대부분에서 데이터베이스는 빠르게 병목 현상을 일으킵니다. 확장을 위해 필요에 따라 애플리케이션 서버를 추가할 수 있는 애플리케이션 계층과 달리, 데이터베이스 계층에서는 동일한 방식으로 확장할 수 없습니다.

이러한 확장성을 달성하는 유일한 방법은 분산 캐시와 같은 것입니다. NCache.NET 애플리케이션을 위한 매우 빠르고 확장 가능한 분산 캐시입니다. 애플리케이션 데이터를 캐시하고, 값비싼 데이터베이스 트립을 줄이며, 애플리케이션 성능과 확장성을 향상시킵니다.

Entity Framework 2차 캐시(L2 캐시)는 서로 다른 데이터베이스 컨텍스트와 사용자 세션 간에 데이터를 보존하는 캐싱 패턴입니다. Entity Framework 6.x(Classic)에서는 이 기능을 기본적으로 제공하지 않지만, NCache 이 플러그인은 사용자 지정 ADO.NET 공급자로 작동합니다. 이를 통해 쿼리를 분산 클러스터로 오프로드하여 코드 변경 없이 선형 확장성과 100% 가동 시간을 보장할 수 있습니다.

왜 사용 하는가? NCache Entity Framework 2차 캐시로?

Entity Framework 애플리케이션이 다중 서버 환경에서 실행되는 경우 Entity Framework 2차 캐시(Second Level Cache)로 분산 캐시가 필요합니다. NCache 다중 서버 구성에 이상적인 옵션이며, 다음과 같은 이유로 사용해야 합니다.

  1. NCache 매우 빠릅니다. NCache 밀리초 미만의 응답 시간을 제공합니다.
  2. NCache 선형 확장성을 제공합니다. NCache 확장성 병목 현상이 발생하지 않습니다. 이를 통해 캐시 클러스터에 서버를 추가하여 선형 확장성을 달성하고 극단적인 트랜잭션 로드를 처리할 수 있습니다.
  3. 캐시 크기는 무한대로 커질 수 있습니다. NCache 캐시 분할을 제공하고 모든 캐시 서버 메모리를 함께 풀링합니다. 따라서 클러스터에 서버를 추가하는 것만으로 캐시 크기를 늘릴 수 있습니다.
  4. NCache 지능적으로 데이터 복제: NCache 성능 저하 없이 캐시를 지능적으로 복제할 수 있습니다. 따라서 캐시 서버가 다운되더라도 캐시 데이터는 손실되지 않습니다.
  5. NCache 100% 가동 시간 제공: NCache 단일 장애 지점이 없는 자가 복구 동적 캐시 클러스터를 갖추고 있습니다. 따라서 애플리케이션이나 캐시를 중단하지 않고도 런타임에 캐시 서버를 추가하거나 제거할 수 있습니다.

EF L2 캐싱에 이상적인 시나리오:

  • 참조 데이터: 제품, 국가와 같은 정적 조회 테이블을 캐싱하여 중복 SQL 읽기를 제거합니다.
  • 트래픽이 많은 읽기 작업: 카탈로그 또는 목록 페이지의 데이터베이스 부하를 줄입니다.
  • 세션에 구애받지 않는 데이터: 표준 InProc 캐싱이 실패하는 경우, 여러 웹 서버 간에 상태를 공유하는 방법입니다.

구성 방법 NCache Entity Framework 2차 캐시로 사용코드 불필요)

사용에 관한 가장 좋은 점 NCache Entity Framework를 사용하면 별도의 프로그래밍이 필요하지 않습니다. 애플리케이션의 구성 파일에 인터셉터를 추가하여 간단히 수정할 수 있습니다. 섹션을 만들고 invariantName 및 type 구성을 덮어씁니다. 다음은 그 예입니다. 앱 구성 변경 :

<entityFramework>
    <providers>
        <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
    <interceptors>
        <interceptor type="Alachisoft.NCache.Integrations.EntityFramework.Caching.EFCommandInterceptor, Alachisoft.Integrations.EntityFramework.CachingProvider"/>
    </interceptors>
</entityFramework>

분석 모드 및 캐싱 모드 사용

The NCache Entity Framework 2차 캐시 공급자는 사용자 지정 ADO.NET 공급자로 플러그인됩니다. 이 공급자를 사용하면 분석 모드에서 애플리케이션을 실행할 수 있으며, 애플리케이션에서 Entity Framework에 실행하는 모든 쿼리를 기록합니다. 이러한 쿼리는 분석 모드에서 호출된 횟수와 함께 파일에 기록됩니다. 아래는 예시입니다.

<analysis-report>
 <query>
      <!--Call count = 12-->
      <cache-query query-text="SELECT [Extent1].[ProductID] AS [ProductID], 
		[Extent1].[ProductName] AS [ProductName], 
		[Extent1].[SupplierID] AS [SupplierID], 
		[Extent1].[CategoryID] AS [CategoryID], 
		[Extent1].[QuantityPerUnit] AS [QuantityPerUnit], 
		[Extent1].[UnitPrice] AS [UnitPrice], 
		[Extent1].[UnitsInStock] AS [UnitsInStock], 
		[Extent1].[UnitsOnOrder] AS [UnitsOnOrder], 
		[Extent1].[ReorderLevel] AS [ReorderLevel], 
		[Extent1].[Discontinued] AS [Discontinued] FROM 
		[dbo].[Products] AS [Extent1] 
		WHERE 5 = [Extent1].[ProductID]"/>
      <cache-policy vary-by-cache-param="" 
		expiration-type="Absolute" 
		enabled="True" 
		expiration-time="30sec" 
		dbsyncdependency="False" 
		resyncProviderName="EFResync"/>
    </query>
</analysis-report>

이렇게 하면 캐시할 쿼리와 기간을 결정할 수 있습니다. 일부 또는 모든 쿼리에 대해 데이터베이스 동기화를 지정할 수도 있습니다.

NCache Entity Framework 2차 캐시 기능

연결하여 NCache Entity Framework 2차 캐시 제공자(app.config 변경)를 사용하면 애플리케이션에 엔터프라이즈급 분산 캐시를 사용할 수 있습니다. 다음은 몇 가지 기능입니다. NCache Entity Framework 앱을 제공합니다.

  1. 캐시를 데이터베이스와 동기화: 캐시에 있는 일부 데이터는 애플리케이션이 인지하지 못하는 사이에 데이터베이스에서 변경될 수 있습니다. 이러한 데이터의 경우, 해당 클래스를 지정할 수 있습니다. NCache 데이터베이스 동기화 기능입니다. 이를 통해 NCache 그런 다음 데이터베이스에 연결하여 데이터 변경 사항을 모니터링하고 캐시를 자동으로 업데이트합니다. 이를 통해 캐시의 데이터가 항상 데이터베이스와 동기화됩니다. NCache 제공 SQL 종속성 SQL Server의 경우 Oracle의존성 Oracle의 경우 Db종속성 모든 OLEDB 호환 데이터베이스의 경우.
  2. 절대 만료: 절대 만료 in NCache 캐시된 각 항목에 대해 별도로 지정됩니다. 날짜-시간 값을 사용하여 언제 NCache 항목을 자동으로 무효화합니다. Entity Framework의 경우 NCache "간격" 값을 지정하라는 메시지를 표시한 다음 "Now() + 간격" 공식을 사용하여 절대 만료에 대한 날짜-시간 값을 계산합니다.
  3. 슬라이딩 만료: 슬라이딩 만료 in NCache 캐시된 항목마다 별도로 지정되며 간격 값입니다. NCache 캐시된 항목이 이 간격 동안 페치되거나 업데이트되지 않으면 만료됩니다. 이 간격은 다음을 통해 지정할 수 있습니다. NCache Entity Framework 두 번째 수준 캐시 공급자 구성 파일.
  4. 컴팩트 직렬화: .NET 객체가 프로세스 외부 캐시나 분산 캐시에 캐시될 때마다 먼저 직렬화되어야 합니다. 일반 .NET 직렬화는 런타임에 .NET Reflection을 사용하기 때문에 속도가 느립니다. NCache 수업을 등록할 수 있는 방법을 제공합니다. NCache애플리케이션이 캐시에 연결되면 직렬화 코드를 생성합니다. 그런 다음 이 코드를 메모리에서 컴파일하여 직렬화에 사용합니다. 이는 일반 .NET 직렬화보다 거의 10배 빠릅니다. Entity Framework에서 이 기능을 사용하려면 엔터티 클래스를 등록해야 합니다. NCache 컴팩트 직렬화를 위해.

사용 NCache Entity Framework 애플리케이션에서 직접

비록, 사용 NCache Entity Framework Second Level Cache는 매우 빠르고 쉽기 때문에 제한된 세트만 제공합니다. NCache 특징. 그 이유는 다음과 같습니다. NCache 사용자 지정 ADO.NET 공급자로 플러그인되어 SQL 쿼리 수준을 처리해야 한다는 사실에 제약을 받습니다. NCache Entity Framework 2차 캐시 공급자로 사용하기로 결정한 경우 사용할 수 없는 기능입니다.

당신을위한 대안은 사용하는 것입니다 NCache Entity Framework 애플리케이션 내에서 직접 NCache API 다른 모든 비-Entity Framework .NET 애플리케이션과 마찬가지로 호출합니다. 이 방식을 사용하려면 약간의 프로그래밍 작업이 필요하지만, 추가적인 프로그래밍 작업보다 이점이 더 크다고 판단할 수도 있습니다.

NCache Entity Framework 2차 캐시에서 누락된 기능

다음은 Entity Framework Second Level Cache로 사용했을 때와 사용했을 때 놓칠 수 있는 기능 목록입니다. NCache 귀하의 응용 프로그램에서 직접.

기능 카테고리 제품 특장점 EF 캐싱 공급자 (코드 필요 없음) NCache 직접 API
고급 작업 대량 작업 사용할 수 없음 유효한
그룹화 및 검색 태그 명명된 태그 사용할 수 없음 유효한
쿼리 SQL 및 LINQ 검색 사용할 수 없음 유효한
동시성 잠금 그리고 아이템 잠금 해제 사용할 수 없음 유효한
진실성 캐시 항목 버전 관리 사용할 수 없음 유효한
데이터 소스 전체 읽기 / 연속 기입 / 후기 쓰기 사용할 수 없음 유효한
메시징 이벤트 알림 (품목, 일반, 사용자 지정) 사용할 수 없음 유효한
유지보수 캐시 로더 및 리프레셔 사용할 수 없음 유효한

다음에 무엇을할지?

자주 묻는 질문 (FAQ)

NCache 이 코드는 표준 Entity Framework 공급자를 래핑하는 사용자 지정 ADO.NET 공급자를 구현합니다. EF에서 생성된 데이터베이스 쿼리를 가로채서 결과 집합을 분산 캐시에 저장합니다. 동일한 쿼리가 다시 실행되면 데이터베이스를 거치지 않고 캐시에서 직접 결과를 제공합니다.

아니요, 사용 중 NCache Entity Framework 2차 캐시를 사용하려면 코드 변경이 전혀 필요하지 않습니다. app.config 또는 web.config 파일만 수정하여 등록하면 됩니다. NCache 공급자를 선택하고 인터셉터를 구성합니다.

예. NCache SQL Server용 SqlDependency, OracleDependency 및 DbDependency를 사용한 데이터베이스 동기화를 지원합니다. 이를 통해 타사 애플리케이션에서 데이터베이스의 데이터가 업데이트될 경우 해당 캐시 항목이 자동으로 무효화되어 오래된 데이터가 유지되지 않도록 합니다.

아니요, 이 특정 공급자는 Entity Framework 6.x(클래식)용으로 설계되었습니다. .NET Core 애플리케이션의 경우 다른 공급자를 사용하십시오. NCache Entity Framework Core(EF Core) 캐싱 공급자는 확장 메서드 및 사용자 지정 캐싱 옵션과 같은 고급 기능을 지원합니다.

문의하기

전화

+1 214-619-2601 (미국)

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