よくあるご質問
- デバイスゲートウェイ
Docker版デバイスゲートウェイでデータベースにアクセスする方法
2024.12.11
デバイスゲートウェイは、データベースアクセスにrelaySQLというSQLクライアントツールを利用します。
relaySQLをセットアップし、すでにセットアップ済みのデータベースにアクセスしたい場合は、このセクションを参照してください。
PostgreSQLとrelaySQLを同時にセットアップしたい場合は、このセクションを参照してください。
relaySQLをセットアップしてデータベースにアクセスする方法
このセクションでは、relaySQLをセットアップして、次のPostgreSQLデータベースに接続する設定例を紹介します。
データベース(PostgreSQL)
例として利用するデータベースは、以下のPostgreSQLデータベースです。
*You can scroll this table sideways.
データベース | PostgreSQL |
---|---|
データベースの場所 | Installed on the host machine (localhost) |
ポート番号 | 5432 |
データベース名 | db1 |
テーブル名 | table1 |
テーブルカラム |
inserted_at (timestamp) |
アクセスユーザー(パスワード) | user1 (user1) |
補足 | 外部アクセスが許可された状態 |
relaySQLのDockerコンテナ起動
ダウンロードページから、relaySQLのコンテナ"SQLクライアント relaySQL on Docker" をダウンロードします。
ダウンロードされた圧縮ファイルを解凍し、接続対象のデータベースの情報を"ds.json"ファイルに記述します。
今回の接続対象のサンプルデータベースの場合は、デフォルトの"ds.json"ファイルの内容を変更する必要はありません。
シェルスクリプト"start.sh"でrelaySQLのコンテナを起動すると、必要なコンポーネントが自動でダウンロードされます。
(ds.json)
デバイスゲートウェイのDockerコンテナの起動
デバイスゲートウェイの"docker-compose.yml"ファイルを編集し、"extra_hossts"セクションに次のテキストを挿入します。
その後、シェルスクリプト"start.sh"を使ってデバイスゲートウェイのコンテナを起動します。
extra_hosts:
- cm_server:host-gateway
- relaysql:host-gateway
(docker-compose.yml)
デバイスゲートウェイの設定
上位連携(SQLクライアント)
上位連携タブで、SQLクライアントを作成し、以下のように設定します。
この設定は、relaySQLの"ds.json"ファイルの内容に関連しています。
(OPC Client 設定)
*You can scroll this table sideways.
DB中継サーバーアドレス | relaysql |
---|---|
データソースID | psql1 |
ユーザー名 | user01 |
パスワード | pass |
イベント(SQL送信アクション)
イベントを作成し、トリガーを指定します。
アクションリストで、SQL送信アクションを作成し、以下のように設定します。
*You can scroll this table sideways.
送信先サーバー | 上位連携タブで作成したSQLクライアントの設定名 |
---|---|
SQLクエリー (参考例) |
INSERT INTO table1 (inserted_at,int_data1, real_data1, text_data1) VALUES ('<%=@nowLocal("yyyyMMdd HH:mm:ss.ms")%>', 1234, 56.789, 'abcdefg') |
SELECTクエリ |
無効 |
実行結果
デバイスゲートウェイはSQL送信アクションの内容に基づいて、データベースに対してSQLクエリーを発行します。
正しく動作しない場合は、デバイスゲートウェイのログ、"IoTインターフェイス"タブのSQLクライアント、SQL送信アクションの動作状態を確認してください。
relaySQLとPostgreSQLデータベースをセットアップする方法
このセクションでは、Dockerコンテナ上でrelaySQLとPostgreSQL データベースをセットアップする手順を紹介します。
relayPostgreSQLのDockerコンテナ起動
ダウンロードページから、relayPostgreSQLのコンテナ "SQLクライアント relaySQL with PostgreSQL on Docker" をダウンロードします。
ダウンロードされた圧縮ファイルを解凍し、データベースのテーブル定義スクリプト”/PostgreSQL/initdb/1_create_table1.sql”を編集します。
このスクリプトの内容に基づいて、データベース生成時にテーブルが生成されます。
今回の例では、スクリプトファイルの内容を変更する必要はありません。
その後、シェルスクリプト"start.sh"でrelayPostgreSQLのコンテナを起動すると、必要なコンポーネントが自動でダウンロードされます。
(PostgreSQL/initdb/1_create_table1.sql)
デバイスゲートウェイのDockerコンテナの起動
デバイスゲートウェイの"docker-compose.yml"ファイルを編集し、"extra_hossts"セクションに次のテキストを挿入します。
その後、シェルスクリプト"start.sh"を使ってデバイスゲートウェイのコンテナを起動します。
extra_hosts:
- cm_server:host-gateway
- relaysql:host-gateway
(docker-compose.yml)
デバイスゲートウェイ設定
上位連携(SQL通信)
上位連携タブでSQLクライアント設定を作成し、以下のように設定します。
この設定は、relayPostgreSQLの"docker-compose.yml"ファイルに関連しています。
(SQLクライアント設定)
*You can scroll this table sideways.
DB中継サーバーアドレス | relaysql |
---|---|
データソースID | psql1 |
ユーザー名 | user01 |
パスワード | pass |
イベント(SQL送信アクション)
イベントを作成し、トリガーを指定します。
アクションリストで、SQL送信アクションを作成し、以下のように設定します。
*You can scroll this table sideways.
送信先サーバー | 上位連携タブで作成したSQLクライアントの設定名 |
---|---|
SQLクエリー (参考例) |
INSERT INTO table1 (created_at, string1, data1, data2) VALUES ('<%=@nowUtc("yyyyMMdd HH:mm:ss.ms")%>', 'DeviceGateway', 12345, 6789) |
SELECTクエリー |
無効 |
実行結果
デバイスゲートウェイはSQL送信アクションの内容に基づいて、データベースに対してSQLクエリーを発行します。
正しく動作しない場合は、デバイスゲートウェイのログ、上位連携タブのSQLクライアント、SQL送信アクションの動作状態を確認してください。