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

출처: VictoriaMetrics Github

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배 향상