Red Hat Training
A Red Hat training course is available for Red Hat Fuse
第20章 SQL データベースへの接続
インテグレーションでは、以下の SQL データベースに接続することができます。
- Apache Derby
- MySQL
- PostgreSQL
インテグレーションでアクセスするデータベースへのコネクションを作成し、そのコネクションを次のインテグレーションに追加します。
他の種類のデータベースに接続するには、そのデータベースの JDBC ドライバーをアップロードする必要があります。
以下を参照してください。
20.1. データベースコネクションの作成
インテグレーションで接続する各データベースの個別のコネクションを作成します。複数のインテグレーションで同じコネクションを使用できます。
データベースコネクションは指定のデータベーステーブルで操作するか、指定のストアドプロシージャーを呼び出します。
前提条件
インテグレーションがデータベースに接続するときにデータベーステーブルまたはストアドプロシージャーが存在する必要があります。
手順
- 接続するデータベースの JDBC ドライバーがクラスパスにあるようにしてください。プロプライエタリーデータベースに接続するために JDBC ドライバーライブラリーエクステンションをアップロードした場合、ドライバーはアップロードプロセスによってクラスパス上に置かれます。「Creating JDBC driver library extensions」を参照してください。
- Fuse Online の左パネルで Connections をクリックし、利用可能なコネクションを表示します。
- 右上にある Create Connection をクリックし、Fuse Online コネクターを表示します。
- Database コネクターをクリックします。
以下を入力してコネクションを設定します。
-
Connection URL フィールドに、接続するデータベースの JDBC URL を入力します。たとえば、
jdbc:postgresql://ignite-db1234/sampledbを入力します。 - Username フィールドに、データベースのアクセスに使用するアカウントの名前を入力します。同じアカウントのパスワードとユーザー名を指定するようにしてください。
- Password フィールドに、データベースのアクセスに使用する、ユーザーアカウントに関連するパスワードを入力します。
-
Schema フィールドにデータベースのスキーマの名前を入力します。コネクション URL がスキーマを指定する場合、このフィールドがコネクション URL と同じスキーマを示すようにしてください。たとえば、
sampledbを入力します。
-
Connection URL フィールドに、接続するデータベースの JDBC URL を入力します。たとえば、
- Validate をクリックします。Fuse Online はコネクションの検証を試み、検証の成功または失敗を示すメッセージを表示します。検証に失敗した場合は、必要に応じて設定の詳細を修正し、再度検証を行います。
- 検証に成功した場合は Next をクリックします。
-
Connection Name フィールドに、このコネクションを別のコネクションと区別するために使用する名前を入力します。たとえば、
PostgreSQL DB 1を入力します。 -
Description は任意のフィールドで、このコネクションに関する便利な情報を入力します。たとえば、
Sample PostgreSQL connection that uses my login credentials.を入力します。 - 右上にある Create をクリックし、作成したコネクションが利用可能になったことを確認します。上記の例の名前を入力した場合は、インテグレーションに追加できるコネクションとして PostgreSQL DB 1 が表示されます。
20.2. データベースにアクセスしてインテグレーションを開始
SQL クエリーまたは SQL ストアドプロシージャーの呼び出し結果を基にインテグレーションの実行をトリガーするには、データベースコネクションをインテグレーションの最初のコネクションとして選択します。
前提条件
データベースコネクションが作成されている必要があります。
手順
- Fuse Online パネルの左側にある Integrations をクリックします。
- Create Integration をクリックします。
- Choose a Start Connection ページで、インテグレーションを開始するために使用するデータベースコネクションをクリックします。
Choose an Action ページで、以下の 1 つをクリックします。
- Periodic SQL invocation は、指定した SQL クエリーを定期的に呼び出して、データを取得します。
- Periodic stored procedure invocation は、選択または指定したストアドプロシージャーを定期的に呼び出して、データを取得します。
Periodic SQL invocation を選択した場合、Query フィールドに SQL
SELECTステートメントを入力し、1 つ以上のレコードを取得します。例:SELECT * from my_db_table必要なデータが含まれるデータベーステーブルが存在する必要があります。Periodic stored procedure invocation を選択した場合、Procedure name フィールドに必要なデータを取得するために呼び出すストアドプロシージャーを選択または入力します。指定するストアドプロシージャーが存在する必要があります。データベース管理者は、インテグレーションで使用する必要があるストアドプロシージャーを作成しておく必要があります。
-
Period フィールドに整数を入力し、単位がミリ秒、秒、分、時間、または日であるかを示します。たとえば、
5 minutesを指定した場合、コネクションは指定のクエリーまたはストアドプロシージャーを 5 分間隔で呼び出します。 - Done をクリックします。
結果
Fuse Online はコネクションの検証を試みます。これには、指定の SQL クエリーの構文チェックや、クエリーまたはストアドプロシージャーターゲットデータの存在確認が含まれます。これには、指定の SQL クエリーの構文チェックや、クエリーまたはストアドプロシージャーターゲットデータの存在確認が含まれます。検証に失敗した場合、問題に関するメッセージが Fuse Online に表示されます。必要に応じて入力を更新し、再試行します。
20.3. インテグレーションの途中またはインテグレーションを完了するためにデータベースにアクセス
インテグレーションでは、フローの途中でデータベースにアクセスしたり、シンプルなインテグレーションを終了するためにデータベースにアクセスすることができます。これには、データベースコネクションをフローの途中に追加するか、シンプルなインテグレーションの最後のコネクションとして追加します。
前提条件
- データベースコネクションが作成されている必要があります。
- フローを作成または編集することになります。Fuse Online はステップの選択を要求します。または、Fuse Online で最後のコネクションを選択するよう要求されます。
手順
- アクセスするデータベースのデータベースコネクションをクリックします。
Choose an Action ページで、以下の 1 つをクリックします。
- Invoke SQL は、指定の SQL ステートメントを実行してデータを操作します。
- Invoke stored procedure は指定または選択したストアドプロシージャーを呼び出してデータを操作します。
Invoke SQL を選択した場合、SQL Statement フィールドで以下を行います。
-
途中のコネクションでは、1 つ以上のレコードを取得する SQL
SELECTステートメントを入力するか、1 つ以上のレコードを操作する SQLINSERT、UPDATE、またはDELETEステートメントを入力します。データが含まれるデータベースが存在する必要があります。 -
最後のコネクションでは、SQL
INSERT、UPDATE、またはDELETEステートメントを入力し、1 つ以上のレコードを操作します。
Invoke stored procedure を選択した場合、Procedure name フィールドに必要なデータを操作するために呼び出すストアドプロシージャーの名前を選択または入力します。指定するストアドプロシージャーが存在する必要があります。データベース管理者は、インテグレーションで使用する必要があるストアドプロシージャーを作成しておく必要があります。
- クエリーでのプレースホルダーパラメーターの指定に関する情報は以下を参照してください。
-
途中のコネクションでは、1 つ以上のレコードを取得する SQL
- Done をクリックします。
結果
Fuse Online はコネクションの検証を試みます。これには、指定の SQL クエリーの構文チェックや、クエリーまたはストアドプロシージャーターゲットデータの存在確認が含まれます。検証に成功した場合、Fuse Online でコネクションがフローに追加されます。検証に失敗した場合、問題に関するメッセージが Fuse Online に表示されます。必要に応じて入力を更新し、再試行します。
クエリーでのパラメーターの指定
フローの途中でデータベースにアクセスしたり、インテグレーションを終了するためにデータベースにアクセスする場合、SQL クエリーにプレースホルダーパラメーターを指定でき、ストアドプロシージャーにプレースホルダーを追加することができます。以下に例を示します。
INSERT INTO TODO(task, completed) VALUES(:#param_1, :#param_2) DELETE FROM TODO WHERE task LIKE :#param_3
これらのプレースホルダーの値を指定するには、フローのデータベースコネクションの前にデータマッピングステップを追加します。データマッピングステップで、適切なソースデータフィールドをターゲットデータフィールドにマップします。たとえば、ソースデータを :#param_1、:#param_2、および :#param_3 ターゲットフィールドにマップします。「Adding a data mapping step」を参照してください。
20.4. プロプライエタリーデータベースへの接続
プロプライエタリー SQL データベースに接続する場合、以下の主なタスクを行う必要があります。
- 開発者は、インテグレーションで接続するデータベースの JDBC ドライバーが含まれるライブラリーエクステンションを作成します。「Creating JDBC driver library extensions」を参照してください。
-
開発者はライブラリーエクステンションが含まれる
.jarファイルを提供します。 -
その
.jarファイルを Fuse Online にアップロードします。「Making extensions available」を参照してください。 - Fuse Online の Database コネクターを選択し、データベースのコネクション URL を指定して、データベースへのコネクションを作成します。「データベースコネクションの作成」を参照してください。
- インテグレーションで、コネクションをデータベースに追加します。「データベースレコードを取得してインテグレーションの実行をトリガー」または「インテグレーションの途中またはインテグレーションを完了するためにデータベースにアクセス」を参照してください。