일래스틱서치는 5가지 저장소 타입을 공개하고 있다. 


기본적으로 일래스틱서치는 운영 체제 환경을 기반으로 최상의 구현을 선택한다.



* 첫 번째 방법은 elasticsearch.yml 파일에서 index.store.type 속성을 추가해 모든 인덱스에 설정하는 것이다. 예를 들어 모든 인덱스에 niofs 저장소 타입을 설정하려면 elasticsearch.yml 파일에 다음 라인을 추가 할 수 있다.


index.store.type: niofs 


두 번째 방법은 다음과 같은 커맨드를 사용해 인덱스를 생성할 때 인덱스의 저장소 타입을 설정하는 것이다.


curl -XPUT "http://localhost:9200/index_name" -d' { 

 "settings": { 

 "index.store.type": "niofs" 

 } 

}'





1. simplefs


simplefs는 랜덤 액세스 파일(Java RandomAccessFile-http://docs.oracle.com/javase/8/docs/api/java/io/RandomAccessFile.html)를 사용해 구현된 Directory 클래스 구현을 사용하며 루신의 SimpleFSDirectory (http://lucene.apache.org/core/6_2_0/core/org/apache/lucene/store/SimpleFSDirectory.html)과 매핑된다. 매우 간단한 애플리케이션에서는 simplefs만으로 충분한다. 그러나 simplefs 저장소의 주요 병목은 다중 스레드가 접근할 때이며 이 때 성능이 떨어진다. 


index.store.type을 simplefs로 설정해야 한다.



2. niofs

niofs 저장소 타입은 java.nio 패키지의 FileChannel 클래스 (http://docs.oracle.com/javase/8/docs/api/java/nio/channels/FileChannel.html)를 기반으로하는 Directory 클래스 구현을 사용하며 루신의 NIOFSDirectory (https://lucene.apache.org/core/6_2_0/core/org/apache/lucene/store/NIOFSDirectory.html)과 매핑된다. niofs 저장소 구현은 성능 저하 없이 여러 스레드가 동일한 파일에 동시에 접근할 수 있게 한다. niofs 저장소를 사용하려면 index.store.type을 niofs로 설정해야한다.



3. mmapfs


mmapfs 저장소 타입은 루신의 MMapDirectory (http://lucene.apache.org/core/6_2_0/core/org/apache/lucene/store/MMapDirectory.html) 구현을 사용한다. mmapfs는 읽을 때는 mmap 시스템 호출 (http://en.wikipedia.org/wiki/Mmap)을 사용하고 저장할 때는 랜덤 액세스 파일을 사용한다. mmapfs 저장소는 매핑된 파일의 크기와 동일한 프로세스에서 사용 가능한 가상 메모리 주소 공간의 일부를 사용한다. 잠금 기능이 없으므로 다중 스레드가 접근할 때 확장이 가능하다. 운영 체제의 인덱스 파일을 읽기 위해 mmap을 사용할 때는 이미 캐시된 것처럼 보인다(가상 공간에 매핑되었다). 이 때문에 루신 인덱스에서 파일을 읽을 때 해당 파일을 운영 체제 캐시에 로드할 필요가 없으므로 접근이 더 빠르다. 기본적으로 루신과 일래스틱서치가 I/O 캐시에 직접 접근할 수 있어서 인덱스 파일에 빠르게 접근할 수 있다.


mmap 파일 시스템 저장소는 64비트 환경에서 가장 잘 작동하고 32비트 환경에서는 인덱스가 충분히 작고 가상 주소 공간이 충분하다고 확신할 때만 사용해야 한다. mmapfs 저장소를 사용하려면 index.store.type을 mmapfs로 설정해야 한다.


공부할만한 블로그 


http://blog.thetaphi.de/2012/07/use-lucenes-mmapdirectory-on-64bit.html


http://jprante.github.io/lessons/2012/07/26/Mmap-with-Lucene.html




4. fs

fs 저장소는 기본 파일 시스템 구현이다. fs 저장소가 기본으로 설정되면 일래스틱서치는 운영 체제 환경에 따라 최적의 구현을 선택할 수 있다. 윈도우 32비트에서는 simplefs, 다른 32비트에서는 niofs, 64비트 시스템에서는 mmapfs으로 선택된다.



5. default_fs


일래스틱서치 1.x버전에는 Hybrid(2.x버전에서는 default_fs라고 한다)와 Memory라는 두 가지 다른 저장소 타입이 사용되었다. 일래스틱서치 2.x부터는 Memory 저장소 타입이 제거되었다. 일래스틱서치 5.0 버전부터는 default_fs 저장소 타입이 더 이상 사용되지 않을 것이고 표시하고 있다. 이제 default_fs는 이전 버전과의 호환성을 위해 내부적으로 fs 타입을 지정하도록 되어 있고 조만간에 제거될 것이다.



Posted by '김용환'
,