Empressの主な特長

Empressの組込みデータベースは以下のような特長があります。

1.高速データベースエンジン

Empressはインプロセス・タスク方式の組込みデータベースのため、アプリケーションと同一のメモリ領域で稼働します。クライアントアンドサーバ型の組込みデータベースと異なり、サーバとのプロセス間通信が必要ないため高速性が保証されます。同時に、Empressは長年のチューンアップノウハウと多岐のチューナップポイントをサポートとして提供することが可能です。

2.小さなフットプリント

Empressの組込みデータベースは、小さなフットプリントのデータベースエンジンで大量データの高速処理機能を提供します。小さなフットプリントでも無制限のマルチタスク、ANSI準拠の2相トランザクション、3レベルのロック粒度、断電回復機能、非断片化構造、C及びC++インターフェース、ANSI SQL 92、ODBCに準拠したデータタイプををサポートします。機能分けされたコンポーネントフレームワークで提供されるため、最小のフットプリントでユーザに最適な機能を提供することが可能です。

3.断電回復機能

Empressをご採用頂いた100%のユーザが使用している機能です。組込みデータベースは、電源の瞬断が発生した後、再度電源が入ったときに、データベースをいかに早く、安全に復旧するかが大きな課題です。Empressは、トランザクション中に断電が発生した場合、起動時に高速でロールバックし、トランザクションを解放することが出来ます。また、トランザクションがかかっていない状態で電源断になった場合でも、1つの関数をコールするだけで、データベースの不整合は瞬時に判断し、不整合が発生した場合、データをレコードごとに検証し、データベース全体の整合性を修正後回復します。Empressの断電回復機能は非常に高速で、20万曲程度のデータを格納したカラオケデータベースを1秒程度で回復することが可能です。

4.組込み用トランザクション

組込みデータベースは色々な方法でデータアクセスされます。このため、組込みデバイス内のデータの一致性を保証するために、EmpressはANSIの2相トランザクションと3レベルのロック粒度を持っています。ロック機能だけではなくダーティーリード、リードコミット、シリアライゼーション等のアイソレーションレベルを実装し、万が一アクセスが衝突した場合でも、アイソレーションレベルを変更することでアクセスの不具合を解消することができます。

5.CRUDの定時性

CRUDとはcreate、read、update、deleteの操作のことで、定時性はデータベースに対してある操作を何回行っても、ほぼ同じ時間で結果が返ってくることを意味します。定時性はリアルタイムシステムでは非常に重要な特性です。EmpressはCRUDの定時性を保証します。1秒ごとに5000件のデータのインサートとデリートを繰り返しても最初のインサートと2年後のインサート時間の誤差は1%以内です。

6.断片化防止処理

組込みデータベースに書き込みと削除操作を繰り返し行うと、操作を実行したテーブルのファイル領域の連続データが分割され、データへの読み書き速度が低下します。これを断片化といい、解消するためにデフラグが必要です。デフラグはメモリとディスクの両方が必要で、特にディスクは使用しているファイルサイズの3倍が必要です。また、デフラグはシステム稼働中に使用はできません。デフラグ中、断電が発生した場合、ファイルシステムは壊れてしまいます。Empressの組込みデータベースは断片化が発生しにくい構造を持ち、デフラグやバキュームを必要としない高可用性とメンテナンスフリー機能を提供します。

7.マルチプロセス・タスク機能

Empressは独自のロック機能によりインプロセス型のデータベースでありながら、ハードウエアリソースとOSがサポートする限り、マルチプロセス・タスク機能を無制限でサポートします。多くのインプロセス型の組込みデータベースは同時アクセス数に制限があります。

8.タイムアウト機能

タイムアウト機能は実行時間が長いクエリを実行して設定時間内で処理が終了出来ない場合、中断し、コントロールをアプリケーションに返す機能です。この機能はカーナビや携帯等である検索を行う場合、時間がかかり過ぎて事前に設定されたタイムアウトの時間を越えた場合に、タイムアウト機能を起動して処理を中断させることが可能になります。タイムアウト機能はプロファイルで設定が可能です。

9.リソース使用量の可予測性

Empressデータベースはオーバヘッドが少ないために、システム設計時に使用するリソースの正確な予測が可能です。プロファイルで最大メモリ使用サイズを制限したり、ディスクの使用量のシステム設計に計算することを容易にします。