3.1.2. Ultra Lightのアーキテクチャ
Ultra Lightはin-processで動作すると説明したが、その他の形態も可能だ。アプリケーションとUltra Lightデータベースとの関係を3通りみよう。
- アプリケーションとUltra Lightデータベースとが1:1対応
1つのアプリケーションが1つのUltra Lightデータベースを使用する。アプリケーションは同時に1つまたは複数のコネクション(マルチスレッドアプリケーション)を利用可能(
注4)。
- アプリケーションとUltra Lightデータベースとが1:N対応
1つのアプリケーションは、最大4つのUltra Lightデータベースを利用可能。
- アプリケーションとUltra LightデータベースとがN:1対応
Ultra Light Engineを利用すれば、1つのUltra Lightデータベースに対して複数のアプリケーションが接続できる。
注4
ただし、Ultra Light for M-Business Anywhere、Palm OS上のUltra Lightでは、言語・開発環境の制限によりマルチスレッドで利用できないものもある。
1つのアプリケーションが1つのUltra Lightデータベースを使用するのがUltra Lightの典型的な利用方法なので、本稿ではこの場合のみを扱い、Ultra Light Engineには言及しない。
アプリケーションはUltra Light SDKを通してUltra Lightデータベースのデータにアクセスする。このときのアーキテクチャは図3.2. 「Ultra Light のアーキテクチャ」のようになる。モジュールを一つ一つみていこう。
図3.2. Ultra Lightのアーキテクチャ
- アプリケーションとUltra Light SDK
Ultra Light SDKが提供するAPIを利用して、データベースを操作する。アプリケーションの開発環境(開発言語やプラットフォーム)ごとにSDKが提供されている。言語が異なっても開発手順は同じで、APIも似ている。
- ランタイムライブラリ
言語やプラットフォームごとに実行時に必要なライブラリ(DLL)が用意されている。なお、静的ライブラリが提供されていれば、そちらを利用してもよい。デプロイ時には、アプリケーションと、動的リンクするライブラリとをデプロイする。
- Ultra Light データベースファイル
データやインデックスなどデータベースに関する情報はすべてデータベースファイルに記録される。
- テンポラリファイル
アプリケーション実行時にテンポラリファイルが利用されることもある。
注意:スキーマファイル
Ultra Light 9までは、スキーマ情報はスキーマファイルに記録し、そこからデータベースファイルを生成していた。一方、Ultra Light 10からは、Ultra Lightデータベース内にスキーマ情報が記録され、それを参照するシステムテーブルも導入された。そのため、データベースの作成手順はSQL Anywhereと同様になり、Sybase Centralから操作できる。
注意:Ultra Lightにはトランザクションログファイルがない
Ultra Lightには、SQL Anywhereで言うところのトランザクションログファイルはない。そもそもないのだから、増え続けるトランザクションログをどのように切り捨てるか管理に悩む必要はない。Ultra Lightでは、データベースの各行にトランザクションに関する情報などを記録する1バイト分の領域があり、そこでステータスが管理される。そのため、トランザクションログファイルがなくても、Ultra Lightはシステム障害からのリカバリ機能や同期クライアントとしての機能をもつ。
3.1.3. Ultra Light SDKの種類
各SDKが対応する動作プラットフォームは、表の通りである。なお、開発プラットフォームとしては、Windows x86にのみ対応する。
表3.3. Ultra Lightの動作プラットフォームの概要。バージョンなどの詳細については、製品マニュアルおよびWebサイトを参照
Ultra Light SDK |
Windows XP (注5) |
Windows CE |
Symbian OS |
Palm |
Ultra Light Embedded SQL |
○ |
○ |
○ |
○ |
Ultra Light C++ component |
○ |
○ |
○ |
○ |
Ultra Light for AppForge |
○ |
○ |
○ |
○ |
Ultra Light for M-Business Anywhere |
○ |
○ |
|
○ |
Ultra Light .NET |
○ |
○ |
|
|
TCP/IPでの同期 |
○ |
○ |
○ |
○ |
HTTPでの同期 |
○ |
○ |
○ |
○ |
ActiveSyncでの同期 |
|
○ |
|
|
HotSyncでの同期 |
|
|
|
○ |
同期通信の暗号化 |
○ |
○ |
|
○ |
注5
Windows環境ではTablet PCでの使用を想定しているので、Windows XPのみのサポートとなる。
注意:静的インターフェイスと動的SQL
Ultra Light 9までのAPIは、大きく2種類に分けられた。静的インターフェイスと動的SQLである。Ultra Light 10からは動的SQLに一本化されたのだが、Ultra Lightの経緯を知るために簡単に説明する。
- 静的インターフェイス
SQL Anywhere Studio 9以前のバージョンの古い仕様。Ultra Lightで使用するテーブル定義やSQL文をあらかじめSQL Anywhereに登録しておく(リファレンスデータベースと呼ぶ)。Ultra Lightのツールを利用すると、リファレンスデータベースからコードが生成される。この生成されたコードを利用して、アプリケーションはデータベース操作を行う。このように、静的インターフェイスではアプリケーションのコーディングとSQL文のコーディングとが分断されてしまい、開発の手間が多い。
しかし、静的インターフェイスにも長所がある。あらかじめSQL文が定義されるため、コードを生成した時点でSQL文の構文解析は済んでおり、一般にアプリケーションは高速だ。さらに、生成されたコードは定義されたデータ操作に必要十分な機能だけを含むので、アプリケーションのサイズも小さくできる。このような特徴は、現在の感覚と比べてさらにリソースが制限されていた過去のデバイス上でUltra Lightを動作させるのに必要であった。
- 動的SQL
SQL Anywhere Studio 8.0.2から導入され9.0.1で強化された新しい仕様。アプリケーションのコード内にSQL文を記述でき、開発が容易になった。利用可能なSQL構文は静的インターフェイスよりも豊富である。この仕様はコンポーネントAPIとも呼ばれていた。
このようにさまざまな種類のSDKがあるので、利用したい言語や動作プラットフォームに合ったものを選択する。