Для чего вообще нужны временные ряды
Временные ряды это данные, которые поступают с определенной периодичностью, как правило, периодичность поступления таких данных достаточно высокая. Например, в нашей практике это данные телеметрии (от 10 до 50 контролируемых параметров) с АСУТП с периодичностью 1 раз в 10 сек на несколько десятков тысяч объектов. Поскольку таких данных поступает достаточно много, то не смотря на буферизацию ключевым моментом является скорость записи строк в базу данных. с увеличением размера таблиц скорость записи в традиционную SQL БД на больших объемах существенно падает:
БД временных рядов это проекти типа Hadoop, ClickHouse и т.п., но благодаря расширению Timescale мы можем превратить и обычный Postgres в БД временных рядом, о том как это сделать мы напишем ниже. Но перед тем как мы пойдем дальше хотелось бы упомянуть, что мы будем благодарны если вы поддержите нашу деятельность на Boosty.
Настраиваем Timescale
При использовании `Linux` или `docker` проблем нет ни каких, поэтому не будем на этом останавливаться, а вот в Windows Timescale не заводится без напильника, поэтому если необходимо установить нативно и в Windows, то следуйте этому гайду.
1. Необходимо скачать архив с timescaledb для соответсвующей главной версии Postgres (минимальная - 13.х)
2. Необходимо распаковать архив и запустить с правами администратора setup.exe
3. В процессе интерактивной установки будет запрошен путь до postgresql.conf, в моем случае это - C:\Program Files\PostgreSQL\16\data . Далее будут запрошены другие настройки, с которыми можно согласиться и отредактировать позднее.
4. Запускаем psql -U postgres -h localhost. И создаем расширение - CREATE EXTENSION IF NOT EXISTS timescaledb;
Однако, в C:\Program Files\PostgreSQL\16\lib эти библиотеки есть, cогласно описанию этого issue необходимо установить библиотеку OpenSSL, но, документация ВРЕТ, что можно использовать OpenSSL версии 3 и старше, это НЕ так, по-настоящему оно работает только с версией 1.1.1, которую я взял отсюда. После запуска установщика я скопировал 2 dll в C:\Program Files\PostgreSQL\16\lib, а именно: libcrypto-1_1-x64.dll и libssl-1_1-x64.dll .
5. Снова запускаем консоль postgres и также устанавливаем расширение, но уже с другим результатом:
Опять напильник, опять опэн сорс, но результат успешный
Заключение
К сожалению, не работает из коробки нативно, а все пихать в Docker - не правильно, любым инструментом нужно уметь пользоваться. Спасибо за прочтение, если не сложно подпишись на нас и поддержи на Boosty: https://boosty.to/wissance .