디지털 라이브러리[ 검색결과 ]
NVMe-oF를 이용한 LSM-트리 기반 분산 키-값 스토어의 부하 분산 최적화
http://doi.org/10.5626/JOK.2022.49.7.561
키 값에 따라 데이터를 분산 저장하는 분산 키-값 데이터베이스의 도전과제 중 하나는 부하 분산이다. 본 논문은 NVMe-over-Fabrics를 이용해 LSM-트리 기반 키-값 스토어인 RocksDB 엔진을 내장한 MongoDB 분산 데이터베이스(MongoRocks)를 부하 분산에 최적화된 구조로 재설계했다(MongoRocks-oF). MongoRocks-oF는 all-to-all 연결로 컴퓨팅 노드들이 원격 저장 장치의 NVMe SSD들을 공유할 수 있는 NVMe-over-Fabrics의 특성을 이용해, 라운드-로빈 방식으로 데이터를 고르게 분산하고 저장 장치 자원을 완전히 활용한다. 이를 바탕으로 MongoRocks-oF는 기존의 MongoRocks의 부하 불균형을 개선하였으며, 쓰기 연산에 대해 더 나은 성능을 보였다.
키-밸류 스토어에서의 고성능 I/O 처리를 위한 리눅스 I/O 인터페이스 분석
http://doi.org/10.5626/JOK.2021.48.12.1274
최근 고성능 스토리지를 활용하기 위한 다양한 I/O 인터페이스가 연구되어 왔으며, 특히, 비동기 I/O 인터페이스가 주목을 받고 있다. 하지만 이는 동기 I/O 인터페이스보다 상대적으로 응답시간 높고 CPU 자원을 더 많이 사용한다는 단점이 있다. 본 논문에서는 각 I/O 인터페이스의 특성을 분석하고, 이를 키-밸류 스토어에 적용하여 어플리케이션 계층에서의 성능 양상에 대해 살펴본다. 실험 결과, 비동기적 I/O 인터페이스는 동기적 I/O 인터페이스보다 2.73배 더 많은 CPU 자원을 사용하지만, batching I/O 크기에 따라 최대 2.42배 높은 IOPS를 보여주었다. 더불어 키-밸류 스토어에서의 실험 결과, 읽기 위주의 워크로드에서 비동기적 I/O 인터페이스를 사용한 경우, 동기적 I/O 인터페이스를 사용한 경우 대비 최대 6.60배 높은 처리량과 61.09% 낮은 응답시간을 보이는 것을 확인하였다.
LSM-tree 기반 Key-value 데이터베이스의 재귀적 컴팩션 기법
http://doi.org/10.5626/JOK.2019.46.9.946
LSM-tree 기반 Key-value 데이터베이스는 데이터 쓰기 연산의 성능에 최적화 된 구조를 가지며, 일반적으로 컴팩션 연산을 통해 LSM-tree의 형태를 유지하며 데이터를 관리한다. 컴팩션 연산은 저장 장치에 기록된 데이터를 메모리로 읽어들여 정렬한 뒤 결과 데이터를 저장 장치로 다시 쓰는 작업을 반복하며, 이러한 동작 패턴은 몇 가지의 문제점을 발생시킨다. 본 논문에서는 이러한 컴팩션 연산이 유발하는 성능 손실 및 쓰기 증폭 현상에 대하여 분석하고, 이를 개선하기 위한 재귀적 컴팩션 기법을 제안한다. 재귀적 컴팩션 기법은 멀티스레드를 활용하여 동시에 여러 컴팩션을 수행하며 읽기 요청 및 가비지 컬렉션을 적절히 수행하여 컴팩션이 유발하는 문제를 완화시킨다. 위 기법을 LSM-tree based Key-value 데이터베이스 중 하나인 Google의 LevelDB에 적용한 뒤 이에 대한 실험 결과를 분석한다.