複数のアカウントにわたるデータベースの複製の概要¶
この機能により、(同じ組織内の)Snowflakeアカウント間でデータベースを複製し、データベースオブジェクトと保存データの同期を維持できます。データベース複製は、 地域 および クラウドプラットフォーム でサポートされています。
このトピックの内容:
プライマリデータベースとは何ですか?¶
複製は、既存の永続データベースまたは一時データベースに対して有効にできます。複製を有効にすると、データベースが プライマリデータベース として指定されます。アカウント内の任意の数のデータベースをプライマリデータベースとして指定できます。同様に、プライマリデータベースは組織内の任意の数のアカウントに複製できます。これには、各ターゲットアカウントで指定されたプライマリデータベースのレプリカとして セカンダリデータベース を作成することが含まれます。これらのアカウントは通常、同じまたは異なるクラウドプラットフォーム上の他の地域にあります。
すべての DML/DDL 操作はプライマリデータベースで実行されます。各読み取り専用のセカンダリデータベースは、プライマリデータベースのスナップショットで定期的に更新し、すべてのデータとデータベースオブジェクト(つまり、スキーマ、テーブル、ビュー)の DDL 操作を複製できます。
複製の概要¶
このセクションでは、複製に使用できるオブジェクトと設定の概要を説明します。
複製されたデータベースオブジェクト¶
プライマリデータベースが複製されると、そのデータベースオブジェクトとデータのスナップショットがセカンダリデータベースに転送されます。ただし、一部のデータベースオブジェクトは複製されません。次の表には、セカンダリデータベースに複製されるデータベースオブジェクトが示されています。
これらのオブジェクトに関する特定の使用情報については、 データベースの複製の考慮事項 をご参照ください。
オブジェクト |
タイプまたは機能 |
複製 |
メモ |
---|---|---|---|
テーブル |
永続テーブル |
✔ |
|
一時テーブル |
✔ |
||
仮テーブル |
|||
クラスタ化されたテーブルの自動クラスタリング |
✔ |
||
外部テーブル |
プライマリデータベースに外部テーブルが存在する場合、セカンダリデータベースの作成または更新はブロックされます。 . データベース複製の将来のバージョンを計画しています。 |
||
テーブルの制約 |
✔ |
データベースの外部キーが別のデータベースのプライマリ/ユニークキーを参照する場合を除きます。 . |
|
シーケンス |
✔ |
||
ビュー |
ビュー |
✔ |
ビューが別のデータベースのオブジェクト(例:テーブル列、他のビュー、 UDFs、またはステージ)を参照する場合、 . 両方のデータベースを複製する必要があります。 |
マテリアライズドビュー |
✔ |
||
セキュアビュー |
✔ |
||
ファイル形式 |
✔ |
||
ステージ |
ステージ |
データベース複製の将来のバージョンを計画しています。 |
|
一時的なステージ |
|||
パイプ |
データベース複製の将来のバージョンを計画しています。 |
||
ストアドプロシージャ |
✔ |
||
ストリーム |
データベース複製の将来のバージョンを計画しています。 |
||
タスク |
データベース複製の将来のバージョンを計画しています。 |
||
SQL および JavaScript UDFs |
✔ |
||
ポリシー |
行アクセスおよび列レベルのセキュリティ(マスキング) |
✔ |
次のいずれかのユースケースが当てはまる場合、複製操作はブロックされます。 . プライマリデータベースがEnterprise(またはそれ以上)アカウントにあり、ポリシーが含まれているが、複製を承認された1つ以上のアカウントが下位エディションにある場合。 . プライマリデータベースに含まれるポリシーが、別のデータベースにあるポリシーを参照する場合。 |
タグ |
オブジェクトのタグ付け |
✔ |
タグ複製の動作は、ポリシー複製と同じです。 |
アカウント内の他のオブジェクト¶
現在、複製は データベースのみ でサポートされています。アカウント内の他のタイプのオブジェクトは 複製できません。このリストには次が含まれます。
ユーザー
ロール
ウェアハウス
リソースモニター
共有
アクセス制御¶
データベースオブジェクトに付与された権限は、セカンダリデータベースに複製されません。
パラメーター¶
アカウントパラメーターは複製 されません。
スキーマまたはスキーマオブジェクトレベルで設定されたオブジェクトパラメーターが複製されます。
パラメーター
オブジェクト
スキーマ、テーブル
スキーマ、テーブル
スキーマ、テーブル
スキーマ、パイプ
スキーマ、テーブル
パラメーターの複製は、データベース内のオブジェクト(スキーマ、テーブル)にのみ適用でき、パラメーターが CREATE <オブジェクト>
<パラメーター>
または ALTER <オブジェクト>
... SET <パラメーター>
を使用して明示的に設定されている場合にのみ適用されます。データベースレベルのパラメーターは複製されません。
プライマリデータベースのオブジェクトに明示的に設定されたパラメーターは、セカンダリデータベースのオブジェクトに設定されたパラメーターを上書きします。たとえば、プライマリデータベースに DATA_RETENTION_TIME_IN_DAYS が10に設定されたスキーマ s1
があり、セカンダリデータベースにデータベースレベルで DATA_RETENTION_TIME_IN_DAYS が1に設定されている場合、セカンダリデータベースにあるスキーマ s1
の DATA_RETENTION_TIME_IN_DAYS は複製後、10に設定されます。
セカンダリデータベースのデータベースレベルで明示的に設定されたパラメーターは上書きされません。たとえば、セカンダリデータベースのパラメーター DATA_RETENTION_TIME_IN_DAYS が明示的に1に設定され、プライマリデータベースのパラメーター DATA_RETENTION_TIME_IN_DAYS が明示的に10に設定されている場合、セカンダリデータベースの DATA_RETENTION_TIME_IN_DAYS は、複製後も1に設定されたままになります。
[1] PIPE オブジェクトは複製されないことに注意してください。PIPE_EXECUTION_PAUSED パラメーターがプライマリデータベースのスキーマレベルで設定されている場合は、セカンダリデータベースに複製されます。フェールオーバーの際にセカンダリデータベースがプライマリデータベースに昇格され、パイプが作成されると、パラメーター設定が有効になります。
データベースの複製と暗号化¶
データベースが別のアカウントに複製されるとき(最初の複製中、およびその後、セカンダリデータベースが更新されるとき)、Snowflakeはソースアカウントからターゲットアカウントへの転送中にデータベースファイル(データベースオブジェクトメタデータとデータセット)を暗号化します。Snowflakeは、複製ジョブごとにランダムで一意のキーを使用して、データベース複製操作用のファイルを暗号化します。
さらに、複製アカウント(ソースアカウントとターゲットアカウント)で Tri-Secret Secure が有効になっている場合、ファイルはアカウントマスターキー(AMK)で保護されたターゲットアカウント用の暗号化キーペアの公開キーを使用して暗号化されます。Tri-Secret Secureが提供する追加レベルのセキュリティは AMK を保護するため、この保護は転送中のデータファイルにも適用されます。
Tri-Secret保証は、転送中のデータファイルにも有効であることに注意してください。顧客管理キー(Snowflakeアカウントをホストするクラウドプロバイダーのキー管理サービス内)へのアクセスを取り消すと、Snowflakeは送信中のデータファイルを復号化できなくなります。
Tri-Secret Secureが有効になっているアカウント間で複製する場合、ソースアカウントとターゲットアカウントには同じキーは 不要 です。
Snowflakeのデータ暗号化の詳細については、 データ暗号化 をご参照ください。
下位エディションのアカウントへのデータベース複製¶
次のいずれかの条件に該当する場合、ローカルデータベースをプライマリデータベースとして機能するように昇格すると、Snowflakeはエラーメッセージを表示します。
プライマリデータベースは、Business Critical(またはそれ以上)のアカウントにありますが、下位エディションには、複製が承認された1つ以上のアカウントがあります。Business Critical Editionは、非常に機密性の高いデータを有するSnowflakeアカウントを対象としています。
プライマリデータベースは、Business Critical(またはそれ以上)のアカウントにあり、HIPAA 規制と HITRUST CSF に従ってアカウントに PHI データを保存するために署名されたビジネスアソシエイト契約が整っています。しかし、Business Critical(またはそれ以上)のアカウントであるかどうかにかかわりなく、複製が承認された1つ以上のアカウントに対してはそのような契約がありません。
この動作は、Business Critical(またはそれ以上)のアカウントの管理者が機密データを下位エディションのアカウントに誤って複製することを防ぐために実装されています。
アカウント管理者は、 ALTER DATABASE ... ENABLE REPLICATION TO ACCOUNTS ステートメントを実行するときに IGNORE EDITION CHECK 句を含めることにより、このデフォルトの動作を上書きできます。IGNORE EDITION CHECK が設定されている場合、プライマリデータベースは任意のSnowflakeエディションの指定されたアカウントに複製できます。
複製の現在の制限¶
プライマリデータベースに外部テーブルが存在する場合、セカンダリデータベースの更新はブロックされます。
共有から作成されたデータベースは複製できません。