source texts — a fast and scalable database for storing and processing data in the form of time series (a record forms time and a set of corresponding values, for example, obtained through periodic polling of sensor states or metric collection). The project competes with solutions such as , , , and . The code is written in Go language and under the Apache 2.0 license.
Advantages and features of VictoriaMetrics:
- It is easy to use. It consists of a single executable file with minimal configurations passed via command line during startup. All data is stored in a single directory specified at launch using the flag "-storageDataPath";
- Query language support , used in the monitoring system . Nested PromQL queries and some , such as the "offset" expression, patterns within "WIDTH", "if" and "default" operators, additional functions, and the ability to include comments are supported;
- Ability to use as a , connected to Prometheus and .
- An inverse loading mode for uploading historical data is available;
- Support for various data transfer protocols, including , , and . VictoriaMetrics can also be used as a transparent replacement for InfluxDB and can work with InfluxDB-compatible collectors such as Telegraf;
- High performance and low resource consumption to competing systems. In some tests, VictoriaMetrics outperforms InfluxDB and TimescaleDB in insert and query operations by up to 20 times. For analytical queries, the advantage over relational databases like PostgreSQL and MySQL can range from 10 to 1000 times.
- It has processing of a very large number of unique time series. When processing millions of different time series, it consumes up to 10 times less RAM than InfluxDB.
- High data compression in disk storage. Compared to TimescaleDB, it can fit up to 70 times more records in the same storage volume;
- Optimizations for storage with high latencies and low I/O operations per second (e.g., hard drives and cloud storage from AWS, Google Cloud, and Microsoft Azure) are available;
- Simple backup system based on ;
- Availability of means to protect the integrity of storage from data corruption, for example, during a power failure (the storage takes the form of );
- Implemented in Go, ensuring a trade-off between performance and code complexity compared to Rust and C++.
- Source codes are provided , which supports horizontal scaling across multiple servers and demonstrates low overhead. There are means to ensure high availability.
Source: opennet.ru
