Presentation is loading. Please wait.

Presentation is loading. Please wait.

PortableArchiver のススメ 東日技研 路川徹也. PortableArchiver とは? 実験中の少しの間だけ、データ収集した い →CSS Archive に登録するほどではないし、恒久的なレコード名でもない が、データ収集はする必要がある。 → そのためだけに Archiver.

Similar presentations


Presentation on theme: "PortableArchiver のススメ 東日技研 路川徹也. PortableArchiver とは? 実験中の少しの間だけ、データ収集した い →CSS Archive に登録するほどではないし、恒久的なレコード名でもない が、データ収集はする必要がある。 → そのためだけに Archiver."— Presentation transcript:

1 PortableArchiver のススメ 東日技研 路川徹也

2 PortableArchiver とは? 実験中の少しの間だけ、データ収集した い →CSS Archive に登録するほどではないし、恒久的なレコード名でもない が、データ収集はする必要がある。 → そのためだけに Archiver をセットアップするのは面倒で、大げさ。 Archiver のバックアップが欲しい →CSS Archive を止めている間だけ、データ収集したい。 こんなニッチな要求を叶えるために 簡単に使える Archiver を作成

3 設計・製造コンセプト 設定が簡単 ChannelArchiver と同じ record リストを使用 (XML 形式 ) DB ファイル名を起動時に指定するだけ XML-RPC 接続ポート番号も指定可能 (default は 9000) Python の標準的なライブラリだけで作成 追加で必要なのは PythonCA と dateutil のみ DB は管理する必要のない python 標準の sqlite3 CSS DataBrowser で使用可能 ChannelArchiver と同じ接続方法 (XML-RPC) Python ファイルのコピーだけで使用可能 “#!” のパスだけは変更する必要あり

4 データ保存形式の違い ChannelArchiver は独自規格バイナリ形式 検索 / 更新等のファイルアクセスは非常に高速 データ形式が独自形式なので、データ集計が面倒 日付ファイル切替時に数秒の空白期間ができる PortableArchiver は汎用性を考慮して SQLite3 検索 / 更新等のファイルアクセスは比較的高速 データが DB なので、データ集計時は SQL 文でアクセス可能 rotateDb コマンドを使えば、日付ファイル切替の空白期間は なし

5 テーブル構造 pv レコードテーブル archive データテーブル 値は全て文字列に変換して保存 Waveform は ”,” 区切りの文字列に変換 DB ファイルの新規作成時に自動生成 名前説明型制約 id レコード ID integerprimary key name レコード名 textunique 名前説明型制約 id レコード ID integerindex timeProcess timerealindex val 値 textNot null

6 定義ファイルの書式 ChannelArchiver と同じ XML 形式 使用するタグはその一部 30 20 30 1.0 3 120 NTP CERL : OP:TEST 1

7 使用例 (1) : NTP 時間情報収集 NTP と GPS を使った時間ずれの情報を収集 予備実験なので PortableArchiver を使用 データ量は 6MB/10 日、データ数 13.3 万件 レコード数 56 、更新頻度 約 10 件 / 分

8 使用例 (2): エネルギーセンター エネルギーセンターの各チャネルデータを収集 データ量 26GB/100 日, 約 5 億件 レコード数 488 、更新頻度 約 2000 件 / 分 ファイルサイズが大きくなりすぎて起動 / 検索に時間がか かる 使用例 (3):PF-AR BPM PF-AR 全 BPM のステータスとデータを収集 データ量 1.3GB/1.6 時間, 約 2750 万件 レコード数 12034 、更新頻度 約 28 万件 / 分 データの増え方が速過ぎたので停止

9 内部構造 DB Reader Writer (camonitor) Search ioc DbAccess CA listQueue XML-RPC SQL DB SQL Queue XML File Client PortableArchiver sqlite3 は同一スレッドからアクセスしないと lock が頻 発し、事実上使用できなくなる Search は rotate された古い DB への検索を行う

10 Write Writer は IOC からのデータを camonitor で受け取り、データバッファ 用 list に追加する。 Python の list は ThreadSafe 。 DbAccess はデータバッファ用 list のデータ数が 1000 件を超えるか、 設定時間を超えたら DB へデータを書き込む。 IOC camonitor list DbAccess DB list は ThreadSafe list は DbWrite 時に入替 camonitor は callback DB への書き込みは 設定時間 ( 通常 30 秒 )or データ件数 1000 以上

11 Read & Search Command,ResultQueue は同期処理 CurrentDB の日付範囲以上の検索をされると、 Search への問い合わせ。 rotate すると日付ディレクトリを作成し、 DB ファイルを移動する。 CurrentDB 以下のディレクトリを起動時に再帰検索して Search で使用する。 DbAccess Current DB Search への問い合わ せは、 CurrentDB の日 付範囲を超えて検索 された場合のみ ReaderClient Comamnd Queue Result Queue Search DB Result Queue Old DB Comamnd Queue rotate されると 、 Search でオー プンし直される

12 PortableArchiver の利点 可搬性のよさ CSS DataBrowser からのアクセス XML-RPC の独自コマンド追加 コマンドによる DB ファイルの rotate 等 データファイルが sqlite3DB なので、自前のクラ イアント作成が比較的容易 ChannelArchiver の設定ファイルを使用可能 データの切れ目のない複数 DB ファイルへの連続 的な検索

13 例:独自コマンド追加 rotateDb DB ファイルを rotate して 1file size を抑制 日付毎に file 管理することが可能に 使い方 (python) import xmlrpclib hostName=‘localhost’ portNumber=9000 fileName=‘2014/10/test_20141031.sqlite3’ s = xmlrpclib.ServerProxy('http://%s:%d' % (hostName, portNumber)) print s.archiver.rotateDb(fileName)

14 問題点(課題) Sqlite3 のファイルサイズが大きすぎるとファイルを開くのに時間が かかる 適当なサイズになったら rotate するようにする等の対策が必要 100MB 程度に抑える?(詳細は要実験) 設定ファイルの自動更新機能 途中まで作成してある レコード数が多すぎると起動に時間がかかる 改善中 性能評価をしていない 12,000record を処理できることは確認(起動に 10 分ぐらいかかった) 複数クライアントからの問い合わせ速度等 データ数等の状態を知るためのコマンドを追加 Web インターフェイスでもいいかも (CSS Archive のようなものを想定 ) 起動時に record が接続できないと、再接続しない 改善中 ソースコードが汚い 改善中


Download ppt "PortableArchiver のススメ 東日技研 路川徹也. PortableArchiver とは? 実験中の少しの間だけ、データ収集した い →CSS Archive に登録するほどではないし、恒久的なレコード名でもない が、データ収集はする必要がある。 → そのためだけに Archiver."

Similar presentations


Ads by Google