Database
[VictoriaMetrics] Overview
흥부가귀막혀
2022. 3. 16. 15:14
개요
- Go-fasthttp 개발자가 만든 Prometheus 호환 TSDB
특징
- PromQL 을 하위호환하는 MetricsQL 지원
- InfluxDB, Graphite, Prometheus 등 다양한 Metric Input 지원
- 간단한 아키텍쳐
- Gorilla Compression 을 통한 효율적인 storage 활용
- Line Use Case 존재
설계 철학
- KISS(Keep It Simple, Stupid)
- 단순한 아키텍쳐 지향 - shared nothing
- 외부 의존성 최소화
- 최소한의 자동화
지원하지 않는 것들
- 클러스터 자동 resizing
- 자동 노드 discovering
- data rebalancing
Architecture
Gorilla Compression
- Facebook 에서 Time Series Data 를 효과적으로 압축하는 방법론 소개
- 이후 대부분의 Modern TSDB 에 적용 & 응용되고 있음
Timestamp Compression
- timestamp 는 대부분 일정한 간격으로 수집 된다.
- 간격(delta)이 일정하다(delta of delta = 0)면 그냥 1bit flag 하나만으로 다음 timestamp 값을 표현 가능하다.
Value Compression
- 이진수 표현 시 이전 값과 현재 값의 대부분의 bit 는 동일 -> XOR 연산 시 '0'
- XOR 연산으로 '0' 으로 바뀐 bit 들은 압축시켜서 표현
Compression Summary
- Timestamp: 96.39%. 1bit 만으로 시간 표현 가능.
- Value: 59.06%. 1bit 만으로 값 표현 가능.
- 압축률: 16 bytes를 1.37 bytes 로 줄임 (약 12배 향상)
- Query 속도: 경우에 따라 최대 73 ~ 350배 향상