よくあるご質問

  1. TOP
  2. よくあるご質問
  3. Docker版デバイスゲートウェイでデータベースにアクセスする方法
  • デバイスゲートウェイ

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)
int_data1 (integer)
real_data1 (real)
text_data1 (text)

アクセスユーザー(パスワード) 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送信アクションの動作状態を確認してください。

ページトップにスクロール