近年、組込みシステムの高機能化に伴い、組込みシステムで取り扱うデータの種類並びにデータ量が増加の一途を辿っています。プログラムが複雑化し、C言語だけによるデータ管理はすでに限界に来ており、品質を確保するのに多大な時間を要するなど、新たな課題となっています。この課題の解決策として組込み向けデータベースが注目されています。Ubiquitous DeviceSQL(以降、DeviceSQL)は、組込みシステムに特化し、ストリーム・ベースド・データ管理技術に基づくまったく新しいカテゴリーのデータ管理ソフトウェアとして2002年に登場し、携帯電話、車載機器、IP-STB、通信機器などでの採用実績を重ね、2010年5月現在、DeviceSQL Release 4.3がリリースされています。
DeviceSQLは、他の組込みRDBMSではカバーできない、ローエンドからハイエンドまでのすべての製品ラインをカバーし、業界標準であるOracle PL/SQLに準拠し、SQL文を使用してデータを問い合わせるだけではなく、IF文、FOR文、LOOP文といった手続き型言語であるPL(Procedure Language)との組み合わせによって、簡単なコマンドでより複雑な処理を行うことが可能です。さらにDeviceSQLは、組込み用途向けにPL/SQLを機能拡張し、C言語へのエクスポート機能ならびにC言語へのインポート機能がサポートされています。これらにより、C言語のアプリケーションからDeviceSQLの関数の呼び出しや、反対にDeviceSQL言語内でC言語の関数を呼び出しが行え、このインポート関数機能を使用することにより、既に所有しているC言語のデータ管理用の資産を無駄にすることなく再利用できるように工夫されています。
DeviceSQLは、このようにデータベースへのアクセス(データベース機能)に加え、手続き言語およびインポート関数機能を組み合わせることにより、SQL文の前後でフィルタリング、フォーマット変換等のデータ処理(データ処理機能)を自由に行うことができる組込みシステム向けに特化した次世代のデータ管理フレームワークソフトウェア (Device Data Management) 製品です。
![]()
また、DeviceSQLは、超高速、コンパクトなDBエンジンを内蔵し、組込みシステムで使用される様々なデータをその属性に応じてインメモリあるいはFlashROMやHDDなどの永続ストレージに最適に格納可能です。またDeviceSQL言語によりアプリケーションのコードとデータ管理のコードを完全に分離することができ、それぞれを並行開発でき、データの追加等の仕様変更にも柔軟に対応することが可能です。この製品はハードウェアやOSのプラットフォームを問わないことはもちろんのこと、お客様がすでに構築済みの膨大なソフトウェア資産を無駄にすることなく、最適で単純化されたシステムに移行することを可能にしています。

データ管理ソリューションは、大別すると、エンタープライズ系のOracle、Sybase、IBM DB2に代表される汎用RDBMS、汎用RDBMSの機能をシュリンクし、組込み用途向けにダウンサイズした組込みRDBMSがあります。DeviceSQLは、組込みシステムでの使用を考慮し、必要とされる機能を厳選し、システムリソースが制約された組込みシステムからハイエンドのシステムでも動作するように設計されています。
それぞれの機器の、どういった機能でDeviceSQLが利用されているか(利用することが可能か)をご紹介します。
| 携帯電話 |
|
|---|---|
| 携帯音楽プレーヤ |
|
ホームAV機器
|
|
車載機器
|
|
OA機器
|
|
アミューズメント
|
|
ネットワーク機器
|
|
| 計測機器 |
|
| FA機器 |
|
| 医療機器 |
|
DeviceSQLは、今までにない新しいテクノロジーにより、組込みシステムに対して、データ管理という側面から、パフォーマンスの向上、操作性の向上、さらにインテリジェンスを向上させ、組込みシステムに新たな付加価値を生み出すフレームワークを提供します。また同時に開発の生産性、品質の向上をもたらします。
DeviceSQLでは、DeviceSQL言語でデータロジックを記述し、コンパイラを用いてCコードに変換する方式を採用しています。これにより、他の組込みRDBMSが通常ランタイム環境で行うSQL文の解釈、構文チェック、エラーチェック等の処理をプリコンパイル時に行うことで、メモリフットプリントの極小化とパフォーマンスの高速化を実現しています。またDeviceSQLプログラム内でCの関数ならびにDeviceSQL関数をインポート/エクスポートすることができるため、きめ細かなデータ操作を行うことができ、アプリケーションとデータ操作のコードを完全に分離することが可能です。

プログラム制御とテーブル/データ操作の分離
他の組込みRDBMSは、インメモリあるいは、永続ストレージどちらか一方をサポートしているのに対して、DeviceSQLは、次の図に示すストリーム、インメモリ、メモリマップドストレージ、デバイスダイレクトストレージ(ページストレージ)の4つのデータ参照(格納)方式をサポートしています。

これにより、データ属性、量に応じて、これらのストレージから組み合わせて使用することが可能です。パフォーマンスが要求されるデータ、一時的なテーブルは、インメモリに、そして、数GBを超える大量データの場合には、HDD等の永続ストレージに格納するなど自由度が広がります。ストレージは、アプリケーションから抽象化されており、格納先を変えるのも、パラメタを変更することで簡単に行えます。
またDeviceSQLが実装されたリモート機器とTCP/IPネットワークを介したデータ共有もサポートしていますので、様々なシーンに応じて、幅広いデータアクセスが可能です。
DeviceSQLは、ローエンドからハイエンドまでの全製品ラインのサポートを設計目標に置き、16bit、32bit、64bitの主要なCPUをサポートし、OSも選びません。In-House OSや、OSが載っていないNone-OS環境もサポートしています。
今までリソースの制限で使用をあきらめていたローエンドの組込みシステム環境下でも、データベースを使用したデータ管理を行うことが可能になります。これにより、RFIDなどのようなプリミティブなデバイスから、携帯電話、デジタルTV、DVD/HDDレコーダのような主要な組込みシステム、さらに複合機や医療機器、POSといったクロック1GHzを超えるCPUが搭載されたハイエンドのシステムすべてにおいて共通プラットフォームとして使用することが可能です。

ローエンドからハイエンドまで幅広い組込みシステムに搭載可能
DeviceSQLでは、アプリケーションが任意のタイミングでデータベースファイルをダイナミックにOPEN/CLOSEすることが可能です。この機能により、アプリケーションで多言語サポートが必要な場合、言語毎にメッセージデータを異なったデータベースファイルとして格納して、アプリケーションの制御で、日本語メッセージから英語メッセージへの切り替え等が簡単に行うことが可能です。また組込みシステムで使用可能なメモリが制約されている場合に、一時的にデータベースファイルをCLOSEすることによって、他のアプリケーションにメモリリソースを開放することによりシステム全体でのメモリの有効な利用を可能にします。
次のような場合に有効です。

DeviceSQLは開発当初から、組込みRDBMSがテーブルに対して適用してきたデータ管理機能を、センサー出力、ネットワーク上のデータソース、関数の演算結果など、任意のデータソースに対しても適用できるように考慮して設計されました。これに対して、他の組込みRDBMSの演算子は、テーブル・データソースだけしか操作できません。
組込みRDBMSの場合、ストリームデータを取り扱う場合、入力されたすべてのストリームデータを一旦、テーブルに格納します。その後、テーブルを検索し、必要なデータを抽出し、アプリケーションに引き渡します。テーブルに一旦格納した後、検索をかけるため、リアルタイム性が失われるのと、データを格納するためのワークメモリが余分に必要になります。

一方DeviceSQLは、ストリームデータをサポートしているので、入力されたストリームデータをレコードとしてとらえ、直にSQLで検索をかけ、リアルタイムに必要なデータを抽出し、アプリケーションに引き渡すことが可能です。また流れているデータに対して、そのまま検索をかけることができるため、余分なワークメモリも必要とせず、より少ないメモリで動作することが可能です。
エンタープライズ系RDBMSとの連携DeviceSQLは、今までにない新しいテクノロジーにより、組込みシステムに対して、データ管理という側面から、パフォーマンスの向上、操作性の向上、さらにインテリジェンスを向上させ、組込みシステムに新たな付加価値を生み出すフレームワークを提供します。また同時に開発の生産性、品質の向上をもたらします。
DeviceSQLは、Framework(ライブラリ)として提供され、アプリケーションに組み込んで使用します。 DeviceSQL は、大別すると、開発ホスト上にインストールするDeviceSQL開発環境(SDK)とターゲット上で動作するDeviceSQLランタイムサービスから構成されています。またエンタープライズ系のRDBMSとDeviceSQLが搭載された機器間でのデータ同期を行うためのDeviceSQL DataSync がオプション製品として用意されています。


DeviceSQL開発環境(SDK)には、次のコンポーネントが含まれています。
SQL Probeは、高度なデータベース操作ツールで、コンソールより、インタラクティブにデータベースとやりとりが可能です。またCSVファイルとのインポート/エクスポート機能を備えています。
DeviceSQL ランタイムサービスは、 組込みシステム向けに最適化された、高性能のデータベースエンジンを含むサービスライブラリで、次に示す各種サービスから構成されています。
| DeviceSQL R4.2で提供されるサービス | 概要 | |
|---|---|---|
| 基本サービス | DeviceSQLメモリサービス | メモリ獲得/解放ルーチンの登録 |
| DeviceSQLデータベースハンドルサービス | 複数のDBインスタンスをサポートし、同一メモリ空間内でも複数の独立したDB環境を構築可能 | |
| DeviceSQLストレージサービス | Memory Mapped型サービスを提供 | |
| DeviceSQLページサービス | Paged Storage型サービスを提供 | |
| DeviceSQLインデックスサービス | 各種インデックスサービスを提供 | |
| DeviceSQL Callback On Eventサービス | DMLのキャンセル、エラーハンドリング等 | |
| DeviceSQL Dynamic C APIサービス | C言語のみ、あるいはDevcieSQL言語との組み合わせて動的なDBアプリケーションの構築が可能 | |
| DeviceSQL Interpreted SQL | SQL文字列を使用したプログラミングが可能 | |
| 拡張サービス* | DeviceSQL Shared Accessサービス | 複数プロセス間でPaged Storageを共有 |
| 通信サービス(Data Streams API) | BSD Socket I/Fを介して、リモートノードとのDB共有のためのフレームワークを提供 | |
| DeviceSQLスレッドセーフティサービス | テーブル操作の排他制御、アクセス制御を提供 |
* 拡張サービスは、OSプラットフォームの提供する機能に依存しており、実装できない場合があります。
次図は、DeviceSQLを使用したアプリケーションの開発フローをまとめたものです。

データロジックの記述は、テキストエディタを使用してプログラミングします。
DeviceSQLは、高機能でタイプ付けされた手続き型言語であるDeviceSQL言語によりSQLを拡張しています。この言語は業界標準であるOracle PL/SQLをベースにしており、コードはDeviceSQL CompilerによりANSI Cコードに変換されます。この言語で設計者はデータ管理機能を実現するためにアプリケーションに特化したAPIを自由に定義することができます。
DeviceSQLプログラムのサンプルを次に示します。
DeviceSQLでは、PL/SQL言語仕様に準拠し、SQL文の実行に加え、IF THEN ELSE等の条件分岐、 FOR、WHILEのループ等の手続き処理が可能になっています。またDeviceSQLでは、組込み用途向けに外部関数のインポート/エクスポート機能を追加して、より柔軟なプログラミングが可能になっています。
ユーザは、この手続き言語と問い合わせ言語であるSQLを組み合わせて、データ処理部とデータベース機能部をDeviceSQL言語でプログラミングします。これにより、複雑なデータ処理を含むデータロジックの記述を簡単なコマンドを組み合わせることによって実現することが可能になります。
ユーザアプリケーション(ビジネスロジックプログラム)からは、ユーザが定義したエクスポート関数(API)を呼び出して使用します。

| 開発言語 |
|
|---|---|
| ツール |
|
| 開発ホストOS |
|
| フットプリント |
|
|---|---|
| 実装方式 |
|
| データモデル |
|
| 最大データベースサイズ |
|
| 最大テーブル数/データベース |
|
| 最大レコード/テーブル |
|
| データフォーマット&エンコード |
|
| データタイプ | INT, INTEGER, CINT, CLONG, LONG, SHORT, CSHORT,DOUBLE, CDOUBLE, VARCHAR, VARCHAR2 ,NVARCHAR, TIMESTAMP, DATE, BINARY, BIT8, BIT16, BIT32, POINTER, PHONECHAR, RECORD, STREAM, TABLE |
| インデックスサービス |
|
| ストレージサポート |
|
| データ共有 |
|
| リモートアクセス | リモートのDeviceSQL DBファイルへのアクセス (*プラットフォームに依存) |
| RDBMSとのデータ同期 |
DeviceSQL DataSyncによりサポート
|
| サポートCPU | 16bits, 32bits, 64bits各種CPUに対応 |
| サポートOS | uITRON, Linux, Windows CE, Symbian, VxWorks, QNX, ThreadX, In house OS他、None-OSにも対応 |