コンポーネントフレームワーク

Empressの組込みデータベースはランタイム時に最小のフットプリントで最高のパフォーマンスを提供するため機能ごとにコンパイルが可能なコンポーネントフレームワークで提供します。コンポーネントフレームワークはカーネル、ミドルウエア、インターフェースレイヤーの3層で構成され、各コンポーネントの構成は以下の通りです。

カーネルレイヤー

カーネルレイヤーを構成するコンポーネントは以下の通りです。

組込みデータベースとストレージエンジン

Empressは、組込みデータベース業界初のインプロセスタスク型エンジンであるため、データベースはアプリケーションと同一のメモリーでライブラリとして提供されます。サーバを使用しないため、サーバとのプロセス間通信が必要ないために高速性を実現します。Empressは、30年以上データベースの高速化に注力し、多くの導入実績があるために多くのチューンアップノウハウを所有しています。これにより、検索はもとより更新系(insert、update、delete)ではより高速性を発揮します。

ハイブリッド(In-memory/On Disk)エンジン

Empressのデータベースエンジンは、In-memoryとOn Disk併用が可能なハイブリッド機能を有しています。高速が要求される場合はIn-memoryで、そうでないものは安全なOn Diskで、というオプションの設定が可能です。ディスクとメモリのデータベースの同期は同期しない、テーブルクローズ時(ODBC、JDBC使用時)に同期、常に同期をプロファイルで設定できます。

断電回復機能・非断片化構造

組込みデータベースは電源断の発生後、再度電源が入ったとき、データベースをいかに早く復旧するという事が大きな課題です。Empressは、トランザクション中に断電になった場合、起動時に高速でトランザクションを解放することが出来ます。又、トランザクションがかかっていない状態で電源断になった場合、レコードごとの検証を実行します。Empressの断電回復機能は非常に高速で、約20万曲のカラオケデータベースを1秒程度で断電回復することが可能です。

組込みデータベースの経年劣化の主な原因は断片化です。組込みのデータベースに対する書込みと削除を繰り返すと、データベーステーブルの連続データが分割され、データへの読み書き速度が低下します。断片化を解消するためにデフラグが必要です。デフラグはメモリとディスクの両方が必要です。デフラグ中はシステムの使用はできませんし、デフラグ中断電が発生した場合、ファイルシステムは壊れてしまいます。Empressの組込みデータベースは、断片化の発生しずらい構造を持ち、メンテナンスフリーを実現し、組込みシステムで最適な機能を提供しています。

トランザクション

組込みデータベースは色々な方法でデータアクセスされます。このため、組込みデバイスのデータの一致性を保証するために、EmpressはANSIの2相トランザクションとロック機能をサポートしています。トランザクションが確保できない場合でも、データベースのセーブポイントを設置し、 組込みデータベースが確実に稼働できるように復旧させます。

INDEX

ANSIの標準であるデータベースIndex、B-Tree、HASH、Time Seriesなどのインデックスを提供します。ANSIの標準以外でEmpress独自に以下のIndexを提供します。

  • 全文検索INDEX
    全文検索が検索するインデックスを提供します。
  • 空間INDEX
    地図データを検索するインデックスを提供します。
  • ツリーデータINDEX
    親子関係にあるデータの高速検索、更新、削除するインデックスを提供します。
  • 絞込み検索
    主にタッチパネルなどで使用される次の候補文字を検索するためのインデックスを提供します。

マルチプロセス/タスクサポート

マルチプロセス・タスクのサポートはトランザクションとロック機能が必要です。ロック機能は粒度をプロファイルで設定出来るので、レコード、ページ、テーブルを場面に応じて使い分けすることが可能です。同時にEmpressはデータにアクセスするアイソレーションレベルも提供しています。アイソレーションレベルはダーティーリード、リードコミット、シリアライゼーション等を使用することが可能です。2相トランザクションとロック機能により完全なマルチプロセス・タスク機能を提供することが可能です。

ミドルウエアレイヤー

ミドルウエアレイヤーを構成するコンポーネントは以下の通りです。

GIS/GPSモジュール

GIS/GPSモジュールで用いられるEmpress空間検索IndexはR*tree Indexにより実装されます。R*tree Indexは通常データベース操作に使用されるB-Tree Indexのようにツリー構造をしていますが、多次元のXY軸の検索で特に使用されます。実生活ではカーナビなどで「現在地から5KM以内にあるガソリンスタンドを探す」といったような用途に用いられます。

全文検索

データベースの検索は通常はB-Treeインデックスを使用した「頭出し検索」ですが、Empress組込み全文検索は、データベースでは苦手とされる全文検索、中間一致、後方一致検索で圧倒的な高速パフォーマンスを提供します。検索の高速性だけではなく表記ゆれ、シソーラス対応によってヒット率も向上させ、単体の組込みデータベース検索では決して実現できない高速全文検索機能を実現します。

Empressレプリケーション

Empressレプリケーション機能はEmpress同志であればOSをまたぎ、例えば、WindowsとLinux間でデータ連携することが可能です。レプリケーションはマスタテーブルのソフトウエアタイムスタンプにより管理されるため、マスタ、スレーブ、レプリカの間のテーブルのデータをすべて比較することなく、低いデバイス及び通信負荷で実装することが可能です。倉庫にずっとしまっていてハードウエア時間が狂っているデバイスをLANに接続するだけで正常にレプリケーションが稼働します。Empressレプリケーション機能は、マスターテーブルのコピーとしてスレーブを作成したり、マスターテーブルのサブセットとしてレプリカを作成たり、テーブルに親子関係を作成せずにすべてをマスタとするマルチマスタレプリケーションも可能です。

M2Mレプリケーション

Empressレプリケーション機能は、Empress同志のレプリケーションですが、Empress M2M レプリケーションは、Empressと他社のデータベースの間のデータ連携を可能とする機能です。
Empress M2M レプリケーションはオンプレミス、クラウドの両方の提供が可能で、データ連携はアプリを作成するのではなく、プロファイルを作成することでプログラムレスで実現させます。

階層データ処理

ツリーIndexを使用し、親子関係にあるデータの高速検索、更新、削除する機能を提供します。IPフォンの親電話と子電話、上司と部下などの検索、一括更新・削除を高速化する機能です。

データの暗号化・圧縮処理

Empressは暗号化方法をデータベースエンジンに実装しているため、通常のファイル暗号化と比較すると、少ないオーバーヘッドで暗号化されたデータの検索が可能です。同時に暗号キーをクラウド上に置き、クラウドからキーを取得、複合化後にすぐにキーを消滅させ、デバイス内に置かないことで、高いセキュリティとデバイスのなりすまし防止を防止することが可能です。

ユーザ定義INDEX

ユーザ定義可能なカスタマイズIndexです。複数のアトリビュートを組み合わせて独自Indexを作成し、主キーにすることも可能です。

インターフェースレイヤー

インターフェースレイヤーを構成するコンポーネントは以下の通りです。

データリカバリAPI

Empressはデータベースのデータを外部ファイルからリカバリが可能なAPIが提供されています。データは、ローカル、ネットワーク、他のデバイスでも、他のOS間でも可能です。

ODBC/JDBCインターフェース

Empressは、ODBC及びJDBCインターフェースに接続するため、Empress Connectivity ServerとODBC/JDBCインターフェースを提供しています。

Empress Connectivity Serverは、クライアントサーバ構造でODBCとJDBCをサポートしたEmpressの組込みデータベースサーバです。

ODBCは、データベースにアクセスするためのソフトウェアの標準仕様です。データベースの違いはODBCドライバによって吸収されるため、ユーザはODBCに定められた手順に従ってプログラムを作成すれば、接続先のデータベースにアクセスすることが可能です。EmpressはODBCをEmpressの標準インターフェースとし、UNIX/Linux/Windows/eT-kernelなどで稼動するクライアントアプリケーションが、ネットワーク上にあるEmpressデータベースにアクセスすることができます。

JDBCは、Javaプログラムをデータベース管理システムに接続させるための、Javaプログラミング言語のための標準APIです。 JDBCは、Javaによって書かれたクラスとインターフェースのセットから構成されます。 JDBCはプラットフォームに依存しないので、クロスプラットフォーム上で一度だけデータベース アプリケーションを開発することで実行できます。Empress JDBC インターフェースは、 JavaプログラムがEmpressのSQL文を実行することを可能にするJDBC API用のオプションです。 Empress JDBCインタ-フェースを利用するユーザは、データベースと容易に接続し、SQLを送信し、瞬時に結果を得ることができるアプリケーションやサーブレットやアプレットを開発できます。

CカーネルAPI(MR)

Empressは、C、C++言語を用いてデータベースにダイレクトにアクセスできる高速データベース処理用関数、MR APIを提供します。このインターフェースは関数の呼出し時にパーサーを起動しないため、SQLインターフェースよりも高速な実行環境を実現します。データ処理をより細かく制御することで、開発などを可能にします。

以下はEmpressのCカーネルAPI(MR)の提供する関数例です。

  • オープンAPI
  • ロックAPI
  • 空間の割り付けAPI
  • アトリビュート・デスクリプタAPI
  • デリートAPI
  • レコードセットAPI
  • インサートAPI
  • アップデートAPI
  • 検索API
  • 比較API
  • 入力変換API
  • 表現式API
  • トランザクションAPI
  • エラーハンドリングAPI

組込みSQL

Empress 組込み SQLは、C言語でのプログラムにSQLコマンドを利用することで、Empressデータベースにアクセスすることを実現します。 Empressデータベース上のテーブルに対して以下の操作を提供します。

  • レコードの追加
  • レコードの更新
  • レコードの削除
  • レコードの検索
  • 検索された複数のレコードに対しての追加、更新、削除
  • データの完全性を維持した上でのトランザクションの利用