|
McObjectは、eXtremeDBのデザイン前に、性能の妨げとなるオーバーヘッドを排除し、なおかつ信頼のおけるトランザクションを実現することを基本方針としました。McObjectはテレコミュニケーションシステム、工場での自動制御システム、プロセスコントロール、遅延の許されないコンシューマ向け電子デバイスや医療機器などのリアルタイムシステムに最適に使用できるアプローチをとりました。
eXtremeDBはメインメモリの組込み用データベースで、データへの直接アクセスを実現しました。eXtremeDBデータベースを直接アプリケーションのアドレススペースにマップし、アプリケーションにデータを直接操作させる機能を提供し高価なバッファー管理を不要にします。このデータへの高速アクセスはアプリケーションのスタック上の構造体へのアクセスに関連付けられることで高度に最適化されます。eXtremeDBのランタイムコードはアプリケーションに直接リンクされ、リモートプロシジャーコールは実行のパスから排除されます。その結果、実行パスは通常ほんの数CPUサイクルしか必要としなくなりました。
メインメモリのデータベースであるeXtremeDBは、I/O操作中のページデータの入出力ボトルネックを排除しました。データベースのリード・ライト操作のパフォーマンスが予測できるようにeXtremeDBのランタイムは自分自身の高度に最適化されたメモリマネージャを使用します。このeXtremeDBに組み込まれた信頼度の高いメモリマネージャが、全てのメモリの確保・開放を行います。eXtremeDBは、OSやCのランタイムライブラリが提供するメモリマネージャを決して信用していません。
eXtremeDBのトランザクションマネージャはシンプルなトランザクションキューを実装していますが、実行時にトランザクションに個別の優先度を割り当てることを可能とするような新しい方式も追加しています。トランザクションには5つの優先度(ISRからIDLEまで)を設定することができます。将来のバージョンでは、トランザクションマネージャが時間を認識できるようにプライオリティスキーマを拡張していきます。
このアプローチは、次のような場合に非常にうまく機能します。
| ■ |
同時アクセスが比較的少ない場合
|
| ■ |
トランザクション処理自体が非常に短い時間で処理される場合
|
| |
アプリケーションがロック機構のアービターと通信する時間がトランザクション処理時間に匹敵するような場合、より複雑な並行処理制御の調整作業をなくすことができます。
|
eXtremeDBは、トランザクション時間を制限し(すなわち、トランザクション内のデータベースオペレーションの最大数が制限されます
)、最も重要なトランザクションの処理を最大限に引出す事ができるようになります。
eXtremeDB は、一定の応答時間を提供するために、オペレーティングシステムのセマフォに頼らず、排他的実行をユーザースペースでのスピンーロック制御を採用しました。ランタイムはいろいろな手法、例えばCPU命令の
"test and set" や "compare and set"を用いたり、割り込みに直接アクセスしたりする等の方法で構成可能です。
リアルタイムシステムの本質であるイベント型のオブジェクトを扱うために、McObjectのeXtremeDBは、OSのサービスに一切依存しない同期・非同期の処理を行う機能を提供しています。
ハイアベーラビリティ用インターフェースは、eXtremeDBハイアベーラビリティのランタイム拡張で明示され、アプリケーションがeXtremeDBのHA接続を構成、確立、維持、終了する方法を提供します。他ベンダーのフォルトトレラントシステム構築用の複製アルゴリズムと異なり、eXtremeDBのデザイン原則に基づき、時間を認識した2フェーズコミットプロトコルと異常通知システムを使用し、リアルタイムシステムでのハイアベーラビリティを保証します。
eXtremeDBの実行にはOSは必要ありませんが、もしOSがあればそのOSの利点を利用することができます。すでに多くのOS
(VxWorks, QNX, Windows CE, Linux, Windows NT/2000/XP, Sun
Solaris, HP-UX等)上で稼動しています。
|