Snowflake Connector for PostgreSQL について¶
重要
PostgreSQL 用Snowflakeコネクタにご興味をお持ちいただきありがとうございます。現在、大幅に改善されたエクスペリエンスを提供する次世代ソリューションに焦点を当てています。したがって、このコネクタを一般提供ステータスに移行することは、現在の製品ロードマップにはありません。このコネクタはプレビュー機能として引き続き使用できますが、将来のバグ修正および改善のサポートは保証されないことに注意してください。新しいソリューションは として利用可能です 用Openflowコネクタ PostgreSQL および には、より優れたパフォーマンス、カスタマイズ性、強化された展開オプションが含まれます。
Snowflake Connector for PostgreSQL により以下を実行できます。
- PostgreSQL データベースからSnowflakeにデータをロードする。 
- 複製を構成して PostgreSQL データベースの変更がSnowflakeに複製されるようにする。 
Snowflakeと PostgreSQL 間の接続を処理するために、コネクタはエージェントを使用します。エージェントはDockerイメージとして配布されます。エージェントはネットワーク内で実行され、Snowflakeアカウントにデータをプッシュするために使用されます。
注釈
Snowflake Connector for PostgreSQL では、エージェントアプリケーションのインスタンスが常に1つだけ実行されている必要があります。
継続中の増分更新では、ソースデータベースで実行された変更をキャプチャする変更データキャプチャ(CDC)手法が使用されます。変更には、 INSERT、 UPDATE、 DELETE の操作が含まれ、これらはSnowflakeの宛先データベースに自動的にレプリケートされます。
複数のアプリケーションインスタンス¶
Snowflakeアカウントに Snowflake Connector for PostgreSQL の複数のインスタンスをインストールできます。詳細については、 オプション: Snowflake Connector for PostgreSQL の複数のインスタンスをインストールする をご参照ください。
プライベートリンク¶
PostgreSQL のSnowflakeコネクタは、プライベートリンクをサポートしています。詳細については、次をご参照ください。
エージェントとコネクタアプリケーションの互換性¶
Snowflake Connector for PostgreSQL は、 x.y.z version と記述された特定のバージョンに対してリリースされます。ここで、xはメジャー、yはマイナー、zはパッチです。dockerhub上のエージェントもX.Y.Zバージョンでリリースされます。Snowflake Connector for PostgreSQL の各x.y.zバージョンは、同じメジャーバージョンX=xを持ち、エージェントのマイナーバージョンよりも大きいバージョンを持たないすべてのエージェントをサポートします。さらに、 Snowflake Connector for PostgreSQL の各x.0.0バージョンは、すべてのYとZに対してエージェントのすべての(x-1).Y.Zバージョンをサポートします。
既知の制限¶
次のセクションでは、コネクタの既知の制限について説明します。
リードレプリカはサポートされていません。¶
PostgreSQL の制限により、論理複製はレプリカではサポートされていないため、 Snowflake Connector for PostgreSQL はプライマリデータベースにのみ接続する必要があります。
コネクタの可用性¶
コネクタをインストールするときは、次の制限に注意してください。
- 政府リージョンのアカウントはサポートされていません。 
- コネクタをインストールして構成するには、 ACCOUNTADMIN ロールを持つユーザーとしてログインする必要があります。現時点では、他のロールはサポートされていません。 
タイプの互換性¶
ソースデータベースとSnowflakeの列タイプが異なるため、列の最大容量や許容範囲により、一部の値はSnowflakeに変換して書き込むことができません。例:
- Snowflake BINARY タイプの最大長は64 MB (67,108,864バイト)です 
- DATE、 DATETIME、 TIMESTAMP などのSnowflake日付タイプでは、最大年数は9999年です 
- Snowflake VARCHAR タイプの最大長は128 MB (134,217,728バイト)です 
このような非互換性が発生した場合、テーブルのレプリケーションは失敗して停止します。
ソーステーブルスキーマの変更¶
次の表は、ソーステーブルスキーマに対するさまざまなタイプの変更と、それらがサポートされているかどうか、またサポートされている場合はその方法を示しています。
新しい列名は、識別子の制限のセクションで説明されているものと同じ制限が適用されます。
| スキーマ変更のタイプ | サポートの有無 | メモ | 
|---|---|---|
| 新しい列を追加する | 有り | 新しい列は、レプリケーションの開始時に存在していた他の列と同様に、宛先テーブルに表示されます。 削除された列または名前が変更された列と同じ名前の新しい列を追加することはできません。 たとえば、  | 
| 既存の列を削除する | 有り | ソーステーブルで列が削除されても、宛先テーブルでは削除されません。代わりに、ソフトデリート方式が採用され、列名は  たとえば、列  | 
| 列の名前を変更する | 有り | 列の名前を変更することは、列を削除して新しい名前で新しい列を作成する操作と同じです。削除は、前の行で説明したソフトデリートのアプローチに従います。 たとえば、列  削除された列または名前が変更された列と同じ名前に列名を変更することはできません。たとえば、  | 
| 列のタイプを変更する | 一部 | ソーステーブル列のタイプを変更できるのは、以前のタイプと新しいタイプの両方がSnowflakeで同じタイプにマップされている場合のみです。 それ以外の場合、レプリケーションは永久に失敗します。 | 
| 数値列の精度を変更する | 無し | ソーステーブル列の精度を変更すると、レプリケーションは永久に失敗します。 | 
| 数値列のスケールを変更する | 無し | ソーステーブル列のスケールを変更すると、レプリケーションは永久に失敗します。 | 
| 主キーの定義を変更する | 無し | ソーステーブル列の主キーの定義を変更すると、レプリケーションは永久に失敗します。 | 
大容量の列¶
アクティブエージェントは、一部のイベントがレプリケーション用に追加されなかったソーステーブルを参照している場合でも、論理レプリケーションメカニズムを使用してすべてのイベントを継続的に読み取ります。論理複製に、 TEXT のような列の更新などの非常に大きなイベントが含まれている場合、使用可能なメモリが不足しているためにエージェントがクラッシュする可能性があります。
主キー¶
主キーのないテーブルはサポートされていません。
識別子の制限¶
現在、コネクタはレプリケートされたスキーマ名、テーブル名、カラム名の " 文字をサポートしていません。さらに、次のキーワードはサポートされていません。
- スキーマ名:
- INFORMATION_SCHEMA
 
- 列名:
- _SNOWFLAKE_INSERTED_AT
- _SNOWFLAKE_UPDATED_AT
- _SNOWFLAKE_DELETED
- __SNOWFLAKE_DELETEDのサフィックスが付く名前
- 予約および制限されたキーワード で - Cannot be used as column nameとマークされた列名
 
PostgreSQL バージョン >= 11¶
現在、コネクタは wal_level = logical バージョン11で導入された PostgreSQL 構成プロパティに依存しています。
レプリカIDの設定¶
レプリケートされたテーブルの レプリカID は DEFAULT に設定する必要があります。
TOAST 値¶
TOAST の値を持つテーブルのレプリケーションは現在サポートされていません。これには、レプリケーションがすでに実行されているときに、ソーススキーマに TOAST 可能な列を追加することが含まれます。
レプリカID¶
特定のテーブルのレプリカIDは主キーと同じである必要があります。そうでない場合、レプリケーションは失敗します。