Перейти к основному содержанию

Общие сведения

TimescaleDB — это расширение Postgres с открытым исходным кодом, разработанное компанией Timescale Inc, которое призвано повысить производительность аналитических запросов без необходимости отказываться от Postgres. Это достигается за счёт создания «гипертаблиц», которыми управляет расширение и которые поддерживают автоматическое разбиение на «фрагменты». Гипертаблицы также поддерживают прозрачное сжатие и гибридное строково-столбцовое хранение (известное как «hypercore»), хотя эти возможности требуют версии расширения с проприетарной лицензией. Timescale Inc также предлагает два управляемых сервиса для TimescaleDB:
  • Managed Service for Timescale
  • Timescale Cloud.
Сторонние поставщики также предлагают управляемые сервисы, позволяющие использовать расширение TimescaleDB, но из-за лицензионных ограничений они поддерживают только версию расширения с открытым исходным кодом. Гипертаблицы Timescale в ряде аспектов ведут себя иначе, чем обычные таблицы Postgres. Это создаёт определённые сложности при их репликации, поэтому возможность репликации гипертаблиц Timescale следует рассматривать как best effort.

Поддерживаемые версии Postgres

ClickPipes поддерживает Postgres версии 12 и новее.

Включение логической репликации

Дальнейшие действия зависят от того, как развернут ваш экземпляр Postgres с TimescaleDB.
  • Если вы используете управляемый сервис и ваш провайдер указан на боковой панели, следуйте руководству для этого провайдера.
  • Если вы разворачиваете TimescaleDB самостоятельно, следуйте общему руководству.
Для других управляемых сервисов обратитесь в поддержку своего провайдера, чтобы получить помощь с включением логической репликации, если она еще не включена.
Timescale Cloud не поддерживает включение логической репликации, которая требуется для Postgres-пайпов в режиме CDC. В результате пользователи Timescale Cloud могут выполнять только однократную загрузку данных (Initial Load Only) с помощью Postgres ClickPipe.

Конфигурация

Гипертаблицы Timescale не хранят данные, вставленные непосредственно в них. Вместо этого данные хранятся в нескольких соответствующих таблицах «фрагмент», которые находятся в схеме _timescaledb_internal. Для выполнения запросов к гипертаблицам это не проблема. Но при логической репликации изменения отслеживаются не в гипертаблице, а в таблице фрагмента. ClickPipe для Postgres содержит логику, которая автоматически сопоставляет изменения из таблиц фрагментов с родительской гипертаблицей, но для этого требуются дополнительные шаги.
Если вы хотите выполнить только одноразовую загрузку данных (Initial Load Only), пропустите шаг 2 и все последующие.
  1. Создайте отдельного пользователя для ClickPipes:
    CREATE USER clickpipes_user PASSWORD 'some-password';
    
  2. Выдайте пользователю, созданному на предыдущем шаге, доступ на уровне схемы в режиме только для чтения. В следующем примере показаны разрешения для схемы public. Повторите эти команды для каждой схемы, содержащей таблицы, которые вы хотите реплицировать:
    GRANT USAGE ON SCHEMA "public" TO clickpipes_user;
    GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user;
    ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user;
    
  3. Выдайте пользователю права на репликацию:
    ALTER USER clickpipes_user WITH REPLICATION;
    
  4. От имени суперпользователя/администратора Postgres создайте публикацию с гипертаблицами, которые вы хотите реплицировать. Публикация также должна включать всю схему _timescaledb_internal, чтобы пайп мог получать изменения из базовых таблиц фрагментов. Мы настоятельно рекомендуем включать в публикацию только нужные таблицы, чтобы избежать лишних накладных расходов на производительность.
Для любой таблицы, включенной в публикацию, должен быть либо определен первичный ключ, либо для нее должна быть настроена replica identity со значением FULL. Рекомендации по определению области публикаций см. в разделе FAQ по Postgres.
   -- При добавлении новых таблиц в ClickPipe их также необходимо вручную добавить в публикацию.
   CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2, TABLES IN SCHEMA _timescaledb_internal;
Публикация clickpipes будет содержать набор событий изменений из указанных таблиц и позже будет использоваться для приёма потока репликации.
Некоторые управляемые сервисы не предоставляют своим администраторам необходимые разрешения на создание публикации для всей схемы. Если это ваш случай, откройте тикет в службе поддержки своего провайдера. Либо вы можете пропустить этот шаг (и следующие шаги) и вместо этого выполнить однократную загрузку данных.
После этого вы сможете перейти к созданию ClickPipe.

Настройка сетевого доступа

Если вы хотите ограничить трафик к своему экземпляру Timescale, добавьте задокументированные статические NAT IP-адреса в список разрешённых. Порядок действий зависит от провайдера: если ваш провайдер указан на боковой панели, воспользуйтесь соответствующей инструкцией; в противном случае создайте у него тикет.
Последнее изменение 10 июня 2026 г.