OrientDB-인덱스

Index 데이터베이스에서 데이터의 위치를 ​​가리키는 포인터입니다. Indexing데이터베이스의 모든 레코드를 검색하지 않고도 데이터를 빠르게 찾는 데 사용되는 개념입니다. OrientDB는 4 개의 인덱스 알고리즘과 각각의 여러 유형을 지원합니다.

네 가지 유형의 인덱스는-

SB- 트리 인덱스

다른 인덱스 유형에서 사용할 수있는 다양한 기능을 제공합니다. 일반적인 유틸리티에 이것을 사용하는 것이 좋습니다. 내구성이 있고 트랜잭션이 가능하며 범위 쿼리를 지원합니다. 기본 색인 유형입니다. 이 알고리즘을 지원하는 다른 유형의 플러그인은 다음과 같습니다.

  • UNIQUE−이 인덱스는 중복 키를 허용하지 않습니다. 복합 색인의 경우 이는 복합 키의 고유성을 나타냅니다.

  • NOTUNIQUE −이 색인은 중복 키를 허용합니다.

  • FULLTEXT−이 색인은 텍스트의 단일 단어를 기반으로합니다. 다음을 통해 쿼리에서 사용할 수 있습니다.CONTAINSTEXT 운영자.

  • DICTIONARY − 이러한 인덱스는 UNIQUE를 사용하는 인덱스와 유사하지만 중복 키의 경우 기존 레코드를 새 레코드로 대체합니다.

해시 인덱스

성능이 더 빠르고 디스크 사용량이 매우 적습니다. 내구성이 있고 트랜잭션이 가능하지만 범위 쿼리를 지원하지 않습니다. HASHMAP처럼 작동하므로 정확한 조회가 빨라지고 다른 인덱스 유형보다 리소스를 적게 소비합니다. 이 알고리즘을 지원하는 다른 유형의 플러그인은 다음과 같습니다.

  • UNIQUE_HASH_INDEX−이 인덱스는 중복 키를 허용하지 않습니다. 복합 색인의 경우 이는 복합 키의 고유성을 나타냅니다.

  • NOTUNIQUE_HASH_INDEX −이 색인은 중복 키를 허용합니다.

  • FULLTEXT_HASH_INDEX−이 색인은 텍스트의 단일 단어를 기반으로합니다. CONTAINSTEXT 연산자를 통해 쿼리에서 사용할 수 있습니다.

  • DICTIONARY_HASH_INDEX −이 인덱스는 사용하는 인덱스와 유사합니다. UNIQUE_HASH_INDEX그러나 중복 키의 경우 기존 레코드를 새 레코드로 바꿉니다.

Lucene 전체 텍스트 색인

좋은 전체 텍스트 인덱스를 제공하지만 다른 유형을 인덱싱하는 데 사용할 수 없습니다. 내구성 있고 트랜잭션 가능하며 범위 쿼리를 지원합니다.

Lucene 공간 색인

좋은 공간 인덱스를 제공하지만 다른 유형을 인덱싱하는 데 사용할 수 없습니다. 내구성 있고 트랜잭션 가능하며 범위 쿼리를 지원합니다.

인덱스 생성

인덱스 생성은 특정 스키마에 인덱스를 생성하는 명령입니다.

다음 문은 인덱스를 생성하는 기본 구문입니다.

CREATE INDEX <name> [ON <class-name> (prop-names)] <type> [<key-type>] 
[METADATA {<metadata>}]

다음은 위 구문의 옵션에 대한 세부 정보입니다.

<name>− 인덱스의 논리적 이름을 정의합니다. <class.property> 표기법을 사용하여 스키마 속성에 바인딩 된 자동 인덱스를 만들 수도 있습니다. <class>는 스키마의 클래스를 사용하고 <property>는 클래스에서 생성 된 속성을 사용합니다.

<class-name>− 색인을 생성 할 자동 색인을 생성하는 클래스의 이름을 제공합니다. 이 클래스는 데이터베이스에 있어야합니다.

<prop-names>− 자동 색인이 인덱싱 할 속성 목록을 제공합니다. 이러한 속성은 스키마에 이미 있어야합니다.

<type> − 생성하고자하는 알고리즘 및 인덱스 유형을 제공합니다.

<key-type> − 자동 인덱스가있는 선택적 키 유형을 제공합니다.

<metadata> − JSON 표현을 제공합니다.

사용자 sales_user의 속성 'ID'에 바인딩 된 자동 인덱스를 만들려면 다음 쿼리를 시도하십시오.

orientdb> CREATE INDEX indexforID ON sales_user (id) UNIQUE

위 쿼리가 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.

Creating index... 
Index created successfully with 4 entries in 0.021000 sec(s)

인덱스 쿼리

선택 쿼리를 사용하여 인덱스의 레코드를 가져올 수 있습니다.

다음 쿼리를 시도하여 'indexforId'라는 인덱스의 키를 검색하십시오.

SELECT FROM INDEX:indexforId

위 쿼리가 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.

----+------+----+----- 
#   |@CLASS|key |rid   
----+------+----+----- 
0   |null  |1   |#11:7 
1   |null  |2   |#11:6 
2   |null  |3   |#11:5 
3   |null  |4   |#11:8 
----+------+----+-----

인덱스 삭제

특정 인덱스를 삭제하려는 경우이 명령을 사용할 수 있습니다. 이 작업은 연결된 레코드를 제거하지 않습니다.

다음 문은 인덱스를 삭제하는 기본 구문입니다.

DROP INDEX <name>

어디 <name> 삭제할 인덱스의 이름을 제공합니다.

사용자 sales_user의 'ID'라는 인덱스를 삭제하려면 다음 쿼리를 시도하십시오.

DROP INDEX sales_users.Id

위 쿼리가 성공적으로 실행되면 다음과 같은 출력이 표시됩니다.

Index dropped successfully