各製品の資料を入手。
詳細はこちら →HCL Domino のデータをPowerShell でMySQL にレプリケーションする方法
PowerShell のシンプルなスクリプトで、HCL Domino のデータ をMySQL データベースにレプリケーション(複製)する方法を紹介します。
最終更新日:2023-09-26
この記事で実現できるHCL Domino 連携のシナリオ
こんにちは!ドライバー周りのヘルプドキュメントを担当している古川です。
CData Cmdlets for Domino を使えば、PowerShell からHCL Domino のデータ データにリアルタイムで連携できます。データ同期などのタスクの連携にぴったりの製品です。 本記事では、PowerShell からCData Cmdlets for Domino およびCData Cmdlets for MySQL を使って、同期スクリプトを作成して実行します。
まずは、PowerShell でHCL Domino への接続を行います。レプリケーションは4つのステップがあります。
Domino への接続
Domino のデータに接続するには、以下のプロパティを設定してください。
- URL: Domino データベースをホスティングしているサーバーのホスト名、またはIP を入力します。サーバーのポート番号を含めてください。例えば、http://sampleserver:1234/。
- DatabaseScope: Domino Web UI 内のスコープ名を入力します。ドライバーは、ここで指定したスコープによって制御されるスキーマの、フォームとビューを公開します。Domino Admin UI で、サイドバーからScopes メニューを選択します。このプロパティを、既存のスコープ名に設定します。
Domino での認証
Domino は、ログインクレデンシャルまたはAzure Active Directory OAuth アプリケーションを使用した認証をサポートしています。
ログインクレデンシャル
ログインクレデンシャルで認証するには、以下のプロパティを設定してください:
- AuthScheme: これを"OAuthPassword" に設定します
- User: 認証するDomino ユーザーのユーザー名
- Password: 認証するDominoユ ーザーに関連付けられたパスワード
ドライバーはログインクレデンシャルを使用して、自動的にOAuth トークン交換を実行します。
AzureAD
この認証方法は、Azure Active Directory をIdP として使用してJWTトークンを取得します。Azure Active Directory にカスタムのアプリケーションを作成し、それをIdP として設定する必要があります。そのためには、ヘルプドキュメントの指示に従ってください。その後、以下のプロパティを設定します。
- AuthScheme: これを"AzureAD" に設定します
- InitiateOAuth: これをGETANDREFRESH に設定します。InitiateOAuth を使用すると、OAuth 交換の繰り返しやOAuthAccessToken の手動設定を避けることができます。
- OAuthClientId: カスタムOAuth アプリケーションのセットアップ時に取得したクライアントID
- OAuthClientSecret: カスタムOAuth アプリケーションのセットアップ時に取得したクライアントシークレット
- CallbackURL: アプリ登録時に定義したリダイレクトURI。例えば、https://localhost:33333
- AzureTenant: データにアクセスするために使用されるMicrosoft Online テナント。companyname.microsoft.com 形式の値またはテナントID のいずれかを指定してください。
テナントID は、Azure ポータルのAzure Active Directory > プロパティページに表示されているディレクトリID と同じです。
HCL Domino のデータの取得
-
モジュールのインストール:
Install-Module DominoCmdlets
-
HCL Domino への接続:
$domino = Connect-Domino -Server $Server -Database $Database -Port $Port -SSLClientCertType $SSLClientCertType -SSLClientCert $SSLClientCert -SSLServerCert $SSLServerCert
-
取得ターゲットのリソースの取得:
$data = Select-Domino -Connection $domino -Table "ByName"
Invoke-Domino cmdlet を使って、SQL-92 クエリを使用することもできます:
$data = Invoke-Domino -Connection $domino -Query 'SELECT * FROM ByName WHERE City = @City' -Params @{'@City'='Miami'}
-
戻り値からカラム名のリストを保存します。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name
HCL Domino のデータをMySQL データベースにレプリケーション
カラム名を指定できるようにして、データをMySQL データベースにレプリケーションします。
-
モジュールのインストール:
Install-Module MySQLCmdlets
-
MySQL DB に、MySQL Server 名、ユーザー、パスワード、レプリケーション先のデータベース名を指定して、接続します:
$mysql = Connect-MySQL -User $User -Password $Password -Database $Database -Server $Server -Port $Port
-
HCL Domino、保存された値、そしてAdd-MySQL Cmdlet を使って、MySQL にデータを1レコードずつ挿入します。この例では、MySQL 側のテーブルは、HCL Domino のリソース(ByName)と同じテーブル名を持っている必要があります。
$data | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "ByName" -Columns $columns -Values $values }
次回以降のレプリケーションをシンプルに実現
-
一度PowerShell でHCL Domino とMySQL に接続したら、次からは1行のコマンドでレプリケーションを実施できます:
Select-Domino -Connection $domino -Table "ByName" | % { $row = $_ $values = @() $columns | % { $col = $_ $values += $row.$($col) } Add-MySQL -Connection $mysql -Table "ByName" -Columns $columns -Values $values }
-
別のPowerShell モジュールで、HCL Domino を別のデータベースに複製する場合、Select-Domino cmdlet のデータから、カラム、接続およびテーブルを除外しておきましょう。これらのデータはデータ移動のときだけ必要となるためです。
$columns = ($data | Get-Member -MemberType NoteProperty | Select-Object -Property Name).Name | ? {$_ -NotIn @('Columns','Connection','Table')}
おわりに
これで、HCL Domino のデータをMySQL に複製できました。分析、BI などでHCL Domino のデータをMySQL から使うことができるようになります。