MongoDB 변경 스트림을 활용하여, NCache 실시간 데이터 일관성을 제공하여 트래픽이 많은 분산 환경에서 오래된 데이터로 인한 위험을 제거합니다. 몽고 DB MongoDB는 확장 가능하고 오픈 소스이며 고성능의 문서 지향형 NoSQL 데이터베이스입니다. 시중에서 가장 우수한 NoSQL 데이터베이스 중 하나로 꼽힙니다. MongoDB에 캐싱을 사용하면 데이터베이스 접근 횟수를 줄여 애플리케이션 성능을 크게 향상시킬 수 있습니다. 그러나 분산 캐시에 MongoDB 데이터를 캐싱하면 데이터의 복사본이 두 개 생성됩니다. 하나는 MongoDB 내부에, 다른 하나는 분산 캐시에 저장됩니다. 애플리케이션이 MongoDB의 데이터를 직접 변경하면 캐시에 저장된 데이터가 최신 상태가 아니게 됩니다.
트랜잭션이 많은 다중 환경 및 엔터프라이즈 수준 애플리케이션의 경우 이 오래된 데이터는 큰 문제입니다. 이 블로그에서는 Mongo DB와 함께 분산 캐시를 계속 사용하면서 동시에 오래된 데이터 문제를 방지하는 방법에 대해 설명합니다.
주요 요점
실시간 데이터 무결성: MongoDB Change Streams(v3.6 이상)를 활용하여 분산 캐시의 데이터 최신성 유지를 위한 푸시 기반 알림 시스템을 제공합니다.
이벤트 기반 무효화: 활용한다 NCache NotifyExtensibleDependency 데이터베이스 변경이 발생하는 즉시 캐시 항목을 자동으로 제거하거나 업데이트하는 클래스입니다.
효율적인 개발자 경험: 구현 ICustomDependencyProvider 이 인터페이스는 과도한 아키텍처 설계 부담 없이 유연하고 사용자 정의 가능한 동기화 로직을 구현할 수 있도록 합니다.
고가용성 성능: 전자상거래 및 금융 시스템과 같이 트래픽이 많은 환경에 최적화되어 있으며, 일관된 데이터에 대한 낮은 지연 시간 액세스를 유지하는 것이 매우 중요합니다.
다음을 사용하여 캐시를 Mongo DB와 동기화 NCache
NCache .NET Framework/.NET Core, Java 및 Node.js용으로 잘 알려진 분산 캐시입니다. NCache 비약적으로 응용 프로그램의 성능을 향상시킬 수 있는 방대한 기능 세트를 제공합니다. 이러한 방대한 기능 세트 중에는 다음과 같은 기능이 있습니다. 알림 기반 확장 종속성. 이 기능은 MongoDB(이전에 논의한)의 부실 데이터 문제를 해결합니다.

그림 1 : NCache MongoDB 동기화 워크플로.
The NotifyExtensibleDependency 클래스를 사용하면 알림을 통해 데이터베이스 내에서 발생하는 변경 사항을 알리는 사용자 지정 종속성 논리를 작성할 수 있습니다. NCache 라고 알려진 Mongo DB(버전 3.6에 도입됨)의 기능을 사용하여 이러한 알림을 처리합니다. 스트림 변경. 이러한 알림이 처리되면 작성한 코드를 기반으로 캐시 내의 부실 데이터가 무효화됩니다.
Change Stream 로직은 NotifyExtensibleDependency. 이 변경 스트림을 수정하여 데이터베이스 내에서 발생하는 추가, 업데이트 또는 삭제 작업에 대한 알림을 받을 수 있습니다. 그러나 삭제 작업은 추적할 수 없습니다. 따라서 삭제 작업을 추적하기 위해 만료가 있는 업데이트 작업이 사용됩니다.
Mongo DB는 독립 실행형 데이터베이스에 대한 변경 스트림을 지원하지 않는다는 점도 염두에 두어야 합니다. Change Stream 기능이 작동하려면 Mongo DB 데이터베이스에 복제 세트가 있는지 확인해야 합니다.
고성능을 보장하기 위해서는 이벤트 기반 동기화와 기존 방식을 비교하는 것이 중요합니다. 아래 표는 MongoDB Change Streams가 실시간 캐시 일관성 유지에 있어 더 나은 선택인 이유를 보여줍니다.
| 제품 특장점 | MongoDB 변경 스트림(권장) | 전통적인 데이터베이스 폴링 |
|---|---|---|
| 의사 소통 | 푸시 기반: MongoDB 알림 NCache 바로. | 풀 방식: NCache 데이터베이스에 업데이트를 "요청"해야 합니다. |
| 숨어 있음 | 실시간: 거의 즉각적인 캐시 무효화. | 지연: 폴링 간격에 따라 다릅니다. |
| 성능 | 고효율 : 데이터베이스 오버헤드가 최소화됩니다. | 낮은 효율성: 지속적인 쿼리는 데이터베이스 리소스에 부담을 줄 수 있습니다. |
| 확장성 | 우수한: 트래픽이 많은 환경에서도 문제없이 작동합니다. | 제한된: 폴링 빈도가 병목 현상이 됩니다. |
| 실시 | 사용 NotifyExtensibleDependency. |
사용자 지정 타이머 기반 로직을 사용합니다. |
NCache 세부 정보 NCache 확장 가능한 종속성 알림 NCache 기술 문서
Mongo DB와 동기화 캐시: 간단한 예
Mongo DB를 사용하려면 NCache 당신은 구성해야합니다 사용자 지정 종속성 in NCache 먼저 클라이언트 애플리케이션에 배포한 다음 나중에 배포합니다. 이것은 아래에 설명되어 있습니다:
NCache 사용자 지정 종속성 구성
의 알림 기반 확장 가능 종속성 기능을 사용하려면 NCache Mongo DB를 사용하려면 다음을 수행해야 합니다. 사용자 지정 종속성 구성 on NCache 먼저 각각의 DLL 파일을 NCache 서버.
아래 GIF에서 이름이 지정된 공급자를 배포했습니다. MongoDbNotifyExtensibleDependencyProvider 캐시에 대한 모든 종속성과 함께. 그것은 구현 ICustomDependencyProvider 상호 작용. 에 대한 종속성 개체를 만드는 일을 담당합니다. 캐시 아이템. 종속성이 제대로 트리거되려면 NotifyExtensibleDependency 클래스를 구현해야 합니다. 이 클래스는 MongoDB 변경 스트림을 수신하고 Mongo DB의 데이터 변경 시 종속성을 트리거합니다.
또한 이 예에서는 다음의 오픈 소스 구현을 사용하고 있습니다. ICustomDependencyProvider NotifyExtensibleDependency 사용 가능한 GitHub의.

그림 2: Extensible Dependency Provider 배포 알림 NCache
NCache 세부 정보 사용자 지정 종속성 구성 GitHub 저장소
클라이언트 애플리케이션에 배포
예를 들어 전자 상거래 상점의 데이터베이스로 Mongo DB를 사용하고 내부에서 자주 사용하는 데이터를 캐시하려고 합니다. NCache. 상점에는 백만 개 이상의 제품 데이터가 포함되며 매일 수백만 건의 거래가 발생합니다. NCache Mongo DB 데이터베이스의 로드를 줄이는 데 도움이 되지만 캐시 내부의 데이터는 부실해지기 쉽습니다.
캐시 내부에 오래된 데이터가 있으면 귀하와 귀하의 고객에게 문제가 발생할 수 있습니다. 다행스럽게도 알림 기반 확장 가능 종속성 기능은 NCache 오래된 데이터 문제를 완화하여 전자 상거래 상점의 최적 기능을 보장합니다.
다음 예에서는 해당 ID를 기반으로 데이터베이스에서 제품이 로드됩니다. 그 다음에 NotifyExtensibleDependency 가져온 제품에 대해 생성 및 등록됩니다. 마지막으로 제품의 형태는 캐시 아이템 지정된 키와 함께 캐시에 삽입됩니다.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Product product = LoadProductFromDatabase(productId); //This is the name of your provider deployed on a cache server string providerName = "MongoDbNotifyExtensibleDependencyProvider"; string key = "Product:" + product.Id ; IDictionary<string, string> parameters = new Dictionary<string, string>(); parameters.Add("ConString", "mongodb://**.**.**.**:27017"); parameters.Add("DatabaseName", "productscollection"); parameters.Add("CollectionName", "products"); CacheItem item = new CacheItem(product); item.Dependency = new CustomDependency(providerName, parameters); _cache.Insert(key, item); |
NCache 세부 정보 NotifyExtensibleDependency 캐시 작업 NCache
Read-Through 공급자 사용
의 또 다른 두드러진 특징 NCache 이다 판독 제공자. 이 기능을 사용하면 캐시에서 찾을 수 없는 경우 Mongo DB 내부의 데이터를 직접 찾을 수 있습니다. 항목이 데이터베이스 내부에서 발견되면 캐시 내부에도 자동으로 저장됩니다. 따라서 귀중한 시간을 절약할 수 있습니다. Mongo DB 애플리케이션에서 이 기능을 사용하여 성능을 더욱 향상시킬 수 있습니다.
다음 코드 예제는 지정된 키 "Product:1001"에 해당하는 읽기가 활성화된 항목을 검색합니다. Get<> 방법.
|
1 2 3 4 5 6 7 8 9 |
// Specify the key of the item string key = "Product:1001"; // Specify the readThruOptions for read through operations var readThruOptions = new ReadThruOptions(); readThruOptions.Mode = ReadMode.ReadThru; // Retrieve the data of the corresponding item with reads thru enabled Product product = cache.Get(key, readThruOptions); |
NCache 세부 정보 캐싱을 통해 읽기 캐시 작업 NCache
맺음말
요약하자면, NCache Mongo DB와 캐시 간에 데이터를 동기화하여 데이터 불일치를 방지하는 유연한 솔루션을 제공합니다. NCache인 메모리 분산 캐싱 솔루션인 는 Mongo DB가 빠른 액세스 및 처리를 위해 최신 데이터를 유지 관리하는 데 이상적인 매개체가 될 수 있습니다.
자주 묻는 질문 (FAQ)
어떻게 NCache MongoDB와 동기화 상태를 유지하시겠습니까?
NCache MongoDB 변경 스트림을 모니터링하는 확장 가능한 사용자 지정 종속성을 활용하여 동기화를 유지합니다. 데이터베이스에서 변경 사항(삽입, 업데이트 또는 교체)이 발생하면 MongoDB는 알림을 푸시합니다. NCache그러면 캐시는 다음을 사용합니다. -해당 항목을 즉시 무효화하거나 업데이트하는 클래스를 사용하여 분산 캐시가 기본 데이터베이스와 일관성을 유지하도록 합니다.
MongoDB 동기화에서 NotifyExtensibleDependency의 역할은 무엇인가요?
The NotifyExtensibleDependency 클래스는 핵심 구성 요소로서, 이를 가능하게 합니다. NCache 외부 데이터베이스 이벤트에 반응하기 위해 사용됩니다. 캐시 클러스터 내에서 활성 상태를 유지하는 리스너 역할을 하며, MongoDB 변경 스트림에서 트리거를 수신하면 무효화 로직을 실행합니다. 이를 통해 리소스 집약적인 폴링 방식이 필요 없어지고, 보다 반응적이고 이벤트 기반의 아키텍처를 제공합니다.
어떤 MongoDB 버전이 지원하는가 NCache 실시간 동기화?
실시간 동기화 NCache 필요 MongoDB 버전 3.6 이상그 이유는 해결책이 구체적으로 다음에 의존하기 때문입니다. 스트림 변경 해당 버전에서 도입된 기능입니다. 이전 버전의 MongoDB는 이 이벤트 기반 무효화 모델에 필요한 푸시 알림 프레임워크를 지원하지 않습니다.
동기화 공급자는 어떻게 배포됩니까? NCache?
동기화 로직은 다음을 통해 구현됩니다. ICustomDependencyProvider 인터페이스입니다. 배포하려면 로직을 DLL 파일로 컴파일하고 등록해야 합니다. 사용자 지정 종속성 인간을 NCache 관리 센터. 이 배포를 통해 다음을 수행할 수 있습니다. NCache 서버가 MongoDB와의 연결을 기본적으로 처리하고 변경 스트림 알림의 수명 주기를 관리합니다.






