Выпуск СУБД TimescaleDB 1.2

Представлен выпуск СУБД TimescaleDB 1.2, предназначенной для хранения и обработки данных в форме временного ряда (срезы значений параметров через заданные промежутки времени, запись образует время и набор соответствующих этому времени значений). Подобная форма хранения оптимальна для таких применений как системы мониторинга, торговые платформы, системы сбора метрик и состояний датчиков. Предоставляются средства для интеграции с проектом Grafana и Prometheus. Проект TimescaleDB реализован в виде расширения к PostgreSQL и распространяется под лицензией Apache 2.0.

Новый выпуск примечателен изменением модели лицензирования. Помимо ранее применяемой свободной лицензии Apache 2.0, часть кода с расширенными возможностями теперь поставляется под отдельной проприетарной лицензией Timescale (TSL), не допускающей внесение изменений, запрещающей использование кода в сторонних продуктах и не разрешающей бесплатное использование в облачных БД (database-as-a-service). По сути код под лицензией TSL доступен лишь для просмотра. Часть функций под лицензией TSL поставляется бесплатно в Community-редакции продукта, а часть под коммерческой лицензией в составе закрытой платной Enterprise-редакции (для ознакомления поставляется ограниченная по времени trial-версия). В том числе под коммерческой лицензией развивается код для обработки политик вытеснения устаревших данных, который позволяет хранить только актуальные данные и автоматически удалять, агрегировать или архивировать устаревшие записи.

Среди добавленных в TimescaleDB 1.2 новшеств:

  • Поддержка упорядоченного добавления, позволяющего оптимизировать обработку больших запросов, выполняющих группировку по времени записи и ограничивающих конечный вывод через выражение LIMIT. После включения указанной оптимизации производительность некоторых запросов с LIMIT возросла до 100 раз;
  • Добавлена поддержка установки поверх PostgreSQL 11;
  • Под лицензией TSL предложены аналитические функции для анализа данных в форме временного ряда (time_bucket_gapfill для создания непрерывных сгруппированных последовательностей, interpolate для интерполяции значений и locf для заполнения пустот предыдущим значением). Добавлена команда reorder_chunk для перегруппировки данных на диске для оптимизации выборки по определённому полю (аналог команды «CLUSTER» в PostgreSQL). После оптимизации хранилища зафиксировано увеличение скорость обработки некоторых запросов в 100-1000 раз;
  • Под коммерческой лицензией (Enterprise) предложены средства для управления жизненным циклом данных, позволяющие выполнять чистку устаревших записей и перегруппировку данных по расписанию или при достижении определённых параметров, таких как размер БД.

Напомним, что СУБД TimescaleDB позволяет применять полноценные SQL-запросы для анализа накопленных данных, сочетая удобство работы, свойственное реляционным СУБД, с масштабированием и возможностями, присущими специализированным NoSQL-системам. Структура хранения оптимизирована для обеспечения высокой скорости добавления данных. Поддерживается пакетное добавления наборов данных, использование размещаемых в оперативной памяти индексов, загрузка исторических срезов задним числом, применение транзакций.

Ключевой особенностью TimescaleDB является поддержка автоматического секционирования (партицирования) массива данных. Входной поток данных автоматически распределяется по секционированным таблицам. Секции создаются в зависимости от времени (в каждой секции хранятся данные за определённый промежуток времени) или в привязке к произвольному ключу (например, идентификатору устройства, местоположению и т.п.). Для оптимизации производительности секционированные таблицы могут распределяться по разным дискам.

Для запросов секционированная БД выглядит как одна большая таблица, именуемая гипертаблицей. Гипертаблица представляет собой виртуальное представление множества отдельных таблиц, в которых накапливаются поступающие данные. Гипертаблица используется не только для запросов и добавления данных, но и для таких операций, как создание индексов и изменение структуры («ALTER TABLE»), скрывая от разработчика низкоуровневую сегментированную структуру БД. C гипертаблицей можно использовать любые агрегатные функции, подзапросы, операции слияния (JOIN) с обычными таблицами и оконные функции.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.