|
eXtremeDB のデザイン方針 "Real-time databases for embedded systems" (pdf) のダウンロード
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 等) 上で稼動しています。
|