組み込みデータベースに求められる要件
組み込み機器は、パソコンやサーバとは異なります。マイコン(またはCPU)が高速化になったとはいえ、パソコンには及びません。メモリが大容量化したとはいえ、ハードディスクドライブを搭載している組み込み機器はまだ多くはありません。それでは組み込み機器にデータベースを持たせるには、どのような要件が求められているのでしょうか。まとめると以下のようになります。
- フットプリント(稼動時のメモリ消費量)が小さい
- 各機能がモジュール化され、必要な機能を選択できる
- ODBC、JDBCなどのプログラムインタフェースを提供している
- メンテナンスフリーである
- 突発的な電源遮断にも対応している
そのほか標準SQLに準拠していること、WindowsやLinuxだけでなく、VxWorks、μITRON、SymbianOSといった組み込みOSにも対応していることなど、多くの要件があります。そのなかでも、いちばんのポイントは「省リソースなハードウェア環境において、いかに高速にかつ安定的に動作できるか」なのです。
一般に組み込みデータベースではサーバ用データベースから必要な機能のみ組み合わせているものもあり、その多くの場合はデータベースとしての機能を満たしていないことがあるので、選定の際には注意が必要です。
組み込みデータベースは複数ありますが、今回は筆者が勤めるブライセンが扱う「Linter」を例に、組み込みデータベースの特徴を紹介します。
Linterは本格的なクライアント - サーバ型の組み込みデータベースです(図7)。サーバ用に開発された機能をそのままに、組み込み機器向けに最適化させたものです。
【図7】組み込みデータベース「Linter」(ブライセン製)の基本概念図 |
これにより、
- 複数アプリケーションからのデータベースへの同時アクセスが可能
- ネットワークを用いたデータの連携が可能
- ストアドプロシージャ/トリガの利用が可能
などサーバ用のデータベースと同様に、組み込み機器において多くの機能が利用できます。近年発売されている携帯電話などの情報端末やデジタル家電といった組み込み機器にはいろいろな機能が付いており、そのぶん、データ操作も複雑化しています。組み込み機器であっても、これからの時代、クライアント-サーバ型の組み込みデータベースが必須となっているのです。
また、Linterはメモリ領域のコンパクション作業が不要であるという特徴を持っています。一般的なデータベースにおけるメモリ領域の操作を図8に示します。
【図8】一般的なデータベースにおけるメモリ領域の操作 |
一般的にDATAの出し入れによって生じるメモリ領域の空間は、一定期間そのまま残しておき、定期的なコンパクション(詰める作業)によりメモリ領域を適正な状態に保ちます。DATAの出し入れの都度コンパクションを行っては無駄がありますし、何よりパフォーマンスに大きな影響を及ぼしてしまいます。一方、Linterの場合は図9のようになっています。
【図9】Linterのメモリ領域の操作 |
DATAの出し入れによって生じるメモリ領域の空間は、その場所をLinterが管理しており、DATAのINSERTの際にその空間から埋めていく構造となっています。この方式により、基本的にはコンパクション操作不要なメンテナンスフリーを実現しており、メモリ領域はつねに最適に保たれるという構造となっています。
組み込み機器においては万が一の電源遮断への対応も重要となります。Linterではトランザクション処理の記録をジャーナル(Journal)情報として保存しているため、万が一の電源遮断においてもデータは保護されています。このため、再起動するだけで自動復旧が可能です(図10)。
【図10】Linterのメモリ領域の操作 |
また、Linterは固定メモリサイズ内で動作します。扱うデータ量に伴いメモリ量が動的に変化することはないので、メモリがオーバフローすることはありません。そのほか、各機能がモジュール化されており、目的や用途に応じた柔軟なカスタマイズが可能です。