Azure Cosmos DB는 Microsoft Azure에서 제공하는 완전 관리형 NoSQL 데이터베이스입니다. 높은 데이터 가용성으로 널리 알려져 있습니다. 확장 성, 그리고 저지연 액세스를 제공합니다. 그러나 Azure가 각 데이터베이스 트랜잭션에 대해 사용자에게 요금을 청구하기 때문에 이러한 빈번한 데이터베이스 액세스는 성능 병목 현상과 비용 증가로 이어질 수 있습니다. 캐싱은 성능을 최적화하고 비용을 절감하는 데 필수적입니다. 이 문서에서는 NCache 오픈 소스, 메모리 내 분산 캐싱 솔루션은 이 데이터베이스와 통합될 수 있습니다. .NET 8 애플리케이션.
주요 요점
- 비용을 줄이다: 캐싱을 사용하면 메모리에서 읽기 작업을 처리하여 Azure Cosmos DB 요청 단위(RU)를 줄일 수 있습니다.
- 지연 시간 개선: 인메모리 캐싱 NCache Cosmos DB의 밀리초 단위 응답 속도에 비해 마이크로초 단위의 지연 시간을 제공합니다.
- 확장성: 데이터베이스에서 읽기 트래픽을 분산시켜 최대 부하 시 처리량을 향상시킵니다.
Azure Cosmos DB에 캐싱이 필요한 이유
지연 시간 및 비용 문제: Azure Cosmos DB의 분산 특성으로 인해 지연 시간이 발생할 수 있으며, 대규모 쿼리 볼륨은 높은 RU(데이터베이스 트랜잭션) 비용을 초래합니다.
성능 및 확장성: NCache 데이터베이스 접근 횟수를 최소화하여 성능을 최적화하고, 비용을 절감하며, 확장성을 향상시킵니다.
고가용성: NCache 높은 가용성을 제공하고, 작업 부하를 효율적으로 처리하며, 자주 액세스하는 데이터를 메모리에서 제공하여 응답 시간을 단축합니다.
클라이언트 캐시: NCache's 클라이언트 캐시애플리케이션 서버에서 InProc를 실행할 수 있는 이 방법은 캐시된 데이터에 대한 네트워크 전송을 방지하여 속도를 향상시킵니다.

그림 : NCache Azure Cosmos DB를 활용한 분산 캐싱 아키텍처
Azure Cosmos DB(.NET 8)에서 캐싱을 구현하는 방법은 무엇인가요?
아래는 구현을 위한 최적화된 접근 방식입니다. NCache 이 데이터베이스로 .NET 8에서. 이 예제에서는 고객 데이터를 검색하여 성능을 최적화하기 위해 캐시하는 애플리케이션을 가정합니다. 그러나 Azure Cosmos DB가 있는지 확인하십시오. NCache (오픈 소스 또는 엔터프라이즈) 설치 및 설정을 진행하기 전에. .NET 8 SDK 및 Azure SDK for .NET도 필요합니다.
코스모스 DB 항목 하나만 캐싱하기
다음 코드 조각은 단일 고객 레코드를 캐시하는 방법을 보여줍니다. 푸른 코스모스 DB 사용 NCache.
|
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
using Alachisoft.NCache.Client; using Alachisoft.NCache.Runtime.Caching; using Microsoft.Azure.Cosmos; using System; using System.Threading.Tasks; class Program { private static readonly string cosmosConnectionString = ""; private static readonly string cacheName = "myClusteredCache"; static async Task Main(string[] args) { string customerId = "ALFKI"; string cacheKey = $"Customer:{customerId}"; ICache cache = CacheManager.GetCache(cacheName); var cachedCustomer = cache.Get(cacheKey); if (cachedCustomer == null) { Console.WriteLine("Cache miss. Fetching from Cosmos DB..."); var client = new CosmosClient(cosmosConnectionString); var container = client.GetContainer("Northwind", "Customer"); PartitionKey partitionKey = new PartitionKey("Seattle"); var itemResponse = await container.ReadItemAsync(customerId, partitionKey); cachedCustomer = itemResponse.Resource; var cacheItem = new CacheItem(cachedCustomer) { Expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(10)) }; cache.Insert(cacheKey, cacheItem); Console.WriteLine("Customer data cached successfully."); } else { Console.WriteLine("Cache hit! Fetching from NCache..."); } } } |
데이터베이스 항목 컬렉션 캐싱
여러 데이터베이스 레코드를 캐싱하면 효율성이 향상됩니다. 질의 대규모 데이터 세트. 아래는 데이터베이스에서 고객 목록을 캐시하는 최적화된 방법입니다.
|
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 27 |
string key = "CustomersFromGermany"; IDistributedList germanCustomers = cache.DataTypeManager.GetList(key); if (germanCustomers == null) { var container = cosmosClient.GetContainer("Northwind", "Customer"); var query = new QueryDefinition("SELECT * FROM Customers c WHERE c.Country = 'Germany'"); var feedIterator = container.GetItemQueryIterator(query); var attributes = new DataTypeAttributes() { Expiration = new Expiration(ExpirationType.Absolute, TimeSpan.FromMinutes(10)) }; germanCustomers = cache.DataTypeManager.CreateList(key, attributes); while (feedIterator.HasMoreResults) { var response = await feedIterator.ReadNextAsync(); foreach (var customer in response.Resource) { germanCustomers.Add(customer); } } } |
NCache Azure에서 배포
배포할 수 있습니다. NCache Azure에서 여러 방법을 사용하여:
- NCache CloudAzure Marketplace에서 이용 가능한 완전 관리형 캐싱 솔루션입니다.
- 가상 머신: 배포 NCache 수동으로 켜기 Azure VM 온프레미스 방식의 제어를 위해.
- Azure 쿠버네티스 서비스(AKS): 달리기 NCache 확장 가능한 아키텍처를 위한 컨테이너.
- Azure App 서비스: 주인 NCache PaaS 배포의 일부로.
자세한 내용은 NCache Azure 배포, 방문 NCache 문서.
맺음말
통합 NCache Azure Cosmos DB를 사용하면 성능이 향상되고 비용이 절감되며 대기 시간이 짧고 가용성이 높습니다. 분산 목록, 대량 작업예산 및 태그 기반 캐싱, NCache .NET 8 애플리케이션에 대한 캐싱을 가장 잘 처리합니다. 전자 상거래, 만약 IoT또는 AI 기반 분석을 통해 확장 가능하고 효율적인 캐싱 솔루션을 제공합니다.
자주 묻는 질문 (FAQ)
질문: Azure Cosmos DB에는 내장 캐시 기능이 있나요?
A: Azure Cosmos DB에는 통합 캐시가 있지만 특정 워크로드(예: 포인트 읽기)로 제한됩니다. 외부 분산 캐시(예: Azure Cosmos DB)를 사용하면 더 많은 워크로드를 처리할 수 있습니다. NCache 더 많은 제어 기능, 복잡한 데이터 유형, 그리고 여러 지역 간의 동기화 기능을 제공합니다.
질문: Azure Cosmos DB에서 캐싱을 사용하면 어떻게 비용을 절감할 수 있나요?
A: 코스모스 DB는 요청 단위(RU)를 기준으로 요금을 부과합니다. 빈번한 읽기 요청을 처리함으로써 NCache 데이터베이스를 사용하는 대신 RU 사용량을 줄여 월 요금을 낮출 수 있습니다.
Q : 할 수 있습니다 NCache 코스모스 DB와 데이터를 동기화하시겠습니까?
A : 그렇습니다. NCache Cosmos DB 백엔드의 데이터가 변경될 때 캐시된 항목을 자동으로 무효화하거나 업데이트하는 캐시 동기화를 지원합니다.






