本稿は、森脇氏が執筆した『使える! SQL Anywhere』(翔泳社刊)のP.2~15を抜粋し修正した記事に、森山氏が最新版の内容を一部加筆して再構成されています。
1.1 SQL Anywhereとは
iAnywhere Solutions, Inc.(以下、iAnywhere Solutions社)は、企業情報システムを「いつでも、どこでも」「オンラインでも、オフラインでも」利用できるように、そのインフラとなるソフトウェアをパッケージ製品として提供している。データベースや同期ツールを含む「SQL Anywhere」やPCおよび携帯端末のデバイス管理を可能にする「Afaria」、RFIDデータを管理する「RFID Anywhere」、自然言語によるGUIや検索を可能にする「Answers Anywhere」、IBM Lotus NotesやMicrosoft Exchange Serverとスマートフォン(iPhoneを含む)間とでメールなどの情報を同期する「Mobile Office」(旧製品名:OneBridbe)、GIS(地理情報システム)の構築を支援する「Maplet」などのパッケージ製品がある。また、製品の保守や製品にまつわるコンサルティングサービスも手がける。
本連載では、これらのうち主力製品である「SQL Anywhere」を解説する。まず、開発元のiAnywhere Solutions社と製品の簡単な歴史を紹介してから、製品概要とデータベースの役割について説明し、技術的詳細については次回以降で解説する。
1.1.1 歴史
SQL Anywhereの歴史は、Watcom SQLというデータベースから始まる。このデータベースを開発したのはWatcom International Corporation(以下、Watcom社)である。Watcom社は、1981年にカナダのWaterloo大学の研究グループが母体となって誕生した。そして1992年、MS-DOSとQNX上で動作する省リソースなデータベースとしてWatcom SQL 3をリリースした(※1)。
1994年、Watcom社はPowersoft社に買収され(※2)、続く1995年、Powersoft社はSybase社に買収された。Watcom SQLは、Sybase社の製品群に加えられ、「Sybase SQL Anywhere 5.0」と名前を変えて発売された。現在と同じ製品名称が用いられたのは「SQL Anywhere Studio 6」からである。1999年、Sybase社内に、Mobile and Embedded Computing(MEC)事業部が設立され、この事業部がSQL Anywhereの開発・サポートを担当するようになる。2000年、MEC事業部が分社化され、iAnywhere Solutions社が誕生した。
一方、日本では、サイベース株式会社のアイエニウェア・ソリューション事業部がSQL Anywhere Studioの販売を行っていたが、2003年にこの事業部は、iAnywhere Solutions社の子会社であるアイエニウェア・ソリューションズ株式会社(以下、アイエニウェア・ソリューションズ社)として独立し、現在に至る。
1992年 | Watcom SQL 3リリース |
1994年 | Watcom SQL 4 |
1995年 | Sybase SQL Anywhere 5 |
1996年 | Sybase SQL Anywhere 5.5 |
1998年 | SQL Anywhere Studio 6 |
2000年 | SQL Anywhere Studio 7 |
2001年 | SQL Anywhere Studio 8 |
2003年 | SQL Anywhere Studio 9 |
2004年 | SQL Anywhere Studio 9.0.1日本語版 |
2007年 | SQL Anywhere 10.0.1日本語版 |
2009年 | SQL Anywhere 11.0.1日本語版 |
1981年 | Watcom International Corporation設立 |
1994年 | Powersoft社がWatcom社を買収 |
1995年 | Sybase社とPowersoft社が合併 |
1999年 | Sybase社MEC事業部が設立 |
2000年 | iAnywhere Solutions, Inc.設立 |
2001年 | サイベース株式会社アイエニウェア・ソリューション事業部が設立 |
2003年 | アイエニウェア・ソリューションズ株式会社が設立 |
2004年 | XcelleNet社/Dejima社買収 |
2005年 | Extended Systems社買収 |
2006年 | 本社を赤坂に移転 |
2007年 | GISソフトウェアメーカの(株)コボプランを買収 |
1.1.2 SQL Anywhereのターゲット市場
SQL Anywhereがターゲットとする市場は3つある。
1. モバイルソリューション市場
現在の企業活動においては、オンライン/オフラインを問わず、「いつでも、どこでも」会社のデータにアクセスして活用できることが求められている。そのためには、企業の情報システムをモバイル化するためのツールが必要だ。
SQL Anywhereは、ノートパソコンやPDA(スマートフォンを含む)といったモバイル端末でも動作するデータベースをユーザに提供する。また、データ同期テクノロジもある。代表的な活用分野はCRM(Customer Relationship Management)やSFA(Sales Force Automation)だ。顧客情報や商品情報などをデータベース化し、ノートパソコンやPDAに入れて携帯することで、渉外活動中に企業データを利用できる。データが個々のデバイスに分散してしまうことになるが、同期テクノロジによりデータを中央に集約することが可能だ。
2. アプリケーションやハードウェアへの組み込み市場
パッケージソフトなどのアプリケーションでは、データの保存や検索といったデータベース機能が必要なことが多い。SQL Anywhereは、たとえば、企業会計パッケージやPOS端末などに組み込まれて利用されている。このような利用形態の場合、データベースが高性能なマシン上で使用されるとは限らないが、SQL Anywhereならばエンドユーザにデータベースの存在を意識させないほど省リソースで動作する。また、数多くの店舗や代理店に配備するシステムとして大量のローカルデータベースが必要とされるようなケースにも、SQL Anywhereは適している。SQL Anywhereは、省リソースかつ高機能で、アプリケーションに組み込みやすいからだ。
3. 中小企業・中小規模向け(SMB)市場
中小企業や大企業の支店などの中小規模向け(Small to Medium sized Businesses)市場で用いられるデータベースには、エンタープライズ級の高性能・高機能が求められる一方で、専任のIT担当者やデータベース管理者を設けられないため、できるだけ管理コストを抑えることも必要とされる。
SQL Anywhereは、管理の手間を不要とすることを設計コンセプトに掲げている。また、バージョンを重ねるにつれて中・大規模向けの機能が拡充され、エンタープライズレベルの用途にも対応している。クライアント/サーバシステムやWebアプリケーションのバックエンドにあるデータベースサーバを、PCサーバ上で運用することも多いだろう。そのような場合にも、SQL Anywhereの利用価値は高い。
1.1.3 コンポーネント
SQL Anywhereには、3つの代表的なコンポーネントとGUI管理ツールがある。
SQL Anywhere(データベース)
SQL Anywhereは、SQL Anywhereのメインのコンポーネントであるデータベースだ。Adaptive Server Anywhere(ASA)が現在の正式名称であるが、いずれSQL Anywhereに統一される予定となっている。このため、本連載ではSQL Anywhereという表記を用いることにする。
Ultra Light(データベース)/Ultra Light J(データベース)
Ultra Lightは、Windows CEやPalm OS、Embedded Linuxに対応する超軽量データベースである。また、SQL Anywhere 11より、Java MEとJava SEの各プラットフォームと、BlackBerryスマートフォン向けに設計されたUltra Light Jも提供された。
Mobile Link(同期テクノロジ)
Mobile Linkは、SQL AnywhereやUltra Light/Ultra Light Jと他のデータベースとを同期するためのコンポーネントである。なお、Mobile Link以外の同期テクノロジとしてSQL Remoteと呼ばれるコンポーネントもあるが、本連載では説明を割愛する。
GUI管理ツール
GUI管理ツールとして、データベースを管理するSybase CentralやSQLを実行するInteractive SQLなどがある。
Sybase Centralは、データベースを管理・操作する上で必要な操作をGUIや対話形式のウィザードで行うことが可能で複雑なコマンドを駆使する必要はない。
Interactive SQLはSQL文を実行および結果表示するツールであり、SELECT文の構築を支援するクエリ・エディタ、クエリの実行プランを確認するプラン・ビューワなどの機能が提供される。
1.2 データベースとは
そもそも、どうしてデータベースを使うのだろうか。ファイルにデータを書き込むプログラムを書くのは造作ないにもかかわらず、データ管理専用のソフトウェアをわざわざ用いる利点はなんだろうか。この点について改めて考えてみたい。
データベースと一口に言ってもさまざまな種類がある。SQL Anywhereでも採用しており、最もよく使われているのがRDBMS(Relational DataBase Management System)と呼ばれているものである。
RDBMSは、データを2次元の表(テーブル)のように管理する。テーブルはカラムと行からなり、カラムがデータ項目を意味し、1件1件のデータが行として記録される。一般にテーブルは多数あるので、必要な情報が複数のテーブルにまたがっていることもあるが、テーブル同士を結合するなどして、欲しい情報だけを選択できる。テーブルはエンティティと呼ばれることもあるが、本連載ではデータモデルといった概念は扱わないので、単純に「テーブル」と呼ぶことにする。同様に、タプルやレコードやローではなく「行」を使用し、フィールドや属性ではなく「カラム」で統一する。

データベースを用いる利点は、データとアプリケーションとを分離し、別々に扱えるようになることである。その結果、保守管理しやすくなり、開発生産性も向上する。では、もう少し詳細に見ていこう。
データの独立性
アプリケーションがデータベースを使わず、たとえば、カンマ区切りのCSVファイルにデータを1件ずつ記録し、その処理をアプリケーション自身が実装するような場合を考えてみよう。この場合、データ保存の物理的性質にアプリケーションが強く依存することになる。
システムの利用が長くなり、業務処理の拡大に伴ってデータ形式の変更が迫られたとする。記録すべきデータ項目を増やしたり、記録されているデータの型を数値から文字列に変更したり、カンマ区切りをタブ区切りに変更したりしなければならなくなった場合、データファイルだけでなく、アプリケーション上の処理も修正が必要になる。
あるいは、扱うデータ量が増えて、処理速度を向上させる機能を追加することもあるだろう。インデックス検索できるようにしたり、ファイルを分割して管理できるようにしたりするような場合も、相応のロジック変更や追加が必要になる。
アプリケーションとデータとの依存性が高いシステムは、一方の変更が他方に影響するため、保守性や拡張性に劣る。このような事態を避けるため、CSVファイルを扱う場合であっても、データ操作部分をライブラリ化したりして、アプリケーションとデータとの依存度を下げるように努めるだろう。
この「ライブラリ化されたデータ操作」を突き詰めたものがデータベースだ。データベースはデータの保存や管理に専念し、SQLという標準的なアクセス手段を提供する。その際の接続方法もODBCやJDBCといった標準化されたインターフェイスを使う。アプリケーションは、そのようなインターフェイスを利用して、データベースの物理的性質が隠蔽されたままデータにアクセスする。
データベースの導入により、アプリケーションとデータとの独立性が高まり、それぞれを個別に管理することが可能となる。検索速度を向上させようとデータベースファイルやインデックスを追加しても、アプリケーションのコードを変更する必要はない。管理対象となる情報を広げようとテーブルやカラムを増やしても、アプリケーション側の変更は、データベースを使用しない場合よりもずっと少ないだろう。逆に、アプリケーション側でロジックを変更しても、データベースに手を加えることはない。さらに、データベースに接続するアプリケーションの種類が増えても、「標準的な接続方法」に対応してさえいれば、データベースはそのままでよいのである。
ポータビリティ
データベースの物理的詳細についてアプリケーションは関知せず、アプリケーションとデータベースは独立した関係になるため、別のOSのマシンにデータベースを移行することも可能となる。ファイル構造や文字コードといったOSごとの差異がデータベースサーバで吸収されるからだ。特に、SQL Anywhereではデータベースファイルが1つで済み、しかもファイルフォーマットがOSに依存しないため、データベースの移行は容易である。
データベースの中央管理
複数システムが利用するデータであっても、1つのデータベースに集中させることができるので、バックアップやチューニングといった維持管理を一ヶ所で行うことができ、都合がよい。
逆に言うと、相当量のデータ処理を一ヶ所で行うことになるため、管理責任も増す。規模が大きくなれば、データベース管理者(Database Administrator:DBA)を割り当て、保守にあたらせる必要がある。さらに大規模であれば、DBAチームを編成しなければならないだろう。DBAは、貴重なデータが障害時に失われないよう気を配るのはもちろんであるが、多数のアクセスをこなせるようにデータベースやクエリをチューニングしたりする。このような運用管理だけでなく、データ管理の視点からシステム設計の手助けをする場合もある。
SQL Anywhereは、保守の手間をなるべく省くように設計されたデータベースである。ファイルサイズの拡張や統計情報の更新は自動でなされ、コストベースのオプティマイザによりクエリの実行プランも適宜見直される。また、インデックスの作成を支援するインデックスコンサルタントという機能もある。
信頼性
データベースに求められる信頼性はさまざまな面がある。たとえば、(1)意図しないデータが記録されない、(2)データベースがいつでも利用できる、(3) 障害が起きても修復可能、などが挙げられる。
データベースでは、データの記録はトランザクション単位で行われる。トランザクションとは、データベースを利用する側にとって、これ以上分割することのできない処理をまとめたものだ。トランザクションの実行結果は、「成功した」「失敗して元に戻った(ロールバックされた)」の2つしかないため(トランザクションの原子性)、トランザクションの途中でたとえ障害が起きたとしても、ユーザが意図しない中途半端なデータの状態にデータベースが陥ることはない。
保存されるデータの値に制約をつけることも可能だ。たとえば、整数型で1から100までの値だけ許可するように条件を設定できる。複数のアプリケーションがデータベース上の同一のデータを利用するときなどはアプリケーション間の整合性を保つのが難しくなるが、データベース上で制限を設ければ、意図しないデータの入力を未然に防げる。
データベースでは、データを複数のファイルに記録して冗長にすることで、耐障害性を高めている。トランザクションログの利用がこれにあたる。また、1つのデータベースに対して複数のファイルを割り当て、記録を分散することもある。ファイルを別々のディスクに置くことは、ディスク障害の影響を減らし、パフォーマンスの向上にもつながる。
たいていのデータベース製品にはバックアップツールが付属しており、データベースが稼働中のままバックアップを行うことができる。データベースサーバに障害が起こったときは、リカバリツールなどを用いて、バックアップから復旧する。
また、SQL Anywhereの新しい機能として、データベース・ミラーリング機能を利用することができる。データベース・ミラーリングは、常時2台のサーバ「プライマリ・サーバ(主)」と「ミラー・サーバ(副)」が稼動していている状態で、プライマリ・サーバがハード障害などで利用できなくなった場合に、自動的にミラー・サーバに切り替わることで可用性を高める。
ミラー・サーバとして動作するサーバも読み取り専用として、普段は利用できるので、帳票発行や分析用途などにも使えるので無駄がない。
セキュリティ
データベースにはセキュリティ機能も必要だ。たとえば、データベースファイルの暗号化やデータ通信の暗号化により、第三者からの盗聴を防ぐ。データベースにアクセスするユーザを設定して、データアクセスに対して認証・承認をかけることもできる。データベース内で可能な処理の権限をユーザごとに指定するのである。また、誰がどのような操作をしたのか、監査履歴を残すことも可能だ。
パフォーマンス
複雑なSQL処理であっても、データベースサーバはインデックスなどを用いて効率的にデータを取得するので、処理の遅いものがあれば、インデックスの追加などでチューニングできる。もちろん、このようなチューニングはアプリケーションの変更を必要としない。また、一度アクセスしたデータは、データベースサーバのメモリ上にキャッシュされるので、頻繁に参照されるデータはメモリ上に残りやすくなり、システム全体のパフォーマンスが向上する。
チューニングを手助けしてくれるツールを利用することもできる。たとえば、SQL Anywhereには、「Index Consultant(インデックスコンサルタント)」というツールがある。どのカラムにどのようなインデックスを作成すべきか判断するのは元来難しいものだが、このツールはその作業を支援・自動化してくれる。
複数のユーザがデータベースにアクセスする場合は、データの共有と同時アクセスという相反する課題を解決する必要がある。データベースは、排他制御の仕組みなどを用いて、論理的な整合性を保ちつつ、並列処理して効率を上げている。SQL Anywhereは、行ロックを用いて、並列処理の整合性を実現している。
開発生産性
これまで見てきたような機能を自分で実装しようとしたら、大変な工数になるはずであり、そこにデータベース製品を利用する価値がある。それだけでなく、データアクセスが標準化されるので、サードパーティ製のツールが利用しやすくなる。さらに、データベースの知識は製品に依存しない部分も多いので、知識や実装の共有につながるといった効果もある。このように、データベースの利用により開発生産性が向上する。
1.3 SQL Anywhereの主な特徴
前節で挙げたようなRDBMSの機能が使いやすくなっていることが、SQL Anywhereの特徴である。
容易なインストール・運用管理
インストールはウィザード形式になっていて、[次へ]ボタンをクリックしていけば完了する。そして、インストールした初期設定のままで高パフォーマンスが発揮・持続されるように設計されているので(優れた自己チューニング機能など)、運用管理コストが低く、専任のデータベース管理者をおく必要はない。データベースファイルサイズは自動拡張し、キャッシュサイズも自動増減する。
アプリケーションに組み込む際は、サイレントインストールやEXE・DLLファイル単位での配備が可能なため、組み込みやすい。さらに、データベースに対するオプションは設定ファイルではなく、起動コマンドやデータベース内に保存されるオプションで指定するため、インストール後の管理も容易だ。また、データベースサーバはサービスとして登録することもできるし、クライアントからの接続時にデータベースを自動起動することもできる。
なお、軽量データベースであるUltra Lightは、アプリケーションのコードと一体化するため、さらに組み込みやすくなっている。
エンタープライズレベルのフル機能RDBMS
SQL Anywhereは、およそRDBMSに求められるであろう機能をすべて備えており、正統派のRDBMSと言える。主な機能には、トランザクション処理、リカバリ処理、オンラインバックアップ、参照整合性のサポート、ストアドプロシージャ、トリガ、行ロック、スケジュールとイベントなどがある。
GUIによる管理ツール
Sybase CentralやInteractive SQLなど、GUIによる管理ツールが標準で搭載されている。管理コマンドも充実しているので、管理処理をバッチ化することも可能だ。
省リソース
必要最小メモリ量は8MBである。さらに、1接続あたり4KB(Linux版では8KB)必要となる。
スタンドアロンにもネットワークサーバにも利用可能
パッケージソフトに組み込まれたデータベースとしてスタンドアロンで利用したり、クライアント/サーバシステムやWebシステムのバックエンドでネットワークデータベースとして利用することもできる。
スタンドアロンで利用する場合、アプリケーションの要求に応じて自動的にデータベースの起動や停止が可能だ。この機能は、SQL Anywhereをアプリケーションへ組み込んだときに威力を発揮する。
高性能
省リソースで低い管理コストにもかかわらず、高性能である。マルチCPUに対応し、コストベースの先進的なクエリオプティマイザを持つ。また、パフォーマンスをモニタリングしたりチューニングしたりするツールも備える。
標準的なインターフェイス
業界標準的なプログラミングインターフェイスに対応している。ADO.NET、ODBC、OLE DB、JDBC(Type 2/3/4)、Perl DBD、PHPに対応し、embedded SQLやSybase Open Clientのインターフェイスもある。
クロスプラットフォーム
WindowsやLinux、Mac OS Xなど、多数のOSに対応している。また、SQL Anywhereが使用するデータベースファイルはどのOS版のものでも共通なので、データベースファイルをコピーするだけでデータを移行できる。
先進的で柔軟な同期テクノロジ
分散したデータベースを同期するSQL RemoteやMobile Linkがある。特に、Mobile Linkは、他社のデータベース製品との同期や競合解決などを可能にするなど、機能が豊富だ。
1.4 対応プラットフォーム
SQL Anywhere 11.0.1が対応しているプラットフォームを以下に挙げる。
- Windows 2000/XP/XP Embedded/Tablet PC/Vista
- Windows Server 2003/2008(x86, x64)
- Windows Mobile 5 for Pocket PC/Smartphone(Windows CE 5.0)
- Windows Mobile 6 Classic/Professional/Standard(Windows CE 5.x)
- Linux 32bit(x86)/64bit(AMD64、EM64T、IA64)
- Mac OS X
- Novell NetWare
- Solaris/SPARC
- HP-UX、IBM AIX
ただし、日本で発売されているのは、2009年9月現在、Windows版(Windows Mobileを含む)とLinux/Solaris版だけである。対応プラットフォームに関する最新情報は、アイエニウェア・ソリューションズ社のWebサイトに掲載されている。
次回
次回は、SQL Anywhereのインストール方法やGUIツールの使い方について紹介する。なお、社内評価や開発を目的としたSQL Anywhereの利用に対しては、無償のDeveloper Editionを利用できる。ぜひ一度、実際に試していただきたい。