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

 

 



 開発者は非常に限られた時間で、信頼性のある、管理しやすい効率のいいコードを作成するためにたゆまぬ努力を行っており、eXtremeDBは開発者がリアルタイムアプリケーションにDBを統合するときに有効ないくつかの特徴を備えています。
 eXtremeDBのプロジェクトに特化したAPIは、操作されるデータのタイプを反映していますので、それぞれのデータベースの操作を確実にします。アプリケーションのデバッグにおいては、eXtremeDBは実行時のコードに多くのトラップを用意しています。これは開発やテストの目的または処理速度の最適化の為に無効にすることも可能です。 McObjectは、アプリケーションにおけるeXtremeDBの理解をより深めるために、全てのソースコードを提供することも可能です。
 さらに、eXtremeDBはクエリの為に極めて有効なインデックスとデータタイプをサポートします。クエリに関しては、完全一致検索の為のハッシュインデックスや、パターン検索の為のツリーインデックス、レンジ操作やソートの機能、オブジェクトIDの参照やデータの直接操作機能も提供します。
また、McObjectのeXtremeDBが採用したデータベースのアーキテクチャでは、ソートや参照用のインデックスにデータの複製をつけたりしませんので、絶対的に少ないメモリ要求にこたえることが出来ます。

   
開発フロー
 


スキーマDB定義

 

 

eXtremeDBを使用する場合、開発者は始めにデータの定義を行います。そしてスキーマコンパイラを使用してAPIを生成します。その結果、以下の利点が生まれます。
 ・アプリケーション別に最適化
 ・読みやすく管理しやすい
 ・Cコンパイル時のタイプチェック機能活用

 

NavigationalAPI コーディング 

 

 

以下の例でもわかるように、Cプログラマにとって何の障壁もないくらいに違和感なくDB管理プログラムの開発が可能です。

 

ビルド

 

 

また、コンパイラがビルド時にデータのタイプなどのエラーをチェックするので、実行されるコードは、非常に信頼性の高いものになります。現実的な問題として、実行時のデータ破壊などは、単純なポインタータイプの不整合により発生することが多くあり、このようなバグが発生したときのデバッグに予想以上の工数が必要になることも決して珍しくありません。です。VOIDタイプを多用するインターフェースはこのような危険が伴いますが、 eXtremeDBではVOIDデータは使用しませんので、もし不整合が発生するコードを書いたとしても、コンパイラが厳密にチェックしてくれます。

 

デバック

 

 

もし、アプリケーションが誤って間違ったトランザクションやオブジェクト操作を実行しようとしたら、初期設定のeXtremeDBは致命的な例外を通知してプログラムの実行を止めます。ほとんどのケースでは、アプリケーションの開発者はソースコードの間違いを見つけるために呼び出したスタックを調べます。eXtremeDBのランタイムはトラップや矛盾の確認を行います。その場合、CPUサイクルやメモリが余分に必要になります。アプリケーションがデバッグされ矛盾がなくなったときには、開発者は、トラップや内部のチェック機能を削除し、貴重なCPUサイクルをとりもどしたeXtremeDBランタイムのリリースバージョンを生成することが出来ます。

     

スキーマ定義例
 


#define uint2 unsigned<2>
#include メcommon.hモ
declare database meteo;
struct Datetime {
 uint2 year;
 uint2 month;
 uint2 day;
 uint2 hour;
 time timestamp;
};
class Data {
 uint4  key;   /* unique key */
 Datetime  dt;
 uint2  temp;   /* temperature */
 float    pres;  /* pressure */
 uint2    humid;  /* humidity   */
 hash <key> IKey[100000];
 tree <dt.year, dt.month, dt.day, dt.timestamp> Idt;
};

   

データ操作例
 


Data data;  // handle to class Data defined in schema
Datetime dt; // Datetine structure defined in schema
rc = mco_trans_start ( db, MCO_READ_WRITE, MCO_TRANS_FOREGROUND, &t );
rc = Data_new( t,&data );
// put fields:
Data_pres_put(&data, get_pressure() );
Data_humid_put(&data, rand2(50, 70) );
Datetime_year_put ( &dt, year );Datetime_month_put( &dt, month );
Datetime_day_put ( &dt, day );
Datetime_hour_put( &dt, hour );
Datetime_timestamp_put( &dt, get_clock() );
rc = mco_trans_commit (t);

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

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

Copyright(c)2003 Gailogic Corporation,all rights reserved