1

내 응용 프로그램에 대해 AppFabric 캐싱을 사용할 것을 고려하고 있지만 원하는대로 수행 할 수있는 방법이 확실하지 않습니다. 나는 1 개의 위치에 1 개의 SQL 클러스터를 가지고있다. 전세계에 200 개 이상의 응용 프로그램 서버가 있습니다. 각 위치에 AppFabric 캐싱 클러스터를 설치하여 응용 프로그램 서버가 SQL 개체에 빠르게 액세스 할 수있게하려고합니다. 빠른 액세스 외에도 SQL 클러스터에 액세스 할 수없는 경우 데이터에 액세스 할 수 있어야합니다.AppFabric 캐싱 및 SQL 종속성

SQL 클러스터를 직접 업데이트하여 데이터가 변경되는 HR 앱이 있습니다. 응용 프로그램 서버는 여러 위치에서 AppFabric 캐시도 업데이트합니다. 이 모든 데이터는 동기화 상태를 유지해야합니다. 내 질문은 다음과 같습니다.

  1. DB가 변경되면 어떻게 캐시가 업데이트됩니까? 나는 SQLDependency가 필요한 것을 읽었지 만 변경이 이루어지면 전체 캐시가 플러시되고 다시 동기화되어야한다는 것을 읽었습니다. 나는 변경된 객체를 업데이트를 위해 다중 캐시로 보내 주기만을 원한다.

  2. SQL 클러스터에 액세스 할 수없고 캐시가 요청 된 개체를 찾을 수없는 경우 어떻게됩니까?

  3. 내가하려는 일을하는 더 좋은 방법이 있습니까? 이것은 성능에 대한 것보다 SQL 오브젝트 가용성에 관한 것입니다.

답변

1

AppFabric은 SqlCacheDependency 같은 캐시 종속성 개체에 대한 지원이 없습니다,하지만 당신이 대신 할 수있는 것은 읽기를 통해/쓰기 숨김 AppFabric에 대한 캐시 공급자를 만들 것입니다 ... MS 동기화 프레임 워크 조회에 대해. 이 공급자는 SQL Server 데이터베이스의 구조를 알고 있으므로 데이터베이스에서 정보를 검색 할 수 있습니다. 은 업데이트 할 때 데이터베이스를 업데이트 할 수 있습니다. 응용 프로그램 서버는 AppFabric 캐시를 업데이트하므로 캐시에 항상 최신 버전의 데이터가 있으며 캐시는 데이터베이스에 업데이트를 씁니다 비동기 적으로입니다.

백엔드 데이터베이스를 업데이트하는 HR 애플리케이션에 대처하기 위해 TTL (Time-To-Live) 값에 따라 만료되도록 캐시의 항목을 구성 할 수 있으며 이후 캐시 요청은 캐시 된 버전을 새로 고칩니다.

+0

FYI : SqlCacheDependency는 ASP.NET의 캐시 공급자이며 ADO.NET의 SqlDependency 개체와 같지 않습니다.이 코드는 데이터가 변경된 SQL로부터의 알림을 받으면 실행할 사용자 지정 코드를 연결할 수 있도록합니다. – Jaans

0

나는이 게시물을 다시 게시했지만 캐시 종속성을 사용하여 주 데이터 소스와 synschonize 할 수있는 솔루션이 있다는 것을 알고 있습니다. SQL 종속성 상황에서 중요한 부분은 NCache에서 사용할 수 있습니다. NCache를 사용하면 DB와 동기화 할 수있는 여러 옵션을 가질 수 있으며 그런 옵션이 "read-through"입니다. 따라서 기본적으로 DB가 변경되면 종속 Object가 캐시에서 자동으로 제거되고 읽기 통과가 활성화되면 캐시 서버는 자동으로 객체의 새로운 사본을 다시 검색합니다. Database Synchronization here