本稿はデータベースソフトウェア「SQL Anywhere」およびデータベース全般に関する英語ドキュメントを翻訳する形で提供しています。図など、部分的に英語のままになっていますが、製品のSQL Anywhere自体は完全に日本語化されていますのでご安心ください。
今週の水曜日に私の手元に届いたACM SIGMOD Recordの最新号(2009年12月)の中で、Kyu-Young Whang他がユビキタスなデータベースという概念に合致する研究用プロトタイプや市販用のDBMS製品を調査(後述の参考資料1)しています。この論文の要旨は次のとおりです。
モバイルコンピューティング技術の進歩により、センサー、携帯電話機、携帯端末、カーナビ、そしてウルトラモバイルPC(UMPC)といった小型デバイスで利用できるデータベースシステムのニーズが高まった。我々は小型コンピューティングデバイス用にカスタマイズすることができるデータベースシステムを指して、ユビキタスデータベースマネジメントシステム(UDBMS)と呼ぶことにする。本論文ではまずUDBMSにおける必要条件を検討する。必要条件として認められた機能は、軽量型DBMS、選択的コンバージェンス、フラッシュに最適化されたストレージシステム、データ同期、非構造化データおよび半構造化データのサポート、複雑なデータベース操作、自己管理機能、そしてセキュリティであった。次に、現行のシステムと研究用プロトタイプを検討する。吟味されたUDBMSの機能は、フットプリント、標準的SQLのサポート、トランザクションマネジメント、コンカレンシーコントロール、リカバリ、インデクシング、そしてアクセスコントロールである。続いて、調査対象であるUDBMSがこれらの必須機能をどの程度サポートしているかを検討する。そして最後にUDBMSを研究開発していくうえでの問題点を挙げる。
これに先立つNori(参考資料2)とBernard(参考資料3)他の調査を基に、Whang他は以下の機能をUDBMSの必要条件として挙げています。それは軽量型のオペレーション、選択的コンバージェンス、最新のストレージモデル(特にフラッシュストレージ)のサポート、複雑なデータベース操作のサポート、非構造化データまたは半構造化データのサポート、同期機能、自己管理機能、そしてセキュリティです。そしてこれらの必要条件に関して、TinyDB、PicoDBMS、Oracle Berkeley DB、Oracle 10g Lite、IBM DB2 Everyplace、MS SQL Server for CE、そしてKAISTのOdysseus DBMSプロトタイプの能力を査定しています。
本記事では、これらの必要条件を分析し、それに対するSQL Anywhereサーバーおよび弊社のUltra Light DBMSにおけるサポート状況についておおまかに述べたいと思います。というのも、Gartner社も認めるとおり、前述の製品はどちらも調査の対象から外されていたからです。いささか驚いたことに、なんとSQLiteも調査対象の製品リストから外されていました。SQLiteはMozilla FirefoxやSkypeといったデスクトップツールに加え、iPhone、Android、Symbianの各種プラットフォーム(近日中にBlackberryも対応予定)と、いたるところで採用されているにもかかわらずです。
軽量型のオペレーション
UDBMSは低クロック周波数のCPU、小型メモリ、そして小型ストレージを利用するため、アプリケーションで必要とされる各種機能を、許容可能なパフォーマンスの範囲でサポートする必要がある。さらに、ユビキタスなデバイスはバッテリなどの限られた電源供給源しか持たないため、UDBMSは電力消費の少ない機能をサポートしていなければならない。したがって、これらのデバイスのパフォーマンスを考慮し、UDBMSのデザインと実装を可能な限りシンプルなものにすることが重要である。
実際のところ、この調査の対象となったDBMSはいずれも、エンタープライズクラスのDBMSソフトウェアの縮小版というよりむしろ、フットプリントの小さいデバイスで機能するように土台から新しく作り上げられたシステムです。SQL Anywhereが特徴的なのは、Windows Mobile上で稼動するSQL Anywhereサーバーと、サーバークラスのハードウェア上で稼動する64ビットのバージョンがほぼ同一のものであるという点です。Windows Mobileでは、SQL Anywhereサーバーのフットプリントは7.8MBで、MS SQL Server Compact Editionの公表サイズである2.5MBを大幅に上回ります。ただし、SQL Server CEの方は最小ダウンロードサイズが4.3MBのVisual C++ ランタイムライブラリも必要とします。調査の対象となった製品とは違い、SQL AnywhereはWindows Mobile上でもフル機能を提供し、ストアドプロシージャ、トリガ、OLAP機能、テーブル関数、自己修復型の統計情報マネージャ、全文検索、マテリアライズドビュー、XMLと空間データといった機能をサポートします。
それに対し、大幅な軽量化を実現したUltra Lightでは、機能性と引き替えにフットプリントが縮小されています。アプリケーションはUltra Lightに静的にリンクするか、DLLとして呼び出す、もしくはUltra Lightサーバーに接続できます。Ultra Lightバージョン12の静的ライブラリのサイズは4.2MBですが、リンクに必要なシンボル情報が含まれるため、サイズが(見かけ上)大きくなっています。Ultra Lightを使った簡素な(しかし完全な)アプリケーションは、670Kのサイズで作成できます。アプリケーションが要求する機能だけをリンクインするからです。一方、Ultra LightのDLLおよびサーバーはそれぞれ約800Kです。サーバーを使う場合は、クライアントアプリケーションが追加の140Kを必要とします。
市販のUDBMSは、サーバー型のDBMSの機能を簡略化することでフットプリントを縮小しているが、商業ベンダーはどのような技術を採用したか報告するに至っていない。
文末に記載した参考資料4~6では、SQL Anywhereにおいてランタイムメモリのフットプリントを減らすための技術の概要がとりまとめられています。最適化をleft-deep木で行うことにより、SQL Anywhereの分枝限定的な結合列挙アルゴリズム(これは参考資料5の中で言及されているものが再開発され拡張されたもの)において、最適化処理に必要な一時データ構造として多くの場合にスタックが利用可能となり、その結果、最適化に必要なメモリが大幅に削減されます。たとえば、Windows Mobile 5を搭載し、わずか3MBのバッファプールと、最適化に必要なメモリがたった1MBしかないDell Aximのハンドヘルドデバイスにおいても、SQL Anywhereは小規模なTPC-Hデータベースに対する100通りの結合クエリを最適化し実行できます(参考資料6)。
選択的コンバージェンス
ユビキタスな環境が進化するにつれ、これまでサーバーで使用されてきた高度なアプリケーションの多くもまた、ユビキタスなデバイスを必要とするようになるであろう。しかしながら、PDAやUMPCといった高性能のデバイスでさえ、いまだにサーバー型DBMSのように多くの機能を備えた本格的なDBMSを稼動するための処理能力を持ち合わせていない。したがって、本格的なDBMSのモジュールを選択的に整理して軽量型DBMSにする選択的コンバージェンスの技術は、この先きわめて重要になるだろう。近い将来、選択的コンバージェンスをサポートする新しいDBMSアーキテクチャの設計と実装に関する研究が盛んになると我々は予想している。
「選択的コンバージェンス」または「コンポーネント化」(参考資料2)とは単に、配備済みアプリケーションには必要不可欠なデータベースコンポーネントだけを含めるという発想です。したがって、これは研究課題というより、エンジニアリングの問題であると私は考えます。いずれにしても、選択的コンバージェンスにはメリットと同時にトレードオフもあります。第一に、アラカルトにコンポーネントを取捨選択できるセーバーアーキテクチャでは、テストの実施が一段と困難になります。第二に、サーバーコードとデータストアの間に依存関係があることが多いため、特にサーバーをアップグレードする際や新しいアプリケーションの条件などによって、コンポーネント化が格段に複雑になることがあります。
Windows Mobile用のSQL Anywhereでは、いくつかのメモリ消費量の多いクエリ実行演算子と、マルチデータベースアクセスのサポートを無効にしています。またこれまでに述べてきた意味でのコンポーネント化はサポートされていません。アプリケーションの実行に必要なUltra Lightのコード要素だけをリンクできるという点で、Ultra Lightの静的ライブラリはコンポーネント化の機能をもつと言えます。
フラッシュ用に最適化されたストレージシステム
フラッシュストレージの特徴を活かすキャッシュマネジメントとクエリ実行技術は、さらなる研究の対象として多くの実りをもたらす分野でしょう。現在のSQL Anywhereはフラッシュ用に最適化されたクエリ処理アルゴリズムの実装を搭載していませんが、DBAがキャリブレーション処理を介してサーバーのコストモデルをカスタマイズする機能は提供されています。そしてそのキャリブレートされたモデルはどのようなデータベースにも配備する(埋め込む)ことができます。
フラッシュ用に最適化されたストレージフォーマットの問題点は、他のOSファイルシステムとの非互換性です。SQL Anywhereは、サポートするすべてのプラットフォーム(Mac OS/X、Sun、AIX、Linux、Windows、およびWindows Mobileを含む)においてデータベースフォーマットが同一であり、これは業界でも類を見ません。データベースのイメージコピーはただのファイルコピーであり、コピーすれば同じデータベースをどのプラットフォームでも起動できます。そのためデータベースの配備はごく簡単に行うことができますし、配備先のデバイスで問題が発生した場合の問題特定も容易になります。
データ同期
データ同期に関する主な研究課題は、(1)多数のユビキタスなデバイスとサーバーとのデータ同期の効率的な維持、(2)ユビキタスなデバイスとサーバーとの間に同じデータの違うバージョンが存在する場合の競合解消、(3)データ同期中にシステム障害が起きた場合のリカバリと同期の再開、である。
私にはこれらのエンジニアリングの問題は既に解決済みであると思われます。ただし、多数のデバイスと言うときの「多数」を定量化することは重要です。2009年には、2010年度の米国国勢調査のために、140,000台を超えるWindows MobileのハンドヘルドデバイスにUltra Lightが配備されました。これらはiAnywhereのMobile LinkテクノロジーによってOracleの統合サーバーと同期され、そこでMobile Linkの競合解消メカニズムが利用されました。研究者の中でもとりわけDaudjeeとSalem(参考資料7~8)はデータベースの複製における正確性の問題について調査していますが、この調査では、実際の現場で通常使われるよりも高い隔離レベルが使われています。
非構造化データおよび半構造化データ
ユビキタスなデバイス(PDAとUMPCを含む)は非構造化データおよび半構造化データをサポートする本格的なDBMSを稼動するための処理能力を持ち合わせていないため、ユビキタスなデバイスの仕様と性能を考慮に入れた軽量型の非構造化・半構造化データ管理モジュールの開発研究がなされるべきである。たとえば、本格的なDBMSでは既存のクエリ処理法を数多く実装し、それらをコストベースの最適化フレームワークの下で組み合わせて最適なクエリ評価プランを選択するというやり方が可能である。しかしユビキタスなデバイスではメモリとストレージが小さいため、多数のクエリ処理法と最適化モジュールを搭載することは無理かもしれない。
ユビキタスなプラットフォームでも、十分なメモリが搭載されているものであれば(事実上すべてのWindows Mobileデバイスがこれに該当)、コストベースのクエリ最適化は間違いなく実現可能です。実際、SQL Anywhereがこのことを証明しています。我々の経験からすると、ハンドヘルドデバイス上の高度なビジネスアプリケーションでは、使用されるクエリやスキーマの複雑さは変わりません。クエリのジョイン度が20や30(またはそれ以上)は当たり前です。事実、SQL Anywhereの顧客の中には、ハンドヘルドデバイスのCPUの馬力不足を克服するためにマテリアライズドビューを利用している人もいます。複雑なクエリの場合には、これがパフォーマンスの問題を引き起こす可能性があります。
この論文で検証された他社の市販製品とは異なり、SQL Anywhereの最新リリースであるSQL Anywhere 12は、Windows Mobileハンドヘルドを含むすべてのプラットフォームでXML、全文検索、そして空間データをサポートしています。
高度なアプリケーションでの複雑な操作
高度なデータベースアプリケーションは、たとえばデータマイニングなど、SQLでは実装できない複雑な演算処理を必要とする。ユビキタスなデバイスが日進月歩で進化するにつれ、これまでサーバーで使用されてきた多くの高度なアプリケーションもまた、ユビキタスなデバイスを要求するようになるだろう。したがって、UDBMSは複雑な演算処理をサポートできなければならない。
残念なことに、Whang他はデータマイニング(またはその他の複雑な演算処理)のどのような機能を念頭に置いているのか、具体的に説明していません。しかし私は、この論文で検証されているUDBMSの中では、SQL Anywhereが飛び抜けて機能性に富んだシステムであるということを指摘したいと思います。SQL AnywhereはSQLに統合された全文検索をサポートし、またISO SQL/2008の規格にまとめられているとおり、WINDOW関数と拡張されたGROUP BY処理を含むOLAP機能もサポートしています。
自己管理
従来のDBMSとは異なり、UDBMSではデータベース管理者(DBA)が存在しない。したがって、UDBMSは自己管理機能をサポートしている必要がある。つまり、バックアップ、リストア、リカバリ、インデックス付け、チューニングといった作業を自動で行う必要がある。
自己管理はSQL Anywhereが提供する主要な技術の1つです。参考資料4~5と9でも述べられているとおり、SQL AnywhereはSQL Anywhereインデックスコンサルタント、ストアドプロシージャデバッガ、それにアプリケーションプロファイリングといったDBAツールに加え、キャッシュサイズの自動調整、自己管理・自己修復型の統計情報マネージャ、柔軟なクエリ実行計画、アクティブデータベース機能(イベント)、マルチプログラミングレベルのダイナミックな調整(Windows Mobileでは無効)などの機能を搭載しています。
セキュリティ
ユビキタスなデバイスは、銀行取引や保健医療に関するデータ等の個人情報を含む場合が多いため、UDBMSはアクセスコントロールポリシーを提供することでデータの安全を確保する必要がある。
SQL AnywhereとUltra Lightは両方ともデータベースファイルのRSA暗号化およびECC暗号化をサポートしています。クライアント・サーバー通信におけるRSA暗号化およびECC暗号化もサポートされており、Mobile Linkの統一データベースとの同期も厳重に暗号化できます。SQL Anywhereのアクセスコントロールポリシーは、Windows Mobile用も他のすべてのプラットフォーム用のものと同一です。
まとめ
この論文の中で概括されている「ユビキタスなDBMS」の機能群の中でも、特に自己管理、フットプリント、セキュリティ、複雑な処理、同期、そして非構造化・半構造化データのサポートといった領域における機能の多くは、SQL AnywhereとUltra Lightにビルトインされています。研究課題に関して言えば、私はフラッシュメモリを有効活用するクエリ処理のアルゴリズムとバッファプール管理の技術が短期的に最重要であると考えます。
参考資料
- Kyu-Young Whang, Il-Yeol Song, Taek-Yoon Kim, and Ki-Hoon Lee (December 2009).The Ubiquitous DBMS.ACM SIGMOD Record 38(4), pp. 14-22.
- Anil K. Nori (September 2007).Mobile and Embedded Databases.IEEE Data Engineering Bulletin 30(3), pp. 3-12.
- Guy Bernard, Jalel Ben-Othman, Luc Bouganim, et al.(June 2004).Mobile Databases: a Selection of Open Issues and Research Directions.ACM SIGMOD Record 33(2), pp. 78-83.
- Ivan T. Bowman, Peter Bumbulis, Dan Farrar, Anil K. Goel, Brendan Lucier, Anisoara Nica, G. N. Paulley, John Smirnios, Matthew Young-Lai (September 2007).SQL Anywhere:An Embeddable DBMS.IEEE Data Engineering Bulletin 30(3), pp. 29-36.
- Ivan T. Bowman and G.N.Paulley (February 2000).Join Enumeration in a Memory-Constrained Environment.In Proceedings, 16th International Conference on Data Engineering, pp. 645-654.
- I. T. Bowman et al.(April 2007).SQL Anywhere:A Holistic Approach to Database Self-Management.In Proceedings, 2nd International IEEE Workshop on Self-Managing Database Systems, Istanbul, Turkey.
- Khuzaima Daudjee and Kenneth Salem (September 2006).Lazy database replication with snapshot isolation.In Proceedings of the International Conference on Very Large Data Bases (VLDB'06), pages 715-726.
- Khuzaima Daudjee and Kenneth Salem (April 2004).Lazy database replication with ordering guarantees.In Proceedings of the IEEE International Conference on Data Engineering (ICDE'04), pages 424-435.
- Mohammed Abouzour, Kenneth Salem, and Peter Bumbulis (March 2010).Automatic Tuning of the Multiprogramming Level in Sybase SQL Anywhere.In Proceedings, 5th International Workshop on Self-Managing Database Systems, Long Beach, California.