TimescaleDB 拡張付き Postgres ソースのセットアップガイド
背景
TimescaleDB は、Timescale Inc によって開発されたオープンソースの Postgres 拡張機能であり、 Postgres から移行することなく分析クエリのパフォーマンスを向上させることを目的としています。これは、拡張機能によって管理される 「ハイパーテーブル」を作成し、それらが自動的な「チャンク」へのパーティション化をサポートすることで実現されています。 ハイパーテーブルは透過的な圧縮やハイブリッド行・カラムナ型ストレージ(「hypercore」として知られる)もサポートしますが、 これらの機能を利用するには、プロプライエタリライセンス版の拡張機能が必要です。
Timescale Inc は TimescaleDB 向けに 2 つのマネージドサービスも提供しています:
Managed Service for TimescaleTimescale Cloud
TimescaleDB 拡張機能を利用できるマネージドサービスを提供するサードパーティベンダーも存在しますが、 ライセンスの関係により、これらのベンダーは拡張機能のオープンソース版のみをサポートしています。
Timescale のハイパーテーブルはいくつかの点で通常の Postgres テーブルとは異なる挙動をします。 これはレプリケーション処理を複雑にするため、Timescale のハイパーテーブルをレプリケートする機能は ベストエフォートとして扱うべきです。
サポートされている Postgres バージョン
ClickPipes は Postgres バージョン 12 以降に対応しています。
論理レプリケーションを有効化する
TimescaleDB を含む Postgres インスタンスのデプロイ方法によって、実施する手順が異なります。
- マネージドサービスを利用していて、そのプロバイダーがサイドバーに記載されている場合は、そのプロバイダー向けガイドに従ってください。
- 自身で TimescaleDB をデプロイしている場合は、汎用ガイドに従ってください。
上記以外のマネージドサービスを利用していて、論理レプリケーションがまだ有効になっていない場合は、プロバイダーにサポートチケットを送信し、有効化の支援を依頼してください。
Timescale Cloud は論理レプリケーションをサポートしていません。論理レプリケーションは CDC モードの Postgres pipes に必要です。
そのため、Timescale Cloud のユーザーは Postgres ClickPipe を使用したデータの一度きりのロード(Initial Load Only)のみ実行できます。
設定
Timescale のハイパーテーブル自体には、挿入されたデータは保存されません。代わりに、データは _timescaledb_internal スキーマ内にある対応する複数の「チャンク」テーブルに保存されます。ハイパーテーブルに対してクエリを実行する場合、これは問題になりません。しかし論理レプリケーション中は、ハイパーテーブルの変更ではなく、チャンクテーブルの変更を検出します。Postgres ClickPipe には、チャンクテーブルから親ハイパーテーブルへの変更を自動的に再マッピングするロジックがありますが、これには追加の手順が必要です。
データの一度限りのロード(Initial Load Only)のみを行いたい場合は、手順 2 以降をスキップしてください。
-
ClickPipes 用の Postgres ユーザーを作成します。
-
前の手順で作成したユーザーに対して、スキーマレベルの読み取り専用アクセス権を付与します。次の例では、
publicスキーマに対する権限を示しています。レプリケーションしたいテーブルを含む各スキーマに対して、これらのコマンドを繰り返してください。 -
ユーザーにレプリケーション権限を付与します。
-
レプリケーションしたいテーブルを含む publication を作成します。パフォーマンスのオーバーヘッドを避けるため、publication には必要なテーブルのみを含めることを強く推奨します。
注記publication に含めるテーブルはすべて、主キー が定義されているか、replica identity が
FULLに設定されている必要があります。スコープ設定のガイダンスについては、Postgres FAQs を参照してください。-
特定のテーブル向けに publication を作成するには、次のようにします。
-
特定スキーマ内のすべてのテーブル向けに publication を作成するには、次のようにします。
clickpipespublication には、指定したテーブルから生成される変更イベントの集合が含まれ、後でレプリケーションストリームを取り込むために使用されます。 -
-
先ほど作成したユーザーにレプリケーション権限を付与します。
これらの手順が完了すると、ClickPipe を作成できるようになります。
ネットワークアクセスの構成
Timescale インスタンスへのトラフィックを制限したい場合は、ドキュメントに記載されている静的 NAT IP を許可リストに登録してください。 具体的な手順はプロバイダーによって異なります。ご利用のプロバイダーがサイドバーに記載されている場合はその手順に従い、記載がない場合はプロバイダーに問い合わせチケットを送信して確認してください。