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

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

Beta feature. Learn more.

Фон

TimescaleDB — это расширение с открытым исходным кодом для Postgres, разработанное компанией Timescale Inc, которое нацелено на повышение производительности аналитических запросов без необходимости переходить на другую СУБД. Это достигается за счет создания "гипертаблиц", которые управляются расширением и поддерживают автоматическое разбиение на "фрагменты". Гипертаблицы также поддерживают прозрачное сжатие и гибридное строково-колоночное хранение (известное как "гиперкор"), хотя эти функции требуют версии расширения с проприетарной лицензией.

Timescale Inc также предлагает два управляемых сервиса для TimescaleDB:

  • Managed Service for Timescale
  • Timescale Cloud.

Существуют сторонние вендоры, предлагающие управляемые сервисы, которые позволяют использовать расширение TimescaleDB, но из-за лицензионных ограничений эти вендоры поддерживают только открытую версию расширения.

Гипертаблицы Timescale ведут себя иначе, чем обычные таблицы Postgres, что создает некоторые сложности в процессе их репликации. Поэтому возможность репликации гипертаблиц Timescale следует рассматривать как добровольную.

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

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

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

Шаги, которые необходимо выполнить, зависят от того, как развернута ваша база данных Postgres с TimescaleDB.

  • Если вы используете управляемый сервис, и ваш провайдер указан в боковой панели, пожалуйста, следуйте руководству для этого провайдера.
  • Если вы развертываете TimescaleDB самостоятельно, следуйте общему руководству.

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

к сведению

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

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

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

к сведению

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

  1. Создайте пользователя Postgres для пайпа и дайте ему права на SELECT таблиц, которые вы хотите реплицировать.
CREATE USER clickpipes_user PASSWORD 'clickpipes_password';
GRANT USAGE ON SCHEMA "public" TO clickpipes_user;
-- If desired, you can refine these GRANTs to individual tables alone, instead of the entire schema
-- But when adding new tables to the ClickPipe, you'll need to add them to the user as well.
GRANT SELECT ON ALL TABLES IN SCHEMA "public" TO clickpipes_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA "public" GRANT SELECT ON TABLES TO clickpipes_user;
примечание

Не забудьте заменить clickpipes_user и clickpipes_password на желаемое имя пользователя и пароль.

  1. В качестве суперпользователя/admin пользователя создайте публикацию на исходном экземпляре, который содержит таблицы и гипертаблицы, которые вы хотите реплицировать, а также включает всю схему _timescaledb_internal. При создании ClickPipe вам нужно будет выбрать эту публикацию.
-- When adding new tables to the ClickPipe, you'll need to add them to the publication as well manually. 
  CREATE PUBLICATION clickpipes_publication FOR TABLE <...>, <...>, TABLES IN SCHEMA _timescaledb_internal;
подсказка

Мы не рекомендуем создавать публикацию FOR ALL TABLES, так как это приводит к увеличению трафика от Postgres к ClickPipes (отправка изменений по другим таблицам, не входящим в пайп) и снижает общую эффективность.

Для вручную созданных публикаций, пожалуйста, добавьте все таблицы, которые вы хотите, в публикацию перед добавлением их в пайп.

к сведению

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

  1. Предоставьте права репликации пользователю, созданному ранее.
-- Give replication permission to the USER
  ALTER USER clickpipes_user REPLICATION;

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

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

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