• Facebook
  • 트위터
  • 유튜브
  • 라인드인
  • RSS
  • 기술 문서
  • 비교
  • 블로그
  • 다운로드
  • 문의하기
다운로드
목차 표시/숨기기

프로그래밍 방식으로 SQL 인덱스 정의

NCache 데이터베이스에서 사용하는 것과 유사한 SQL 쿼리를 사용하여 캐시를 조회할 수 있습니다. 하지만 데이터베이스와 달리 검색 가능한 모든 객체와 해당 필드는 조회하기 전에 인덱싱되어야 합니다. 이를 지원하기 위해, NCache 개발자가 SQL 인덱스를 프로그래밍 방식으로 쉽게 정의할 수 있도록 지원합니다. 모든 공용, 개인 및 보호된 기본 필드와 속성에 인덱스를 생성할 수 있습니다. 자세한 내용은 다음을 참조하세요. NCache 지원되는 데이터 유형 자세한 내용은.

팁

또는 다음을 통해 SQL 인덱스를 구성할 수 있습니다. NCache 관리 센터 or PowerShell을.

주의 사항

참조 유형 필드 색인이 생성됩니다.

사전 조건

사용하기 전에 NCache 클라이언트 측 API를 사용할 때 다음 전제 조건을 충족하는지 확인하십시오.

  • . NET
  • 자바
  • .NET 클라이언트 애플리케이션에 다음 NuGet 패키지를 설치하세요.
    • 기업: Alachisoft.NCache.SDK
    • 오픈 소스: Alachisoft.NCache오픈소스 SDK
  • 애플리케이션에 다음 네임스페이스를 포함합니다.
    • Alachisoft.NCache.고객
    • Alachisoft.NCache.런타임.예외
    • Alachisoft.NCache.클라이언트.서비스
    • Alachisoft.NCache.런타임.캐싱
  • 추가되는 데이터가 직렬화 가능.
  • 검색 가능한 개체 및 해당 속성은 다음 중 하나에 의해 색인화되어야 합니다. 인덱스 구성 or 프로그래밍 방식으로 인덱스 정의.
  • API 세부 정보는 다음을 참조하세요. QueryIndexed속성, NonQueryIndexed속성, 쿼리인덱싱 가능.
  • Java 클라이언트 애플리케이션에 대해 다음 Maven 종속성을 추가합니다. pom.xml 파일 :
<dependency>
    <groupId>com.alachisoft.ncache</groupId>
    <!--for NCache Enterprise-->
    <artifactId>ncache-client</artifactId>
    <version>x.x.x</version>
</dependency>
  • Java 클라이언트 애플리케이션에서 다음 패키지를 가져옵니다.
    • import **클라이언트 이름**
    • import com.alachisoft.ncache.런타임.예외.*;
    • import 영어: com.alachisoft.ncache.runtime.caching.*;
  • 추가되는 데이터가 직렬화 가능.
  • 검색 가능한 개체 및 해당 속성은 다음 중 하나에 의해 색인화되어야 합니다. 인덱스 구성 or 프로그래밍 방식으로 인덱스 정의.
  • API 세부 정보는 다음을 참조하세요. 쿼리인덱싱 가능, 비쿼리인덱싱됨, 쿼리인덱싱됨.

NCache 다양한 접근 방식을 통해 인덱스를 생성할 수 있는 유연성을 제공합니다. 필요에 따라 선택 필드 또는 전체 클래스에 대한 색인을 생성할 수 있습니다. 한편, 클래스가 색인화될 때 특정 필드가 색인화에서 제외될 수 있습니다. 또한 다국어 클라이언트에 대한 색인 지원도 제공됩니다. 구체적으로, NCache 프로그래밍 방식으로 인덱스를 정의하기 위한 다음과 같은 사용자 정의 필드가 있습니다.

  1. QueryIndexed: 선택 필드를 인덱싱하는 데 사용됩니다.

  2. QueryIndexed("indexName"): 사용자가 제공한 인덱스 이름에 대해 필드를 인덱싱하는 데 사용됩니다.

  3. QueryIndexable: 전체 클래스를 인덱싱하는 데 사용됩니다.

  4. NonQueryIndexed: 클래스를 인덱싱할 때 인덱싱에서 필드를 제외하기 위해 사용됩니다.

중대한

인덱싱에는 메모리 및 성능 오버헤드가 있으므로 불필요한 필드를 인덱싱하지 않는 것이 좋습니다.

여기서는 인덱스를 생성하는 다양한 접근 방식에 대해 논의합니다. NCache 이러한 필드를 사용합니다.

선택적 인덱싱

다음을 사용하여 클래스의 특정 속성 또는 필드에 대한 인덱스를 만들 수 있습니다. QueryIndexed 속성입니다. 이 속성은 기본 속성 또는 필드 수준에서 적용되어 표시된 멤버가 인덱싱되어야 함을 나타냅니다. 주석이 달린 모든 속성 또는 필드는 자동으로 인덱싱됩니다. NCache.

주의 사항

항상 사용 QueryIndexed 클래스의 속성이나 필드 중 일부만 인덱싱해야 하는 경우, 성능과 메모리 비용을 절약할 수 있으므로 이 방법을 사용합니다.

이 방법은 클래스의 속성이나 필드 중 일부만 인덱싱해야 할 때 이상적입니다. 사용자가 원하는 멤버만 선택적으로 인덱싱할 수 있는 유연성을 제공합니다.

경고

참조 필드를 다음과 같이 명시적으로 표시하는 경우 QueryIndexed, "인덱스가 지원되지 않습니다. <Ref Type Name>". 인덱스는 단지 값 유형에서 지원됨.

다음 예는 다음을 사용하여 선택 필드를 인덱싱하는 방법을 보여줍니다. QueryIndexed 클래스 전체에 인덱싱하지 않고. NCache 필드에 대한 인덱스를 자동으로 생성합니다. ID 이름 로 작성되어야 합니다.

  • . NET
  • 자바
public class Product
{
    [QueryIndexed]
    public int ID { get; set} // explicitly indexed

    [QueryIndexed]
    public string Name { get; set} // explicitly indexed

    public Decimal UnitPrice { get; set } // will not be indexed

    public Customer Customer { get; set; } // will not be indexed
}
public class Product
{
    @QueryIndexed
    public int id; // explicitly indexed

    @QueryIndexed
    public String name; // explicitly indexed

    public double unitPrice; // will not be indexed

    public Customer customer; // will not be indexed
}
주의 사항

작업이 안전하도록 하려면 에 설명된 대로 응용 프로그램 내에서 잠재적인 예외를 처리하는 것이 좋습니다. 처리 실패.

위 예시에서 인덱스 이름은 필드 이름과 동일한데, 이는 해당 기능을 사용할 때의 기본 동작이기 때문입니다. QueryIndexed 선택적 인덱싱을 위한 속성입니다. 하지만, NCache 를 통해 인덱싱할 필드 또는 속성에 대한 사용자 지정 이름을 정의할 수 있습니다. QueryIndexed ("indexName") 어노테이션을 사용하면 생성자에서 사용자가 지정한 이름이 인덱스 생성 시 사용됩니다.

이 기능은 필드 이름이 다를 수 있는 여러 언어로 애플리케이션을 개발할 때 특히 유용합니다. 예를 들어, 전자상거래 애플리케이션에는 .NET 및 Java 클라이언트가 있는데, .NET 클라이언트에서 필드 이름이 다를 수 있습니다. 프로덕트 클래스 단가, Java 클라이언트는 다음과 같은 필드 이름을 지정합니다. 단위 당 가격. 이 필드를 인덱싱하려면 다음을 사용하여 .NET과 Java 모두에서 사용자 정의 이름을 지정할 수 있습니다. QueryIndexed("price") 기인하다. 표시된 필드는 이름으로 인덱싱됩니다. 가격 모든 클라이언트를 위해. 이제 다른 클라이언트가 다음을 사용하여 쿼리를 수행할 수 있습니다. 가격 WHERE 절 또는 프로젝션으로.

경고

필드가 다음을 사용하여 인덱싱되는 경우 QueryIndexed("indexName")필드 이름을 기준으로 데이터를 조회하면 "필드 이름에 대한 인덱스가 정의되지 않았습니다."라는 예외가 발생합니다.

다음 예제는 선택한 인덱스 이름을 사용하여 클래스의 선택적 필드를 인덱싱하는 방법을 보여줍니다.

  • . NET
  • 자바
public class Product
{
    [QueryIndexed]
    public int ID { get; set} // explicitly indexed with index name ID

    [QueryIndexed]
    public string Name { get; set} // explicitly indexed with index name

    [QueryIndexed("price")]
    public Decimal UnitPrice { get; set } // explicitly indexed 

    public Customer Customer { get; set; } // will not be indexed
}
public class Product
{
    @QueryIndexed
    public int id; // explicitly indexed with index name ID

    @QueryIndexed
    public String name; // explicitly indexed with index name

    @QueryIndexed("price")
    public double unitPrice; // explicitly indexed 

    public Customer customer; // will not be indexed
}

클래스 인덱싱

속성을 사용하여 클래스를 인덱싱할 수 있습니다. QueryIndexable. 전체 클래스를 인덱싱할 수 있음을 나타내기 위해 클래스 수준에서 정의됩니다. 클래스를 다음으로 표시하면 QueryIndexable모든 공개 속성과 필드는 자동으로 인덱싱됩니다. 클래스에 인덱싱이 필요한 비공개 필드가 있는 경우 해당 멤버에 명시적으로 `private` 태그를 지정해야 합니다. QueryIndexed 속성을 사용하지 않는 것입니다.

이 방법은 클래스의 모든 속성이나 필드 또는 대부분의 속성에 대한 인덱스를 조회하려는 경우에만 사용해야 합니다. 그렇지 않은 경우에는 불필요한 속성까지 인덱싱될 가능성이 있으므로 권장하지 않습니다. 결국 이는 인덱싱에 따른 메모리 및 성능 오버헤드로 인해 애플리케이션 성능을 저하시킬 수 있습니다.

경고
  • 사용하지 않는 것이 좋습니다 QueryIndexable 인덱싱에는 메모리 및 성능 비용이 발생하므로, 모든 속성이나 필드 또는 대부분의 속성이나 필드에 인덱싱이 필요한 경우가 아니라면 인덱싱을 수행하지 않는 것이 좋습니다.
  • 수업을 다음으로 표시 QueryIndexable private 필드는 자동으로 인덱싱되지 않습니다. private 필드 또는 속성을 인덱싱하려면 명시적으로 표시해야 합니다. QueryIndexed.

다음 예제는 클래스의 필드에 인덱싱하는 방법을 보여줍니다. 프로덕트 를 사용하여 QueryIndexable 속성. 이 접근 방식을 사용하면 자동으로 인덱싱됩니다. ID, 이름예산 및 단가 필드. 카테고리 필드는 명시적으로 표시되어 있습니다. QueryIndexed 비공개이기 때문에. 인덱싱 빠른 객체를 가리키는 참조 필드이므로 무시됩니다. 빠른 수업, 그리고 NCache 참조 필드 인덱싱을 지원하지 않습니다.

  • . NET
  • 자바
[QueryIndexable]
public class Product
{
    public int ID { get; set} // auto index

    public string Name { get; set} // auto index

    public Decimal UnitPrice { get; set } // auto index

    [QueryIndexed]
    private string Category { get; set } // explicitly marked for indexing

    public Customer Customer { get; set; } // will not be indexed
}
@QueryIndexable
public class Product
{
    public int id; // auto index

    public String name; // auto index

    public double unitPrice; // auto index

    @QueryIndexed
    private String category; // explicitly marked for indexing

    public Customer customer; // will not be indexed
}

인덱싱에서 필드 제외

당신은을 사용할 수 있습니다 NonQueryIndexed 클래스가 인덱싱될 때 필수가 아닌 속성이나 필드가 인덱싱되는 것을 방지하는 속성입니다. NonQueryIndexed 클래스 자체가 QueryIndexable. 모든 공용 속성 및 필드는 자동으로 인덱싱됩니다. 로 표시된 필드는 NonQueryIndexed 속성은 인덱싱에서 제외됩니다. 당신은 조합을 사용할 수 있습니다 QueryIndexable NonQueryIndexed 대부분의 속성에 인덱싱이 필요하지만, 몇몇 속성에는 필요하지 않은 경우입니다.

다음 예는 필드를 제외하는 방법을 보여줍니다. 단가 로 명시적으로 표시하여 인덱싱에서 NonQueryIndexed 클래스 자체가 인덱싱될 때. 이것은 주석이 달린 필드의 인덱싱을 무시합니다.

  • . NET
  • 자바
[QueryIndexable]
public class Product
{
    public int ID { get; set} // auto index

    public string Name { get; set} // auto index

    [NonQueryIndexed]
    public Decimal UnitPrice { get; set } // will not be indexed

    public Customer Customer { get; set; } // will not be indexed
}
@QueryIndexable
public class Product
{
    public int id; // auto indexed

    public String name; // auto indexed

    @NonQueryIndexed
    public double unitPrice; // will not be indexed

    public Customer customer; // will not be indexed
}
주의 사항

NCache 이를 통해 인덱스 생성과 관련된 오류를 억제할 수 있습니다. NCacheServer.SuppressIndexNotDefinedException ~에있는 태그 NCache 서비스 구성 파일.

추가 자료

NCache SQL 쿼리에 대한 샘플 애플리케이션을 제공합니다. GitHub의.

도 참조

.그물: Alachisoft.NCache.고객 네임 스페이스.
자바 : com.alachisoft.ncache.client 네임 스페이스.

문의하기

전화

+1 214-619-2601   (미국)

+44 20 7993 8327   (UK)

 
이메일

sales@alachisoft.com

support@alachisoft.com

NCache
  • 판 비교
  • NCache 아키텍처
  • 벤치 마크
다운로드
가격
놀이터를 사용해보십시오

배포
  • 클라우드(SaaS 및 소프트웨어)
  • 온 프레미스
  • Kubernetes
  • 도커
기술 사용 사례
  • ASP.NET 세션
  • ASP.NET 코어 세션
  • 게시/구독 메시징
  • 실시간 ASP.NET SignalR
  • 사물의 인터넷 IOT ()
  • NoSQL 데이터베이스
  • 스트림 처리
  • 마이크로 서비스
리소스
  • 잡지 기사
  • 제XNUMX자 기사
  • 기사
  • 비디오
  • 백서
  • 쇼
  • 회담
  • 블로그
  • 기술 문서
고객 사례 연구
  • 환자 후기
  • 고객
고객 지원
  • 데모 예약
  • 포럼(Google 그룹스)
  • Tips
회사
  • Leadership
  • 파트너
  • ​뉴스
  • 이벤트
  • 채용 정보
문의하기

  • 영어중국어 (간체)프랑스어독일 사람이탈리아 사람일본제한국어포르투갈어스페인어

  • 문의하기
  •  
  • 사이트 맵
  •  
  • 이용 약관
  •  
  • 개인정보 처리방침
© 저작권 Alachisoft 2002 - . 판권 소유. NCache 는 Diyatech Corp.의 등록상표입니다.
맨 위로