- 로그 구조화된 병합 트리(Log-Structured Merge-tree)로 구축된 임베디드 스토리지 엔진
- 기존 LSM-tree 스토리지 엔진과 달리 SlateDB는 데이터를 오브젝트 스토리지(S3, GCS, ABS, MinIO, Tigris 등)에 씀
- 오브젝트 스토리지를 활용하여 무한한 스토리지 용량, 높은 내구성, 쉬운 복제 기능을 제공함
- 그러나, 오브젝트 스토리지는 로컬 디스크보다 높은 지연 시간과 API 비용이 발생하는 것이 단점
SlateDB의 단점 회피 전략
- 쓰기를 배치 처리하여 높은 쓰기 API 비용(PUT)을 완화함
- 모든
put()
호출을 오브젝트 스토리지에 쓰는 대신, MemTable을 주기적으로 문자열 정렬된 테이블(SST)로 오브젝트 스토리지에 플러시
- 플러시 간격은 구성 가능
- 비동기
put
메서드를 제공하여 쓰기 지연 시간도 완화
- 강력한 내구성을 선호하는 클라이언트는 MemTable이 오브젝트 스토리지에 플러시될 때까지
put
에서 await
할 수 있음(지연 시간과 내구성 간의 절충)
- 낮은 지연 시간을 선호하는 클라이언트는
put
에서 반환된 future를 무시할 수 있음
- 표준 LSM-tree 캐싱 기술을 사용하여 읽기 지연 시간과 읽기 API 비용(GET)을 완화
- 인메모리 블록 캐시, 압축, 블룸 필터, 로컬 SST 디스크 캐시