색인
인덱스를 사용하는 목적은 검색을 위해 관련 데이터를 찾는 속도와 성능을 최적화하는 것입니다. 검색을 위해 검색 가능한 모든 속성을 인덱싱해야 합니다. 인덱스가 없으면 검색에서 모든 데이터를 스캔하므로 상당한 시간과 컴퓨팅 성능이 필요합니다. 색인을 저장하는 데 필요한 추가 컴퓨터 저장소와 업데이트가 발생하는 데 필요한 시간의 상당한 증가는 정보 검색 중에 절약된 시간과 상충됩니다.
NCache 내부적으로는 내부 작업 성능을 높이기 위해 다양한 모듈의 인덱싱을 사용합니다.
캐시 검색 색인
NCache 캐시에 대한 쿼리 실행을 향상시키기 위해 캐시 검색 인덱스를 제공합니다. 검색을 위해 수행해야 할 작업은 검색 가능한 모든 속성을 색인화하는 것뿐입니다. NCache 캐시 성능에 영향을 미칠 관련 데이터를 찾기 위해 전체 캐시를 통과해야 하기 때문에 은 캐시에서 인덱싱되지 않은 속성을 검색하지 않습니다.
또한 캐시된 항목의 실제 데이터 유형에 대해 인덱스가 정의됩니다. 인덱싱을 통해, NCache 어떤 종류의 데이터가 저장될지 알고 이를 검색 가능한 방식으로 저장합니다.
NCache 인덱스를 정의하는 두 가지 방법을 제공합니다.
미리 정의된 인덱스(정적 인덱스)
런타임 인덱스(동적 인덱스)
미리 정의된 인덱스(정적 인덱스)
주의 사항
이 기능은 다음에서도 사용할 수 있습니다. NCache Professional.
주의 사항
인덱싱에는 메모리 및 성능 오버헤드가 있으므로 불필요한 필드를 인덱싱하지 않는 것이 좋습니다.
클러스터형 캐시에서 사용자 정의 클래스 개체를 검색하려면 해당 클래스에 대한 쿼리 인덱스를 미리 정의해야 합니다. 이러한 방식으로 캐시는 해당 데이터를 쉽게 쿼리할 수 있는 형식으로 저장합니다. 다음을 통해 인덱스를 정의할 수 있습니다. 구성 프로세스. 공용, 개인 및 보호된 기본 데이터 멤버에 대해 인덱스를 구성할 수 있습니다.
주의 사항
인덱스는 값 유형에서만 지원됩니다. 참조 유형은 인덱싱할 수 없습니다.
캐시 시작 전 구성을 통해 인덱스를 정의할 수 있습니다. 구성을 통해 새 인덱스를 정의하려는 경우 변경 사항을 배포하려면 먼저 캐시를 중지하고 수정 후 다시 시작해야 합니다. 이후에 캐시에 추가된 관련 데이터는 자동으로 인덱싱됩니다. 이 데이터는 나중에 쉽게 쿼리할 수 있습니다.
경고
참조 유형을 인덱싱 가능으로 명시적으로 표시하면 예외가 발생합니다.
런타임 인덱스(동적 인덱스)
애플리케이션에 런타임에 정의되고 사용되는 속성이 있는 경우 런타임 인덱싱을 사용해야 합니다. 예를 들어 판매와 관련된 제품에 일부 계산된 값이 할당될 수 있습니다. 고객이 제품을 구매하면 나중에 캐시된 값을 통해 판매 추세에 대한 일일 보고서를 생성하기 위해 판매 세부 정보가 캐시에 저장됩니다. 이 값은 런타임에 정의되므로 제품의 런타임 속성입니다.
NCache 캐시 클라이언트가 추가한 데이터에 대한 인덱스를 자동으로 생성합니다. 이는 런타임 속성에 인덱스를 사용하기 전에 인덱스를 구성할 필요가 없음을 의미합니다.
프로그래밍 방식으로 인덱스를 정의할 때 클래스 또는 필드는 애플리케이션 코드의 사용자 정의 속성을 사용하여 인덱싱 가능한 것으로 표시될 수 있습니다. 일단 표시되면 모든 기본 속성과 필드가 자동으로 인덱싱됩니다. 모든 필드를 인덱싱할 필요가 없기 때문에 인덱싱에서 제외할 수도 있습니다. 전체 클래스를 인덱싱하는 것 외에도 원하는 필드에 대해서만 인덱스를 선택적으로 정의할 수 있는 유연성이 있습니다.
런타임 인덱스는 다음 유형으로 더 분류될 수 있습니다.
- 그룹 인덱스
- 태그 색인
- 명명된 태그 색인
그룹 인덱스
항목은 다음을 사용하여 캐시에서 분류할 수 있습니다. 그룹. NCache 인덱싱해야 하는 그룹이 있으므로 그룹을 기반으로 캐시의 데이터를 쿼리할 수 있습니다. 캐시에 아직 존재하지 않는 그룹에 데이터가 추가되면 해당 그룹에 대한 새 인덱스가 생성됩니다. 이 그룹에 속한 모든 데이터는 검색을 위해 동일한 인덱스에 할당됩니다.
태그 색인
하나 이상의 식별 표시가 캐시 항목과 연관될 수 있습니다. 이러한 식별 표시를 태그라고 합니다. 태그를 통해 사용자는 키워드를 캐시 항목과 연결할 수 있습니다. 태그를 지정하여 캐시된 항목 모음을 찾아 캐시에서 제거할 수도 있습니다. 태그는 문자열 형식으로만 허용됩니다. 모든 새 태그에 대해 새 태그 항목이 태그 인덱스에 생성되고 관련된 모든 캐시 항목이 해당 인덱스와 연결됩니다.
명명된 태그 색인
태그가 다양한 데이터 유형이나 이름을 가질 수 있고 특정 유형의 태그와 관련된 데이터를 쿼리해야 하는 경우 높은 수준의 태그 지정을 사용해야 하는 경우 명명된 태그를 사용해야 합니다.
"명명된 태그"는 "태그"의 향상된 기능입니다. 명명된 태그를 사용하면 사용자는 문자열로 저장된 객체를 쿼리하는 데 필요한 추가 정보(모든 유형)를 저장할 수 있습니다. 예를 들어 "최고 판매 시간"이라는 이름의 태그는 하루 중 제품 판매가 가장 많을 때 시간 값을 저장할 수 있습니다. 명명된 태그를 사용하면 런타임에 필요한 속성에 따라 데이터를 인덱싱할 수 있습니다. 나중에 명명된 태그를 사용하여 원하는 결과 집합을 가져오는 쿼리를 구성할 수 있습니다. 여러 개의 명명된 태그를 하나의 캐시된 항목과 연결할 수 있으며 그 반대의 경우도 마찬가지입니다.
캐시에 존재하지 않는 명명된 태그를 사용하여 데이터가 추가되면 이 새 명명된 태그에 대해 새 인덱스가 생성됩니다. 관련된 모든 데이터는 검색을 위해 해당 인덱스에 할당됩니다.
태그와 달리 명명된 태그 인덱스는 모든 기본 유형, 문자열 및 날짜 시간에 대해 정의할 수 있습니다. 따라서 다양한 데이터 유형으로 검색 가능한 광범위한 데이터를 추가할 수 있는 유연성이 향상되었습니다.
동일한 캐시를 공유하는 여러 애플리케이션이 있고 이들 모두 명명된 태그를 추가해야 하는 경우 동일한 명명된 태그가 동일한 데이터 유형을 가지고 있는지 확인하세요. 예를 들어 한 클라이언트가 문자열을 사용하여 명명된 태그 "ProductID"를 추가하는 경우 데이터 유형인 경우 다른 모든 클라이언트는 동일한 캐시에 대해 Integer 또는 기타가 아닌 문자열 형식으로 "ProductID" 값을 추가해야 합니다.
퇴거 지수
퇴거는 다음에서 유용한 기능입니다. NCache, 캐시가 가득 차면 들어오는 데이터를 수용하기 위해 기존 데이터를 제거하기로 결정합니다. 이 시나리오에서 제거는 구성된 데이터 비율을 제거하여 캐시 크기 제한을 유지하면서 캐시 작업을 원활하게 할 수 있습니다.
NCache 퇴거에 대한 다양한 정책을 제공합니다. 이러한 정책은 캐시가 가득 차면 제거될 데이터를 결정합니다. NCache 퇴거에 대한 다음 정책을 제공합니다.
- 우선 순위 기반 퇴거
주의 사항
이 기능은 다음에서도 사용할 수 있습니다. NCache Professional.
우선순위 기반 제거의 경우 인덱스는 높은 우선순위에서 낮은 순서로 유지되며, 캐시가 가득 차면 제거 스레드가 우선순위가 낮은 인덱스에서 키를 선택하여 캐시에서 제거합니다.
- 가장 최근에 사용된(LRU)
LRU(Least Recent Used)의 경우 키 사용 시간 동안 축출 인덱스가 유지되며, 캐시가 가득 차면 축출 스레드가 인덱스에서 가장 최근에 사용되지 않은 키를 선택하여 캐시에서 제거합니다.
- 가장 적게 사용됨(LFU)
LFU(최소 자주 사용)의 경우 축출 인덱스는 키 사용 횟수만큼 유지되며, 캐시가 가득 차면 축출 스레드는 인덱스에서 가장 자주 사용되지 않는 키를 선택하여 캐시에서 제거합니다.
주의 사항
Eviction을 수행하기 위해, NCache 제거를 위해 캐시 데이터에 대한 제거 인덱스를 유지합니다.
만료 인덱스
만료는 캐시되는 각 항목에 연결된 속성입니다. 이 속성은 각 캐시 개체에 연결되어 각 캐시 개체의 수명을 평가할 수 있으며, 개체의 이 수명에 따라 만료 시간이 결정됩니다. 해당 만료 개체가 무효화되면 관련 항목이 캐시에서 제거됩니다.
NCache 유지 DateTime
만료 인덱스 만료 시 효율적으로 제거하기 위해 캐시 키에 대해 만료 관리자는 정리 간격 후에 항목을 만료합니다.
청소 간격 만료된 항목이 캐시에서 제거되는 주기적인 간격입니다. 캐시의 정리 간격은 구성 설정에서 변경할 수 있습니다.
정리 간격이 경과한 후 만료 관리자는 인덱스에서 키를 가져오고 만료된 항목은 캐시에서 제거됩니다. 캐시에서 만료된 항목을 제거한 후 만료 스레드는 캐시 구성에 지정된 "정리 간격 기간" 동안 휴면 상태로 유지됩니다. NCache 데이터 무효화 전략에 설명된 두 가지 유형의 만료를 제공합니다.
- 절대 만료
- 슬라이딩 만료