Руководство по настройке источника данных 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 (Postgres pipes) в режиме CDC.
Таким образом, пользователи Timescale Cloud могут выполнить только однократную загрузку своих данных (Initial Load Only) с помощью
Postgres ClickPipe.
Конфигурация
Hypertable в Timescale не хранят данные, вставляемые непосредственно в них. Вместо этого данные сохраняются в нескольких соответствующих таблицах‑фрагментах («chunk»), которые находятся в схеме _timescaledb_internal. Для выполнения запросов к hypertable это не является проблемой. Но при логической репликации, вместо того чтобы отслеживать изменения в hypertable, мы отслеживаем их в таблицах chunk. Postgres ClickPipe содержит логику автоматического сопоставления изменений из таблиц chunk с родительской hypertable, но для этого требуются дополнительные шаги.
Если вы хотите выполнить только однократную загрузку ваших данных (Initial Load Only), пропустите шаги, начиная со второго.
- Создайте пользователя Postgres для ClickPipe и назначьте ему права
SELECTна таблицы, которые вы хотите реплицировать.
Обязательно замените clickpipes_user и clickpipes_password на нужные имя пользователя и пароль.
- От имени суперпользователя/администратора Postgres создайте публикацию на исходном экземпляре, включающую таблицы и гипертаблицы,
которые вы хотите реплицировать, а также всю схему
_timescaledb_internal. При создании ClickPipe необходимо выбрать эту публикацию.
Мы не рекомендуем создавать публикацию FOR ALL TABLES: это приводит к увеличению трафика из Postgres в ClickPipes (в этом случае отправляются изменения и для других таблиц, не входящих в pipe) и снижает общую эффективность.
Для публикаций, создаваемых вручную, добавьте все необходимые таблицы в публикацию, прежде чем добавлять их в pipe.
Некоторые управляемые сервисы не предоставляют своим администраторам необходимые права для создания публикации для всей схемы. В таком случае обратитесь в службу поддержки вашего провайдера. В качестве альтернативы вы можете пропустить этот и следующие шаги и выполнить разовую загрузку данных.
- Предоставьте пользователю, созданному ранее, права на репликацию.
После выполнения этих шагов вы сможете перейти к созданию ClickPipe.
Настройте сетевой доступ
Если вы хотите ограничить трафик к своему экземпляру Timescale, добавьте в список разрешённых адресов задокументированные статические NAT IP-адреса. Инструкции по настройке зависят от провайдера: если ваш провайдер указан в боковой панели, воспользуйтесь соответствующим разделом, в противном случае обратитесь в его службу поддержки.