DBDB.io The Encyclopedia of Database Systems · Est. 2017
Database of Databases

Database Entry

VictoriaMetrics


VictoriaMetrics Open Source is a fast and scalable open-source time series database and monitoring solution. It's designed to allowing users to build a monitoring platform without scalability issues.[04][05]

Source Code
https://github.com/VictoriaMetrics/VictoriaMetrics[02]
Country of Origin
UA
Start Year
2018 [11]
Coding Agent
Project Type
Open Source
Written in
Go
Compatible With
Prometheus
License
Apache v2

The open source solution is ideal for solving use cases involving large amounts of time series data in IT infrastructure, APM, Kubernetes, IoT sensors, automotive vehicles, industrial telemetry, financial data, and other enterprise-level workloads.

Database Entry

VictoriaMetrics


VictoriaMetrics Open Source is a fast and scalable open-source time series database and monitoring solution. It's designed to allowing users to build a monitoring platform without scalability issues. The open source solution is ideal for solving use cases involving large amounts of time series data in IT infrastructure, APM, Kubernetes, IoT sensors, automotive vehicles, industrial telemetry, financial data, and other enterprise-level workloads.[04][05]

Checkpoints[06]


VictoriaMetrics uses their modified version of LSM tree (Logging Structure Merge Tree). All the tables and indexes on the disk are immutable once created. When it's making the snapshot, they just create the hard link to the immutable files.

Data Model[07]


The time series is consist of metrics and the values for corresponding timestamps. It looks like:

{"metric":{"__name__":"up","job":"node_exporter","instance":"localhost:9100"},"values":[0,0,0],"timestamps":[1549891472010,1549891487724,1549891503438]}

{"metric":{"__name__":"up","job":"prometheus","instance":"localhost:9090"},"values":[1,1,1],"timestamps":[1549891461511,1549891476511,1549891491511]}

Indexes[06][08]


VictoriaMetrics stores the data in MergeTree, which is from ClickHouse and similar to LSM. The MergeTree has particular design decision compared to canonical LSM.

MergeTree is column-oriented. Each column is stored separately. And the data is sorted by the "primary key", and the "primary key" doesn't have to be unique. It speeds up the look-up through the "primary key", and gets the better compression ratio. The "parts" is similar to SSTable in LSM; it can be merged into bigger parts. But it doesn't have strict levels.

The Inverted Index is built on "mergeset" (A data structure built on top of MergeTree ideas). It's used for fast lookup by given the time-series selector.

Logging[09]


The design philosophy of VictoriaMetrics is that time series DBMSs do not require strict safety guarantees. That is, organizations can endure losing some recently inserted data. As such, it does not use a WAL and it delays flushing new data to disk.

Query Interface[10]


VictoriaMetrics provides a proprietary query language called MetricsQL that is a superset of PromQL.

Citations

12 sources
  1. VictoriaMetrics: Simple & Reliable Monitoring for Everyone victoriametrics.com
  2. GitHub - VictoriaMetrics/VictoriaMetrics: VictoriaMetrics: fast, cost-effective monitoring solution and time series database · GitHub github.com
  3. Welcome to VictoriaMetrics Docs victoriametrics.com
  4. VictoriaMetrics/README.md at master · VictoriaMetrics/VictoriaMetrics · GitHub github.com
  5. https://medium.com/@valyala/mmap-in-go-considered-harmful-d92a25cb161d medium.com Dead — Check Archive
  6. https://medium.com/@valyala/how-victoriametrics-makes-instant-snapshots-for-multi-terabyte-time-series-data-e1f3fb0e0282 medium.com Dead — Check Archive
  7. VictoriaMetrics/README.md at master · VictoriaMetrics/VictoriaMetrics · GitHub github.com
  8. https://clickhouse.yandex/docs/en/development/architecture/ clickhouse.yandex Dead — Check Archive
  9. https://medium.com/@valyala/wal-usage-looks-broken-in-modern-time-series-databases-b62a627ab704 medium.com Dead — Check Archive
  10. https://victoriametrics.github.io/MetricsQL.html github.io Dead — Check Archive
  11. Initial commit github.com
  12. https://github.com/VictoriaMetrics/VictoriaMetrics/commit/aab92d3c0f70ea0fdb069e5fc31265adba9655c7 github.com
Revision #21 Last Updated: