오늘날 분산 캐시는 트래픽이 많은 애플리케이션에서 확장성과 성능을 달성하는 데 널리 사용됩니다. 분산 캐시는 메모리 내 저장소에서 캐시된 데이터를 제공하여 데이터베이스 서버의 부담을 덜어줍니다. 또한 소수의 분산 캐시도 SQL과 유사한 쿼리 기능을 제공하므로 데이터베이스를 쿼리하는 방식으로 분산 캐시를 쉽게 쿼리할 수 있습니다. “SELECT employee WHERE employee.city=‘New York’”
우선 대부분의 분산 캐시는 SQL과 유사한 쿼리 기능. 이것을 제공하는 소수조차도 매우 제한적으로 지원합니다. 단순한 기준에 따라 분산 캐시 검색만 제공합니다. 반면 집계 함수를 기반으로 결과를 찾아야 하는 몇 가지 시나리오가 있습니다. “SELECT COUNT(employee) WHERE salary > 1000”
or “SELECT SUM(salary) WHERE employee.city = ‘New York’”
. 이를 위해서는 먼저 분산 캐시를 쿼리한 다음 가져온 캐시 데이터에 대한 집계 함수를 계산해야 합니다.
NCache 세부 정보 NCache 기술 문서 SQL 쿼리 NCache 기술 문서
왜 사용 NCache 집계 함수를 사용하여 분산 캐시 쿼리
이 접근 방식에는 두 가지 주요 단점이 있습니다. 첫 번째는 분산 캐시에서 모든 데이터를 캐시 클라이언트로 가져오는 것과 관련된 분산 캐시에서 쿼리를 실행해야 한다는 것입니다. 이 데이터는 MB에서 GB까지 다양할 수 있으며 소비된 네트워크 대역폭에 대해서도 비용을 지불하는 경우 이 작업이 더 비쌉니다. 또한 집계 함수 계산을 마친 후에는 대부분 이 데이터가 필요하지 않습니다.
두 번째 단점은 집계 함수 계산을 위한 사용자 정의 프로그래밍이 포함된다는 것입니다. 이것은 추가 작업 시간을 추가하지만 여전히 대부분의 복잡한 시나리오를 다룰 수 없습니다. 이러한 추가 기능을 직접 설계하고 구현하는 것에 대해 걱정하지 않고 구축 중인 목적을 위해 애플리케이션을 계속 개발할 수 있다면 훨씬 더 좋을 것입니다.
이것이 이유입니다 NCache OQL(Object Query Language)의 일부로 COUNT, SUM, MIN, MAX 및 AVG와 같은 집계 함수를 사용하여 분산 캐시를 쿼리할 수 있는 유연성을 제공합니다. 사용 NCache OQL 집계 함수를 사용하면 분산 캐시 도메인 내에서 필요한 집계 계산을 쉽게 수행할 수 있습니다. 이 접근 방식은 네트워크 트래픽을 방지할 뿐만 아니라 집계 함수 계산 측면에서 훨씬 더 나은 성능을 제공합니다. 이는 모든 선택 및 계산이 분산 캐시 도메인 내에서 수행되고 네트워크 트립이 포함되지 않기 때문입니다.
다음은 검색할 코드 샘플입니다. NCache OQL 집계 쿼리 사용:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public void Main(string[] args) { ... NCache.InitializeCache("myPartitionReplicaCache"); String query = "SELECT COUNT(Business.Product) WHERE this.ProductID > ? AND this.Price < ?"; Hashtable param = new Hashtable(); param.Add("ProductID", 100); param.Add("Price", 50); // Fetch the cache items matching this search criteria IDictionary searchResults = _cache.SearchEntries(query, values); ... } |
쿼리 실행 시간을 더 단축하려면 NCache map-reduce 메커니즘처럼 SQL과 같은 쿼리를 모든 캐시 서버에 배포하여 병렬로 실행합니다. 또한 다음을 사용할 수 있습니다. NCache OQL은 .NET 및 Java 애플리케이션 모두에서 쿼리를 집계합니다.
결론!
요약하자면, NCache 확장성 및 성능뿐만 아니라 SQL과 같은 집계 기능을 사용하여 분산 캐시를 검색할 수 있는 유연성을 제공합니다.