組込み用 超高速インメモリデーターベースeXtremeDB
組込み用 超高速インメモリデーターベースeXtremeDB

 

 

 eXtremeDB スタンダードエディションはMcObjectの中核をなす製品です。高いパフォーマンス、厳密なメモリーベースのアーキテクチャー、データの直接操作を行うためにデザインされました。データはアプリケーションから直接保存・操作され、キャッシュや変換のオーバーヘッドを排除しました。通常のリード・ライト操作は数μ秒以下のレベルで行われます。DBエンジンはリエントラントに作られていますので、複数のスレッドから同時にアクセスでき、トランザクションはデータの保全を保証するACID属性に対応しています。

eXtremeDB ランタイムが提供するもの

 

高速なトランザクション

 

 eXtremeDBは、データを完全にメインメモリー上に保存するので、ディスクベースのデータベースのようなディスクアクセスやキャッシングなどのオーバーヘッド排除し、高速なデータ管理を実現します。eXtremeDBのトランザクションマネージャは高いトランザクション性能を出すために最適化されています。

小さなフットプリント

 

 インテリジェントに再設計されたストリーミングコアデータベースの機能により、McObjectは平均で100KBという信じられないくらいの非常に少ないフットプリントで、インメモリーデータベースシステム(IMDS)を提供します。これにより、これまでにリソースの制限でデータベースシステムの採用が度外視されていたあらゆるインテリジェントデバイスに強力な機能の拡張が可能になります。

ダイレクトアクセス

 

 これまでのデータ管理手法では、ストレージのデータベースをキャッシュシステムにコピーし、アプリケーションから操作できるように再配置する必要がありました。メインメモリー内のデータを直接操作することにより、 eXtremeDBはデータセットの複製を作ったり位置管理をするオーバーヘッドをなくしました。

無駄な変換作業の排除

 

 eXtremeDBは、アプリケーションが使用するデータをそのままの形式で保存します。C言語でのデータ構造へのマッピングは不要で、例えば、テーブルからフィールドを抜き出しCの構造体にコピーする時に追加のコードは必要はありません。このオーバーヘッドをなくすだけで必要とされるメモリーとCPU能力を軽減しています。

ハイアベ−ラビリティ

 

 データの保全に関しては、eXtremeDBのトランザクションはACID属性をサポートし、トランザクション内にグループ化された操作は全て保証されるか、またはトランザクション前の状態にロールバックされます。

2つのAPIの提供

 
 

 一つ目のAPIは標準関数のライブラリで、カーソルの移動やデータベースのオープン・クローズといった基本的な操作のためのものです。二つ目のAPIは、データの操作やアプリケーションのデータモデルからデータを抽出するような、使用時にスキーマに影響を受けるものです。この特長は、実行時により信頼性の高いものして現れてきます。C/C++コンパイラはデータタイプやアサインのエラーをアプリケーションのビルド時に発見します。この手のエラーの発見は最終のビルドや実行時に捕らえることは非常に困難になります。これもeXtremeDBを用いたアプリケーションの信頼性向上に貢献しています。

 eXtremeDBは高性能のためにデザインされました。メモリーマネージャによる最適化、ハッシュ・ツリーインデックス対応、データレイアウトの多重化、優先順位付けが可能なトランザクション、アプリケーションに最適化されたAPIといった特徴があります。


シェアードメモリデータベース

 


 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)

 

概要・top / 製品 / プレスリリース / 実績 / ダウンロード / イベント / お問合せ

ガイロジック株式会社
〒180-0005 東京都武蔵野市御殿山1-6-8 ムサシヤビル1階
TEL 0422-26-8211 FAX 0422-26-8212

Copyright(c)2003 Gailogic Corporation,all rights reserved