HM-SMR 드라이브 상 고성능 및 공간 효율성을 달성하는 키-밸류 DB

본 논문[1]에서는 블록체인에 대한 내용을 다루지는 않는다. 블록체인에 대한 개념을 위주로 생각하고 글을 보는 사람이라면 가볍게 읽는 것을 추천한다.



글쓴이의 경우 빅데이터와 블록체인을 연관 지어 무엇인가를 해보고자 열심히 생각은 하고 있지만 분산 네트워크 특성상 용량 문제나 여러 비효율적인 측면 때문에 현실성이 조금 떨어진다는 의견이 많다 보니 아이디어를 생각해내기가 참 어려운 상황이다.

비트코인이나 이더리움과 같은 블록체인 네트워크 환경에서는 LevelDB 같은 키-밸류 데이터베이스를 이용하고 있는데, LevelDB의 경우 주기적인 Compaction(압축)을 진행하다 보니 성능 측면에서 부족한 면이 있다. 이는 블록체인 네트워크 상에서 더 빠르고 확실한 데이터 처리를 위해 개선되어야 할 점이라고 생각한다.

특히 빅데이터를 다루기 위해서 이러한 키-밸류 DB의 성능을 향상할 수 있는 방향을 먼저 찾아보고자 한다. 블록체인 상에서 빅데이터를 효율적으로 다룰 수 있는 아이디어를 찾는 것은 그러한 환경이 먼저 갖춰진 그 후의 일이 될 것 같다.



만약 이도 저도 안 되면 킹공지능을 깊이 공부하는 수밖에 없을 듯하다. 연결할 수 있는 것이 인공지능 밖에 없다.



이 글에서는 HM-SMR 드라이브 상 고성능 및 공간 효율성을 달성하는 키-밸류 DB인 GearDB에 대한 간략한 소개와 아키텍처 정도만 소개할 예정이다. 평가에 대한 요소는 글만으로는 그 가치를 직접 판단하기 어려운 부분이 있어 생략하도록 하겠다.





내용에 앞서 논문을 읽다 보니 여러 가지 용어들이 많아 자주 나오는 부분을 정리하고 가려고 한다. 이미 알고 있는 내용이라면 더 아래로 내려가 메인 파트를 보는 것이 시간 절약에 도움이 될 것 같다.



LevelDB

  • 데이터 쓰기에 특화된 데이터베이스로, 랜덤한 데이터를 추가만 할 수 있는 메모리 영역과 데이터를 저장하는 디스크 영역으로 나뉜다 [2]. 이 논문에서는 디스크 영역의 SSTable에 관한 내용만 다루고 있다.

SSTable

  • 디스크 영역에서 키의 범위가 서로 겹치지 않는 파일 블록들이 LSM 트리 구조로 저장되는 형태이다 [2].

SMR (Shingled Magnetic Recording Drive)

  • 지붕 위의 기와처럼 데이터가 기록되는 쓰기 트랙을 겹쳐 밀도를 증가시킨다. 이렇게 하는 경우 드라이브의 물리적 공간 내 트랙의 작은 줄무늬가 드러나 파일을 정상적으로 읽을 수 있으며, 동시에 드라이브의 표준 성능 또한 상당히 향상된다 [3].

LSM (Log-Structured Merge-tree)

  • 로그 구조의 병합 트리는 성능이 특징인 데이터 구조로, 트랜잭션 로그 데이터와 같이 삽입량이 많은 파일에 대한 인덱스 된 액세스를 제공하기에 적합하다. LSM 트리는 다른 검색 트리와 마찬가지로 키-밸류 쌍을 유지한다 [4].

GC (Garbage Collection)

  • 파일이 삭제되고 남은 찌꺼기를 정리해서 SSD의 빠른 속도를 유지해준다. SSD는 HDD와 다르게 주기적으로 삭제된 파일을 정리하지 않으면 속도가 느려지게 된다 [5].





SMR(Shingled Magnetic Recording)은 디스크 운용 시 면 밀도를 증가시키는 핵심 기술이다. 많은 공급업체에 의해 수백만 대의 SMR 드라이브가 출하되고 있으며, 데이터 증가에 따라 빅데이터 당면 과제에 대한 해결책을 제공해주기도 한다.

SMR 드라이브는 반드시 순차적으로 작성해야 하는 수 메가바이트의 큰 구역들로 나뉘는데 읽기와 쓰기로 분류할 수 있다. 읽기의 경우 트랙의 노출된 부분으로부터 정확하게 처리될 수 있지만 무작위 쓰기의 경우 중복되는 트랙의 데이터를 손상시킬 수 있는 문제 때문에 복잡성을 야기할 가능성이 있다.

순차적 쓰기 제한을 이용하는 경우 대상 영역에 대한 로그 구조화된 쓰기(log-structured writes)를 일반적인 관행(common practice)으로 만들어 잠재적으로는 garbage collection(GC)을 생성해내기도 한다. GC는 유효한 데이터 자체를 마이그레이션 하여 새로운 쓰기 작업시 빈 영역을 생성함으로써 디스크 공간을 회수하는데, GC의 데이터 이동 오버헤드가 시스템 성능을 심각하게 저하시키기도 한다.

논문에서는 SMR의 세 가지 종류 drive-managed, host-managed, 그리고 host-aware 중에서 host-managed를 다루고 있는데, 이 HM-SMR은 용량, 예측 가능한 성능, 낮은 소유 비용 등의 선호하는 옵션을 제공한다. 이러한 선택권은 데이터 처리방식에 대한 제어를 요구하는 데이터 센터 환경에서 이상적으로 적용하며 특히 SNS, Cloud, 생명 과학, 미디어 분야 등 애플리케이션이 일반적으로 데이터를 순차적으로 쓰고 랜덤으로 데이터를 읽는 도메인을 대상으로 한다.

일반적으로 쓰는 LSM 트리 기반 키-밸류 DB(ex. Cassandra, RocksDB, LevelDB, BigTable, etc.)의 경우 하드 디스크 드라이브에 대한 높은 쓰기 처리량 및 빠른 범위에 대한 쿼리를 지원하고, write-intensive한 작업량에 대해 최적화를 해준다. 하지만, KV(Key-Value) 저장에 대한 수요 증가로 용량이 점점 커짐에 따라 HM-SMR 드라이브를 채택하는 것이 경제적인 선택이라고 할 수 있다. 그래서 학계 및 업계 연구원들은 HM-SMR의 대용량 및 예측 가능한 성능을 적극 활용하도록 애플리케이션을 수정하여 해당 드라이브 내 핵심 데이터 저장소를 구축하려고 노력해왔다.





하지만 HM-SMR 드라이브에 LSM 트리 기반 KV 저장소를 구축하는 것은 심각한 문제를 동반하기도 한다. 그 이유로는 LSM 트리와 HM-SMR 드라이브의 불필요하게 중복된 cleaning process는 성능을 해친다는 것이다.

이야기가 두서없이 진행되는 느낌이 없지 않아 있어 한 단락으로 요약해보면 빅데이터를 이용하는 입장에서 볼 때, LevelDB와 같은 일반적인 키-밸류 DB로는 경제적인 측면을 이끌어 낼 수 없기 때문에 HM-SMR 드라이브를 쓰는 것이 좋다는 것이다. 하지만 HM-SMR 드라이브에 LSM 트리 기반의 KV 저장소를 동시에 구현하게 되면 불필요한 중복 cleaning process로 인해 성능과 공간 효율성이 유지되는데 심각한 문제가 발생한다는 것이다. 그래서 이 논문에서 제안하고 있는 것이 디스크 내 garbage collection의 오버헤드를 없애고 압축 효율성을 높일 수 있는 GearDB이다.

GearDB는 새로운 디스크 온-데이터 레이아웃, 컴팩트 윈도우, 그리고 새로운 기어 컴팩트 알고리즘의 세 가지 새로운 기법을 제안하며 실제 HM-SMR 드라이브에서 LevelDB와 함께 GearDB를 구현하고 평가하였다.

잠시 GearDB의 아키텍처에 대해 살펴보자.





GearDB는 앞서 말했던 것과 같이 garbage collection을 없애고 LSM에서 해야 하는 압축 효율성을 개선하기 위해 세 가지 핵심 기법을 제시한다.

상단의 그림은 GearDB 설계 전략의 전반적인 구조를 보여주는 것으로, 먼저 서로 다른 수준의 데이터가 혼합되어 분산된 조각이 발생하지 않도록 한 수준에서만 SSTable을 제공하는 HM-SMR 드라이브에 애플리케이션별 데이터 관리 기능을 제공하는 새로운 디스크 온-데이터 레이아웃을 제안한다.

두 번째는 새로운 디스크 온-데이터 레이아웃을 기반으로 LSM 트리 레벨에 대한 컴팩트 윈도우를 설계한다. 압축(compacting)은 컴팩트 윈도우의 프래그먼트를 제한하는 윈도우 내에서만 진행된다.

세 번째로, 새로운 데이터 레이아웃과 컴팩트 윈도우를 기반으로 기어 컴팩트(Gear Compact)라고 불리는 새로운 컴팩트 알고리즘을 제시하고 있다. 기어 컴팩션은 각 컴팩트의 병합 데이터를 3개의 부분으로 나누고 다음 레벨의 컴팩트 윈도우에서 중복된 데이터와 한 번 더 나아가 컴팩트하는 작업을 하게 된다. 기어의 경우 모든 SSTable을 무효화하여 컴팩트 창에서 단적으로 SMR 영역을 비우기 때문에 garbage collection 필요 없이 해당 zone을 재사용할 수 있다.

여러 가지 관련 내용들과 실험 결과가 있지만 이 글에서는 따로 다루지 않을 예정이기 때문에 결과에 대한 설명 없이 그림 몇 가지를 첨부하고 마무리를 지으려고 한다.









결론

이 글에서는 HM-SMR 드라이브에 적합한 LSM 트리 기반 키-밸류 DB인 GearDB를 소개했다. 사실 실험적인 측면에서 보면 약 1.71배의 빠른 공간 효율과 우수한 성능 모두를 달성하였고, 89.9%의 공간 효율을 보였다고 했는데 아직은 논문에 대해 조금 더 파악해야 하는 단계이므로 간단한 개념 공부와 GearDB의 아키텍처 정도만 알아보는 것으로 끝내도록 하겠다.

이 논문에서의 실질적인 결론은 전체 시스템 성능과 공간 활용도를 기존 키-밸류 데이터베이스 대비 향상했다는 점을 알 수 있었다는 점과, 주로 garbage collection을 제거함으로써 기어 컴팩트 효율을 달성할 수 있었다는 점이다.

마지막으로, GearDB 관련 오픈소스가 깃허브 https://github.com/PDS-Lab/GearDB 에 공개되어 있다고 하니 관심이 있는 사람은 참고해보면 좋을 것 같다.



Reference in contents

[1] T. Yao, J. Wan, P, Huang, et al. “GearDB: A GC-free Key-Value Store on HM-SMR Drives with Gear Compaction”, 2019

[2] 김재윤, “블록체인을 위한 KV 데이터베이스의 성능 분석”, 2020

[3] Quasar Zone, “몇몇 WD Red HDD는 SMR 기술을 몰래 사용하고 있습니다.”, https://quasarzone.com/bbs/qn_hardware/views/389489

[4] 위키피디아, “Log-structured merge-tree”, https://en.wikipedia.org/wiki/Log-structured_merge-tree

[5] 네이버 지식백과 “GC”, https://terms.naver.com/entry.nhn?docId=2420126&cid=51399&categoryId=51399



Extra References



CURG 원본 링크: https://medium.com/curg/hm-smr-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B8%8C-%EC%83%81-%EA%B3%A0%EC%84%B1%EB%8A%A5%EA%B3%BC-%EA%B3%B5%EA%B0%84-%ED%9A%A8%EC%9C%A8%EC%84%B1%EC%9D%84-%EB%8B%AC%EC%84%B1%ED%95%98%EB%8A%94-%ED%82%A4-%EB%B0%B8%EB%A5%98-db-51aff8b1a2a2

HM-SMR 드라이브 상 고성능 및 공간 효율성을 달성하는 키-밸류 DB

https://y8ncastle.world/2020/07/18/curg/blockchain/key-value-db/

Author

Alec J

Posted on

2020-07-18

Updated on

2021-02-09

Licensed under