【Informatica】CIHで使うパブリケーションリポジトリをプライベートに切り替えよう
はじめに
データ事業本部の川中子(かわなご)です。
直近で記事の投稿が続いていますが、またまた Cloud Integration Hub (以降CIH)のお話です。
今回はデータ連携に使用されるパブリケーションリポジトリの設定について見ていきます。
本記事の執筆では、こちらのドキュメントを参考にしてます。
パブリケーションリポジトリについて
パブリケーションリポジトリとは、トピックのテーブルへデータのパブリケーションを実行した際に、
実際にデータを格納し、一定期間保持するための場所を指します。
参照:Cloud Integration Hub architecture(2024/09/13引用)
パブリケーションリポジトリには、IDMCクラウド上にデータを置く ホステッドリポジトリ と、
自前で用意したデータベースにデータを置く プライベートリポジトリ の選択肢が存在します。
2つのリポジトリタイプの特徴について、以下の表に簡単にまとめてみました。
レポジトリ | データ格納先 | 特徴 |
---|---|---|
ホステッドリポジトリ | IDMC管理のデータベース | ・導入が簡単で管理が不要 ・データサイズやストレージに制限がある |
プライベートリポジトリ | ・Oracle ・Microsoft SQL Server ・MySQL ・Aurora MySQL |
・ストレージ容量などを自分でコントロールできる ・IDMCクラウド上にデータを置かなくてよい ・別途費用や各種設定などの管理が必要になる |
ホステッドリポジトリは難しい設定が必要なく、手軽にCIHのアセットを作成することがメリットです。
しかし扱えるデータサイズやストレージに制限があるため、膨大なデータ連携には向きません。
参考:Hosted publication repository size specifications
そこでもう一つの選択肢として、自前でデータベースを用意するプライベートリポジトリがあります。
こちらは扱えるストレージ容量などを自分でコントロールできる反面、別途費用や管理の手間が発生します。
またクラウドに上げたくない機密情報を扱う場合などにも、プライベートリポジトリは有用です。
他にもいくつか異なる点があるので、こちらも参考にして下さい。
参考:Hosted and private publication repositories
以降では、プライベートリポジトリの設定方法や仕様について確認してみたいと思います。
検証準備
リポジトリに使用するデータベース作成
まずはプライベートリポジトリに使用するデータベースを準備していきます。
今回のケースではSecureAgentサーバーのEC2と接続する必要があるので、同じVPC内にDBを配置し、
セキュリティグループでSecureAgentサーバーからの接続を許可するように設定します。
関連の設定についてはこちらを参照。
セキュリティグループのインバウンドルールでは、タイプで「MYSQL/Aurora」を選択し、
ソースには、接続元のSecureAgentサーバーのEC2で使用されているセキュリティグループを設定します。
アウトバウンドルールについてはデフォルトのまま、全ての接続を許可にしています。
次にRDSでデータベースを作成します。
今回は手軽に作成ができ無料枠も用意されている MySQL を使用します。
次に以下画面の設定です。
- 「DB インスタンス識別子」:AWS上で管理するデータベースの固有名
- 「マスターユーザー名」:データベース上で使用するユーザー名
今回はユーザー名はデフォルトのadmin
のまま使用して、
インスタンス識別子はinformatica-cih-pvripo-mysql
にしました。(画像とは異なります)
パスワードは「セルフマネージド」を選択して、「パスワードを自動生成」にチェックを入れました。
データベース作成後、「認証情報の詳細を表示」というバナーを開くことでパスワードを確認できます。
パスワードはこの後のログイン手順の中で使用するので、別で保存しておきます。
作成されたデータベースの確認
実際に作成されたMySQLのデータベースを確認してみます。
まずはセッションマネージャーを使用して、SecureAgentサーバーのEC2からMySQLへログインします。
ログインコマンドを実行するとパスワードを聞かれるので、保存しておいたパスワードを入力します。
mysql -u admin -p -h [host名]
ここで使用するhost名
は、作成したRDSのデータベースの画面から、
「接続とセキュリティ」→「エンドポイント」にある文字列をコピーして持ってきます。
ログイン後、データベースの一覧を確認してみます。
今はデフォルトで4つのデータベースが並んでいる状態です。
SHOW DATABASES;
プライベートリポジトリの設定をする際に、スキーマ(データベース)の指定まで必要になるので、
このタイミングでcih_pv_repository
という名前でデータベースを作成しておきます。
CREATE DATABASE cih_pv_repository;
まだ作成したばかりなので、中身は空の状態です。
調べたところどうやら、RDSで作成したMySQLの文字コードはデフォルトでlatin1
になっているようなので、
この後使いやすいようにutf-8
に変更しておきました。
ALTER DATABASE cih_pv_repository default character set utf8;
これでリポジトリに使用するデータベースの準備は完了になります。
ここまでの設定などは以下の記事を参考にしてます。
検証用アセット作成
次に検証で使用するアセットを作成します。
今回はデータ統合タスクを使用したパブリケーション/サブスクリプションで検証します。
作成したアセットは以下のとおりです。
このアセットは、S3に置いてあるcsvファイルのデータをトピックのテーブルへパブリッシュし、
テーブルからコンシュームしたデータをまたS3のdone/
フォルダに移動する処理になっています。
基本的なアセットの作成方法は、ホステッドリポジトリの場合と同じです。
アセット作成の方法は以下の記事で説明されているので、ここでは割愛します。
プライベートリポジトリ使用時に発生する設定として、ゼロダウンタイムの設定があります。
この設定を行うことで、データ連携時のアクセス中断をなくすことができます。
※ホステッドリポジトリではデフォルトでこの設定が適用されています。
参考:Enable zero downtime for a private publication repository
管理者画面の「接続」からCloud Integration Hub
という名前のコネクタを探し、
「 Use JDBC for Private Publication Repository:」 を有効化すれば設定は完了です。
検証
ではここから実際に、設定やタスクの実行による挙動を確認してみます。
CIHの画面からセットアップを開き、「リレーショナルのパブリケーションリポジトリ」の部分を設定します。
まずは「リポジトリのタイプ」で、「プライベート」を選択します。
「リポジトリURL」はjdbc:mysql://<ip>:<port>/<DatabaseName>
の形式になります。
<ip>
についてですが、これはSecureAgentサーバーのEC2からnslookup
で確認できました。
nslookup {RDSで作成したデータベースのエンドポイント}
また「リポジトリURL」の<DatabaseName>
は、設定項目の「リポジトリスキーマ」と同じで、
MySQL上で作成したデータベース名(今回だとcih_pv_repository
)を設定します。
あとの設定は、データベース作成時に指定したユーザー名や取得したパスワードを入力し、保存します。
正常に保存ができた後、MySQLのcih_pv_repository
でテーブルを確認してみると、
今までに作成したトピックテーブルが表示されていることが確認できました。
検証用に作成したトピックテーブルを見てみると、中身は空になっています。
では作成したパブリケーションを実行してみます。
イベントを確認してみると、サブスクリプションの待機状態になっています。
(今回は各タイミングでリポジトリの状態を確認したいので、サブスクリプションの起動を手動にしてます。)
テーブルにはcsvデータに入っていた100行分のデータが格納されていることが確認できました。
最後にサブスクリプションを手動で実行してみます。
パブリッシュされたデータがコンシュームされたことが確認できます。
この時点では、コンシュームされたデータはそのままテーブルに残りますが、
トピックのデータ保持の設定により指定された期間を過ぎてから削除されます。
おわりに
今回はプライベートリポジトリの設定方法や仕様について見ていきました。
以下に今回の検証で分かったプライベートリポジトリのポイントについてまとめてみます。
- 特徴:
- 扱う データサイズの制限がなく 、ストレージ容量は自分でコントロールできる
- IDMCクラウド上ではなく、 自身で管理するネットワーク内 でデータ連携ができる
- 別途 データベースの準備や管理が必要 になる
- 実装方法:
- データ統合タスクの アセットの作成方法はホステッドリポジトリ使用時と同様
- ゼロダウンタイムの設定をする場合は コネクタの修正が必要
- API経由によるパブリケーション/サブスクリプションではゼロダウンタイムは適用されない
以上、プライベートリポジトリ実装の際に参考になれば幸いです。
閲覧頂きありがとうございました。