분산 캐시 애플리케이션 성능과 확장성을 높이고 속도를 늦추지 않고 극단적인 트랜잭션 로드를 처리할 수 있는 강력한 방법이기 때문에 매우 인기를 얻고 있습니다. .NET 및 Java 응용 프로그램 모두 매일 점점 더 많이 사용하고 있습니다.
그러나 분산 캐시를 사용하는 사람들이 직면하는 한 가지 문제는 매핑 및 저장 방법입니다. 관계형 데이터 분산 캐시가 있는 HashTable(키, 값) 페어링 저장소에 있습니다. 오늘날 대부분의 캐시는 이를 처리하는 메커니즘을 제공하지 않습니다. 오늘은 ASP.NET Cache가 제공하는 데이터 종속성에 대해 설명하겠습니다. NCache 첫날부터 통합되었습니다.
ASP.NET 캐시와 마찬가지로 NCache, 데이터 종속성 두 개의 캐시된 항목 사이의 분산 캐시에서 종속성을 지정할 수 있습니다. 캐시된 항목 A는 캐시된 항목 B에 종속됩니다. 그리고 B가 업데이트되거나 분산 캐시에서 제거되면 A는 자동으로 제거됩니다. 이렇게 하면 데이터베이스의 A와 B 사이에 참조 무결성 제약 조건이 있는 경우 분산 캐시에서도 적용됩니다. A가 B에 종속되고 B가 C에 종속되는 계단식 데이터 종속성을 지정할 수도 있습니다. 그런 다음 C를 업데이트하거나 제거하면 A와 B가 모두 제거됩니다. 다음은 데이터 종속성의 간단한 예입니다.
NCache 세부 정보 관계형 데이터 관리 데이터 종속성 문서
데이터 종속성을 사용하면 분산 캐시에서 일대일, 일대다 및 다대다 관계를 만들 수 있습니다. 다양한 시나리오를 처리하는 방법은 다음과 같습니다.
일대일 관계
A는 일대일 데이터 종속성 없이 B를 추가합니다. 그런 다음 A를 추가하고 B에 대한 데이터 종속성을 지정합니다. A와 B 모두 상호 종속성이 있는 경우 나중에 B를 업데이트하고 A에 대한 종속성을 지정합니다.
일대 다 관계
A는 일대 다 B와 함께. 데이터 종속성 없이 A를 먼저 추가합니다. 그런 다음 하나 이상의 B 항목을 추가하고 모든 항목에 대해 지정된 A에 대한 데이터 종속성을 지정합니다. 이렇게 하면 A가 업데이트되거나 제거되면 다음과 같이 모든 B가 자동으로 제거됩니다. NCache.
다대다 관계
A와 B는 다대다 관계입니다. 하나 이상의 A를 추가하십시오. 그런 다음 하나 이상의 B를 추가하고 적절한 A에 대한 데이터 종속성을 지정합니다. 그런 다음 돌아가서 A를 업데이트하여 적절한 B에 대한 데이터 종속성을 지정합니다.
다음은 캐시에서 일대일 종속성을 만드는 간단한 예입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
public static void CreateDependencies(ICache _cache) { try { string keyB = "objectB-1000"; Object objB = new Object(); string keyA = "objectA-1000"; Object objA = new Object(); // Initializing cacheItems var itemOne = new CacheItem(objA); var itemTwo = new CacheItem(objB); // Adding objA dependent on ObjB itemOne.Dependency = new KeyDependency(keyB); //Adding items to cache _cache.Add(keyB, itemTwo); _cache.Add(keyA, itemOne); // Removing "objB" automatically removes “objA” as well _cache.Remove(keyB); _cache.Dispose(); } catch (Exception e) { throw; } } |
그래서, NCache 데이터 종속성을 활용하고 분산 캐시에서 데이터 관계를 지정할 수 있습니다. 완전히 작동하는 60일 평가판 다운로드 NCache Enterprise 그리고 직접 사용해 보세요.
블로그를 공유해 주셔서 감사합니다. 데이터 종속성에 대해 잘 설명되어 있습니다. 이 블로그를 읽는 데 시간을 투자할 가치가 있었습니다.
안녕 Iqbal, imairnftove 기사를 공유해 주셔서 감사합니다. 분산 캐시에 대해 설명해 주시겠습니까? 다른(물리적) 프런트엔드 서버와 DB 서버에서 캐시를 유지한다는 의미입니까?프론트엔드 서버(FS)1이 로컬 캐시 C1을 유지 관리하는 시나리오가 있습니다. FS2는 자체 로컬 캐시 C2를 유지 관리합니다. FS3는 자체 로컬 cacheC3를 유지 관리하고 있습니다. 전역 캐시 GC가 있는 DB 서버가 있습니다. 모든 로컬 캐시 C1, C2, C3은 GC에 의존해야 합니다. GC가 업데이트되면 모든 로컬 캐시가 무효화됩니다. 제 생각에는 다른 시스템의 메모리를 제어할 수 없기 때문에 어떻게 작동할지 모르겠습니다.이 문제에 대해 조명해 주십시오.고마워요
NCache out of process 인메모리 분산 캐시입니다. 런타임에 캐시 노드 클러스터를 형성할 수 있으며 여러 애플리케이션에 분산될 수 있습니다.
방법은 다음과 같습니다. NCache 귀하의 시나리오를 처리합니다:
DB 서버 또는 전용 캐시 서버에 글로벌 클러스터 캐시(예: 클러스터에 2개의 노드 포함)를 생성한 다음 각 프런트 엔드 서버 FS1, FS2 및 FS3에서 "클라이언트 캐시" 기능을 활용할 수 있습니다. NCache 클라이언트 캐시는 다음에서 실행되는 로컬 캐시입니다. NCache 클라이언트 상자(웹/앱 서버는 NCache 클라이언트) 및 클러스터된 캐시에서 가장 자주 액세스하는 클라이언트 상자에 로컬로 데이터 복사본을 보관합니다.
동일한 데이터에 대한 후속 호출은 로컬 클라이언트 캐시에서 직접 제공되어 네트워크 트립을 저장하여 더 많은 성능을 제공합니다. 클라이언트 캐시도 본질적으로 in-proc일 수 있습니다.
데이터 동기화는 자동으로 관리됩니다. NCache. 전역 클러스터 캐시에 대한 업데이트의 경우 클라이언트 캐시는 항목을 자동으로 무효화/제거하고 후속 액세스 시 클러스터 캐시에서 업데이트된 복사본을 가져옵니다.
안녕하세요 Iqbal님
유익한 기사를 공유해 주셔서 감사합니다. 분산 캐시에 대해 설명해 주시겠습니까? 다른(물리적) 프론트엔드 서버와 DB 서버에서 유지되는 캐시를 의미합니까?
시나리오가 있습니다. Frontend Server(FS)1이 로컬 캐시 C1을 유지 관리하고 있습니다. FS2는 자체 로컬 캐시 C2를 유지 관리합니다. FS3는 자체 로컬 cacheC3를 유지 관리하고 있습니다. 전역 캐시 GC가 있는 DB 서버가 있습니다. 모든 로컬 캐시 C1, C2, C3은 GC에 의존해야 합니다. GC가 업데이트되면 모든 로컬 캐시가 무효화됩니다. 내 의견으로는 다른 시스템의 메모리를 제어할 수 없기 때문에 이것이 어떻게 작동하는지 모르겠습니다.
이에 대해 조명을 좀 부탁드립니다.
감사
쿠시
정말 유익하고 좋은 정보입니다. 이 유용한 정보를 우리와 공유하게 되어 기쁩니다. 이렇게 알려주세요. 공유해 주셔서 감사합니다.