기업이 확장됨에 따라, 그들은 높은 트래픽을 관리하고 빠른 데이터 검색을 보장하기 위해 분산 캐싱 솔루션에 점점 더 의존하고 있습니다. 그러나 분산 캐시를 구현하는 데 있어서 핵심 과제 중 하나는 복잡한 SQL 쿼리. 전통적으로 전자상거래 플랫폼과 엔터프라이즈 애플리케이션은 다음을 사용합니다. SQL 쿼리 제품 검색, 거래 처리 및 재고 관리를 위해. 하지만 이러한 쿼리가 캐시를 우회하고 데이터베이스에 직접 액세스하는 경우 캐싱의 이점이 크게 줄어듭니다.
이 문제를 해결하기 위해, NCache 강력한 제공 SQL과 유사한 쿼리 캐시 내에서 직접 지원하여 기존 쿼리 구조를 변경하지 않고도 성능을 최적화할 수 있습니다. 최신 개선 사항을 통해 NCache 이제 개선된 기능을 제공합니다 링크 통합.NET 8 지원 및 향상된 색인 더욱 빠른 쿼리 실행을 위한 메커니즘.
주요 요점
- SQL 직접 실행: NCache 캐시된 데이터에 대해 표준 SQL과 유사한 쿼리를 실행할 수 있으므로 데이터베이스 접근을 없앨 수 있습니다.
- 성능 : 사전 정의된 인덱스를 사용하여 고속 검색을 지원함으로써 네트워크 지연 시간과 대역폭 사용량을 줄입니다.
- 기능 세트: .NET 8용 와일드카드, 집계 함수(SUM, COUNT) 및 LINQ 통합을 지원합니다.
- 데이터 유형: 빠르게 변화하는 거래 데이터와 정적인 참조 데이터 모두를 조회할 수 있습니다.
데이터 저장소로 캐시
데이터를 저장 분산 캐시 애플리케이션 응답성을 크게 개선합니다. 그러나 이 저장된 데이터를 효율적으로 쿼리하는 것이 중요하며, 위에서 설명한 대로 지정된 제품을 검색하려면 다음을 실행해야 합니다. SQL 쿼리. 과 NCache개선된 쿼리 엔진을 사용하면 다음을 수행할 수 있습니다. SQL과 유사한 검색 데이터베이스에 의존하지 않고 캐시에 직접 저장하므로 데이터베이스 방문이 최소화되고 수백만 개의 동시 요청을 원활하게 처리할 수 있습니다.
SQL 쿼리를 실행하는 방법 NCache (코드 예)
고객이 특정 제품을 자주 구매하는 시나리오를 고려해 보겠습니다. 아래 쿼리는 최신 쿼리 서비스를 사용하여 캐시에서 직접 실행됩니다. NCache, 이제 지원됨 개선된 인덱싱 향상된 데이터 구조 빠른 쿼리 실행을 위해:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Ensure items are already stored in the cache string query = "SELECT * FROM FQN.Product WHERE ProductID > ?"; // Create QueryCommand object var queryCommand = new QueryCommand(query); // Add query parameters queryCommand.Parameters.Add("ProductID", 50000); // Execute query using the enhanced ICacheReader ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand); if (reader.FieldCount > 0) { while (reader.Read()) { string result = reader.GetValue<string>("ProductID"); } } |
캐시에서 검색되는 데이터 유형은 무엇입니까?
NCache 캐시된 데이터를 두 가지 주요 범주로 분류합니다.
- 거래 데이터
거래 데이터는 자주 업데이트되며 빠른 처리에 사용됩니다. 5달러 미만의 제품을 가져오는 쿼리 예는 아래와 같습니다.
|
1 |
SELECT * FROM FQN.Products WHERE UnitPrice <= 5.00 |
와 NCache최적화되었습니다 색인이 데이터는 신속하게 처리되어 데이터베이스 종속성이 줄어듭니다.
- 참조 데이터
참조 데이터는 구조화되어 장기간 캐시에 저장됩니다. 데이터베이스와 동기화 상태를 유지하며 다음을 지원합니다. SQL 쿼리 데이터 검색을 위해. NCache새로운 자동 동기화 기능을 사용하면 수동으로 새로 고침하지 않고도 참조 데이터를 최신 상태로 유지할 수 있습니다.
캐시된 데이터에 대한 SQL 쿼리의 유효성을 보장하려면 다음을 수행하십시오.
- 전체 데이터 세트(예: 모든 제품 또는 모든 고객)를 캐싱하는 것이 필수적입니다.
- SQL 쿼리는 관련 데이터가 모두 캐시에 있는 경우에만 정확한 결과를 반환할 수 있습니다.
- 데이터 세트의 일부만 캐시된 경우 SQL 쿼리를 실행하면 불완전하거나 잘못된 결과가 나올 수 있습니다.
전체 데이터 세트를 캐싱함으로써 애플리케이션은 이를 최대한 활용할 수 있습니다. NCache메모리 내 쿼리 기능검색된 데이터의 일관성과 정확성을 보장합니다.
최신 SQL 기능 NCache
NCache 최근 릴리스에서는 효율성을 개선하기 위해 여러 가지 새로운 SQL 유사 개선 사항이 도입되었습니다.
SQL 와일드카드 사용 NCache
SQL 와일드카드 in NCache 보다 유연한 검색을 허용합니다. LIKE 연산자.
|
1 2 3 4 5 6 |
// Define query with LIKE operator and wildcard placeholder string query = "SELECT * FROM FQN.Product WHERE ProductName LIKE ?"; // Use '*' wildcard to match zero or more characters var queryCommand = new QueryCommand(query); queryCommand.Parameters.Add("ProductName", "Cha*" ); ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand); |
* 와일드카드는 0개 이상의 문자를 나타내며, "Chair", "Charger" 등과 일치하는 "Cha*"와 같은 검색을 가능하게 합니다.
SQL 집계 함수 사용 NCache
SUM, COUNT, AVG, MIN 및 MAX를 지원합니다. 집계 함수 이제 개선된 인덱싱 시스템으로 더욱 빠르게 실행하세요.
|
1 2 3 |
string query = "SELECT COUNT(*) FROM FQN.Products WHERE UnitPrice > 5"; var queryCommand = new QueryCommand(query); ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand); |
SQL GROUP BY 사용 NCache
The GROUP BY 이 절은 쿼리 결과를 더 잘 구성할 수 있도록 해줍니다.
|
1 2 3 4 |
// Group products by Category and count items per group string query = "SELECT Category, COUNT(*) FROM FQN.Products WHERE UnitPrice > 5 GROUP BY Category"; var queryCommand = new QueryCommand(query); ICacheReader reader = cache.SearchService.ExecuteReader(queryCommand); |
NCache .NET 8 애플리케이션의 SQL 쿼리에 이상적입니다.
최신 기능을 활용하여 NCache, .NET 애플리케이션은 성능을 희생하지 않고도 SQL 쿼리를 효율적으로 처리할 수 있습니다. 그 이유는 다음과 같습니다.
- .NET 8과의 원활한 통합: .NET 8 및 Entity Framework 핵심 캐싱이제 개발자는 분산 캐싱을 최신 애플리케이션과 손쉽게 통합할 수 있습니다.
- 추가 코드 필요 없음: 새로운 LINQ 기반 쿼리 지원을 통해 개발자는 익숙한 LINQ 구문을 사용하여 캐시 쿼리를 실행할 수 있습니다.
- 최적화된 쿼리 성능: 업데이트 색인 엔진은 쿼리 실행 시간을 줄여서 검색 작업을 거의 즉각적으로 수행할 수 있도록 해줍니다.
- 더 낮은 대역폭 비용: 데이터베이스 쿼리가 적으면 애플리케이션이 네트워크 대역폭을 덜 사용하게 되어 전반적인 효율성이 향상됩니다.
- 참조 데이터에 대한 자동 동기화: 캐시에 저장된 참조 데이터는 최소한의 유지 관리 작업으로 동기화 상태를 유지합니다.
미리 정의된 인덱스: 필수 NCache 검색어
사전 정의된 인덱스 없이 쿼리를 실행할 수 있는 기존 데이터베이스와 달리 NCache 정의가 필요합니다 색인 사전에 고속 쿼리를 활성화합니다. 이렇게 하면 관련 데이터 세트만 검색되어 쿼리 실행 시간이 향상됩니다.
맺음말
SQL 쿼리 기능을 캐시에 직접 통합하여 NCache .NET 애플리케이션에서 데이터 처리를 혁신합니다. 향상된 쿼리 실행을 통해 LINQ 지원, 자동 동기화 기능 및 최적화된 인덱싱을 통해 개발자는 이제 데이터베이스 호출에 크게 의존하지 않고도 최대 성능을 달성할 수 있습니다. 인프라 비용을 절감하는 동시에 .NET 애플리케이션의 성능을 향상시키려는 경우, NCache 이상적인 분산 캐싱 솔루션을 제공합니다.
둘러보기 NCache 오늘 분산 캐싱에서 고성능 SQL 쿼리의 힘을 경험해보세요!
자주 묻는 질문 (FAQ)
질문: 데이터베이스 없이 분산 캐시에서 SQL 쿼리를 직접 실행할 수 있습니까?
A : 그렇습니다. NCache 데이터베이스를 완전히 우회하여 메모리 내 데이터에서 SQL과 유사한 쿼리를 직접 실행할 수 있도록 지원함으로써 성능을 향상시킵니다.
Q : 않습니다 NCache LINQ 쿼리를 지원합니까?
A : 그렇습니다. NCache LINQ를 완벽하게 지원하므로 개발자는 새로운 쿼리 언어를 배우지 않고도 표준 .NET 구문을 사용하여 캐시를 쿼리할 수 있습니다.
질문: 캐시를 쿼리하는 것이 데이터베이스를 쿼리하는 것에 비해 성능을 어떻게 향상시키나요?
A: 캐시를 조회하면 백엔드 데이터베이스로의 비용이 많이 드는 네트워크 트래픽을 줄일 수 있습니다. NCache 메모리에 상주하며 선형적으로 확장되므로 디스크 기반 데이터베이스보다 지연 시간이 짧고 초당 수천 건의 쿼리를 처리할 수 있어 트래픽이 많은 시간대에 성능 병목 현상을 방지합니다.
질문: 인덱스를 정의해야 하는 이유는 무엇입니까? NCache 쿼리?
테이블 전체를 스캔할 수 있는 표준 데이터베이스와는 달리, NCache 분산 노드에서 쿼리가 마이크로초 단위로 실행되도록 하려면 사전 정의된 인덱스가 필요합니다.






