Hi, I'm Ask INFA!
What would you like to know?
ASK INFAPreview
Please to access Ask INFA.

目次

Search

  1. はじめに
  2. アプリケーション取り込みとレプリケーション

アプリケーション取り込みとレプリケーション

アプリケーション取り込みとレプリケーション

Snowflakeターゲットのガイドライン

Snowflakeターゲットのガイドライン

ターゲットの準備

ターゲットの準備は、Snowflakeターゲットテーブルへのデータの高パフォーマンスストリーミングにSuperpipe機能を使用するか、中間ステージファイルにデータを書き込むかによって異なります。
Superpipeを使用
Superpipe機能を使用する場合は、次の手順を実行します。
  1. データ取り込みおよびレプリケーション
    ユーザーを作成します。次のSQL文を使用します。
    create user INFACMI_User password = 'Xxxx@xxx';
  2. 新しいユーザーロールを作成し、
    データ取り込みおよびレプリケーション
    ユーザーに付与します。以下のSQL文を使用します。
    create role INFACMI_superpipe; grant role INFACMI_superpipe to user INFACMI_User;
  3. Snowflake仮想ウェアハウスの使用権限を新しいロールに付与します。次のSQL文を使用します。
    grant usage on warehouse
    warehouse_name
    to role INFACMI_superpipe;
  4. Snowflakeデータベースの使用権限を新しいロールに付与します。次のSQL文を使用します。
    grant usage on database INFACMI_DB1 to role INFACMI_superpipe;
  5. 新しいスキーマを作成します。以下のSQL文を使用します。
    use database INFACMI_DB1; create schema sh_superpipe;
  6. 新しいSnowflakeスキーマに対するcreate stream、create view、およびcreate table特権を新しいロールに付与します。次のSQL文を使用します。
    grant create stream, create view, create table, usage on schema INFACMI_DB1.sh_superpipe to role INFACMI_superpipe;
  7. 新しく作成されたユーザーのデフォルトのロールを設定します。次のSQL文を使用します。
    alter user INFACMI_User set default_role=INFACMI_superpipe;
  8. ターゲットへのSnowflake Data Cloud接続を定義します。認証方法として
    [KeyPair]
    オプションを使用する必要があります。「コネクタと接続」>「Snowflake Data Cloud接続プロパティ」を参照してください。
  9. OpenSSLバージョン3.x.xと次のいずれかの暗号を使用してプライベートキーを生成します。
    • AES128
    • AES128-CBC
    • AES256
    • AES-256-CBC
    次のopensslコマンドを使用し、プライベートキーを生成してフォーマットします。
    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -v1 AES-256-CBC -out rsa_key.p8
  10. パブリックキーを生成します。次のopensslコマンドを使用し、-inオプションで暗号化されたプライベートキーを含むファイル(rsa_key.p8)を参照します。
    openssl rsa -in rsa_key.p8 -pubout -out rsa_key.pub
  11. Snowflakeで、パブリックキーをSnowflakeユーザーに割り当てます。次のSQLコマンドを使用します。
    alter user INFACMI_User set rsa_public_key='key_value’;
次の手順
: 取り込みタスクを作成するときに、タスクウィザードの
[ターゲット]
ページで
[Superpipe]
オプションを選択します。必要に応じて、変更データ行がマージされてSnowflakeターゲットテーブルに適用される頻度を制御する
[マージ頻度]
値を指定することもできます。
Superpipeを使用しない
SnowflakeターゲットにSuperpipe機能を使用しない場合は、ACCOUNTADMINユーザーとして次の手順を実行します。
  1. データ取り込みおよびレプリケーション
    ユーザーを作成します。次のSQL文のいずれかを使用します。
    create user INFACMI_User password = 'Xxxx@xxx';
    または
    replace user INFACMI_User password = 'Xxxx@xxx';
  2. 新しいロールを作成し、そのロールを
    データ取り込みおよびレプリケーション
    ユーザーに付与します。以下のSQL文を使用します。
    create role INFA_CMI_Role; grant role INFA_CMI_Role to user INFACMI_User;
  3. Snowflake仮想ウェアハウスの使用権限を新しいロールに付与します。次のSQL文を使用します。
    grant usage on warehouse CMIWH to role INFA_CMI_Role;
  4. Snowflakeデータベースの使用権限を新しいロールに付与します。次のSQL文を使用します。
    grant usage, CREATE SCHEMA on database CMIDB to role INFA_CMI_Role;
  5. 新しく作成されたユーザーのデフォルトのロールを設定します。次のSQL文を使用します。
    alter user INFACMI_User set default_role=INFA_CMI_Role;
また、INFACMI_Userとして新しいスキーマを作成します。
create schema CMISchema;
ユーザーのデフォルトロールが取り込みタスクに使用され、必要な権限がない場合、実行時に次のエラーが発行されます。
SQL compilation error: Object does not exist, or operation cannot be performed.

使用のガイドライン

  • データ取り込みおよびレプリケーション
    は、Snowflake Data Cloudターゲットにデータを移動する代替方法を提供しています。
    • 取り込みタスクを定義するときに
      [Superpipe]
      オプションを選択した場合、取り込みジョブはSnowpipe Streaming APIを使用して、短い待ち時間でデータ行をターゲットテーブルに直接ストリーミングします。この方法は、すべてのロードタイプで使用できます。
      [KeyPair]
      認証を使用する必要があります。
    • Superpipeを使用しない場合、取り込みジョブはまず、タスク定義で指定した名前を持つ内部ステージのデータファイルにデータを書き込みます。
  • Superpipeを使用せず、取り込みジョブのターゲットプロパティで指定した内部ステージが存在しない場合、
    データベース取り込みとレプリケーション
    は、次のSQLコマンドを実行してステージを自動的に作成します。
    Create stage if not exists "Schema"."Stage_Bucket"”
    コマンドを正常に実行するには、次の特権をユーザーロールに付与する必要があります。
    GRANT CREATE STAGE ON SCHEMA "Schema" TO ROLE <
    your_role
    >;
  • Snowflakeターゲットの接続を定義するときは、
    [JDBC URLの追加パラメータ]
    フィールドに
    database=
    target_database_name
    と設定する必要があります。それ以外の場合は、
    アプリケーション取り込みとレプリケーション
    タスクウィザードでターゲットを定義しようとすると、スキーマのリストを取得できないことを示すエラーメッセージが表示されます。
  • [KeyPair]
    オプションを認証方法として使用してSnowflakeターゲットの接続を定義し、OpenSSL 3.x.xバージョンでプライベートキーを生成する場合は、プライベートキーの生成時に
    AES128
    AES128-CBC
    AES256
    、または
    AES-256-CBC
    暗号を使用します。次のコマンドを実行します。
    openssl genrsa 2048 | openssl pkcs8 -topk8 -inform PEM -v1 AES-256-CBC -out rsa_key.p8
    OpenSSLでは、バージョン3.x.xの使用を推奨しています。
    データ取り込みおよびレプリケーション
    では次の暗号をサポートしています。
    • AES128
    • AES128-CBC
    • AES256
    • AES-256-CBC
    • CAMELLIA-256-CBC
    • CAMELLIA-256-CTR
    • ARIA-256-CTR
    CAMELLIA-256-CBC
    CAMELLIA-256-CTR
    、および
    ARIA-256-CTR
    暗号は、パスワードで暗号化されたプライベートキーでは無効です。これらの暗号を使用して暗号化されたプライベートキーを生成するには、次のコマンドを使用します。
    openssl genrsa 2048 | openssl pkcs8 -topk8 -v2 CAMELLIA-256-CTR -inform PEM -out rsa_key.p8 -nocrypt
  • 増分ロードジョブにより、ターゲット上にINFORMATICA_CDC_RECOVERYという名前のリカバリテーブルが生成され、内部サービス情報が格納されます。リカバリテーブルのデータによって、障害後に再開されたジョブが以前に処理されたデータを再度プロパゲートすることが防止されます。リカバリテーブルは、ターゲットテーブルを含むスキーマで生成されます。
  • Snowflakeターゲットを持つアプリケーション取り込みおよびレプリケーション増分ロードジョブと組み合わせロードジョブは、デフォルトで、永続テーブルではなく、ターゲットにデータをステージングするための一時的な_LOGテーブルを作成します。永続テーブルが作成されないように、Snowflake Time TravelおよびFail-safe機能はデフォルトで無効になっています。一時テーブルを使用すると、_LOGテーブルストレージの消費量と関連コストを削減できます。ただし、一時テーブルでは、Superpipeオプションを使用できません。永続テーブルを作成する必要がある場合は、ターゲットのsnowflakeStagingTransientTableカスタムプロパティをfalseに設定できます。
  • オブジェクトには、16MBを超えるレコードが含まれていてはいけません。
  • Snowflakeターゲットの場合、NUMBERフィールドのスケールを変更したり、既存のフィールドのデータ型を別のデータ型に変更したりすることはできません。Snowflakeではこれらの操作がサポートされていないためです。
  • Snowflakeターゲットを持ち、
    Superpipe
    オプションを使用しているアプリケーション取り込みおよびレプリケーション増分ロードジョブと組み合わせロードジョブを停止する前に、変更ストリームの取り込まれたすべてのデータがターゲットにマージされていることを確認してください。マージされていない場合、ジョブが長期間、またはストリームの有効期限が切れる前に再開されないと、ストリームに残っているデータはすべて失われ、回復できません。