연속 쿼리 개요
NCache 관찰 가능한 데이터 세트와 관련된 데이터의 런타임 모니터링 및 공유를 위한 연속 쿼리를 제공합니다. 이를 통해 애플리케이션은 캐시의 쿼리 결과 집합 내에서 발생하는 모든 변경 사항에 대한 알림을 받을 수 있습니다.
예를 들어, 증권 거래소 웹 애플리케이션에는 자신이 주식을 보유하고 있는 회사의 주식 가치에 관심이 있는 많은 클라이언트가 있습니다. 이러한 애플리케이션은 모든 회사의 주식 가치가 빠르게 변하기 때문에 뷰의 매우 빈번한 변화를 반영해야 합니다. 여기에서는 모든 회사의 주식 가치를 표시하는 대신 클라이언트가 관심 있는 특정 회사에 대해서만 캐시를 쿼리할 수 있으므로 연속 쿼리가 유용합니다. 따라서 결과 집합이 수정될 때마다 클라이언트에게 알림이 전송됩니다. 그것과 클라이언트 보기는 최신 주식 가치로 업데이트됩니다.
이벤트 유형
쿼리 결과 집합의 변경 사항은 다음 작업을 통해 트리거될 수 있습니다.
추가: 캐시에 항목을 추가하거나 기존 항목을 업데이트하면 모든 쿼리에 항목을 추가할 수 있습니다.
업데이트: 기존 캐시 항목을 업데이트하지만 쿼리 결과 집합에는 남아 있습니다.
제거: 캐시에서 항목을 제거하거나 쿼리 결과 집합에서 항목이 제거되도록 기존 캐시된 항목을 업데이트합니다. 만료, 제거, 종속성 변경 또는 명시적인 API 제거로 인해 항목이 제거될 수도 있습니다.
캐시에 쿼리에 대한 결과 집합이 있다고 가정해 보겠습니다. "SELECT * FROM FQN.Product WHERE Category = 'Beverages'"
.
"Key1"은 다음에 대한 캐시에 존재합니다. 프로덕트 클래스 개체:
var product = new Product
{
ProductID = 1001,
ProductName = "Coffee",
UnitsAvailable = 55,
Category = "Food Items"
};
이 항목은 캐시에 있지만 기준과 일치하지 않아 아직 결과 집합에는 없습니다. 따라서 이제 개체가 업데이트되고 범주 로 변경됩니다 "음료수". 이는 기준을 충족하고 이제 결과 집합에 추가됨을 의미합니다. 이것은 방아쇠를 당길 것이다
ItemAdded
이벤트 유형.
이제 개체가 업데이트되어 상품명 가치 "커피" 에 "아이스 커피". 이는 기준이 영향을 받지 않도록 객체가 수정되었음을 의미합니다. 따라서 결과 세트에 남아 있으며
ItemUpdated
이벤트 유형.
이제 개체가 다시 업데이트되고 범주 값이 다음에서 변경됩니다. "음료수" 에 "차가운 음료수". 이는 쿼리 기준이 더 이상 충족되지 않음을 반영하므로 "Key1"은 결과 집합에서는 제거되지만 캐시에서는 제거되지 않습니다. 이는
ItemRemoved
이벤트 유형.
이벤트 데이터 필터
이벤트 데이터 필터 이벤트 실행 시 반환되는 정보의 양을 수량화하기 위해 지정됩니다. 등록된 이벤트는 이러한 데이터 필터를 기반으로 정보를 사용자에게 제공합니다.
없음
이 필터는 이벤트 알림에서 작업의 영향을 받는 키만 반환합니다. 이것은 애플리케이션이 어떤 키가 영향을 받았는지 아는 데만 관심이 있는 경우에 사용됩니다. 예를 들어 전자 상거래 사이트는 값 자체가 아니라 추가된 제품 키를 알고 싶어합니다.
메타 데이터
이 필터를 사용하면 해당 캐시 항목 메타데이터와 함께 영향을 받는 키가 이벤트 알림에 반환됩니다. 반환되는 메타데이터에는 그룹, 캐시 항목 우선 순위 및 항목과 관련된 만료 값이 포함됩니다. 예를 들어, 애플리케이션은 캐시에서 제거된 키와 해당 키가 속한 그룹을 알고 싶어합니다.
데이터와메타데이터
이 필터는 캐시된 항목 및 관련 메타데이터와 함께 키를 반환합니다. 이는 은행 애플리케이션에서 어떤 고객 정보가 수정되었는지 알아야 하는 경우에 사용할 수 있습니다. 따라서 이 필터를 사용하여 항목 업데이트 작업에 대한 알림을 등록할 수 있으므로 이벤트가 발생하면 항목 키와 수정된 항목도 사용자에게 반환됩니다. 이 필터를 사용하면 항목을 다시 가져오는 번거로움이 줄어듭니다. Get
API. 그러나 이 필터는 네트워크 비용이 많이 드는 여행이므로 필요한 경우 사용해야 합니다.
경고
EventDataFilter
불필요한 네트워크 대역폭 소비를 피하기 위해 신중하게 설정해야 합니다.
이식 가능한 데이터 구조를 위한 데이터 공유
.NET 및 Java 클라이언트가 있는 응용 프로그램이 있을 수 있습니다. 활성화하여 데이터 공유 클러스터형 캐시의 기능을 사용하면 동일한 쿼리를 사용하더라도 두 클라이언트에 대해 동일한 개체를 인덱싱할 수 있습니다. 등록된 쿼리 결과 집합에서 두 클라이언트가 추가, 업데이트 또는 제거한 캐시 항목에 대해 Java 또는 .NET에 관계없이 알림이 각 클라이언트에 전송됩니다.
운영 비용
연속 쿼리는 운영 데이터가 크게 변화하는 실시간 애플리케이션을 구축하는 데 매우 유용하지만, 리소스를 소비하는 클라이언트를 모니터링하고 알리려면 몇 가지 추가 처리가 필요합니다. 이 프로세스는 비동기식이므로 캐시 클라이언트는 영향을 받지 않습니다. 따라서 이 기능을 효율적으로 사용하려면 애플리케이션에서 쿼리 결과 집합을 추적할 필요가 없는 경우 알림 등록을 취소하고 캐시에서 쿼리 등록도 취소하세요.