Найти тему
Wissance

Настраиваем временные ряды в Postgres и TimescaleDB в Windows

Оглавление

Для чего вообще нужны временные ряды

Временные ряды это данные, которые поступают с определенной периодичностью, как правило, периодичность поступления таких данных достаточно высокая. Например, в нашей практике это данные телеметрии (от 10 до 50 контролируемых параметров) с АСУТП с периодичностью 1 раз в 10 сек на несколько десятков тысяч объектов. Поскольку таких данных поступает достаточно много, то не смотря на буферизацию ключевым моментом является скорость записи строк в базу данных. с увеличением размера таблиц скорость записи в традиционную SQL БД на больших объемах существенно падает:

Сравнение скорости записи Postgres vs Timescale
Сравнение скорости записи Postgres vs Timescale

БД временных рядов это проекти типа 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 . Далее будут запрошены другие настройки, с которыми можно согласиться и отредактировать позднее.

Процесс установки timescale через setup.exe
Процесс установки timescale через setup.exe

4. Запускаем psql -U postgres -h localhost. И создаем расширение - CREATE EXTENSION IF NOT EXISTS timescaledb;

timescaledb-2.14.2.dll не найден
timescaledb-2.14.2.dll не найден

Однако, в 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 и также устанавливаем расширение, но уже с другим результатом:

Успешная установка timescale
Успешная установка timescale

Опять напильник, опять опэн сорс, но результат успешный

Заключение

К сожалению, не работает из коробки нативно, а все пихать в Docker - не правильно, любым инструментом нужно уметь пользоваться. Спасибо за прочтение, если не сложно подпишись на нас и поддержи на Boosty: https://boosty.to/wissance .