 |
シェアードメモリデータベース
|
| |
eXtremeDBは、コンベンショナルメモリに作られたデータベースの操作を行うバージョンもあります。シェアードメモリバージョンはSolaris,
QNXやLinuxのマルチプロセスに対応しています。このシェアードメモリバージョンでは、 eXtremeDBデータベースは共有メモリ上に作成され、それぞれのプロセスに応じたローカルアドレスにマッピングされます。それにより、複数のプロセスやそれぞれのプロセスに属する複数のスレッドから
eXtremeDBデータベースへのアクセスが可能になります。
eXtremeDBのシェアードメモリバージョンのランタイムはコンベンショナルバージョンとは異なるライブラリでビルドされます。シェアードメモリバージョンのランタイムを使用すれば、一つのプロセスでもデータベースを生成し複数のスレッドから接続できますが、データベースはプロセス固有のメモリに代って共有メモリにおかれます。eXtremeDBは共有メモリのデータベースを同期させる方法として以下の3つがサポートされますので、いろいろなターゲットプラットフォームに対応できます。
・System V IPC (Sun Solaris, Linux等)
・POSIX (QNX 4.x, QNX 6.x等)
・Win32 ( Microsoft Windows等)
|
 |
XML拡張
|
| |
McObjectは、簡潔なスキーマの進化及びeXtremeDBと外部システムとのデータ交換のためにXML拡張を開発しました。eXtremeBDのXML拡張機能を使うと、eXtremeBDのスキーマコンパイラはそれぞれのオブジェクトに対して新しい以下の機能を提供するインターフェース機能を生成します。
・XMLオブジェクトとしてのエンコード
・XML文書からデータベースオブジェクトの生成
・XML文書からデータベース内の既存データへの更新
・データベースの各クラスのXMLスキーマの生成
XMLインターフェース機能は、たとえばデータベースのデータ変更が発生した時に、そのeXtremeDBのイベント通知と共にeXtremeDBとXML対応システムでデータ共有を行うようなことに使用できます。XMLインターフェースは、データベースをXML文書やフィールドの追加・削除、インデックスやクラスのエクスポート、さらに保存されたXML文書から新しいデータベースへのインポートが行うこともできます。
eXtremeDB XMLとeXtremeDB XMLスキーマエンコーディングは、W3C SOAPのエンコード推奨に準拠するように開発されました。従って、XMLインターフェースの機能はさらに組込み用WEBサーバーと連携できますので、データベースの内容をWEBブラウザやその他のSOAPクライアントに対して配布できます。
|
 |
SOAPスタンダード
|
| |
W3C SOAPエンコーディングに関しては、以下の文書を参考にして下さい。
http://www.w3.org/TR/soap12-part0/
http://www.w3.org/TR/soap12-part1/
http://www.w3.org/TR/soap12-part2/
XMLスキーマエンコーディングの推奨に関しては、以下のW3Cの文書を参考にして下さい。
http://www.w3.org/TR/xmlschema-0/
http://www.w3.org/TR/xmlschema-1/
|
 |
開発環境
|
| |
開発者は製品に使用されるコードを、読みやすく、管理しやすくかつ効率的に、しかも可能な限り短い時間で開発しようと努力しています。eXtremeDBは、そのような開発者がeXtremeDBを用いたリアルタイムアプリケーションを作成する場合に、開発者を支援するいくつかの特徴を含んでいます。サードパーティのソフトウェアを使用するということは、必ずしもそれぞれのアプリケーションに最適とはいえないAPIを学び、使用することを意味します。eXtremeDBの、プロジェクトに最適化されたAPIは、ぞれのデータベースで扱われるデータのタイプを反映してることを保証します。
アプリケーションのデバッグを助けるために、eXtremeDBは実行時に非常に多くのトラップを用意しています。これらは開発・テストや最適化の段階で無効にできます。
McObjectは、アプリケーションに組み込まれたeXtremeDBに関する理解を深める為に、全てのコードをソースで提供することができます。さらに、eXtremeDBは、実際にクエリのためのきわめて効果的なインデックスをサポートしています。クエリーでは、McObjectは完全一致検索のためのハッシュインデックスや部分一致検索のためのツリーインデックス、レンジ操作やソート、オブジェクトの参照を行う場合に直接データを操作します。データの複製をソートするのと異なり、インデックスはデータ参照用のポインタのみを持っていますので、メモリの使用量は非常に少なくてすみます。
XtremeDBを用いる場合、開発者は始めにデータの定義に注力し、次にeXtremeDBのスキーマコンパイラがAPIを生成します。
結果:
・アプリケーションに最適化された、非常にわかりやすいAPIを提供
・開発・保守が簡単に出来るような読みやすいコード
・Cコンパイラのタイプチェック機能を応用しコーディングのエラー減少
例:
以下は簡単なクラス定義とデータベースのレコードに新しい値を入れるAPIです。
class Measurement {
string measure;
time timestamp;
unique tree <measure, timestamp> trend;
};
Measurement_measure_put(&m, meas);
Measurement_timestamp_put(&m, value);
|
 |
革新的なエラー検知と矛盾チェックの特長
|
| |
もし、アプリケーションが誤って不完全なトランザクションやオブジェクトハンドルをランタイムに渡そうとした場合、eXtremeDBは(既定状態では)致命的な例外を発生しプログラムの実行を止めます。そのような場合ほとんどのケースでは、アプリケーションの開発者はコールスタック状態を見ながらソースの間違いを検出しようとします。eXtremeDBのランタイムは、非常に豊富なトラップと矛盾検知機能を持っています。確かに、その機能は何の代償も必要ないとは言えません。ランタイムのこの機能を実現するには、追加のCPUサイクルと少しのメモリが必要です。しかしながら、アプリケーションのバグが取れ矛盾がなくなり評価テストを通った後に、開発者は最適化されたランタイムを生成できます。これでデバッグのために費やしていたCPUサイクル等を取り戻すことができます。
|
●複雑なデータタイプと効果的なクエリ
|
| |
・構造体、アレイ、ベクター、BLOB等を含むあらゆるデータタイプに対応
・クエリを含む、完全一致検索のためのハッシュインデックス
・パターンマッチ、レンジ操作、ソートの為のツリーインデックス
・インデックス生成をアプリケーションが制御可能なVolantryインデックス
・データの直接操作
・オブジェクト識別のためにシステムが定義する自動ID
・インデックスはポインタ(データの複製を保存するよりも遥かに少ないメモリ要求)
・同期・非同期のイベント通知
・オブジェクトヒストリー(オプション)
|
|
●対応プラットフォーム
|
| |
|
組込み用プラットフォーム
|
サーバー・デスクトッププラットフォーム
|
|
・VxWorks 5.4, 5.5
・QNX 4.x, QNX 6.x
・各種リアルタイム Linux ディストリビューション
・Lynx OS
・RTXC Quadros, RTXC 3.2
・INTEGRITY OS
・Microsoft Windows Embedded Platforms
・Windows Real-Time Extensions
・ベアボーンボード (OSは不要)
|
・Sun Solaris 8 and Solaris 9
・HP-UX 11.x
・Linux ディストリビューション
・Windows プラットフォーム(98/NT/200/XP)
|
|
|
●OS環境
|
| |
・gnu toolchain (gcc 2.95 and higher)
・Tornado 2.0 and 2.2 (GNU and Diab compilers)
・QNX Momentics IDE (C, C++, Embedded C++)
・Metrowerks CodeWarrior IDE (various platforms)
・GreenHills Multi
・Microsoft Visual Studio (C/C++, .NET)
|
|