日本オラクルのインターネット・アプリケーション・プラットフォーム「Oracle9i」が2000年12月に発表された。Oracle9iは,単なるRDBMS(リレーショナル・データベース管理システム)製品ではない。アプリケーション・サーバーや統合開発環境を含んだプラットフォームである。アプリケーション・サーバーにはデータベースと連動してWebサイトを高速化する仕組みが取り入れられた。Webサイトの性能や信頼性を向上させたい場合に効果を期待できる。

(実森 仁志=hjitsumo@nikkeibp.co.jp)

 高速化,信頼性の向上,付加価値の提供―多くのWebサイトが直面する難問を解決する製品が登場する。2000年12月に日本オラクルが発表した「Oracle9i」である。2001年の初めから夏ごろまでに段階的に出荷される。

表1●Oracle9i Application Serverの製品構成(カッコ内は提供予定時期でいずれも2001年)
JavaVM:Java仮想マシン JMS:Javaメッセージ・サービス  JDBC:Javaデータベース接続 LDAP:軽量ディレクトリ・アクセス・プロトコル

 「Oracle」といえば,RDBMS(リレーショナル・データベース管理システム)の代名詞のようなもの。しかし,その最新バージョン「Oracle9i」は,RDBMSから,インターネット・アプリケーションのプラットフォームへと変容した。Oracle9iは,データベースを核に,アプリケーション・サーバー,統合開発環境を取り込んだプラットフォームである。

 それだけではない。(1)キャッシュ技術によるWebサイト全体の高速化,(2)高速なクラスタ機能による信頼性の向上,(3)EIP(エンタープライズ情報ポータル)による付加価値の提供,(4)モバイル機器への対応など,プラットフォームとして重要な点を強化している。

動的ページのキャッシュを効率化

 Webサイトを高速化させるキャッシュ機能として,「Web Cache」と「Database Cache」の2種類を用意する。これらは,J2EE(Java2エンタープライズ・エディション)対応アプリケーション・サーバー「Oracle9i Application Server(9iAS)」のEnterprise Editionに搭載される(表1[拡大表示])。

 Web Cacheとは,インターネットとOracle HTTP Serverとのあいだに配置する「キャッシュ・サーバー」である。一般的なキャッシュ・サーバーとは異なり,Oracle8iや「Oracle9i Database(9iDB)」といったデータベースと連動してキャッシュを動的に変更するので,元データが変更されても常に最新の情報を提供できる(図1[拡大表示])。

図1●Web Cache
データベースの内容を変更したときにトリガーを呼び出し,Web Cacheに蓄積されたキャッシュ・データを無効にする。これにより,キャッシュ・データが古くなることを防ぐ。

 通常,キャッシュ・サーバーは,Webページをキャッシュすると,指定された有効期限になるまでは,そのデータを返す。元のデータが更新されても古いデータを返してしまうため,最新の情報を反映するには有効期限を短くしなければならず,キャッシュの効果が減るという問題があった。

 Web Cacheでは,Oracleデータベースに設定したトリガーなどを使って,指定したURLのキャッシュ・データを無効化できる。キャッシュ内のデータは常に最新に保たれるので,キャッシュの有効期限を長く設定しておくことができるようになり,キャッシュの効果が上がる。

更新頻度が低いサイトで効果

 一方のDatabase Cacheとは,読み込み専用のキャッシュ・データベースを,アプリケーション・サーバーに配置する技術である。参照処理はキャッシュ・データベースに,更新処理などはオリジナル・データベースに,自動的に転送される(図2[拡大表示])。データベースに対する参照処理がアプリケーション・サーバー側で完結するため,オリジナル・データベースの負荷が軽減される。巨大なレコード・セットや画像データなどを大量に扱うWebサイトでは,ネットワーク・トラフィックの削減も期待できる。

図2●Database Cache
読み込み専用のキャッシュとして,オリジナル・データベースのスナップショット・レプリケーションをアプリケーション・サーバー側に配置する。キャッシュに格納されていないデータや,追加/変更/削除/アクセス権限の変更などの処理は,オリジナル・データベースにリダイレクトする。

 オリジナル・データベースの変更は,キャッシュ・データベースに対してスナップショット・レプリケーションされる。レプリケーションのスケジュールは管理者が設定できるので,Webサイトの負荷が低い深夜などに実行することも可能だ。ただし,レプリケーションによってオリジナル・データベースの更新がキャッシュ・データベースに反映されるまでにはタイムラグが生じる。その意味では,常に最新の情報を求められないWebサイト,あるいは更新頻度が低い参照専用のWebサイトなどに向いている。

クラスタ構成時の性能を改善

 9iDBは,クラスタ構成時の高速化を図る工夫を実施した。信頼性に裏打ちされた高速化といったサービス・レベルの向上を狙う。

 従来,オラクルのデータベースは,クラスタ構成にしてノードを追加しても,「価格に見合うほど性能は向上しなかった」(あるSI企業の技術者)。こうした評価を反映してか,「Oracleデータベースの利用者のうち,OPS(Oracle Parallel Server)オプションの利用者は5%程度」(米オラクル プロダクト&サービスマーケティング シニアバイスプレジデントのジェレミー・バートン氏)にすぎない。

 性能が上がらない原因は,ノード間でディスクを介してデータを転送することであった。そのため,大量のユーザーが頻繁に更新処理を実行するようなインターネット・アプリケーションでは,クラスタ構成を採ってもディスク・アクセスが頻発して性能の向上が望めなかった。

 この問題を解決したのが,「Cache Fusion」という技術である。Cache Fusionでは,クラスタを構成するノード間の情報転送にメモリーなどの高速コネクタを使用する。これによって,ディスクへのアクセスが削減され,システム全体の処理速度が向上する。

内部ドライバで高速化を図る

 Oracle8i以降は,データベースにもJVM(Java仮想マシン)が搭載されるようになった。9iDBのJVMは,データベースとさらに親和性が高まり,負荷分散と性能の向上に活用できる。

 たとえば,サーブレットをアプリケーション・サーバーで,EJB(Enterprise JavaBeans)をデータベース・サーバーで実行し,9iDBの内部JDBC(Javaデータベース接続)を使ってデータベースを呼び出す。こうすることで,ネットワークを経由せずに高速な内部JDBCドライバを直接呼び出せる。データベースと頻繁に情報をやり取りするEntity Beanなどを使用する場合には,この構成を採用するとボトルネックを軽減できる可能性がある。もちろん,データベース・サーバーは処理が集中する分だけ性能の良いものを必要とするが,負荷分散構成の1つとして検討に値する。

 これまでデータベース側のJVMは,「アプリケーション・サーバーがなくてもサーブレットやJSP(JavaServer Pages)を利用できる」という意味で注目されてきた。しかし今後は,高速化を図る目的でも活用できるようになる。

付加価値の提供も欠かせない

 Webサイトのサービス・レベルを上げる場合,顧客から付加価値の提供を求められるケースも出てくる。
 9iDBには,MOLAP(多次元オンライン分析処理)機能を実現する「Oracle Express」や,データ・マイニング機能を実現する「Darwin」などを統合したサーバー製品が提供される。このため,個々のユーザーの好みを分析して反映するようなWebサイトを構築しやすくなる。このようなWebサイトを作成する場合,9iASに搭載される「Oracle Portal」を組み合わせると,ユーザーごとにトップページの表示内容をカスタマイズすることも可能だ。

 Portalは,EIPを実現する製品で,従来の「WebDB」の後継にあたる。HTMLやJavaを用いて作成する「ポートレット」というWebコンポーネントを組み合わせ,ポータル画面の表示内容を手軽にカスタマイズできるようにする。今後,多くのWebサイトのサービスや表示内容の一部がポートレットとして提供されるようになれば,「Windowsのデスクトップ画面の代わりに,Portalがインターネットへの窓口となる」(バートン氏)。

あらゆるデバイスから アクセス可能に

 Windowsに置き換わり,さらに携帯電話や携帯端末などのモバイル機器にも対応するという点では,「Wireless Service」と「iFS(インターネット・ファイル・システム)」も見逃せない。

 Wireless Serviceは,携帯電話や携帯端末向けにコンテンツを提供するための変換サービス。「Portal to Go」の後継製品にあたり,9iAS Wireless Editionに搭載される。

 一方のiFSは,あらゆるファイルをさまざまなプロトコルでデータベースに格納し,管理するための機能。ファイルをデータベースに格納することで,バージョン管理やアクセス制御,バックアップ/リカバリが容易になる。ユーザーは,SMB(サーバー・メッセージ・ブロック)やFTP(ファイル転送プロトコル),HTTPなど,クライアントが利用可能なプロトコルでファイルにアクセスできる。OSのファイル・システムと同様に,ディレクトリを作成することも可能だ。RDBというと構造化されたデータを格納するものと考えがちだが,9iDBはORDB(オブジェクトRDB)としても成熟しつつある。

Webサービスの基盤にも

図3●オラクルが提唱する.NOW戦略を支えるDynamic Servicesの仕組み
アプリケーションやサービスの情報を取得するためにプライベートなディレクトリを使用できる点が特徴。ディレクトリへのアクセスにはJNDI(Java Naming & Directoryインタフェース)を利用する。

 Oracle9iは,インターネット上に点在するWebサービスを活用する基盤という側面も持つ。米オラクルは,2000年12月11日に新戦略「.Now」を発表した。.Now戦略とは,「Webサイトを早期にWebサービスに対応させるためのフレームワーク」(バートン氏)。

 JavaやXML(拡張可能マークアップ言語)を活用し,WebサイトやWebサービスをOracle9iプラットフォームに組み込んだり連携させたりして,必要な処理を柔軟に実現していく。Portalで構築したデスクトップ環境にWebサイトやWebサービスを集約し,Wireless ServiceやiFSなどでモバイル機器に対応する。これにより,あらゆるデバイスからインターネット上のさまざまな情報やサービスを活用できるようになる。

 オラクルは「Oracle9i Dynamic Services」をホームページ上で無料提供し,.Now戦略を推進する。Dynamic Servicesは,Webサービスやデータベース・サービスとアプリケーションとを仲介するルーターとして機能する(図3[拡大表示])。アプリケーションからDynamic Servicesにサービス要求を送ると,Dynamic ServicesはWebサービスやデータベース・サービスに合わせて要求内容を変換し,適切なプロトコルで転送する。処理結果はDynamic Servicesが受け取り,変換してアプリケーションに返す。Dynamic Servicesを使ってWebサービスをポートレット化することも可能だ。

 Dynamic Servicesの特徴は,サービスやアプリケーションの情報をLDAP(軽量ディレクトリ・アクセス・プロトコル)互換のディレクトリ製品「Oracle Internet Directory Server」に格納する点。役職などで複数ユーザーを束ねたりするロールなどを使ってアクセス制御しやすく,管理が容易になる。

 すでに米IBMや米マイクロソフトなどが,Webサービスの実現に向けて取り組んでいる。Webサービスやアプリケーションの情報をWSDL(Webサービス記述言語)で記述し,UDDI(Universal Description, Discovery, and Integration)に蓄積することを想定している。しかし,これらの安定稼働にはまだ時間がかかる。インターネットでビジネスを展開している企業は,それまで待ってはいられない。

 オラクルは,既存技術を活用することで,「いますぐにWebサービスを提供できるようにする」(バートン氏)。もちろん,SOAP(簡易オブジェクト・アクセス・プロトコル)やUDDIにも対応するが,それは将来的にほかのWebサービスと相互運用するためである。特定のWebサービスの情報はプライベートなInternet Directory Serverで管理し,必要に応じてグローバルなWebサービスの情報をUDDIから取得する・・これは,現実的な解である。

 Oracle9iは,高速化や信頼性の向上という,Webサイトが現に直面する課題に答えるだけではない。付加価値の提供やWebサービスの活用など,将来の拡張も見据えた製品である。日本では,9iASが2001年1月に,9iDBは夏ごろに出荷される予定。開発製品の統合パッケージである「Oracle9i Developer Suite」の出荷は未定である。