반응형
몽고디비에서 index란 컬렉션에서 쿼리 속도의 향상을 위해 사용된다.
인덱스는 컬렉션의 도큐먼트를 검색할 때, 더 빠른 속도로 도큐먼트를 가져올 수 있다.
인덱스는 하나 이상의 필드로 구성되며 필드의 값을 이용하여 인덱싱 된다.
- 단일필드 인덱스: 오직 하나의 필드로 구성된 인덱스
- 복합필드 인덱스: 두 개 이상의 필드로 구성된 인덱스
- 텍스트 인덱스: 문자열 대상으로 검색 기능을 제공하는 인덱스
- 지리 인덱스: 지리 정보를 대상으로 검색 기능을 제공하는 인덱스
- 해시 인덱스: 해시 함수를 이용하여 값을 저장하는 인덱스
몽고디비 index를 설정하기 위해 Java DTO 클래스에서는 @TextIndexed, @Indexed, @CompoundIndex와 같은 애너테이션을 사용합니다.
- @TextIndexed: 몽고디비 full-text search를 위한 인덱스를 생성합니다.
- @Indexed: 정규 인덱스를 생성합니다. (ex: { age: 1 })
- @CompoundIndex: 여러 개의 필드를 기준으로 인덱스를 생성할 수 있습니다. (ex: { name: 1, age: -1 })
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
@Document
public class MyModel {
@Indexed(name = "age_index", direction = IndexDirection.ASCENDING, unique = true)
private int age;
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
- name: 인덱스의 이름
- direction: 인덱스 정렬 방법, (IndexDirection.ASCENDING, IndexDirection.DESCENDING)
- unique: 중복 데이터 허용 여부
반응형