12P by xguru 2달전 | favorite | 댓글과 토론
  • 로그 구조화된 병합 트리(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 디스크 캐시