Руководство по настройке источника данных Postgres с TimescaleDB
Предпосылки
TimescaleDB — это расширение Postgres с открытым исходным кодом, разработанное компанией Timescale Inc, с целью повышения производительности аналитических запросов без необходимости отказываться от Postgres. Это достигается за счёт создания «гипертаблиц» (hypertables), которые управляются расширением и поддерживают автоматическое разбиение на «фрагменты» (chunks). Гипертаблицы также поддерживают прозрачное сжатие и гибридное строкочно-столбцовое хранение (известное как «hypercore»), хотя для этих возможностей требуется версия расширения с проприетарной лицензией.
Timescale Inc также предлагает два управляемых сервиса для TimescaleDB:
Managed Service for TimescaleTimescale 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), пропустите шаги, начиная со второго.
-
Создайте отдельного пользователя для ClickPipes:
-
Предоставьте на уровне схемы доступ только для чтения пользователю, созданному на предыдущем шаге. В следующем примере показаны права для схемы
public. Повторите эти команды для каждой схемы, содержащей таблицы, которые вы хотите реплицировать: -
Предоставьте пользователю права на репликацию:
-
От имени суперпользователя/администратора Postgres создайте публикацию с гипертаблицами, которые вы хотите реплицировать. Публикация также должна включать всю схему
_timescaledb_internal, чтобы пайп мог получать изменения из базовых фрагментов. Мы настоятельно рекомендуем включать в публикацию только те таблицы, которые вам нужны, чтобы избежать излишних накладных расходов на производительность.ПримечаниеЛюбая таблица, включённая в публикацию, должна либо иметь определённый primary key, либо иметь настроенную replica identity со значением
FULL. См. раздел Postgres FAQs для получения рекомендаций по выбору области действия публикаций.Публикация
clickpipesбудет содержать набор событий изменений, сгенерированных из указанных таблиц, и позже будет использоваться для приёма потока репликации.СсылкиНекоторые управляемые сервисы не предоставляют своим пользователям с правами администратора необходимые разрешения для создания публикации для всей схемы. Если это так, создайте обращение в службу поддержки вашего провайдера. Либо вы можете пропустить этот шаг (и последующие шаги) и вместо этого выполнить однократную загрузку данных.
После выполнения этих шагов вы можете перейти к созданию ClickPipe.
Настройка сетевого доступа
Если вы хотите ограничить трафик к своему экземпляру Timescale, добавьте в список разрешённых задокументированные статические NAT IP-адреса. Порядок настройки зависит от провайдера; ознакомьтесь с разделом в боковой панели, если ваш провайдер там указан, или откройте тикет в их службе поддержки.