いまどきでは .Net Data ProviderやらEJB(JDBCだけど), , 古くはODBC、OCI(C言語)でOracle Databaseはつかうもんだ!と思いますよね。
Oracle Database 11gだとXML DBの新機能で、別の方法をとることができます。
そ、それは・・・・
Web Service API!
普通にアプリ開発でも使うようになり、マッシュアップやら、SOAやら、クラウドやら、でも目にするものですが、Databaseで直接扱うことができます。
まずWeb Serviceのメリットを上げておくと、データが扱いやすい、再利用性が高い、開発しやすいことが上げられます。
言語専用のインターフェース(ODBCとかJDBC)が必要なく、アプリケーションレベルで扱えること、データフォーマットがXMLで扱われてるので最近の開発言語と相性がいいことが上げられます。
Oracle Database 11gR1のXML DBはそもそもXMLデータを扱うためのプラットフォームで、入出力にそもそも長けていてこの機能に追加されたわけですが・・・
この機能では、Web Serviceを介して直接SQL文、もしくはXQueryをなげて結果を得られます。無論XMLデータです。
つまり、アプリケーションレベルでDatabaseデータを扱えてしまいます。
ということで、設定と検証のご紹介です。ちなみに全エディションでつかえますよ。
まず、XML DBを使えるようにします。
デフォルトで導入されていますので、ポートを有効にするだけです。
これはEMからでもXDBパッケージを使っても可能です。
EMの場合は以下のとおり。
XML DBのところにあります。
#ここのHTTPポートが0の場合、無効ですので変更します。今回は8080にしています。
DBMS_XDBパッケージの場合は"SQLPLUS / AS SYSDBA"でログインして設定しちゃいます。
SQL>exec DBMS_XDB.setHTTPport(8080);
これは、即時反映されて有効になりますので、Listner経由で確認します。
lsnrctl status
ポートが設定されていれば、Presentation=HTTP, Port=8080で稼動している"orclXDB"がリストにでてきます。
続いて、対応するWeb Serviceを登録します。
実行してみます。
こちらはみにくいのでマニュアルにあるので、あわせて参照ください。
これだけで、"orawsv"という名前でサービスが作成されています。
ですが、これだけではDBにアクセスすることができません。
通常のDBと同様で、スキーマへのアクセスを必要となりますのでセキュリティとあわせて、設定を行います。
今回は、毎度ながら"SCOTT"にアクセス権を与えています。
これでアクセスが可能になっていますので稼動しているかためしてみましょう。
今回、自分のマシンで動いており、Portを8080で設定しているのでブラウザから指定してアクセスしてみます。
http://localhost:8080/orawsv

SCOTT/TIGERでアクセス。
すると。。。。
ということで、アクセスはできました。
なお、なんの情報も与えずアクセスしたので、Faultしてます。でも稼動は確認できました。
続いてWeb Serviceとして必要な情報をまとめているWSDLを参照してみます。
自動的にXML DBが生成しているので参照ができます。
http://localhost:8080/orawsv?wsdl
参照ができましたね。この内容には規約がかかれていてこの内容を開発言語や基盤でよみこむことで利用が即可能になります。
続いて、検証に入りたいと思います。
今回は有名なツールでsoapUIというものがありますので、これを使ってみます。
立ち上がると、次のようになるので設定していきます。
ここではWSDL参照のURIをいれています。
今回は参照テストのときと同じ、"http://localhost:8080/orawsv?wsdl"を入力済み。
設定中・・・・
認証聞かれるのでSCOTT/TIGER
設定されて、デフォルトでリクエストサンプルがつくられてます。
では実際に必要な部分を残して実行!
ここには直接、SQL文がかかれています。
#赤字の部分のとおり、直接書いています。
また、"Aut"でSCOTT/TIGERを指定しています。
参照できましたね。
このように実行されたSELECT文に対応して結果がXMLでえられています。
無論Databaseのデータ型にそってデータがえられますので、ものによれば・・
夢が広がりますねぇ。
次は具体的な利用例を考えてみます。。。
XML DB秋祭り開催!!!!
勉強の秋! 実りの秋!! XML DB秋祭り I
PHPで高可用性!
PHPユーザー向け!スケーラビリティと高可用性を実現するデータベース接続管理