特集 VBプログラマのためのRDBMS再入門
データベースシステムをめぐるベンダーの状況
今 Sybaseが面白い!
秋月 巌 AKIZUKI, Iwao
スケールにフィットしたRDBMSを
データベースといえば,Microsoft SQL ServerやOracle7や8が最近の定番である.多くの雑誌記事などでも,この2社の製品ばかりが扱われる.確かに,これらは優れたプロダクトであるが,すべてのDBシステムの運用環境にフィットするわけではない.特に部門サーバーや中小企業ユーズにおいては,システムスケールが合致しないケースが多い.Sybaseが提供するSQLデータベースサーバーであるSQL Anywhereは,そういった専任の管理者が確保できない利用状況での運用に適している.
データベースシステムは,データベースサーバーのみによって成立しているわけではない.ミドルウェア,ネットワーク,クライアントツールといった複合的な要因の上に立脚している.また,開発者の都合だけでなく,管理者との協調的な作業によって運営されるシステムなのである.Sybaseを筆頭にPowersoft,Watcom,Visual ComponentといったSybaseファミリーの企業は,データベースエンジンを中心にビジネスソリューションを目的とする興味深いプロダクトを用意している.本稿では,それらの中から,Visual Basicデベロッパーに関係の深いPC関連の製品を紹介する.
Sybaseファミリのデータベースシステム開発ツール
この一年の開発ツール
開発者にとって,去年の後半から今年の前半にかけて,最も興味深い活動を行なってきたのは,間違いなくMicrosoftである.ActiveX構想を立上げ,クライアントからサーバーまでのすべての環境をインターネットにシフトした.そのプロセスの中で,Internet Explorer3.0や,Visual Basic5.0,Internet Information Server3.0,Active Server Pagesが誕生したのである.しかも,SymantecのVisual Cafeが登場するまで,一時期はJava開発ツールベンダーしてもトップを走ったのである.
コンパイラベンダーによるプロダクト
もちろん,MicrosoftだけではなくJavaを巡る他社の活動も活発だった.SymantecはJava開発ツールの先鞭であるSymantec Cafeを発表以来,Microsoft Visual J++に追いつかれた一時を除き,トップベンダーの座を独走した.しかし,今後数ヶ月の間にBorland,Powersoft,IBM,Oracleが相次いで発表するであろうJava開発ツールに対してアドバンテージを維持し続けるのは容易ではないはずだ.
Microsoft,Borland,Watcom,Symantec,IBMといったコンパイラベンダーが提供する製品は,概してクォリティが高い.OSやマシン寄りの低水準プログラミングのノウハウが,最終的にはプロダクトの品質を決めるからだろう.
PowersoftとWatcom
Powersoftが最近発表した開発ツール,Power++やPower Jにしても,その背後にWatcomの姿がなかったとしたら,興味はずっと少ないものになるに違いない.PowersoftはPower Builderの開発メーカーとして有名だが,現在はWatcomとともにSybaseに買収され,Sybaseファミリーの一員なのである.Power Builderはクライアント/サーバー(以後C/S)システム開発ツールとして,米国ではVisual Basicをおさえトップ・シェアを誇っているとも聞く.実際,Power Builderのコアテクノロジーの結晶であるデータウィンドウは,データベース開発環境としては最高の能力を持っている.私はCenturaやInformixの開発ツール,それにOracle Developer/2000について十分な知識を持っていないので,データウィンドウがNo.1の実力を持っているかどうかを明言できないのだが,Visual Basicはもちろん,あのDelphiと比較してすら,データベースシステムの開発に関してはアドバンテージを持っていることは確かである.
データウィンドウとC++
しかし,データウィンドウがどんなに優れているにしても,その操作環境であるPower Builderには多くの問題があった.絶望的なバグの多さは,私が使ったver4.0に限られたことだとしても,Power Scriptと呼ばれる独自のスクリプト言語は,その言語仕様の問題以前に汎用性という意味で普及には限界があった.そこで,Power++が登場することになる.Watcomのコンパイラを内蔵し,データウィンドウをサポートしたC++のRAD開発ツールである.
図1:Power++の開発環境 教育コストが致命的に高い日本のコンピュータ業界で,Windowsの開発ツールとしてVisual Basic,C++,Java以外の言語を選択することは事実上難しい.もちろん,言語仕様としてもっとも優れているのは,最後発のJavaであろうが,Javaは環境の安定性やコンポーネントの充実度からいっても実用にはまだ遠い.最近,連続して発売されたC++のRADツールであるBorland C++ BuilderとPower++が,どこまで,日本では圧倒的な強さをもつVisual Basicに迫れるかがポイントになる.もちろん,このあたりの動きを,貪欲なMicrosoftが黙ってみているはずもないだろうし,Visual C++をRADツール化するViewSoftのPower Charger for MFCという製品も発売されている(日本での発売元は(株)ゲッツブラザーズ).
データウィンドウActiveXコントロール
Powersoft Power++に付属しているデータウィンドウは,ActiveXコントロールインターフェイスによってPower++に提供されている.であれば,Visual Basicでも使えるのではないかと考えるのは当然である.もちろん,私は試してみた.確かにVisual Basicのフォームにコントロールを貼り付けるところまではできるのだが,それ以上のことをしようとすると,ライセンス違反のメッセージが現われてしまう.Power++以外のツールでは使えないようになっているのだ.もし,この制限が取り除かれたら,データベースアプリケーションを開発するすべてのVisual Basic開発者が,データウィンドウのためだけにPower++を買わなければいけないはめになっただろう.
図2:データウィンドウのアプリケーションサンプル もちろん,データウィンドウのためにPower++を使ってしまおうというのも健全な発想である.データベースプログラミングをするだけならば,言語的におぼえることはそれほど多くない.大体,現在はコンポーネントが提供するメソッドやプロパティの学習コストの方が言語のそれよりもずっと大きいのである.
C/S開発ツールとしてのVisual Basicの限界
すでに理解されてきているように,Visual BasicだけでまともなC/Sデータベースシステムを開発することは無理である.Visual Basic5.0で,ついにRDOがキャッシュアップデートをサポートし,付属のDBグリッドが非連結できるようになったが,Visual Basicとは独自のデータアクセス機能を持つクリスタルレポートは,C/Sシステムでの最適化は不可能だし,これを使わないと,プリント機能に関してはPrinterオブジェクトだけが頼りとなる.つまり,サードパーティ製のグリッドコントロールと帳票印刷コンポーネントなしでは,ほとんどお手上げ状態なのである.
Visual Component dbComplete
図3:Data CompleteのOutlin Gridを使った
アプリケーションサンプル注目に値するのが,本稿後半で紹介するVisual Component社のdbCompleteである.コントロールとしてはリモートデータコントロールとデータ表示コントロールがセットになっているような製品である.私は本誌10月号でエクスプローラ風のインターフェイスを持つデータベースプログラミングを取り上げ,Visual Basic標準のコンポーネントの使いにくさを指摘した.dbCompleteは,エクスプローラスタイルではないが,グリッド構造だけでなくツリー構造のデータビューを実現する.
また,データアクセスのメカニズムも非常に優れている.内部的にどの程度最適化してくれるのかは疑問の残る余地があるにしても,このインターフェイスはデータベースアプリケーションに革命をもたらすかもしれない.現時点では英語版しかリリースされておらず,このバージョンは日本語をパスしない.
このコントロールはUSでは$330程度で販売されている.個人的な意見としては,データベースプログラミングに使うのにVisual BasicのEnterpriseエディションを買うよりも,LearningエディションとdbCompleteを買った方が有効だと思う.データベースアプリケーションにとってネイティブコンパイラは必須の機能ではない.
ところで,このコントロールを発売しているVisual Component社は,Fomula1だとかFirst Impressionといったコンポーネントの開発元として知られているが,この会社はPowersoftに買収され,現在ではSybase一家の一員なのである.開発者にとって,Sybaseは興味深い買収政策を展開しているようにみえる.
Sybase SQL Anywhere
Watcom SQLとSybase SQL Anywhere
図4:Sybase SQL Anywhereのプログラムグループ 以前,Watcom SQLと呼ばれる製品が,いくつかの開発ツールにバンドルされていた.このRDBMS製品はWindows3.1で動作するSQLデータベースサーバーとして,開発者に利用されていた.その後継にあたるのがSybase SQL Anywhereである.SQL Anywhereは32ビットアプリケーションとしてWindows 95に移植され,Windows NT上でも動作する.この製品はPowersoftの開発ツールだけでなく,Symantecや日立製作所のプロダクトにもバンドルされているので,ご存知の方も多いだろう.しかし,バンドルで販売実績を増やしてきたため,まるで,オマケのような印象を市場に与えてしまったのが,SQL Anywhereの悲劇であった.
フルスベックのデータベースサーバー
この製品は開発用のサーバーとして優れているばかりでなく,単体のデータベースサーバーとしても最高レベルのスペックを持っている.もし,Sybaseが,他にWindows NT用のデータベースサーバーを持たずに,それを喧伝しているのならば,その話の信頼性は高いものではないだろう.しかし,SybaseにはUNIXから移植したWindows NT用のデータベースサーバーがあるのにも関わらず,PCサーバーとして,この製品を前面に押し出しているのである.
Microsoft SQL ServerとSybase SQL Server
ご存知のように,MicrosoftのSQL Server 4.2はSybaseのSQL ServerをWindows NT環境に移植した製品である.Microsoft SQL Server 6.0以降はMicrosoftが独自にインプリメントした製品だが,開発言語であるTransact SQLや,ネイティブの接続機構であるDBLibralyはSybase時代から,多くのものを継承している.
つまり,Microsoft SQL ServerとSybase SQL Serverは里子に出された兄弟同士なのである.そして,SQL Anywhereは,本家Sybaseの養子縁組した末っ子に相当する.ということは,SQL AnywhereはMicrosoftのSQL Serverとは異母兄弟だということになる.
Visual Basic開発者からみたSQL Anywhere
実際,Sybaseに買収されたSQL Anywhereは,ネイティブのSQL言語であるWatcom SQL言語に加え,Transact SQLが搭載された.SybaseやMicrosoft SQL Serverとほぼ共通の言語によって,ストアドプロシージャが記述できるのである.また,ODBCによる接続を,ネイティブの接続であるEmbedded SQLと同等に重要視していることもVisual Basicプログラマから見た場合の大きなメリットになる.Oracleの最新のODBCドライバは性能がいいらしいが,従来,ODBCはMicrosoftのデータベース以外では,性能が発揮されないというのが通説だったのである.
つまり,Visual Basicデベロッパーからみて,SQL Anywhereは,SQL Serverを使うような場面に,そのまま,配置できるデータベースサーバーなのである.データベースへのアクセスにはRDOを使えばいいし,ストアドプロシージャはTransact SQLで記述すればいい.
メンテナンスコストの低さが特徴
SQL Anywhereは低価格で軽量だというのが,Sybaseのセールストークである.しかし,低価格と呼ぶのには語弊がある.確かにサーバー自身の価格はMicrosoft SQL Serverの1/3であるが,クライアントライセンスはあまり違いがない.10クライアントほどそろえると,クライアントライセンスが秋葉原特価で買えるMicrosoft SQL Serverと価格の差が,あまりなくなってしまう.もっとも,現在,サイトライセンスやクライアントライセンスがパックになっている製品を用意しているところだというので,それに期待しよう.
また,軽量だというのも,現在のようにメモリが低価格で提供されている現在,圧倒的なメリットにはなり得ない.軽量な特徴を生かして,ノートブックパソコンにサーバーをインストールし,レプリケーションしながらモバイルコンピューティングなどという場合には便利だが(SQL Anywhereにはリモートレプリケーションという優れた機能が用意されている),1サーバーの価格を考えれば,すべてのマシンにサーバーをインストールするのは現実的ではない.それに,Microsoft SQL Serverのver7は随分,軽量だという話である.
では,SQL Anywhereの最大の利点は何なのだろうか.それは,疑いもなくメインテナンスフリーな点である.SQL Anywhereは,データベースデバイスの管理を自分で行ない,保守も必ずしても専門家の手を煩わせない.Microsoft Accessのメインテナンスコストで,SQL Serverのようなフォールトレラント性能が提供されるといえば,わかりやすいだろうか.
Windows PCサーバーにベストフィット
使ったことのある方はわかると思うが,Microsoft SQL Serverはいい加減なメインテナンスで運用していると,すぐに動かなくなる.しかも,バックアップをとるにしても,専門の知識が要求される.また,付属のマニュアルは難解で,Accessからアップサイジングしたユーザーには理解できるようなものではない.
現実的な話として,専門のシステム管理部門がない規模の企業においてSQL Serverの導入は難しいだろう.しかし,AccessやParadoxといったファイル共有型のデータベースでは,そのフォールトレラント能力に限界がある.今後,加速度的にふえるであろう,そのような環境にSQL Anywhereはフィットするのである.そして,Sybase Centralと呼ばれる使いやすい(プロっぽくない)ユーティリティによって,ほとんどの管理が行なえる.管理コストが軽減する分だけ,確実に運用コストは安くあがる.まさに,Windows NT ServerやWorkstationに適したサイズのデータベースサーバーなのである.
Using SQL Anywhere
SQL Anywhereは体験版がWebサイトからダウンロードできるので,ここではSybase Centralを使って,簡単にデータベースの作成や管理ができるさまを図で説明する.SQL Anywhereの操作のほとんどはSybase Centralを使用して行なう.Sybase Centralを起動するには,インストール時に作成されたプログラムグループから,アイコンをクリックして行なう.
新規データベースの作成(図5)
RDBMSを操作するには,まずデータベースを作成する必要がある.SQL Anywhereでは,データベースは拡張子がDBのひとつのファイルに作成される.トランザクションログは当然,別のファイルに作成されるが,このデータベースファイルにはデータベースの情報のすべてが格納されるので,このファイルを物理的にバックアップすることによってもバックアップが可能である.標準のバックアップはSybase Centralを操作することで実現するが,ファイルベースででも簡単に管理できるところが,扱いやすさにつながっている.
図5-1:Sybase Centralから「データベースの作成」を選択し,ダブルクリックする
図5-2:データベースファイルを作成するパスとファイル名を入力する
図5-3:ログファイルを使用するかどうかを指定し,使用する場合は名前を指定する.デフォルトではデータベースファイル名と同じ名称で,拡張子がLOGに変更されたものが指定される
図5-4:ミラーログを作成するかどうかを指定する.ミラーログを別のドライブに保存することで耐障害性をたかめることができる
図5-5:文字列の扱いなど,データベースが扱うデータの属性を指定する
図5-6:データベースオーナーのユーザー名と,ページサイズを決定する
図5-7:ソート順の文字セットを指定する.デフォルトではSJISが指定される
図5-8:完了画面から「完了」ボタンをクリックすると,データベースの作成を開始する
図5-9:データベースの作成を案内する画面が停止すると,データベースの作成が終了する
データベースを作成しただけでは,データベースファイルはスタティックなファイルに過ぎない.データベースとして利用するためには,サーバーアプリケーションによってファイルをオープンしなければならない.そのための操作が接続である.これによってはじめてデータベースはサービスを開始する.
作成したデータベ―スへの接続(図6)
図6-1:作成したデータベースを起動するには,「ツール」メニューの接続を指定する
図6-2:表示されるログオン画面の「ユーザーID」に[dba],「パスワード」に[sql]と入力し,先ほど作成したデータベースファイルを指定する.dbaはデータベース管理者を現している.sqlはデフオルトで用意されているパスワードである
図6-3:接続に成功すると,図のようにデータベースの情報を表示することができる.まだできたばかりのデータベースのため,エレメントは登録されていない
テーブルはデータベースの最も重要な要素である.テーブルに格納されたデータを扱うことで,データベースの機能のほとんどが実現される.SQL Anywhereのテーブル作成は簡単である.もちろん,Create文を記述する必要はない.表にフィールド名とデータ型を設定していけば,テーブルが生成される.
テーブルの新規作成(図7)
図7-1:左のノードからテーブルをポイントし,「テーブルの追加」をダブルクリックする
図7-2:テーブル作成フォームが開くので,フィールド名とデータ型を指定する.テーブル名を入力し,作業を終了すると新しいテーブルが作成される
図7-3:Sybase Centralに新しく作成したテーブルの情報が表示される
データベースとテーブルを作成しても,データベースにアクセスする方法が提供されなければデータの参照や操作は行なえない.SQL AnywhereにはEmbedded SQLと呼ばれるネイティブのプログラミングインターフェイスが提供されているが,ODBCによる接続もそれと同様に重要視されている.Visual Basicプログラマなら,迷わずODBCを選択するべきである.
ODBCの設定(図8)
ODBC設定を行なうためのODBCアドミニストレータは,コントロールパネルより起動できる.
図8-1:ODBCアドミニストレータの「追加」ボタンをクリックする
図8-2:ドライバの一覧からSybase SQL Anywhereを選択する
図8-3:ODBC接続情報入力画面では,データソース名に任意の名前を指定し,ユーザー情報を入力する.「データベースの起動」項目では,先ほど作成したデータベースファイルを指定する
図8-4:新しく設定したDSNが登録されていることを確認する
データ編集や参照は,Microsoft AccessやExcel,Visual BasicなどODBCデータベースにアクセスする機能のあるものならば,どれでも接続できる.もちろん,Visual Basicのデータフォームからでも参照することができる.Accessを使った場合のODBC接続の方法は,今号の「Accessビジネスソリューション(152頁)」で説明しているので,参照していただきたい.
ODBCデータベースへのアクセス
SQL AnywhereはVisual BasicやVBAプログラムからアクセスするのに適したスケールの製品だということができる.もちろん,大量のデータを取り扱うこともできるが,その場合,RDOの使用は必須だということができるだろう.
図9:Microsoft Accessでデータベースの内容を編集
ODBCは汎用的な規格だが,大抵のRDBMS製品は専用のプログラミングインターフェイスを用意している.SQL AnywhereにおいてはEmbedded SQLがそれにあたる.これにより,Windows,DOS,OS/2,WindowsNTでの利用が可能になる.
ODBC以外のデータアクセス
モジュールはC言語のヘッダファイル,ライブラリファイルとして提供され,各プラットフォームのコンパイラによってビルドする.
また,DDEを使ったデータ通信によって,データベースとの通信をはかることができる.この機構は,当然Windows用に開発されたものだが,選択肢のなかった時代と違い,ODBCを経由してアクセスする仕組みが充実してきた今日において使用する意味はあまりないだろう.
また,WSQL HLIインターフェイスと呼ばれるインターフェイスを用いてプログラミングすることもできる.このインターフェイスはDLLで提供される高水準の関数で,Visual Basicからも利用できる.性能がよくない代わりにODBCよりも簡単に扱えることが特徴だが,RDOの登場によってODBCプログラミングも,以前ほど難しいものではなくなっている.
こうして比較してみると,結局,RDOが一番現実的な選択肢であるということになる.ストアドプロシージャの互換性なども考えると,SQL Server(Microsoft,Sybaseを問わず)に移植可能な形でプログラミングをしておくことが,将来のためには有効だといえる.やはり,これら“UNIX下がり”のデータベースの耐障害性は,クリティカルな状況では強みを発揮する.
Sybase SQL AnywhereのプログラムはRDOで…
Visual Component dbComplete Visual ComponentのdbComplete(図10)は注目に値するコントロールである.私が評価したのは,http://www.visualcomp.com/dbcomplete/default.htmから無料でダウンロードできる評価版である.英語版であり日本語は使えないが,Sybaseファミリの製品として遠くないうちに日本語化されるだろう.ただ,現行の英語版を日本語Windows95環境にインストールすると,日本語環境の一部を壊すようなので気をつけてほしい.
図10:dbCompleteを使った開発環境.ツールボックスの下部に表示されているのが追加されたコントロール
Power++のProfessional版以上に,Fomula1やFirst ImpressionといったVisual Component社の製品がバンドルされていることを考えると,いずれPowersoftのツールにバンドルされる可能性もある.
dbCompleteは,主に3つの構成要素によって成り立っている.ひとつはアウトラインデータグリッドであり,もうひとつはデータ連結コントロールライブラリであり,最後のひとつがインテリジェントデータソースコントロールである.
dbCompleteの構成要素
インテリジェントデータソースコントロールがODBC経由でデータベースにアクセスし,アウトライングリッドによって整列されたデータ連結コントロールにデータを表示する,という仕組みでそれぞれは協調して動作する.
アウトラインデータグリッド
アウトラインデータグリッドとは,図11のようにヘッダのリンクデータとして子レコードのデータを表示する機能である.もちろん,普通のグリッドとして利用することもできる.
図11:アウトライン表示
通常,データベースシステムのユーザーインターフェイスは,一覧性を高めるために最初に表形式で表示して,データを選択するとフォーム形式で詳細データを表示するのが一般的である.そのため,2つのフォームを用意する必要がある.
アウトライン表示を使うと,それらがひとつのフォームで済む上,データの関連を視覚的に理解しやすい.
データ連結コントロールライブラリ
dbCompleteには,次の種類のデータ連結コントロールが付属している.
図12:グリッド内で利用するカレンダーコンボ
コンビネーションリストボックス
ピクチャーコンボボックス
マスクエディット
チェックボックス
オプショングルーブコントロール
カレンダーコンボ
これらのコントロールは,単体で使用することもグリッド内で使うことも可能である.たとえば,カレンダーコンボをグリッド内で使用しているのが,図12である.グリッドの各セルにコントロールが割り当てられて使用するスタイルである(標準ではマスクエディット).
このコントロールがデータベースへのアクセスを行ない,データ連結コントロールにデータを表示する.Visual BasicのRDCに相当するものだと考えればいいだろう.マスター詳細フォームのトランザクションを自動化したり豊富なプロパティなど,十分な能力を持っている.
インテリジェントデータソースコントロール
dbCompleteプログラミング
dbCompleteを利用したプログラミングは,ノンコーディングでデータベースプログラムが開発できることを売り物にしている.しかし,ノンコーディングで作成されるシステムが実用レベルに達しないことは,最近のツールを調査したことがある開発者ならばご存知だろう.
図13:プロパティページでSQL文を作成
dbCompleteは確かに,ノンコーディングでもプログラミングできるが,それ以上にコードを記述するためのインターフェイス,すなわち,プロパティ,イベント,メソッドが充実していることの方が余程,重要である.
コードを記述せずにプログラミングをするには,グリッドデザイナーを最大限に活用することになる.図13のようにプロパティページによって,表示するアウトラインの構造や,データを取得する際のSQL文を自動生成することができる.複数テーブルを連結したSQL文や条件の指定もできるので,かなり柔軟性の高いデータベースアクセスができる.
Sybaseは現在,データベースの標準開発言語をJavaに移行するため,プロダクト全体のアーキテクチャを変更している.SQL AnywhereにJavaが搭載される日も遠くはないだろう.また,ここでは触れなかったが,間もなくPowersoft PowerJと呼ばれるJava開発環境が発表わされる.このツールはエンタープライズデベロップメントに特化したJavaツールで,当然,データベースプログラミングに重点をおいている.ただ,リリース直前の英語版ベータを評価した限りでは,データベースシステム開発ツールとして,Power++のような圧倒的な魅力は感じなかった.
まとめ
SybaseにはMicrosoftやOracleのような政治力はない.そのため,オープンに提供される規格を積極的に利用して,独自のオープンアーキテクチャを維持しようとしている.彼らはPower BuilderのPower Scriptや,Transact SQLの普及の限界を承知しているのだ.その姿勢は,学習すべきものが多すぎる現代の開発者にとって好ましいものだといえる. (本稿はSybase SQL Anywhere 5.5.02Jにもとづいて解説しております)
VB Magazine ライブラリ | Visual Basic WorkGroup
int21 ホームページ | PCDN ホームページ
![]()
Copyright (c) 1998 int21 Corporation All Rights Reserved.
For questions or comments, please send mail to: pcdn@int21.co.jp