피드로 돌아가기
InfoQDatabase
원문 읽기
초당 수백만 건 Ingestion을 위한 QuestDB의 3-Tier 저장소 설계
Podcast: A Java Performance Quest: Taming Unsafe Code, Embracing Idiomatic Style & Debugging the Linux Kernel
AI 요약
Context
고속 데이터 소스와 데이터 레이크 사이의 간극을 메우기 위한 고성능 Time Series Database 필요성 대두. 기존 분석용 DB의 전수 스캔 방식으로는 실시간으로 쏟아지는 대규모 데이터의 효율적인 쿼리 처리에 한계가 존재함.
Technical Solution
- Write Ahead Log(WAL) 기반의 Tier 1 설계를 통한 초당 수백만 행의 고속 데이터 수집 구현
- 수집된 데이터를 시간순으로 물리적 정렬하는 Tier 2 변환 과정을 통한 쿼리 효율 최적화
- 시간 기반 파티셔닝과 Binary Search 적용으로 특정 시간 범위 데이터의 탐색 속도 향상
- 오래된 데이터를 Parquet 형식으로 S3 등 저가 저장소로 이전하는 Tier 3 Storage 계층 구축
- Parquet 포맷 채택을 통해 DB 외부 툴에서도 데이터를 직접 처리 가능한 상호운용성 확보
- 데이터 수집(Write)과 최적화(Transformation)를 비동기적으로 분리하여 Ingestion 병목 제거
실천 포인트
- 대량의 쓰기 부하가 예상되는 경우 Write-optimized Log와 Read-optimized Storage를 분리하여 설계했는지 검토 - 시계열 데이터 처리 시 물리적 저장 순서를 시간순으로 정렬하여 I/O 비용을 최소화할 수 있는 구조인지 확인 - 데이터 보관 비용 절감을 위해 Cold Data를 오픈 포맷(Parquet 등)으로 변환하여 Object Storage로 오프로딩하는 전략 고려