Открыты исходные тексты VictoriaMetrics — быстрой и масштабируемой СУБД для хранения и обработки данных в форме временного ряда (запись образует время и набор соответствующих этому времени значений, например, полученных через периодический опрос состояния датчиков или сбор метрик). Проект конкурирует с такими решениями, как InfluxDB, TimescaleDB, Thanos, Cortex и Uber M3. Код написан на языке Go и распространяется под лицензией Apache 2.0.
Преимущества и особенности VictoriaMetrics:
- Проста в эксплуатации. Представляет из себя один исполняемый файл с минимальными настройками, передающимися через командную строку при запуске. Все данные хранятся в одном каталоге, заданном при запуске при помощи флага «-storageDataPath»;
- Поддержка языка запросов PromQL, используемого в системе мониторинга Prometheus. Поддерживаются подзапросы PromQL и некоторые расширенные возможности, такие как выражение «offset», шаблоны внутри «WIDTH», операторы «if» и «default», дополнительные функции и возможность включения комментариев;
- Возможность использования в качестве долговременного хранилища данных, подключенного к Prometheus и Grafana.
- Наличие режима обратного заполнения для загрузки исторических данных;
- Поддержка различных протоколов передачи данных, включая Prometheus API, Influx, Graphite и OpenTSDB. В том числе VictoriaMetrics может применяться в качестве прозрачной замены InfluxDB и может работать с совместимыми с InfluxDB коллекторами, такими как Telegraf;
- Высокая производительность и низкое потребление ресурсов по сравнению с конкурирующими системами. В некоторых тестах VictoriaMetrics опережает InfluxDB и TimescaleDB при выполнение операций вставки и выборки данных до 20 раз. При выполнении аналитических запросов выигрыш по сравнению с реляционными СУБД PostgreSQL и MySQL может составлять от 10 до 1000 раз.
- Имеется возможность обработки очень большого числа уникальных временных рядов. При обработке миллионов разных временных рядов потребляет до 10 раз меньше ОЗУ, чем InfluxDB.
- Высокая степень сжатия данных в дисковом хранилище. По сравнению с TimescaleDB может уместить в том же объёме хранилища до 70 раз больше записей;
- Наличие оптимизаций для хранилищ с большими задержками и низким числом операций ввода/вывода в секунду (например, жёсткие диски и облачные хранилища AWS, Google Cloud и Microsoft Azure);
- Простая система резервного копирования на основе снапшотов;
- Наличие средств для защиты целостности хранилища от повреждений данных, например, при экстренном отключении питания (хранилище имеет форму журнально-структурированного дерева со слиянием);
- Реализация на языке Go, что обеспечивает компромисс между производительностью и сложностью кода по сравнению с Rust и C++.
- Предоставляются исходные коды кластерной версий, которая поддерживает горизонтальное масштабирование на несколько серверов и демонстрирует низкие накладные расходы. Имеются средства обеспечения высокой доступности.
Источник: http://www.opennet.ru/opennews/art.shtml?num=50745