Which Index to use when
ArangoDB는 각 컬렉션의 _key 속성을 자동으로 인덱싱합니다. 이 속성을 별도로 색인 할 필요는 없습니다. 문서의 _id 속성은 _key 속성에서 파생되므로 암시적으로 인덱싱됩니다.
또한 ArangoDB는 모든 에지 콜렉션에서 _from 및 _to에 대한 색인을 자동으로 작성하므로 들어오는 edge와 나가는 edge를 효율적으로 결정할 수 있습니다.
Index types
사용자는 하나 이상의 문서 속성에 추가 색인을 정의 할 수 있습니다. ArangoDB는 여러 가지 인덱스 유형을 제공합니다. 이러한 인덱스의 사용 시나리오는 다음과 같습니다.
- hash index : 검색어에 모든 색인된 속성이 제공되는 경우에만 개별 문서에 빠르게 액세스 할 수 있습니다. 색인은 동등한 비교에만 사용됩니다. 범위 쿼리를 지원하지 않으므로 정렬에 사용할 수 없습니다.인덱스 된 속성의 모든 또는 대부분의 쿼리가 동등한 비교인 경우 해시 인덱스가 좋은 후보가됩니다. unique 해시 인덱스는 삽입, 업데이트, 제거 및 검색 작업을 위해 O (1)의 amortized 시간복잡성을 제공합니다. 고유하지 않은 해시 인덱스는 O (1) 삽입, 업데이트 및 제거 기능을 제공하며 amortized O (n) 복잡도의 인덱스 값으로 문서를 조회 할 수 있습니다. n은 해당 인덱스 값이 있는 문서 수입니다.색인 속성이 설정되지 않은 문서를 색인하지 않도록 선택적 문서 속성의 고유하지 않은 해시 색인을 sparse로 선언해야합니다.
- skiplist index : skiplists는 인덱스 된 값을 순서대로 유지하므로 동등성 검색, 범위 쿼리 및 정렬에 사용할 수 있습니다. 자주 선택되는 속성의 경우 skiplist 인덱스는 해시 인덱스보다 오버 헤드가 높습니다. 자주 선택되지 않는 속성의 경우 skiplist 인덱스는 고유하지 않은 해시 인덱스보다 더 효율적입니다.또한 skiplist 인덱스는 해시 인덱스보다 더 많은 사용 사례 (예 : 범위 쿼리, 정렬)를 허용합니다. 또한 색인 속성의 가장 왼쪽 접두어를 기반으로 한 조회에 사용할 수 있습니다.
- 영구 색인 : 영구 색인은 정렬 된 skiplist 색인과 매우 유사하게 작동합니다. 단, 모든 색인 값은 디스크에 유지되므로 서버를 다시 시작하거나 색인 생성 된 모음을 다시 로드 할 때 메모리에서 다시 작성할 필요가 없습니다. 영속 인덱스의 연산은 로그 복잡성을 갖지만 인덱스를 사용하여 문서를 검색하기 위한 primary 인덱스에 추가 왕복이 필요할 수 있으므로 작업에 skiplist 인덱스의 연산보다 더 높은 상수 계수의 시간이 걸릴 수 있습니다.동등한 검색, 범위 쿼리 및 정렬을 위해 영구 인덱스를 사용할 수 있습니다. 자주 사용되는 속성의 경우, 영구색인은 skiplist 또는 해시 인덱스보다 높은 오버 헤드를 갖습니다.영구 인덱스는 해시 인덱스보다 더 많은 유스 케이스 (예 : 범위 쿼리, 정렬)를 허용합니다. 또한 색인 속성의 가장 왼쪽 접두어를 기반으로 한 조회에 사용할 수 있습니다. 메모리 내 skiplist 인덱스와 달리 영구 인덱스는 메모리 내에서 다시 빌드 할 필요가 없으므로 다른 메모리 내 인덱스처럼 컬렉션의로드 시간에 영향을 미치지 않습니다.
EmoticonEmoticon