Установка и использование TimescaleDB on Ubuntu 18.04

Многие приложения, такие как системы мониторинга и сбора данных, должны накапливать данные для дальнейшего анализа. Как правило, дальнейшая обработка призвана показать, как со временем изменяется часть данных или система. В этих случаях данные представляются в виде временного ряда, причем каждая точка данных сопровождается меткой времени:

2019-11-01 09:00:00    server.cpu.1    0.9
2019-11-01 09:00:00    server.cpu.15   0.8
2019-11-01 09:01:00    server.cpu.1    0.9
2019-11-01 09:01:00    server.cpu.15   0.8
...

Управление данными временных рядов стало важным навыком с появлением Интернета вещей (IoT) и промышленного интернета вещей. Появляется все больше и больше устройств, которые собирают различную информацию о временных рядах: фитнес-трекеры, умные часы, домашние метеостанции и различные датчики. Эти устройства собирают много информации, и все эти данные должны где-то храниться.

Для хранения данных чаще всего используются классические реляционные базы, но они не всегда подходят, когда речь идет об огромных объемах временных рядов. Чтобы эффективно обработать такой объем данных, реляционные базы слишком медленные. Поэтому появились специально оптимизированные базы данных, называемые NoSQL – они позволяют избежать проблем реляционных баз данных.

Читайте также: Модели и системы управления базами данных NoSQL

TimescaleDB – это база данных с открытым исходным кодом, оптимизированная для хранения данных временных рядов. Она реализована как расширение PostgreSQL, благодаря чему сочетает в себе простоту использования реляционных баз данных и скорость работы баз NoSQL. В итоге вы можете использовать PostgreSQL как для хранения бизнес-данных, так и для данных временных рядов.

Следуя этому мануалу, вы научитесь устанавливать и настраивать TimescaleDB в Ubuntu 18.04. Также вы узнаете, как создавать базы данных временных рядов, отправлять простые запросы и избавиться от ненужных данных.

Требования

1: Установка TimescaleDB

Пакетов TimescaleDB нет в стандартных репозиториях Ubuntu. Поэтому для установки мы используем PPA (Personal Packages Archive).

Сначала добавьте APT репозиторий TimescaleDB:

sudo add-apt-repository ppa:timescale/timescaledb-ppa

Для подтверждения нажмите ввод.

Обновите список пакетов:

sudo apt update

Теперь вы можете продолжить установку. В этом мануале используется версия PostgreSQL 10; если вы используете другую версию PostgreSQL (например, 11 или 9.6), замените номер версии в следующей команде и запустите ее:

sudo apt install timescaledb-postgresql-10

TimescaleDB теперь установлен и готов к использованию. Давайте теперь включим и настроим некоторые связанные с ним параметры в конфигурационном файле PostgreSQL.

2: Настройка TimescaleDB

Модуль TimescaleDB прекрасно работает со стандартными настройками конфигурации PostgreSQL, но для повышения производительности и более эффективного использования ресурсов процессора, памяти и диска разработчики TimescaleDB предлагают изменить некоторые параметры. Это можно сделать автоматически с помощью инструмента timescaledb-tune или вручную отредактировав файл postgresql.conf.

В этом мануале мы используем инструмент timescaledb-tune, который прочитает файл postgresql.conf и в интерактивном режиме предложит внести изменения.

Введите следующую команду, чтобы запустить мастер настройки:

sudo timescaledb-tune

Сначала вам будет предложено подтвердить путь к конфигурационному файлу PostgreSQL:

Using postgresql.conf at this path:
/etc/postgresql/10/main/postgresql.conf
Is this correct? [(y)es/(n)o]:

Утилита автоматически обнаруживает путь к конфигурационному файлу. Просто введите у, чтобы подтвердить его.

...
Is this correct? [(y)es/(n)o]: y
Writing backup to:
/tmp/timescaledb_tune.backup201911181111

Далее вам будет предложено изменить переменную shared_preload_libraries для предварительной загрузки модуля TimescaleDB при запуске сервера PostgreSQL:

shared_preload_libraries needs to be updated
Current:
#shared_preload_libraries = ''
Recommended:
shared_preload_libraries = 'timescaledb'
Is this okay? [(y)es/(n)o]:

shared_preload_libraries принимает список модулей, разделенных запятыми. Эти модули PostgreSQL должен загрузить перед запуском сервера базы данных. Давайте добавим модуль timescaledb в этот список.

Примечание: Если библиотека, указанная в shared_preload_libraries, не найдена, сервер базы данных не запустится. Помните об этом при отладке приложений, использующих shared_preload_libraries. За дополнительной информацией обращайтесь к этой статье.

Чтобы включить модуль TimescaleDB, введите y в командную строку и нажмите ввод:

...
Is this okay? [(y)es/(n)o]:  y
success: shared_preload_libraries will be updated

В зависимости от характеристик вашего сервера и версии PostgreSQL скрипт может предложить тонкую настройку параметров. Нажмите у, чтобы запустить процесс отладки:

Tune memory/parallelism/WAL and other settings? [(y)es/(n)o]:  y
Recommendations based on 7.79 GB of available memory and 4 CPUs for PostgreSQL 10
Memory settings recommendations
Current:
shared_buffers = 128MB
#effective_cache_size = 4GB
#maintenance_work_mem = 64MB
#work_mem = 4MB
Recommended:
shared_buffers = 1994MB
effective_cache_size = 5982MB
maintenance_work_mem = 1021001kB
work_mem = 5105kB
Is this okay? [(y)es/(s)kip/(q)uit]:

timescaledb-tune автоматически обнаружит доступную память сервера и рассчитает рекомендуемые значения для ряда настроек. Например, shared_buffers определяет объем памяти, выделенной для кэширования данных. По умолчанию этот параметр имеет относительно низкое значение для учета более широкого диапазона платформ, поэтому timescaledb-tune, вероятно, предложит увеличить значение в 128 МБ до 1994 МБ, чтобы более выгодно использовать ресурсы, предоставляя больше места для хранения кэшированной информации. Также была увеличена переменная work_mem для более сложной сортировки.

Если вы хотите узнать больше о настройке параметров памяти PostgreSQL, читайте эту статью на вики-сайте PostgreSQL.

Введите y, чтобы принять значения:

...
Is this okay? [(y)es/(s)kip/(q)uit]:  y
success: memory settings will be updated

Если ваш сервер имеет несколько процессоров, вы получите рекомендации по настройке параллелизма. Эти параметры определяют, как несколько ЦП могут одновременно выполнять запросы, чтобы ускорить сканирование баз данных и возвращение запрошенных данных.

Если у вас несколько процессоров, вы увидите:

Parallelism settings recommendations
Current:
missing: timescaledb.max_background_workers
#max_worker_processes = 8
#max_parallel_workers_per_gather = 2
#max_parallel_workers = 8
Recommended:
timescaledb.max_background_workers = 8
max_worker_processes = 13
max_parallel_workers_per_gather = 1
max_parallel_workers = 2
Is this okay? [(y)es/(s)kip/(q)uit]:

Эти параметры регулируют количество рабочих процессов, которые обрабатывают запросы и фоновые задачи. Вы можете узнать больше об этих настройках в документации TimescaleDB и PostgreSQL .

Введите y, затем нажмите Enter, чтобы принять эти настройки:

...
Is this okay? [(y)es/(s)kip/(q)uit]: y
success: parallelism settings will be updated

Далее вы найдете рекомендации для Write Ahead Log (WAL):

WAL settings recommendations

Current:
#wal_buffers = -1
#min_wal_size = 80MB
#max_wal_size = 1GB
Recommended:
wal_buffers = 16MB
min_wal_size = 4GB
max_wal_size = 8GB
Is this okay? [(y)es/(s)kip/(q)uit]:

WAL – это метод регистрации, при котором PostgreSQL вносит изменения в файлах данных в лог, прежде чем вносить их в базу данных. Располагая приоритетной информацией о последних изменениях данных, WAL гарантирует, что вы сможете восстановить свою базу данных в случае сбоя. Таким образом, этот метод сохраняет целостность данных. Однако настройки по умолчанию могут снизить эффективность операций ввода/вывода, что снижает и производительность записи. Чтобы это исправить, введите y:

...
Is this okay? [(y)es/(s)kip/(q)uit]: y
success: WAL settings will be updated

Теперь вы найдете несколько разных рекомендаций:

Miscellaneous settings recommendations
Current:
#default_statistics_target = 100
#random_page_cost = 4.0
#checkpoint_completion_target = 0.5
#max_locks_per_transaction = 64
#autovacuum_max_workers = 3
#autovacuum_naptime = 1min
#effective_io_concurrency = 1
Recommended:
default_statistics_target = 500
random_page_cost = 1.1
checkpoint_completion_target = 0.9
max_locks_per_transaction = 64
autovacuum_max_workers = 10
autovacuum_naptime = 10
effective_io_concurrency = 200
Is this okay? [(y)es/(s)kip/(q)uit]:

Все эти параметры предназначены для повышения производительности. Например, твердотельные накопители могут обрабатывать много одновременных запросов, поэтому хорошее значение для effective_io_concurrency может быть в несколько сотен. Вы можете найти больше информации об этих опциях в документации PostgreSQL.

Нажмите y, затем Enter, чтобы продолжить.

...
Is this okay? [(y)es/(s)kip/(q)uit]: y
success: miscellaneous settings will be updated
Saving changes to: /etc/postgresql/10/main/postgresql.conf

В результате вы получите готовый конфигурационный файл в /etc/postgresql/10/main/postgresql.conf.

Примечание: Если вы автоматизируете установку, вы также можете запустить стартовую команду с флагами —quiet и —yes, которая автоматически применит все рекомендации и внесет изменения в конфигурации postgresql.conf:

sudo timescaledb-tune --quiet --yes

Чтобы изменения конфигурации вступили в силу, необходимо перезапустить сервис PostgreSQL:

sudo systemctl restart postgresql.service

Теперь база данных с оптимальными параметрами готова к обработке временных рядов. Теперь давайте поработаем с этими данными: вы научитесь создавать новые базы данных, гипертаблицы и выполнять операции.

3: Создание новой базы данных и гипертаблицы

Пора научиться работать с данными временных рядов. TimescaleDB существует как расширение PostgreSQL, поэтому операции с данными временных рядов мало чем отличаются от операций с реляционными данными. В то же время база данных позволяет свободно комбинировать данные из временных рядов и реляционных таблиц.

Чтобы посмотреть, как это делается, мы будем использовать команды PostgreSQL для создания базы данных, а затем включим расширение TimescaleDB для создания гипертаблицы (это абстракция многих отдельных таблиц более высокого уровня). Гипертаблицы — это основные структуры, с которыми вы будете работать в TimescaleDB.

Войдите в свою базу данных PostgreSQL:

sudo -u postgres psql

Теперь создайте новую базу данных и подключитесь к ней. Здесь мы назовем БД timeseries:

CREATE DATABASE timeseries;
\c timeseries

Читайте также: Управление таблицами PostgreSQL на облачном сервере

Теперь включите расширение TimescaleDB:

CREATE EXTENSION IF NOT EXISTS timescaledb CASCADE;

Вы увидите следующий вывод:

WARNING:
WELCOME TO
._____ _                               _     ____________
|_   _(_)                             | |    |  _  \ ___ \
. | |  _ _ __ ___   ___  ___  ___ __ _| | ___| | | | |_/ /
. | | | |  _ ` _ \ / _ \/ __|/ __/ _` | |/ _ \ | | | ___ \
. | | | | | | | | |  __/\__ \ (_| (_| | |  __/ |/ /| |_/ /
. |_| |_|_| |_| |_|\___||___/\___\__,_|_|\___|___/ \____/
Running version 1.5.1
For more information on TimescaleDB, please visit the following links:
1. Getting started: https://docs.timescale.com/getting-started
2. API reference documentation: https://docs.timescale.com/api
3. How TimescaleDB is designed: https://docs.timescale.com/introduction/architecture
Note: TimescaleDB collects anonymous reports to better understand and assist our users.
For more information and how to disable, please see our docs https://docs.timescaledb.com/using-timescaledb/telemetry.
CREATE EXTENSION

Как упоминалось ранее, основными точками взаимодействия с временными рядами являются гипертаблицы, они состоят из множества таблиц с данными, которые называются блоками.

Чтобы создать гипертаблицу, сначала создайте простую таблицу SQL, а затем преобразуйте ее в гипертаблицу с помощью функций create_hypertable.

Создайте таблицу conditions, в которой будут храниться данные для отслеживания температуры и влажности несколькими устройствами:

CREATE TABLE conditions (
time        TIMESTAMP WITH TIME ZONE NOT NULL,
device_id   TEXT,
temperature  NUMERIC,
humidity     NUMERIC
);

Эта команда создает таблицу conditions с четырьмя столбцами. В первом столбце будет храниться временная метка. Далее мы используем столбец времени, чтобы преобразовать таблицу в гипертаблицу:

SELECT create_hypertable('conditions', 'time');

Эта команда выполняет функцию create_hypertable(), которая создает гипертаблицу TimescaleDB из таблицы PostgreSQL, заменяя последнюю.

Вы получите следующий вывод:

create_hypertable
-------------------------
(1,public,conditions,t)
(1 row)

Вы создали новую гипертаблицу для хранения временных рядов. Теперь вы можете заполнить ее данными или удалить.

4: Запись и удаление гипертаблицы

На этом этапе мы вставим данные в таблицу с помощью стандартных команд SQL и импортируем большие наборы данных из внешних источников. Это откроет вам аспекты реляционной базы данных в TimescaleDB.

Сначала попробуйте запустить базовые команды. Вы можете вставить данные в гипертаблицу, используя стандартную SQL команду INSERT. Вставьте данные о температуре и влажности для устройства weather-pro-000000, используя следующую команду:

INSERT INTO conditions(time, device_id, temperature, humidity)
VALUES (NOW(), 'weather-pro-000000', 84.1, 84.1);

Вы увидите следующий вывод:

INSERT 0 1

Вы также можете вставить несколько строк данных одновременно. Попробуйте следующую команду:

INSERT INTO conditions
VALUES
(NOW(), 'weather-pro-000002', 71.0, 51.0),
(NOW(), 'weather-pro-000003', 70.5, 50.5),
(NOW(), 'weather-pro-000004', 70.0, 50.2);

Вы получите такой вывод:

INSERT 0 3

Команда INSERT также может вернуть некоторые или все вставленные данные, используя опцию RETURNING:

INSERT INTO conditions
VALUES (NOW(), 'weather-pro-000002', 70.1, 50.1) RETURNING *;

Вы получите такой вывод:

time                          |     device_id      | temperature | humidity
------------------------------+--------------------+-------------+----------
2019-09-15 14:14:01.576651+00 | weather-pro-000002 |        70.1 |     50.1
(1 row)

Если вы хотите удалить данные из гипертаблицы, используйте стандартную команду DELETE. Введите следующую команду, чтобы удалить все данные, где значение temperature выше 80 или humidity выше 50:

DELETE FROM conditions WHERE temperature > 80;
DELETE FROM conditions WHERE humidity > 50;

После операции удаления используйте команду VACUUM, чтобы восстановить пространство, все еще используемое удаленными данными.

VACUUM conditions;

Вы можете найти больше информации о команде VACUUM в документации PostgreSQL.

Эти команды хороши для ввода небольших фрагментов данных, но поскольку временные ряды часто генерируют огромные наборы данных из нескольких устройств одновременно, важно также знать, как вставлять сотни или тысячи строк за раз. Если вы подготовили данные из внешних источников в структурированной форме, например в формате csv, эту задачу можно быстро выполнить.

Давайте потренируемся на тестовом наборе, который представляет данные о температуре и влажности из разных мест. Это официальный набор данных TimescaleDB, созданный для тестирования базы данных. Больше информации об образцах данных можно найти в документации TimescaleDB.

Давайте импортируем данные из тестового набора weather_small в вашу БД. Выйдите из Postgresql:

\q

Загрузите набор данных и извлеките его:

wget https://timescaledata.blob.core.windows.net/datasets/weather_small.tar.gz
tar -xvzf weather_small.tar.gz

Затем импортируйте данные о температуре и влажности в БД:

sudo -u postgres psql -d timeseries -c "\COPY conditions FROM weather_small_conditions.csv CSV"

Команда подключится к базе данных timeseries и выполняет команду \COPY, которая копирует данные из выбранного файла в гипертаблицу conditions. Задача будет обрабатываться в течение нескольких секунд.

Когда данные будут введены в вашу таблицу, вы получите следующий вывод:

COPY 1000000

Вы добавили данные в гипертаблицу вручную и из набора. Можно переходить к выполнению запросов.

5: Запрос данных

Теперь, когда таблица содержит данные, вы можете выполнять различные запросы для их анализа.

Чтобы начать, войдите в базу данных:

sudo -u postgres psql -d timeseries

Как упоминалось ранее, для работы с гипертаблицами вы можете использовать стандартные команды SQL. Например, чтобы вывести последние 10 записей из гипертаблицы conditions, выполните следующую команду:

SELECT * FROM conditions LIMIT 10;

Вы увидите такой результат:

time                   |     device_id      |    temperature     | humidity
-----------------------+--------------------+--------------------+----------
2016-11-15 12:00:00+00 | weather-pro-000000 |               39.9 |     49.9
2016-11-15 12:00:00+00 | weather-pro-000001 |               32.4 |     49.8
2016-11-15 12:00:00+00 | weather-pro-000002 | 39.800000000000004 |     50.2
2016-11-15 12:00:00+00 | weather-pro-000003 | 36.800000000000004 |     49.8
2016-11-15 12:00:00+00 | weather-pro-000004 |               71.8 |     50.1
2016-11-15 12:00:00+00 | weather-pro-000005 |               71.8 |     49.9
2016-11-15 12:00:00+00 | weather-pro-000006 |                 37 |     49.8
2016-11-15 12:00:00+00 | weather-pro-000007 |                 72 |       50
2016-11-15 12:00:00+00 | weather-pro-000008 |               31.3 |       50
2016-11-15 12:00:00+00 | weather-pro-000009 |               84.4 |     87.8
(10 rows)

Эта команда позволяет увидеть, какие данные находятся в базе. Поскольку база данных содержит миллион записей, мы использовали LIMIT 10, чтобы ограничить вывод 10 записями.

Чтобы увидеть самые последние записи, отсортируйте массив данных по времени в порядке убывания:

SELECT * FROM conditions ORDER BY time DESC LIMIT 20;

Это выведет 20 самых последних записей.

Вы также можете добавить фильтр. Например, чтобы просмотреть записи с устройства weather-pro-000000, выполните:

SELECT * FROM conditions WHERE device_id = 'weather-pro-000000' ORDER BY time DESC LIMIT 10;

В этом случае вы увидите 10 самых последних данных о температуре и влажности, зарегистрированных устройством weather-pro-000000.

В дополнение к стандартным SQL командам TimescaleDB также предоставляет ряд специальных функций, которые нужны для анализа данных временных рядов. Например, чтобы найти медиану значений температуры, вы можете использовать следующий запрос с функцией percentile_cont:

SELECT percentile_cont(0.5)
WITHIN GROUP (ORDER BY temperature)
FROM conditions
WHERE device_id = 'weather-pro-000000';

Вы увидите следующий вывод:

percentile_cont
-----------------
40.5
(1 row)

Таким образом вы увидите среднюю температуру за весь период наблюдения устройства weather-pro-00000.

Чтобы показать последние значения для каждого из датчиков, вы можете использовать функцию last:

select device_id, last(temperature, time)
FROM conditions
GROUP BY device_id;

В выходных данных вы увидите список всех датчиков и последние зарегистрированные ими значения.

Чтобы получить первые значения, используйте функцию first.

Следующий пример более сложный. Он покажет среднечасовую, минимальную и максимальную температуры для выбранного датчика за последние 24 часа:

SELECT time_bucket('1 hour', time) "hour",
trunc(avg(temperature), 2) avg_temp,
trunc(min(temperature), 2) min_temp,
trunc(max(temperature), 2) max_temp
FROM conditions
WHERE device_id = 'weather-pro-000000'
GROUP BY "hour" ORDER BY "hour" DESC LIMIT 24;

Здесь вы использовали функцию time_bucket, более мощную версию функции date_trunc в PostgreSQL. В результате вы увидите, в какие периоды дня повышается или понижается температура:

hour                  | avg_temp | min_temp | max_temp
-----------------------+----------+----------+---------
2016-11-16 21:00:00+00 |    42.00 |    42.00 |    42.00
2016-11-16 20:00:00+00 |    41.92 |    41.69 |    42.00
2016-11-16 19:00:00+00 |    41.07 |    40.59 |    41.59
2016-11-16 18:00:00+00 |    40.11 |    39.79 |    40.59
2016-11-16 17:00:00+00 |    39.46 |    38.99 |    39.79
2016-11-16 16:00:00+00 |    38.54 |    38.19 |    38.99
2016-11-16 15:00:00+00 |    37.56 |    37.09 |    38.09
2016-11-16 14:00:00+00 |    36.62 |    36.39 |    37.09
2016-11-16 13:00:00+00 |    35.59 |    34.79 |    36.29
2016-11-16 12:00:00+00 |    34.59 |    34.19 |    34.79
2016-11-16 11:00:00+00 |    33.94 |    33.49 |    34.19
2016-11-16 10:00:00+00 |    33.27 |    32.79 |    33.39
2016-11-16 09:00:00+00 |    33.37 |    32.69 |    34.09
2016-11-16 08:00:00+00 |    34.94 |    34.19 |    35.49
2016-11-16 07:00:00+00 |    36.12 |    35.49 |    36.69
2016-11-16 06:00:00+00 |    37.02 |    36.69 |    37.49
2016-11-16 05:00:00+00 |    38.05 |    37.49 |    38.39
2016-11-16 04:00:00+00 |    38.71 |    38.39 |    39.19
2016-11-16 03:00:00+00 |    39.72 |    39.19 |    40.19
2016-11-16 02:00:00+00 |    40.67 |    40.29 |    40.99
2016-11-16 01:00:00+00 |    41.63 |    40.99 |    42.00
2016-11-16 00:00:00+00 |    42.00 |    42.00 |    42.00
2016-11-15 23:00:00+00 |    42.00 |    42.00 |    42.00
2016-11-15 22:00:00+00 |    42.00 |    42.00 |    42.00
(24 rows)

Больше полезных функций вы найдете в документации TimescaleDB.

Теперь вы знаете, как обрабатывать данные. Далее вы узнаете, как удалять и сжимать данные.

6: Настройка сжатия и удаления данных

По мере накопления данные будут занимать все больше места на жестком диске. Для экономии места в последней версии TimescaleDB предусмотрена функция сжатия данных. Эта функция не требует настройки каких-либо параметров файловой системы и может быстро повысить эффективность вашей базы данных. Больше дополнительной информации о том, как работает это сжатие, вы найдете в этой статье о сжатии от TimescaleDB.

Во-первых, включите сжатие вашей гипертаблицы:

ALTER TABLE conditions SET (
timescaledb.compress,
timescaledb.compress_segmentby = 'device_id'
);

Вы получите следующие данные:

NOTICE:  adding index _compressed_hypertable_2_device_id__ts_meta_sequence_num_idx ON _timescaledb_internal._compressed_hypertable_2 USING BTREE(device_id, _ts_meta_sequence_num)
ALTER TABLE

Примечание: Вы также можете настроить TimescaleDB для сжатия данных за определенный период времени. Например, вы можете запустить:

SELECT add_compress_chunks_policy('conditions', INTERVAL '7 days');

В этом примере данные будут автоматически сжаты через неделю.

Вы можете посмотреть статистику по сжатым данным с помощью команды:

SELECT *
FROM timescaledb_information.compressed_chunk_stats;

Затем вы увидите список блоков с их статусами: статус сжатия и количество места, занимаемое несжатыми и сжатыми данными в байтах.

Если у вас нет необходимости хранить данные в течение длительного периода времени, вы можете удалить устаревшие данные, чтобы освободить еще больше места. Для этого есть специальная функция drop_chunks. Она позволяет удалять блоки с данными старше указанного времени:

SELECT drop_chunks(interval '24 hours', 'conditions');

Этот запрос удалит из гипертаблицы conditions все блоки, данные которых созданы раньше, чем день назад.

Вы получите следующий вывод:

drop_chunks
----------------------------------------
_timescaledb_internal._hyper_1_2_chunk
(1 row)

Для автоматического удаления старых данных вы можете настроить задачу cron.

Читайте также: Автоматизация задач с помощью Cron

Закройте базу данных:

\q

Затем отредактируйте ваш crontab с помощью следующей команды, которая должна запускаться из оболочки:

crontab -e

Теперь добавьте в конец файла следующую строку:

...
0 1 * * * /usr/bin/psql -h localhost -p 5432 -U postgres -d postgres -c "SELECT drop_chunks(interval '24 hours', 'conditions');" >/dev/null 2>&1

Эта задача удаляет устаревшие данные (в данном случае все данные старше одного дня) каждый день в 1:00 утра.

Вывод

Вы настроили TimescaleDB на вашем сервере Ubuntu 18.04. Вы также научились создавать гипертаблицы, вставлять в них данные, запрашивать их, сжимать и удалять ненужные записи. На этих примерах вы научились пользоваться основными преимуществами TimescaleDB и увидели, чем эта БД отличается от традиционных реляционных систем управления базами данных. Среди преимуществ TimescaleDB:

  • Более высокая скорость приема данных
  • Высокая производительность запросов
  • Функции на основе времени

Теперь, когда вы знаете, как хранить данные временных рядов, вы можете использовать их для создания графиков. TimescaleDB совместим с инструментами визуализации, которые работают с PostgreSQL, например, с Grafana.

Читайте также: Установка и защита Grafana в Ubuntu 18.04

Tags: , , , ,

Добавить комментарий