Гипертаблицы 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 — локальная установка не требуется.
Все уроки этого курса
- Гипертаблицы TimescaleDB
- Непрерывные агрегаты
- Политики сжатия и хранения
- Выбор индексов для временных рядов