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

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

Beta feature. Learn more.

Предпосылки

TimescaleDB — это расширение Postgres с открытым исходным кодом, разработанное компанией Timescale Inc, с целью повышения производительности аналитических запросов без необходимости отказываться от Postgres. Это достигается за счёт создания «гипертаблиц» (hypertables), которые управляются расширением и поддерживают автоматическое разбиение на «фрагменты» (chunks). Гипертаблицы также поддерживают прозрачное сжатие и гибридное строкочно-столбцовое хранение (известное как «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.

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

Гипертаблицы (hypertables) Timescale не хранят вставленные в них данные напрямую. Вместо этого данные хранятся в нескольких соответствующих таблицах-фрагментах (chunk), которые находятся в схеме _timescaledb_internal. Для выполнения запросов к гипертаблицам это не является проблемой. Но при логической репликации изменения обнаруживаются не в гипертаблице, а в таблице-фрагменте (chunk). Postgres ClickPipe содержит логику для автоматического отображения изменений из таблиц-фрагментов в родительскую гипертаблицу, но для этого требуются дополнительные шаги.

Ссылки

Если вы хотите выполнить только однократную загрузку ваших данных (Initial Load Only), пропустите шаги, начиная со второго.

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

    Примечание

    Любая таблица, включённая в публикацию, должна либо иметь определённый primary key, либо иметь настроенную replica identity со значением FULL. См. раздел Postgres FAQs для получения рекомендаций по выбору области действия публикаций.

    -- При добавлении новых таблиц в ClickPipe вам также потребуется вручную добавить их в публикацию.
    CREATE PUBLICATION clickpipes FOR TABLE table_to_replicate, table_to_replicate2, TABLES IN SCHEMA _timescaledb_internal;
    

    Публикация clickpipes будет содержать набор событий изменений, сгенерированных из указанных таблиц, и позже будет использоваться для приёма потока репликации.

    Ссылки

    Некоторые управляемые сервисы не предоставляют своим пользователям с правами администратора необходимые разрешения для создания публикации для всей схемы. Если это так, создайте обращение в службу поддержки вашего провайдера. Либо вы можете пропустить этот шаг (и последующие шаги) и вместо этого выполнить однократную загрузку данных.

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

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

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