Руководство по настройке источника Postgres с TimescaleDB
Фон
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 и далее.
- Создайте пользователя Postgres для пайпа и дайте ему права на
SELECT
таблиц, которые вы хотите реплицировать.
Не забудьте заменить clickpipes_user
и clickpipes_password
на желаемое имя пользователя и пароль.
- В качестве суперпользователя/admin пользователя создайте публикацию на исходном экземпляре, который содержит таблицы и гипертаблицы, которые вы хотите реплицировать, а также включает всю схему
_timescaledb_internal
. При создании ClickPipe вам нужно будет выбрать эту публикацию.
Мы не рекомендуем создавать публикацию FOR ALL TABLES
, так как это приводит к увеличению трафика от Postgres к ClickPipes (отправка изменений по другим таблицам, не входящим в пайп) и снижает общую эффективность.
Для вручную созданных публикаций, пожалуйста, добавьте все таблицы, которые вы хотите, в публикацию перед добавлением их в пайп.
Некоторые управляемые сервисы не предоставляют своим администраторским пользователям необходимые права для создания публикации для всей схемы. Если это так, создайте запрос в службу поддержки вашего провайдера. В качестве альтернативы, вы можете пропустить этот шаг и следующие шаги и выполнить одноразовую загрузку ваших данных.
- Предоставьте права репликации пользователю, созданному ранее.
После этих шагов вы сможете продолжить создание ClickPipe.
Настройка сетевого доступа
Если вы хотите ограничить трафик к вашему экземпляру Timescale, пожалуйста, добавьте в белый список документированные статические NAT IP-адреса. Инструкции по этому поводу могут различаться в зависимости от провайдера, пожалуйста, проверьте боковую панель, если ваш провайдер указан, или создайте запрос в службу поддержки.