0Pricing
SQL Academy · Урок

Гипертаблицы TimescaleDB

Преобразуйте таблицу Postgres в гипертаблицу TimescaleDB с автоматическим разбиением по времени на основе интервала сегментов

«Гипертаблицы TimescaleDB» — бесплатный урок SQL Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения SQL Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс SQL Academy содержит 4 уроков всего.

Что такое TimescaleDB?

Расширение PostgreSQL, созданное для данных временных рядов. Оно добавляет автоматическое секционирование по времени, сжатие, хранение данных и непрерывные агрегаты. Его используют самостоятельно или вместе с обычным PostgreSQL.

Гипертаблица

Логически единая таблица, физически разделённая на «чанки» по времени:

CREATE EXTENSION IF NOT EXISTS timescaledb;

CREATE TABLE metrics (
  ts TIMESTAMPTZ NOT NULL,
  device_id BIGINT NOT NULL,
  value DOUBLE PRECISION
);

SELECT create_hypertable('metrics', 'ts');
-- metrics is now a hypertable, chunks created automatically.

Интервал времени чанка

Чанк по умолчанию охватывает 7 дней. Настройте интервал с учётом скорости поступления данных (для данных с высокой скоростью поступления используйте меньшие чанки):

SELECT create_hypertable('metrics', 'ts', chunk_time_interval => INTERVAL '1 day');
-- One chunk per day, smaller and faster to drop.

Вставка данных

Используйте обычный INSERT — TimescaleDB направит строки в нужный чанк:

INSERT INTO metrics (ts, device_id, value)
VALUES (NOW(), 1, 42.5);

Запросы к гипертаблицам

Она выглядит как обычная таблица. Планировщик исключает чанки из обработки для запросов с ограничением по времени:

SELECT * FROM metrics
WHERE ts >= NOW() - INTERVAL '7 days'
ORDER BY ts DESC LIMIT 100;
-- Only the relevant chunks are read.

time_bucket: более умная date_trunc

Помощник TimescaleDB для группировки:

SELECT time_bucket('1 hour', ts) AS hour,
       AVG(value) AS avg_value
FROM metrics
WHERE device_id = 42
  AND ts >= NOW() - INTERVAL '24 hours'
GROUP BY hour
ORDER BY hour;

Секционирование по нескольким столбцам

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

SELECT create_hypertable('metrics', 'ts', 'device_id', 4);
-- Hash-partitions device_id into 4 space partitions per time chunk.

Запросы с обоими фильтрами

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

SELECT * FROM metrics
WHERE device_id = 42
  AND ts >= NOW() - INTERVAL '7 days';
-- Prunes by both time and space.

Индексы гипертаблиц

Индексы распространяются на каждый чанк:

CREATE INDEX metrics_device_idx ON metrics (device_id, ts DESC);
-- Composite index ideal for 'recent data for one device' queries.

Обновление гипертаблиц

UPDATE и DELETE работают, но для данных временных рядов должны выполняться редко. Старые данные обычно только добавляются и не изменяются.

Перенос из обычных таблиц

Существующие таблицы можно преобразовать в гипертаблицы:

SELECT create_hypertable('metrics', 'ts', migrate_data => true);

Итоги

Гипертаблицы = автоматическое секционирование по времени для PostgreSQL.

  • Одна логическая таблица, множество физических чанков
  • create_hypertable + chunk_time_interval
  • time_bucket для агрегации по интервалам
  • Индексы распространяются на все чанки

Быстрая проверка

Вы загружаете показатели IoT со скоростью 100 000 строк в секунду. Зачем преобразовывать таблицу в гипертаблицу TimescaleDB?

Часто задаваемые вопросы

Урок «Гипертаблицы TimescaleDB» бесплатный?

Да — полный текст урока «Гипертаблицы TimescaleDB» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс SQL Academy, подпишись на CoddyKit PRO. Курс SQL Academy содержит 4 уроков всего.

Чему я научусь в уроке «Гипертаблицы TimescaleDB»?

Преобразуйте таблицу Postgres в гипертаблицу TimescaleDB с автоматическим разбиением по времени на основе интервала сегментов Ты практикуешь SQL Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать SQL Academy?

Предыдущий опыт не требуется. SQL Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Гипертаблицы TimescaleDB»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке SQL Academy?

Да. Каждый урок SQL Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Гипертаблицы TimescaleDB
  2. Непрерывные агрегаты
  3. Политики сжатия и хранения
  4. Выбор индексов для временных рядов
← Назад к SQL Academy