Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Руководство по настройке Postgres с TimescaleDB как источника

Возможность в статусе бета

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

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 не хранят данные, вставленные непосредственно в них. Вместо этого данные хранятся в нескольких соответствующих таблицах «фрагмент», которые находятся в схеме _timescaledb_internal. Для выполнения запросов к гипертаблицам это не проблема. Но при логической репликации изменения отслеживаются не в гипертаблице, а в таблице фрагмента. ClickPipe для Postgres содержит логику, которая автоматически сопоставляет изменения из таблиц фрагментов с родительской гипертаблицей, но для этого требуются дополнительные шаги.

  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, чтобы пайп мог получать изменения из базовых таблиц фрагментов. Мы настоятельно рекомендуем включать в публикацию только нужные таблицы, чтобы избежать лишних накладных расходов на производительность.

   -- When adding new tables to the ClickPipe, you'll need to add them to the publication manually as well.
   CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2, TABLES IN SCHEMA _timescaledb_internal;

Публикация clickpipes определяет набор таблиц, события изменений в которых будут передаваться в ClickPipes. Мы не рекомендуем использовать FOR ALL TABLES, если только вы не планируете реплицировать все таблицы, поскольку включение лишних таблиц увеличивает объём WAL-трафика из Postgres в ClickPipes и снижает общую эффективность репликации.

После этого вы сможете перейти к созданию ClickPipe.

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

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

Navigation