28aSA

SQLデータベースの加速器実験への応用
KEKオンライン、ビームチャンネルA、回路B、ニュートリノC、加速器施設D
仲吉一男、藤井啓文、藤田陽一、早戸良成C、五十嵐洋一、井上栄二、児玉英世、野海博之A、小田切淳一D、里 嘉典A、田中真伸B、豊田晃久A、安 芳次

発表内容• 背景、動機、目的• SQLデータベース（DB）とは• DB評価テストおよび結果• EPICSとの統合テスト• まとめ

2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

2

背景• J-PARC 原子核・素粒子実験施設の遅い取り出し
ビームライン電源制御システムは加速器制御システム（EPICS）とデータの共有が必要– 既存の電源制御システムを変更せずEPICS とデータ共有を行いたい– EPICSは直接、電源制御システムにアクセスせず、他のインターフェイスを介してアクセスする
既存ビームライン
電源制御システムX

加速器全体制御
EPICS

直接制御

2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

3

背景• 電源制御システムと加速器制御システム（EPICS）とのインターフェイスに標準 DB を用いる
– 既存の電源制御システムのハードウエアに変更を加える必要がない– SQL DB は標準化されており異種システム間のインターフェイスが容易– SQL DBの技術情報は、豊富
既存ビームライン電源制御システム

2004/09/28

DB

加速器全体制御
EPICS

JPS04秋季大会高知大学朝倉キャンパス

4

動機• ネットワークを介したデータベースへのアクセスはオーバヘッドが大きいと予想される
アプリケーション(APP)ODBCDB Library
データベース
2004/09/28

ODBC
DB Library
データベース•APPがODBCを使用しDBへ要求（SQLコマンド）を送る場合は、DBへアクセスするためにODBCドライバで処理が必要•APPが実際にデータを取得するためには、ネットワーク通信やDBサーバでのディスクアクセス、排他処理等が行われる

JPS04秋季大会高知大学朝倉キャンパス5

目的• ビームライン制御システムとEPICSとのインターフェイスとしてデータベース(DB)は実用可能か?
– 1Hz周期の電源のモニターは可能か?

• DBへの最適なアクセス方法は?
– DBのテーブルの行数と転送時間の関係– SQL発行数と転送時間の関係– Linux Client からODBCによるアクセスの検証• 原子核・素粒子実験での環境モニターやHVのデータ等の保存に利用できるか

2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

6

SQL DBとは• SQL (Structured Query Language ):Relational DB(RDB)を操作する言語• SQL-92(1992 ANSI/ISO)• SQLで操作可能なRDB– Oracle, Microsoft SQL Server(商用)– PostgreSQL, MySQL（フリー）使用例“SELECT ＊ FROM table100;”“UPDATE table100 SET item1=100 WHERE name=‘mg1’; ”

2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

7

性能テスト項目
クライアントのアプリケーション（C program）からネットワークを経由し DBサーバーへアクセスを行う• 要求を毎回送り、データ読み出し・変更• １回の要求で全てのデータ読み出し• ODBC によるアクセスの検証• DBサーバのCPU性能依存

2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

8テストに使用したテーブル•電源制御用のデータは想定（100〜200行ｘ11列）•フォーマット： char(32), int, …, int•100〜1000行、10コのテーブルを用意

100
200

110
210

…

…

…

…

…

N

mg1
mg2

…
…
…

…

電源名 para1 para2…

100N+80

100N+90行

mgN 100xN 100N+10

para9 para10
180
190
280
290

１１列
2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

9性能テスト環境
DB Server および Client は Linux を使用• Server: Xeon 3.2GHz, 1000BASE-T– Linux 2.4.22, gcc 3.2.3– MySQL 4.0.13, PostgreSQL 7.4.1• Client1: Pentium II 300MHz, 100BASE-Tx– Linux 2.4.18, gcc 2.96– MySQL 4.0.12• Client 2: Pentium II 350MHz, 100BASE-Tx– Linux 2.4.19, gcc 2.95.3＊Windows Client (LabVEW)環境下での性能テストは、児玉（KEKオンライン）が実施
2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

10

MySQLアクセス・スピード測定結果
Execution Time(millisec)1200

１Hz 読み出し

1000

800

600

400

Read row by row
200

Write row by row
100

200

300

400

500

600

700

800
900 1000
Number of Rows

電源制御用DBの行数
2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

11

Execution Time(millisec)

SQL発行によるオーバヘッド（MySQL）
10

4

１Hz 読み出し
103

行数
10

L発行
Q
S回の
Read row by row

2

Read at once

10

1回
100

200

行発
LQのS300

400

500

600

700

800
900 1000
Number of Rows

電源制御用DBの行数
2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

12

Execution Time(millisec)

DBサーバーCPU依存性（MySQL）
4000

Xeon 3.2GHz, read

3500

Xeon 3.2GHz, write3000

Pen 300MHz, read2500

Pen 300MHz, write

2000

１Hz 読み出し

1500
1000
500
0100

200

300

400

500

600

700

800
900 1000
Number of Rows

電源制御用DBの行数
2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

13

Execution Time(millisec)ODBCとC APIの比較（MySQL）
40

Read all by ODBC
35

Read all by C API
30
25
20
15
1051002004/09/28

200

300

400

500

600

700

800
900 1000
Number of Rows

JPS04秋季大会高知大学朝倉キャンパス

14EPICSとの統合テスト
NetworkEPICS
Channel Access

ODBC

WindowsLabVIEW（鈴木、児玉）Linux
EPICS IOCPS Cont

DB
Power Supply

2004/09/28

LinuxDB Server（MySQL）
JPS04秋季大会高知大学朝倉キャンパス

EPICS OPI

15

EPICSとの統合テスト
EPICSで取得したDBのデータを表示用ソフトウエアを使ってモニター

2004/09/28

JPS04秋季大会高知大学朝倉キャンパス

16

まとめ
• ネットワーク経由のDBへのアクセス時間を測定した– 200行テーブルの行毎の読み出し・変更：~100msec– SQL発行に伴うオーバヘッドは大きい。行数が多い場合は1度の要求で全データ取得がよい。
– DB サーバのCPU性能は、クライアントのアクセス時間に影響する。PenII300MHｚ, Xeon３GHｚ 1000行で約３倍– Linux ClientからODBCによるMySQLサーバへアクセスできた。C API 使用より遅い。

• EPICSとの統合テストを行った• 原子核・素粒子実験の環境モニター・データ等の保存、管理にも応用可能
2004/09/28JPS04秋季大会高知大学朝倉キャンパス

17Execution Time(millisec)

MySQLとPostgreSQLの比較
16
Read all by PostgreSQL
14
Read all by MySQL
12108642100

2004/09/28

200

300

400

500

600

700

800
900 1000
Number of Rows

JPS04秋季大会高知大学朝倉キャンパス

18

MySQL vs PgSQL
1600
1400

時間(mSEC)

12001000
MySQL-W
PgSQL-W
MySQL-R
PgSQL-R

800
600
400
200
0020

4060

80

100120

行数（10columms/row)

140160180200