2003.04
Empress Japan
リアルタイム用ミドルウエア
– EmpressRTDC(リアルタイム・データ・コレクター) −
1.はじめに
リアルタイムのアプリケーションは、工場でのロボットの操作、人工衛星ステーションや次世代のIPに基づいたルーターのような高度で複雑なシステムをコントロールします。最近のリアルタイムのアプリケーションでは、大量のデータに依存することが大きくなっており、データベース管理システム(DBMS)コンポーネントのような機能が要求されます。しかしながら、現在大多数の商用DBMSでは、リアルタイム組み込み環境への要求が満たされていません。
更に、多くのリアルタイムのアプリケーションは、データ分析の為にセンサーからのデータ(例えば温度、湿度など)を永久的に保存しなければならなかったり、レーダーあるいはソナーからのデータ履歴を管理する為に、データを収集して保存し、一定時間後に削除したりします。いずれの場合でも、タイムリーかつ信頼できる状態で、リアルタイムのデータを格納する必要があります。
現在リアルタイム組み込みデバイスが普及していることで、一般的なRDBMSとリアルタイムシステムを融合できる製品が極めて必要とされています。
Empress リアルタイムデータコレクター (RTDC) は、 Empress 社の新しいリアルタイム製品です。
2.Empress RTDC の概要
Empress RTDCは、クライアントサーバ環境下のEmpressデータベースへ、リアルタイムのデータを収集するためのAPI、ユーティリィティ、クライアントおよびサーバーです。
Empress RTDCは、クライアントマシンにリアルタイムのデータを集めて、サーバーマシンにデータを転送して、Empressデータベースにデータを格納します。クライアントマシンは、リアルタイムオペレーティングシステム、あるいはコンソール、ファイルシステムおよびハードドライブのない、必要最小限(余分なコンポートネントを取り除いた)のオペレーティングシステムを実行する程度の非力なマシンが予想されます。サーバーマシンは、Unix或いはマイクロソフトウインドウズ2K/XPような、通常のディスクベースのオペレーティングシステムを実行するマシンが予想されます。
Empress RTDCにおけるリアルタイムデータのフローを図1に示します。

図1. Empress RTDCにおけるリアルタイムデータのフロー
3.Empress RTDC のコンポーネント
Empress RTDCは次のコンポーネントから構成されています。
3−1.クライアントマシン:
1)
RTDCデータ収集アプリケーション (RTDC dc app) :
オペレーティングシステム機能を使ってリアルタイムのデータをコレクトして、
RTDCバッファーにRTDCデータ収集APIを通してデータを渡します。
これは、RTDC開発者によって開発されます。
2)
RTDCデータ収集API (RTDC dc app api) :
RTDCデータ収集アプリケーションから呼ばれるリアルタイムのデータをRTDCバッ
ファーへ渡すライブラリー関数です。リアルタイムのデータは、タイムスタンプ
のようなデータで自動的に増大されるかもしれません。
3)
RTDCバッファー (RTDC buffers) :
RTDCデータ収集 API からのリアルタイムのデータを保持するメモリバッファーの
セットです。RTDCアップローダーAPI によって取り出されます。
クライアントマシンで各RTDCデータ収集アプリケーションは、異なるバッファー
セットを使用します。各バッファーセットは循環的な方式で使用されます。
4)
RTDCアップローダーAPI (RTDC uploader api) :
RTDCアップローダーはRTDCバッファーからリアルタイムのデータを取り出すため
に使用されるライブラリー関数です。
5)
RTDCアップローダー (RTDC uploader) :
RTDCアップローダーAPIを使用してリアルタイムのデータを取り出し、
RTDCサーバーへデータを送るバックグランドで動くEmpressクライアントです。
3−2.サーバーマシン:
1)
RTDCサーバー (RTDC server) :
クライアントマシンのRTDCアップローダーからリアルタイムのデータを受け取り、
RTDCデータベースにデータを格納するサーバーです。
2)
RTDCデータベース (RTDC database) :
リアルタイムのデータを格納するEmpressデータベースです。
クライアントマシンのRTDCバッファーセット毎には単一のテーブルに対応します。
一つテーブルは、異なるクライアントマシンの同じセットのRTDCバッファーに
よって共有されるかもしれません。
3)
RTDC データベースアプリケーション (RTDC db app) :
RTDC開発者によって開発されているRTDCデータベース中のデータの上で作動する
アプリケーションです。
3−3.開発(サーバー)マシン:
1)
RTDC 設定情報ジェネレーター (RTDC configuration info generator) :
RTDCデータベースのスキーマから分かりやすい設定情報を生成するユーティリィ
ティです。設定情報は多くのRTDCコンポーネントに要求されます。
2)
RTDCデータ収集アプリケーション メーカー (RTDC dc app maker) :
RTDCデータ収集アプリケーションを (クロス) コンパイルし、ライブラリとリン
クし、クライアントマシンのための実行可能なオブジェクトあるいはスレッドオ
ブジェクトを生成するユーティリィティです。このユーティリィティは設定情報
をスタティックのデータに変換し、データ収集アプリケーションに結びつきます。
3)
RTDCアップローダーメーカー ( RTDC uploader maker) :
RTDCアップローダーをライブラリとリンクし、クライアントマシンのための実行
可能なオブジェクトあるいはスレッドオブジェクトを生成するユーティリィティ
です。さらに、このユーティリィティは設定情報をスタティックのデータに変換
し、RTDCアップローダーに結びつきます。
4.クライアントマシンでの処理
RTDCデータ収集アプリケーションとRTDCデータ収集APIは、リアルタイムのタスクを形成します。そのタスクは開発者の意向およびオペレーティングシステムのサポートによってプロセスあるいはスレッドでありえます。そのタスクは、1セットのリアルタイムデータを集めて、かつ次のセットのデータができている前に、RTDCバッファーへデータを渡さなければなりません。それがリアルタイムのアプリケーション開発者によって設定されています。Empressは、RTDCデータ収集アプリケーションの部分のタスクに対する管理を行っていません。
RTDCアップローダーとRTDCアップローダーAPIは別のタスクを形成します。そのタスクはオペレーティングシステムのサポートによってプロセスあるいはスレッドでありえます。そのタスクは、RTDCバッファーからリアルタイムのデータを取り出し、データが失われないように、高速にRTDCサーバーへデータを送ります。タスクの速度はRTDCサーバーの応答速度とクライアントサーバ間のコミュニケーション速度に依存します。クライアントマシンとサーバーマシンのアーキテクチャーが異なる場合がありますので、RTDCクライアントはクロスプラットフォームのデータ変換の問題を考える必要があります。
RTDCアップローダータスクは、起動される時に、RTDCバッファーを作成し初期化し、終了時にそれを削除します。起動パラメーターによって動作を制御することができます。
RTDCバッファーは、RTDC データ収集アプリケーションタスクとRTDC アップローダータスクの間の橋渡しとなります。バッファーはシェアードメモリー中で、あるいはスレッド中でインプリメントされます、オペレーティングシステムのサポートに依存するグローバルデータです。各RTDC データ収集アプリケーションタスクは、バッファーの異なるセットを使用します。RTDC アップローダータスクは、バッファーのすべてのセットに対処します。バッファーの各セットは循環的な方式で作用します。その結果、バッファーに取り出されていないデータでいっぱいになる場合には、最初のデータを新しいデータで上書きされます。このように、RTDC データ収集アプリケーションタスクがデータをRTDCバッファーへ転送する速度は、RTDC アップローダータスクがデータを取り出す速度より速い場合には、初期のデータは失われます。与えられたセット中のバッファーの数は、バッファーによって占められたメモリサイズとデータロスの両方を考慮する必要があります。
RTDCバッファーをロックするメカニズムはインプリメントされていません。これは、リアルタイムにおいて動くRTDC データ収集アプリケーションタスクはRTDC アップローダータスクによってブロックされる問題を解決します。2つのRTDC データ収集アプリケーションタスクが、同じセットのRTDCバッファーを共有しません。
実際のリアルタイムのデータに加えて、RTDCバッファーはタイムスタンプおよびアプリケーションIDを含めることができます。
クライアントマシンは、リアルタイムオペレーティングシステム、あるいはコンソール、ファイルシステムおよびハードドライブのない、必要最低限のオペレーティングシステムを実行する程度の非力なマシンであると予想されます。これらのオペレーティングシステムの中のいくつかは、プロセスとシェアードメモリーをサポートしません。スレッドのみサポートしています。クライアントマシン上で走るRTDCコンポーネントについては、プロセスあるいはスレッドとして動くことができます。マルチスレットに対応されています。
コンソール、ファイルシステムおよびハードドライブがない場合には、RTDCコンポーネントは、オペレーティングシステムからのコンソールやファイルI/O機能に依存することができません。ファイルから設定情報を得ることもできません。設定情報はスタティックのデータとして、実行コードに包まなければなりません。RTDC
データ収集については、検知されたエラーはエラーコードとしてRTDC データ収集アプリケーションに返すことができます。また、エラー処理はRTDC
データ収集アプリケーションは責任を持って行います。
5.サーバーマシンでの処理
RTDCサーバーは、様々なクライアントマシンでのRTDCアップローダータスクからのリアルタイムデータを受け取り、RTDCデータベースにデータを格納します。クライアントマシンおよびサーバーマシンのアキテクチャーが異なる場合もありますので、RTDCサーバーはクロスプラットフォームのデータ変換の問題を考える必要があります。
RTDCデータベースはEmpressデータベースです。クライアントマシンのRTDCバッファーセット毎には単一のテーブルに対応します。一つテーブルは、異なるクライアントマシンの同じセットのRTDCバッファーによって共有することができます;
RTDC データ収集アプリケーションは、全てのEmpressデータベースインターフェースを利用して開発できます。
6.開発マシンでの処理
RTDCデータベースのスキーマから設定情報を生成するユーティリィティです。設定情報は、RTDCコンポーネントによって要求されます。開発者がどんな設定情報も作成し編集することができる一方で、設定情報の重要な部分はRTDCデータベースに正確に対応しなければなりません。例えば、RTDCバッファーのサイズおよび構造は、対応するRTDCデータベースのテーブルのスキーマに依存します。ユーティリィティを使用した設定情報の作成では、手動にて設定情報を作成することによるエラー発生の可能性を減らします。さらにユーティリィティは、RTDC
データ収集アプリケーションを開発する開発者のためのデータ構造定義のCヘッダーファイルを生成することができます。
RTDC データ収集アプリケーションメーカーは、RTDC データ収集アプリケーションを
(クロス) コンパイルし、ライブラリとリンクし、クライアントマシン上で実行可能なオブジェクトあるいはスレッドオブジェクトを生成するユーティリィティです。それは
(クロス)コンパイラーを含むラッパーです。
RTDC アップローダーメーカーは、RTDC アップローダーをライブラリとリンクし、クライアントマシン上で実行可能なオブジェクトあるいはスレッドオブジェクトを生成するユーティリィティです。それは (クロス)コンパイラーを含むラッパーです。
RTDC データ収集アプリケーションメーカーおよびRTDC アップローダーメーカーは、設定情報ファイルをスタティックなデータに変換し、RTDC データ収集アプリケーションおよびRTDC アップローダーに設定データを結び付けます。RTDC データ収集アプリケーションおよびRTDC アップローダータスクのそれぞれのコンポーネントは、設定情報の中のそれぞれに必要な箇所を参照します。例えばRTDCバッファーは、バッファーのサイズと構造を参照します。RTDC アップローダーは、クライアントサーバ間のコミュニケーションの設定情報を参照します。
7.Empress RTDCを使用する様々なケース
最もシンプルなケースでは、クライアントマシン又は装置につき1つのRTDCデータ収集アプリケーションがあります。しかしEmpress
RTDCは、RTDCデータ収集アプリケーション、RTDC アップローダーあるいはRTDCサーバーをそれぞれ複数台で利用する様々なコンフィグレーションを実現します。図2は、複数台のマシン環境での利用ケースを示します。

図2. 様々なクライアント・サーバマシン環境で利用可能なEmpress
RTDC
*1つのRTDC アップローダーにつき複数のRTDCデータ収集アプリケーション
*1台のクライアントマシンにつき複数のRTDC アップローダー
*1つのRTDC アップローダーは、1つのRTDCサーバーへのみデータをアップロード
*1つのRTDCサーバーは、複数のRTDC アップローダーからのデータをアップロード
*1つのRTDCデータ収集アプリケーションは、異なるRTDC アップローダーを使用して、
異なるRTDCサーバーへデータをアップロード
8.まとめ
Empress RTDCは、リアルタイム環境下で生成されるデータを、様々な形態でデータ収集&データベース化する汎用的なミドルウエアです。Empress
RTDCは、リアルタイムアプリケーションを構築する開発者にとって優れた開発環境を提供することでしょう。

