Comments
Description
Transcript
Javaをデータベースで使用することによるデータベース機能の拡張および
Identify the track name here Java をデータベースで使用することによる データベース機能の拡張およびコストの削減: TECSIS 社の事例 Esteban Capoccetti, TECSIS Kuassi Mensah, Oracle Corporation 概要 Oracle8i 以降の Oracle データベースには、Java ストアド・プロシージャを実行するためのスケーラブルな組込み Java VM (OracleJVM)や、標準およびサード・パーティの J2SE、JDBC、JMS、JAI ライブラリが提供されています。これらのラ イブラリによって、データ・ロジックまたは永続性ロジック、またはその両方をデータベース内のデータの近くに直接実 装できます。Oracle Database 10g では、この範囲がさらに拡大しています。 このホワイト・ペーパーの第 I 部では、コストの削減、リスクの低減、Oracle データベースの機能拡張を可能にする Oracle Database 10g の新しい Java 機能を紹介します。第 II 部では、TECSIS 社の事例を紹介します。つまり、同社が OracleJVM の機能を最大限に活用して PL/SQL ストアド・プロシージャ、SAP R3、Natural/Adabas、RPG/DB400、COBOL Tandem、 COM コンポーネントおよび Oracle 以外のデータベース(Adabas-D、MSSQL Server)で構成されている、同社のプラット フォームを統合するための簡単に使用できるフレームワーク実装することで、どのようにコスト削減を図ったかを説明し ます。 第 I 部 Java を Oracle Database 10g で使用することによるデータベース機能の拡張 およびコストの削減: この新しいリリースでは、Java エンジンの J2SE 1.4.x へのアップグレード、Java と SQL、PL/SQL、XML、J2EE、Web サー ビスとの統合の強化が図られています。たとえば、Pure Java SOAP クライアント・ライブラリによって、データベースは Web サービスのコンシューマになります。Java メモリー管理、Java クラスのローディング、Java プールのチューニング のすべてが最適化されています。さらに、セッション中の SQL データへのアクセスを高速化するために、サーバー側の JDBC ドライバが再設計されています。これらの新しい機能から得られる効果は、次のとおりです。 コスト削減 データベースで Java を使用することで、アプリケーション開発がどの程度簡素化され、開発コストと実行コストがどの 程度削減されるか、簡単に説明します。 Java をデータベースで使用することによるデータベース機能の拡張およびコストの削減: TECSIS 社の事例 Oracle Corporation 発行「EXTEND YOUR DATABASE AND REDUCE YOUR COSTS WITH 1 JAVA IN THE DATABASE: TECSIS CASE STUDY」の翻訳版です。 Copyright © 2003 Oracle Corporation All rights reserved. Identify the track name here 短期間かつ低コストで実現する Java アプリケーション開発 OracleJVM を J2SE 1.4.x にアップグレードすることで、大容量の最新 Java ライブラリがデータベース内で直接再利用でき るようになります。その結果、開発コストが削減され開発サイクルが短縮されます。また、カスタム・ライブラリの構築 あるいは既存ライブラリの再利用に既存の Java スキルが再利用できるため、データベース・アプリケーションの開発期 間が短縮し、開発コストが削減されます。新しいネイティブ Java インタフェースによって、PL/SQL ラッパーを使用せず に、Java-to-Java のダイレクトな起動が実現します。また、JPublisher ユーティリティ機能が拡張できるため、SQL 問合せ、 SQL DML、データベース内の Java クラスなどのデータベース機能を J2EE および Web サービスにパブリッシュできるよ うになります。さらに、このインタフェースによって、データベースとこれらの世界が簡単に統合できるようになり、ア プリケーション開発期間の短縮とコスト削減をもたらします。 短期間で実現するアプリケーションのデプロイメントおよびアプリケーションの高速実行 LoadJava ユーティリティ内の新しいバイトコード検証機能によって、データベースへのアプリケーションのロードとデ プロイメントが短期間で実現します。 サーバー側 JDBC ドライバのアーキテクチャが全面的に更新され、専用サーバー使用時の Java のメモリー管理が最適化 されて、セッション中の SQL データへの高速アクセス(同一メモリー領域内のファンクション・コール)と、データベー ス内での J2SE、JDBC、SQLJ、JMS および JAI アプリケーションの高速実行が実現します。 低コストのプラットフォーム統合 OracleJVM を使用した低コストのカスタム統合フレームワークについては、第 II 部の TECSIS 社の事例を参照してくださ い。 リスクの低減 選択肢 Oracle データベースで Java を使用する場合、データベース・プログラミング言語として Java または PL/SQL のいずれか を選択できます。これらの言語の長所と短所は、このホワイト・ペーパーでは扱いません。このリリースでは、Java スト アド・プロシージャも、PL/SQL と同様に、すべての SQL 例外を伝播してコール元に戻すため、Java は理想的な選択肢と なります。J2SE 1.4.x、JDBC 3.0、JAI 1.0, JMS 1.x、JAX-RPC クライアントなど、最新の Java 標準に対応しているため、 中間層/J2EE およびデータベース層をまたがる J2SE、JDBC、JMS、JAI アプリケーションのパーティション化が実現しま す。その結果、顧客は、デプロイメント・アーキテクチャが選択できるようになります。また、新しいネイティブ Java インタフェースでは、データベース内で Java を起動するモードとして、Java/J2EE から直接起動するモードまたは従来の PL/SQL ラッパーを使用するモードのいずれかを選択できます。 Java をデータベースで使用することによるデータベース機能の拡張およびコストの削減: TECSIS 社の事例 Oracle Corporation 発行「EXTEND YOUR DATABASE AND REDUCE YOUR COSTS WITH 2 JAVA IN THE DATABASE: TECSIS CASE STUDY」の翻訳版です。 Copyright © 2003 Oracle Corporation All rights reserved. Identify the track name here セキュアで信頼できる Java の実行 OracleJVM 固有のセキュリティ・メカニズム1に加え、OracleJVM では新しい標準や Java GSS-API、JAAS、JCE、JSSE な どの必須の J2SE 1.4.x セキュリティ機能もサポートされます。したがって、従来の JDK とは異なり、不正な Java コード の攻撃に強い安全な Java 実行環境が提供されます。OTN のデータベース・テクノロジセンター2の Java に掲載されてい る「Oracle8i および Oracle9i を使用した HTTP コールアウトによる JSSE のサポート」に関する顧客事例を参照してくだ さい。 データベースの適用範囲および機能の拡張 データベースの適用範囲の拡張 このリリースでは、Database Web Services の本番配布を行います(詳細は、該当するホワイト・ペーパーを参照してくだ さい)。Web サービス・メカニズム(SOAP、WSDL)3を介してデータベース処理を起動する機能によって、Oracle デー タベースのクライアント・ベースは非接続クライアントおよび異機種間環境まで拡張されます。同様に、J2EE および Web サービスからのデータを使用、連携、集約する機能によって、データベースの到達範囲が動的データやオンデマン ド・データまで拡大されます。ここで使用されるのは、JSP/サーブレットへの HTTP コールアウト、RMI/IIOP EJB のダ イレクト・コールアウト、Web サービス・コールアウトを行う SOAP クライアントです。 オープンでセキュアなデータベース機能の拡張性 標準、サード・パーティまたはカスタムの Java ライブラリをロードし実行する機能は、TECSIS 社の事例に示されている ように(第 II 部参照)、データベースの機能を拡張するためのオープンなメカニズムとなります。これらの Java ライブ ラリとしては、外部 ERP/レガシー・システムまで範囲を拡大するための Pure Java RPC ライブラリ、Oracle 以外のデータ ベースまで範囲を拡大するための Pure Java JDBC ドライバなどがあります。Pure Java の SOAP ライブラリをロードする と、データベースは Web コンシューマになります。同様に、標準 JSSE ライブラリをロードすると、Oracle8i および Oracle9i によるセキュアな cHTTP コールアウトが実現します。現在、 J2SE 1.4.x では必ず JSSE を使用する必要があるため、JSSE は Oracle Database 10g の OracleJVM にとって不可欠な存在です。Java と SQL エンジンとの統合によって、SQL および PL/SQL に新しい機能が提供されます。セキュリティおよびデータ整合性に関しては、ロードされたライブラリの有効範 囲、権限および参照可能定義、制限、詳細なチューニングが、OracleJVM のセキュリティ・メカニズムによって実現しま す。 結論 Oracle Database 10g で提供される新しい Java 機能は、次のとおりです。J2SE 1.4.1 との互換性、再設計されたサーバー側 JDBC、ネイティブ Java インタフェース、専用サーバーを対象とした Java メモリー管理の最適化、SQL 例外のレポート および伝播、Loadjava ユーティリティの最適化、Java プールの自動調整、新しいトレース機能、コストおよびリスクの 低減、データベースの適用範囲および機能の拡張です。 1 2 3 http://otn.oracle.com/oramag/oracle/03-jul/o43devjvm.html http://otn.oracle.com/tech/java/java_db/content.html http://www.sys-con.com/webservices/articleprint.cfm?id=515 Java をデータベースで使用することによるデータベース機能の拡張およびコストの削減: TECSIS 社の事例 Oracle Corporation 発行「EXTEND YOUR DATABASE AND REDUCE YOUR COSTS WITH 3 JAVA IN THE DATABASE: TECSIS CASE STUDY」の翻訳版です。 Copyright © 2003 Oracle Corporation All rights reserved. Identify the track name here 第 II 部 TECSIS 社の事例 この項では、TECSIS 社がどのようにコスト削減したかを紹介します。TECSIS 社は、簡単に使用できるエンタープライ ズ・クラスのフレームワークを実装して、OracleJVM の機能を最大限に使用しながら、Oracle PL/SQL ストアド・プロシー ジャ、SAP R3、Natural/Adabas、 RPG/DB400、COBOL Tandem、 COM コンポーネント、Oracle 以外のデータベース(Adabas-D、 MSSQL Server)などの様々なプラットフォームを統合しました。 TECSIS 社について Tenaris は、鋼管メーカー8 社(AlgomaTubes、 Confab、Dalmine、NKKTubes、Siat、Siderca、Tamsa、Tavsa)を傘下に抱 えるパイプ技術分野における世界有数の企業です。Tenaris 社は、全世界のエネルギー業界および機械業界にパイプ品お よびパイプ関連サービスを提供している世界最大のサプライヤで、グループ全体の総生産能力は、シームレス管 300 万ト ン、溶接鋼管 85 万トン、年間売上高は 30 億ドル、世界 5 大陸における従業員数は 1 万 3000 人におよびます。弊社の市 場シェアは、全世界の OCTG シームレス製品の約 30%、シームレス管の生産シェアは全世界の約 13%です。Tenaris 社の システム・テクノロジ部門である Tecsis 社は、Tenaris グループ内の全社にわたって技術の検証と普及を行うことを主な 目標としています。ここでは、Oracle データベースで Java を使用した弊社の経験と、Java によって弊社の統合要件がど のように解決されたかを説明します。 アプリケーションについて 弊社では、Oracle データベースをデータベースとしてのみでなく、統合インフラストラクチャとしても使用しています。 Oracle データベースの運用年数は、3 年です。まず、PL/SQL ストアド・プロシージャを使用して、ビジネス・ルールを 実装する作業から始めましたが、これが様々なメリットをもたらしました。データベースに Java Virtual Machine (OracleJVM)を埋め込み、データベースの機能を拡張し、データ統合ハブにしました。 弊社のビジネス要件および技術要件 ビジネス要件 弊社固有のビジネス要件によって、様々なプラットフォーム(SAP、AS400、ADABAS/NATURAL、COBOL Tandem など) からのオンライン情報を統合する必要がありました。PL/SQL ベースのビジネス・ルールでは、これらのプラットフォー ムからのデータを送信し取得する必要がありました。新しいイントラネットやインターネット・ベースの開発に加え、既 存のレガシー・システムでもクロス・プラットフォーム統合を必要としました。主な目的は、ソフトウェア、システムお よびスキルを再利用してコスト削減を図るというものです。 技術要件 統合を必要としたプラットフォームは、Oracle PL/SQL ストアド・プロシージャ、SAP R3、Natural/Adabas、RPG/DB400、 COBOL Tandem、COM コンポーネント、Oracle 以外のデータベース(Adabas-D、MSSQL Server)です。レガシー・シス テムを統合する RPC テクノロジは様々なものがありましたが、その統合レベルには不満を抱いていました。その頃、別 のプラットフォームでオンラインで提供される情報に、既存の PL/SQL パッケージからアクセスする必要性が不可欠にな りました。 弊社の最も重要な要件は、要約すると次のようなものでした。 Java をデータベースで使用することによるデータベース機能の拡張およびコストの削減: TECSIS 社の事例 Oracle Corporation 発行「EXTEND YOUR DATABASE AND REDUCE YOUR COSTS WITH 4 JAVA IN THE DATABASE: TECSIS CASE STUDY」の翻訳版です。 Copyright © 2003 Oracle Corporation All rights reserved. Identify the track name here 1. クロス・プラットフォーム統合の単純化。 2. コスト削減。新しい統合層を追加するかわりに、既存のコンポーネントを活用し、これらのコンポーネントでそれぞ れの機能を最大限に使用することに決めました。 3. 加えて、ポイント・ツー・ポイント統合でもたらされるような通信の激増は避けたいと思いました。 設計およびプログラミングの選択肢 弊社が選んだのは、OracleJVM とその能力を活用して、データベース内で Java ライブラリを実行するという方法です。 その理由は、既存のすべての ERP システムと Oracle 以外のデータベースに、Java ベースのリモート・プロシージャ・コー ル(RPC)ソフトウェアか、OracleJVM にロードできる Pure Java JDBC ドライバのいずれかが実装されているためです。 PL/SQL ラッパーによって、SQL の世界でもこれらのメカニズムが Java ストアド・プロシージャとして使用できるように なります。PL/SQL ベースの既存または新しいビジネス・ルールと他のシステムとの相互対話は、簡単に実現します。変 換ルールに加えてビジネス・ルールも Oracle データベースに一元化し、すべてを Web クライアントとバッチ・ジョブの 両方からアクセス可能にすることで、Oracle データベースが弊社の統合エンジンになりました。 弊社のすべての新しいシステムは、ビジネス・ルールへアクセスするストアド・プロシージャを呼び出す Web ページに 基づいています。クライアント・アプリケーションに加え、既存のバッチ・ジョブも、同じビジネス・ルールを共有しま す。XML ベースの IN パラメータおよび OUT パラメータを使用して、プロシージャを呼び出す方法も標準化できました。 これらの XML パラメータの解析または生成には、Oracle XDK を使用しています。 コストのかかる PL/SQL プログラマを拘束せずに、数日間でシステムが運用できる状態になったという事実は、このソ リューションの簡潔さを如実に物語っています。そのうえ、バッチ・ジョブの統合は、3 行の SQL*Plus スクリプトで実 現しました。 従来のエンタープライズ・アプリケーション統合(EAI)製品を使用していたら、統合はさらに複雑で高価なものになり ます。データベースに Java を採用したことにより、統合プロセスが単純になるのみでなく、コストも削減できました。 統合フレームワークのアーキテクチャ 典型的なユースケース 弊社が用意したユースケースは、次の 3 つです。コード検証のユースケースでは、A システム(COBOL Tandem)は、B システム(Oracle データベース)に特定のコード値が存在するかどうかを調べる必要があります。ポップアップ・リスト のユースケースでは、A システム(AS400 画面)が、B システム(Natural Adabas)からのコンテンツを使用して、値の リストを表示する必要があります。クロス・プラットフォーム変更のユースケースでは、新しい製品を A システム(Oracle データベース)に追加し、同じ製品を B システム(Natural Adabas)にも追加する必要があります。 Java ストアド・プロシージャからの外部システムの呼出し Natural/Adabas プログラム(OS/390)、RPG プログラム(AS400)および Tandem COBOL プログラムへのリモート・コー ルを実行するコンポーネントとして、Software AG 社の EntireX Communicator(旧称: EntireX Broker)を選択しました。 Java をデータベースで使用することによるデータベース機能の拡張およびコストの削減: TECSIS 社の事例 Oracle Corporation 発行「EXTEND YOUR DATABASE AND REDUCE YOUR COSTS WITH 5 JAVA IN THE DATABASE: TECSIS CASE STUDY」の翻訳版です。 Copyright © 2003 Oracle Corporation All rights reserved. Identify the track name here SAP Java Connector(SAP JCO)は、JAR ファイルとして配布されますが、複数の.sl(ライブラリ)を使用するため、100% Java 準拠ではありません。セキュリティ上の理由により、OracleJVM では、Java クラスを外部.sl ライブラリ(JNI コール) に対して使用することはできません。弊社では、SAP JCO を外部 RMI サーバーとして実行することで、この問題に対処 しました。その結果、Java ストアド・プロシージャ内部から SAP JCO に対して RMI コールを発行できるようになりまし た。 Java ストアド・プロシージャと Oracle 以外のデータベースとの間で相互対話ができるように、データベース内にサード・ パーティの Pure Java JDBC ドライバをロードしました。リモート Oracle データベースと相互対話する必要がある場合は、 Oracle の Pure Java JDBC ドライバ(Thin JDBC とも呼ばれています)をデータベースにロードします。 次に、ロードしたすべてのモジュールが PL/SQL ベースのビジネス・ルールから均一に起動されるように、EAI_PKG と 呼ばれる標準の PL/SQL ラッパーを、モジュールごとに作成しました。 最後に、社内の PL/SQL プログラマ全員に、アプリケーション統合ガイドを配布しました。それから数日以内に、他のプ ラットフォームと相互対話するプロシージャを作成することができました。 ビジネス・ルールを一元化し、統合ルールと変換ルールを追加して、完全なデータ統合フレームワークを作り上げました。 これらのビジネス・ルール、統合ルールおよび変換ルールは、EAI_PKG を使用して Java ストアド・プロシージャを介し て外部システムと対話します。弊社の新しいシステムは、Web ベースのプレゼンテーション・レイヤーとバッチ・ジョ ブ(SQL*Plus スクリプト)で構成されています。弊社では、Object for OLE(OO4O)を使用して、社内のプレゼンテー ション・レイヤー(.asp)から Oracle プロシージャを実行しています。プレゼンテーション・レイヤーとバッチ・ジョブ のどちらも、この同じ統合フレームワークを使用しています。 図 1 にこのアーキテクチャを示します。 図 1 には、Oracle Advanced Queuing システムの概念は示されていませんが、EAI_PKG が各リモート・システムに対応す るキューを提供します。リモート・システムが機能停止していたり、またはアクセス不能な場合は、EAI_PKG パッケー ジが、対応するキュー内にメッセージを自動的エンキューします。内部 DBMS_JOB ジョブは、各キューに関連付けられ、 設定された周期で実行されるようにスケジュールされます。このジョブは、未処理メッセージをデキューし、ターゲット・ システムが使用可能になるまで、これらのメッセージを処理します。 従来の EAI 製品からは、Java ストアド・プロシージャと同じレベルの使い勝手は得られません。 外部システムからの Java ストアド・プロシージャの呼出し Java ストアド・プロシージャからすべての外部システムの呼出しができるため、次のステップは、Java ストアド・プロ シージャの呼出しを外部システムからできるようにすることでした。この 2 番目のステップを実現するために、EntireX Communication と SAP Java Connector の両方を再利用しました。Natural Adabas、AS400 および COBOL Tandem が、EntireX へのコールを発生し、それによって Java ストアド・プロシージャが起動されます。Java ストアド・プロシージャからの レスポンスは、レガシー・システムへ送り返されます。 同様に、SAP/ABAP アプリケーションが SAP Java Connector を呼び出し、それによって Oracle ストアド・プロシージャが 呼び出されます。ストアド・プロシージャからのレスポンスは、ABAP アプリケーションへ返されます。 Java をデータベースで使用することによるデータベース機能の拡張およびコストの削減: TECSIS 社の事例 Oracle Corporation 発行「EXTEND YOUR DATABASE AND REDUCE YOUR COSTS WITH 6 JAVA IN THE DATABASE: TECSIS CASE STUDY」の翻訳版です。 Copyright © 2003 Oracle Corporation All rights reserved. Identify the track name here 図1 まとめ 図 2 に示すように、Oracle データベースをコミュニケーションの中心点として使用することにより、ポイント・ツー・ポ イントによるコミュニケーションを発生させずに、システム間の相互対話が可能になりました。フレームワーク全体が、 EntireX および SAP Connector へのコールや、各ターゲット・システムへのコールを、設定された周期で実行する Oracle ストアド・プロシージャによって監視されます。監視対象となっているシステムのいずれかがエラーを返した場合は、通 知電子メールがプロシージャより送信されます。次は、SNMP トラップを中央コンソールに送信するステップですが、現 在、このステップに取り組んでいる段階です。 Java をデータベースで使用することによるデータベース機能の拡張およびコストの削減: TECSIS 社の事例 Oracle Corporation 発行「EXTEND YOUR DATABASE AND REDUCE YOUR COSTS WITH 7 JAVA IN THE DATABASE: TECSIS CASE STUDY」の翻訳版です。 Copyright © 2003 Oracle Corporation All rights reserved. Identify the track name here 結論 Java と PL/SQL プロシージャを使用して、完全で簡単に使用できる統合フレームワークの実装ができました。PL/SQL プ ロシージャは作成とメンテナンスが簡単で、社内のプログラマで既存のスキルを利用することができました。弊社では、 Java は、PL/SQL の代用ではなく、PL/SQL の使用方法を拡張し向上させるための実現テクノロジだと考えています。Oracle データベースで Java を最大限に活用することにより、データベースをオンライン統合ブローカに変えることができまし た。また、プラットフォームに潜在する複雑さに、開発者が煩わされずにすむようにしたため、統合プロセスが簡単にな りました。 Java をデータベースで使用することによるデータベース機能の拡張およびコストの削減: TECSIS 社の事例 Oracle Corporation 発行「EXTEND YOUR DATABASE AND REDUCE YOUR COSTS WITH 8 JAVA IN THE DATABASE: TECSIS CASE STUDY」の翻訳版です。 Copyright © 2003 Oracle Corporation All rights reserved.