(57)【要約】【課題】  ソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現するシステム及び方法を提供する。【解決手段】  ＸＭＬファイルの各構成要素を分析してＳＱＬ文についての識別情報及びＳＱＬ文を抽出するＸＭＬ処理部と、識別情報およびＳＱＬ文を記憶装置にロードするＳＱＬ情報部と、ＳＱＬ文についての識別情報を受信してＳＱＬ文を検索し、検索されたＳＱＬ文をデータベースに送信し、ＳＱＬ文の実行結果をデータベースから受信して、識別情報を送信したアプリケーションに実行結果を送信する処理客体部を備える客体プールと、アプリケーションからＳＱＬ文についての第１識別情報を受信して、アプリケーションから以前にＳＱＬ文についての第２識別情報を受信した処理客体部を客体プールから選択して、選択された処理客体部にＳＱＬ文についての第１識別情報を伝達するスケジューラとを備える。【選択図】      図６
2006344213.tif 000002
【特許請求の範囲】
【請求項１】
ＸＭＬファイルの各構成要素を分析してＳＱＬ文についての識別情報及びＳＱＬ文を抽出するＸＭＬ処理部と、
前記識別情報および前記ＳＱＬ文を記憶装置にロードするＳＱＬ情報部と、
ＳＱＬ文についての識別情報を受信して前記ＳＱＬ文を検索し、前記検索されたＳＱＬ文をデータベースに送信し、前記ＳＱＬ文の実行結果を前記データベースから受信して、前記識別情報を送信したアプリケーションに前記実行結果を送信する処理客体部を備える客体プールと、
アプリケーションからＳＱＬ文についての第１識別情報を受信して、前記アプリケーションから以前にＳＱＬ文についての第２識別情報を受信した処理客体部を前記客体プールから選択して、前記選択された処理客体部に前記ＳＱＬ文についての第１識別情報を伝達するスケジューラと、を備えるシステム。
【請求項２】
前記ＸＭＬファイルは、前記ＳＱＬ文を実行するためのデータベースの情報を含む請求項１に記載のシステム。
【請求項３】
前記ＸＭＬファイルまたはＸＭＬファイルの構成要素は暗号化されて保存され、前記ＸＭＬ処理部は、前記暗号化されたＸＭＬファイルまたは構成要素を復号化するＸＭＬ暗／復号化処理部を備える請求項１に記載のシステム。
【請求項４】
前記処理客体部は、前記ＳＱＬ文についての第１識別情報以外に前記ＳＱＬ文の実行に必要なパラメータをさらに受信する請求項１に記載のシステム。
【請求項５】
ＸＭＬファイルの各構成要素を分析してＳＱＬ文についての識別情報及びＳＱＬ文を抽出するステップと、
前記識別情報及び前記ＳＱＬ文を記憶装置にロードするステップと、
アプリケーションから第１ＳＱＬ文についての第１識別情報を受信して、前記アプリケーションから以前に第２ＳＱＬ文についての第２識別情報を受信した処理客体部を選択して、前記選択された処理客体部に前記第１ＳＱＬ文についての第１識別情報を伝達するステップと、
前記第１処理客体部は、前記第１識別情報に該当するＳＱＬ文を検索して、前記検索されたＳＱＬ文をデータベースに送信し、前記ＳＱＬ文の実行結果を前記データベースから受信して前記アプリケーションに前記実行結果を送信するステップと、を含む、ソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現する方法。
【請求項６】
前記ＸＭＬファイルは、前記ＳＱＬ文を実行するためのデータベースの情報を含む請求項５に記載のソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現する方法。
【請求項７】
前記抽出するステップは、前記ＸＭＬファイルまたはＸＭＬファイルの構成要素が暗号化されて保存された場合、前記暗号化されたＸＭＬファイルまたは構成要素を復号化するステップを含む請求項５に記載のソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現する方法。
【請求項８】
前記伝達するステップは、前記ＳＱＬ文についての第１識別情報および前記ＳＱＬ文の実行に必要なパラメータを伝達するステップである請求項５に記載のソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ソフトウェアの開発と関連した方法及び装置に係り、より詳細にはデータベースを利用するソフトウェアを構成するモジュールが独立性を持つように開発する方法及び装置に関する。
【背景技術】
【０００２】
ソフトウェアの大型化、ネットワーク化がなされつつ、データベースはソフトウェアを構成する重要要素となった。データベースの性能のみならず、ソフトウェアがデータベースのデータを処理する方式と、処理するためのモジュールとソフトウェアの独立性が重要なポイントとなっている。特に、ソフトウェアの開発にかかる業務量以外にも維持、補修時にも長時間がかかり、かかる事項がコストアップの要因となっている。
【０００３】
図１はデータベースを構成するソフトウェアでデータを処理するモジュールの構成を示す構成図である。
【０００４】
図１に示すように、データを処理するソフトウェアは大きく、アプリケーションコード１０、データ処理ロジック２０、そしてデータベース３０から構成される。アプリケーションコード１０は、ユーザまたは外部からデータを受けるか、または表す機能を行う。データ処理ロジック２０は、アプリケーションがデータベースでデータを探すか、修正または入力する場合に処理するルーチンであって、ＳＱＬ文と同じ部分でなる。データベース３０は、データを保存して管理するモジュールであって、検索時間、保存方法などが製品によって変わる。データ処理ソフトウェアにおいて変更が発生する原因は３つに大別される。まず、アプリケーションコード１０でプロトコルメッセージにフィールドの追加、ログ記録フィールドの追加によって変更が発生しうる。アプリケーションコード１０は、ユーザまたは外部ソフトウェアと作業を行う部分であって、外部の要因によって変更される場合が多い。次いで、データベース３０の構造（スキーマ）上で変更が発生する場合であって、データベース３０を構成するテーブルが変更するか、カラム名が変わる場合などを挙げられる。次いで、データベース処理ロジック２０に変更が発生する場合、またはアプリケーションコード１０が変更されるか、データベース３０が変更されて処理ロジックが変更される場合がある。データベースのフィールドが変わるか、ＳＱＬ文を速度向上のためにチューニングする場合である。ところが、アプリケーションコード１０、データ処理ロジック２０、そしてデータベース３０が互いに関連しているために、いずれか一方の変更が他方の変更をもたらすことがある。
【０００５】
従来のシステムまたはソリューションは、図２ないし図４で提示する方式で構成されている。
【０００６】
図２ないし図４は、データを処理するための従来方式を説明する図面である。図２では、アプリケーションコード１１内にデータ処理のためにＪＤＢＣ（Ｊａｖａ（登録商標）  Ｄａｔａｂａｓｅ  Ｃｏｎｎｅｃｔｉｖｉｔｙ）２１を使用し、ＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）文２２もハードコーディングされている。これは、特定ソリューション専用のデータベース処理コードの開発で使用する方式であって、実際データ処理プログラムの独立化を達成できない。したがって、データベース３０が変更されてもアプリケーションコード１１内のＳＱＬ文２２が変更されねばならない。この場合、ＪＤＢＣを呼び出すデータベース処理コードが特定アプリケーションに従属されていて、性能上には利点がある。
【０００７】
図３はアプリケーションコード内にデータ処理のためにＪＤＢＣを使用するが、ＳＱＬ文は別途に分離された場合を示す図面である。商用ミドルウェアソリューションで使用する方式で、ＳＱＬの独立化のみ達成されている。したがって、データベース３０に変更が発生する場合、依然としてアプリケーションコード１２に変更を必要とすることがある。
【０００８】
図４は別途のデータ処理コードがアプリケーションコードと分離されて存在する場合の図面である。データ処理コードにＪＤＢＣ部分２１およびＳＱＬ文２２がハードコーディングされている。オープンソース系列のスプリングフレームワーク、ＴＩＢＣＯソフトウェア社の製品、フュージョンフレームワークの商用データ処理ＳＤＫ、ウェブロジック、ＪＲｕｎなどの商用ＷＡＳ（ウェブアプリケーションサーバー）のＤＡＯ（データアクセスオブジェクト）モジュールに多く現れる形態である。アプリケーション１０は、データ処理ロジックに入力パラメータのみ伝達し、データ処理ロジックは、データベースにＳＱＬ文２２を入力して結果を受け、その結果をＳＱＬＲｅｓｕｌｔＳｅｔ形態ではなくジャバＣｏｌｌｅｃｔｉｏｎ客体の形態に渡す。この方式はある程度独立化を達成したが、ＳＱＬは独立化されていない。
【０００９】
図２ないし図４の場合に、各類型別に変更要因に対する影響を整理すれば、表１の通りである。
【００１０】
【表１】
2006344213.tif 000003
いずれか一つのモジュールが独立化されていないということは、いずれか一つのモジュールの変更が他のモジュールの変更をもたらし、その結果、ソフトウェアの開発及び維持、補修に高コストがかかる。しかし、これらを独立的に具現する場合、性能の低下をもたらす。したがって、性能の向上及びソフトウェアモジュールの独立性を保障する方法及び装置が必要である。
【特許文献１】米国公開特許第２００４−１９９５４７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
本発明は、前記問題点を鑑みてなされたものであり、本発明は、データベースと連動するソフトウェアの開発時、各モジュールの独立性を提供するところに目的がある。
【００１２】
本発明のまた他の目的は、アプリケーションと連結される処理客体とアプリケーションとを連動させる場合、コンテキストスイッチングを減らすことである。
【課題を解決するための手段】
【００１３】
本発明は、ソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現するシステム及び方法に関する。
【００１４】
本発明の一実施形態によるシステムは、ＸＭＬファイルの各構成要素を分析してＳＱＬ文についての識別情報及びＳＱＬ文を抽出するＸＭＬ処理部と、前記識別情報および前記ＳＱＬ文を記憶装置にロードするＳＱＬ情報部と、ＳＱＬ文についての識別情報を受信して前記ＳＱＬ文を検索し、前記検索されたＳＱＬ文をデータベースに送信し、前記ＳＱＬ文の実行結果を前記データベースから受信して、前記識別情報を送信したアプリケーションに前記実行結果を送信する処理客体部を備える客体プールと、アプリケーションからＳＱＬ文についての第１識別情報を受信して、前記アプリケーションから以前にＳＱＬ文についての第２識別情報を受信した処理客体部を前記客体プールから選択して、前記選択された処理客体部に前記ＳＱＬ文についての第１識別情報を伝達するスケジューラと、を備える。
【００１５】
本発明の一実施形態によるソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現する方法は、ＸＭＬファイルの各構成要素を分析してＳＱＬ文についての識別情報及びＳＱＬ文を抽出するステップと、前記識別情報及び前記ＳＱＬ文を記憶装置にロードするステップと、アプリケーションから第１ＳＱＬ文についての第１識別情報を受信して、前記アプリケーションから以前に第２ＳＱＬ文についての第２識別情報を受信した処理客体部を選択して、前記選択された処理客体部に前記第１ＳＱＬ文についての第１識別情報を伝達するステップと、前記第１処理客体部は、前記第１識別情報に該当するＳＱＬ文を検索して、前記検索されたＳＱＬ文をデータベースに送信し、前記ＳＱＬ文の実行結果を前記データベースから受信して前記アプリケーションに前記実行結果を送信するステップと、を含む。
【００１６】
その他の実施例の具体的な事項は詳細な説明及び図面に含まれている。
【発明の効果】
【００１７】
本発明を具現することによって、ソフトウェアを開発する場合に特定モジュールの変更が他のモジュールの変更につながらないようにすることができる。これにより、モジュールの独立化及び開発の柔軟性を確保できる。また、ソフトウェアの開発及び維持、補修にかかるコストを低減し、ソフトウェアの独立性を保障できる。
【発明を実施するための最良の形態】
【００１８】
本発明の利点及び特徴、そしてこれを達成する方法は添付された図面に基づいて詳細に後述されている実施例を参照すれば明確になる。しかし、本発明は以下で開示される実施例に限定されるものではなく、この実施例から外れて多様な形に具現でき、本明細書で説明する実施例は本発明の開示を完全にし、本発明が属する技術分野で当業者に発明の範ちゅうを完全に報せるために提供されるものであり、本発明は請求項及び発明の詳細な説明により定義されるだけである。一方、明細書全体に亙って同一な参照符号は同一な構成要素を示す。
【００１９】
以下、本発明の実施形態によって、ソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現するシステム及び方法を説明するためのブロック図またはフローチャートに関する図面を参考して本発明について説明する。この時、フローチャートの各ブロックとフロ−チャートの組合わせはコンピュータプログラムインストラクションにより実行可能なのが理解できるであろう。これらコンピュータプログラムインストラクションは、汎用コンピュータ、特殊用コンピュータまたはその他のプログラマブルデータプロセッシング装備のプロセッサーに搭載されうるので、コンピュータまたはその他のプログラマブルデータプロセッシング装備のプロセッサーを通じて実行されるそのインストラクションがフローチャートのブロックで説明された機能を行う手段を生成するように機構を作れる。これらコンピュータプログラムインストラクションは特定方式で機能を具現するためにコンピュータまたはその他のプログラマブルデータプロセッシング装備を指向できるコンピュータ利用可能またはコンピュータ判読可能メモリに保存されることも可能なので、そのコンピュータ利用可能またはコンピュータ判読可能メモリに保存されたインストラクションはフローチャートのブロックで説明された機能を行うインストラクション手段を内包する製造品目を生産することも可能である。コンピュータプログラムインストラクションはコンピュータまたはその他のプログラム可能なデータプロセッシング装備上に搭載することも可能なので、コンピュータまたはその他のプログラマブルデータプロセッシング装備上で一連の動作段階が実行されてコンピュータで実行されるプロセスを生成し、コンピュータまたはその他のプログラマブルデータプロセッシング装備を行うインストラクションはフローチャートのブロックで説明された機能を実行するための段階を提供することも可能である。
【００２０】
また、各ブロックは特定の論理的機能を行うための一つ以上の実行可能なインストラクションを含むモジュール、セグメントまたはコードの一部を示すことができる。また、いくつの代替実行例では、ブロックで言及された機能が順序を外れて発生することも可能であるということに注目せねばならない。例えば、連続して図示されている２つのブロックは、実質的に同時に行われてもよく、またはそのブロックが時々該当する機能によって逆順に行われてもよい。
【００２１】
前記‘モジュール’は、ソフトウェアまたはＦＰＧＡ（フィールドプログラマブルゲートアレイ）または注文型半導体（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ；ＡＳＩＣ）のようなハードウェア構成要素を意味し、モジュールは所定の役割を行う。しかし、モジュールはソフトウェアまたはハードウェアに限定されるものではない。モジュールは、アドレッシング可能な保存媒体に存在すべく構成されても良く、１つまたはそれ以上のプロセッサーを実行させるように構成されても良い。したがって、一例としてモジュールは、ソフトウェア構成要素、客体指向ソフトウェア構成要素、クラス構成要素及びタスク構成要素のような構成要素と、プロセス、関数、属性、プロシージャ、サブルーチン、プログラムコードのセグメント、ドライバー、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ、及び変数を含む。構成要素とモジュールから提供される機能は、より少数の構成要素及びモジュールで結合されるか、追加的な構成要素とモジュールにさらに分離されうる。のみならず、構成要素及びモジュールは  通信システム内の１つまたはそれ以上のコンピュータを再生させるように具現されることもある。
【００２２】
本実施例で使われる“部”という用語、すなわち、“モジュール”あるいは“テーブル”はソフトウェアまたはＦＰＧＡまたはＡＳＩＣのようなハードウェア構成要素を意味し、モジュールは所定の役割を行う。しかし、モジュールはソフトウェアまたはハードウェアに限定されるものではない。モジュールはアドレッシングできる保存媒体に位置すべく構成されても良く、１つまたはそれ以上のプロセッサーを再生させるように構成されても良い。したがって、一例としてモジュールはソフトウェア構成要素、客体向けソフトウェア構成要素、クラス構成要素及びタスク構成要素のような構成要素と、プロセス、関数、属性、プロシージャー、サブルーチン、プログラムコードのセグメント、ドライバー、ファームウェア、マイクロコード、回路、データ、データベース、データ構造、テーブル、アレイ及び変数を含む。構成要素とモジュール内で提供される機能はより少数の構成要素及びモジュールに結合されるか、追加的な構成要素とモジュールにさらに分離されうる。のみならず、構成要素及びモジュールはディバイスまたは保安マルチメディアカード内の１つまたはそれ以上のＣＰＵを再生させるように具現されることもある。
【００２３】
図５は本発明の一実施形態によるデータ処理システムの構成を示す構成図である。
【００２４】
データ処理システム２００は、アプリケーション１００が要請するデータベース作業を処理する。
【００２５】
別途のデータ処理ロジックが存在してＳＱＬ文を別途に外部で管理しつつアプリケーション、データベーススキーマ、データ処理ロジック（ＳＱＬ）の変更にいずれも独立的な属性を達成できるように構成されている。
【００２６】
図５に示すように、データベースを処理するデータ処理コード２００がアプリケーション１００と分離されているので、互いに独立性を維持できる。一方、データ処理コード２００とデータベース３００とが分離されており、データ処理コード２００はＳＱＬ  １２０を利用し、連結管理部２１０を通じてデータベースと連動するので、互いに独立性を維持できる。
【００２７】
図６は本発明の一実施形態によるデータ処理システム内の各構成要素間の相互作用を示す図面である。設定画面インターフェース４００は、ＳＱＬ文及びこれらについての設定内容をＸＭＬファイルに保存できるようにユーザインターフェースを提供する。ジャバＳｗｉｎｇ、Ｃ＋＋などで開発可能である。インターフェースを通じて管理者はデータを連結し、パラメータを設定できる。また。統計生成如何、統計生成間隔、コンソールメッセージ出力のようなモニタリング関連パラメータを設定できる。また、一定時間活性化できる処理客体の数と同じ性能関連パラメータも設定できる。処理するＳＱＬ文を編集できる。
【００２８】
設定ＸＭＬファイルは外部に存在するために、それに対する保安（ｓｅｃｕｒｉｔｙ）方案が必要である。設定画面インターフェース４００内のＸＭＬ暗／復号処理部４５３は、設定画面インターフェースで設定した情報をＸＭＬに保存する前に暗号化する。ＸＭＬファイルに保存されるデータが前記設定事項をそのまま含む場合、外部でデータベースに関する内容を容易に分かり、また認証されていない変調が起きることができるために、データベースの処理においてエラーを防止するように暗号化、復号化を行う。ＸＭＬ暗／復号処理部４５３がなければＸＭＬファイルは未知のファイルで出力され、変更する場合にも、実際データ処理システム２００が認識できる形式で保存されないので、データベースの権限のない接近を回避できる。
【００２９】
ＸＭＬ暗／復号処理部４５３を具現する一実施形態では、ＪＣＥ（Ｊａｖａ（登録商標）ＣｒｙｐｔｏｇｒａｐｈｙＥｘｔｅｎｓｔｉｏｎ１．２）を使用し、ＤＥＳＡｌｇｏｒｉｔｈｍを利用した対称キー暗／復号化アルゴリズムを利用できる。その結果は以下の通りである。
【００３０】
＜ｂｅａｎｉｄ＝“ｃｏｎｆｉｇｉｎｆｏｂｅａｎ”ｃｌａｓｓ＝“ｃｏｍ．ｕｒｌ．ｉｎｆｒａ．ｃｏ．ｄａｏ．ＣｏｎｆｉｇＢｅａｎ”＞
＜ｐｒｏｐｅｒｔ  ｙｎａｍｅ＝“ｊｎｄｉ”＞
＜ｖａｌｕｅ＞ｈｐＺｉ８３ａＲｉ４Ｓａ＝＜／ｖａｌｕｅ＞
＜／ｐｒｏｐｅｒｔｙ＞
＜ｐｒｏｐｅｒｔｙ  ｎａｍｅ＝“ｄｂｓｅｒｖｅｒ”＞
＜ｖａｌｕｅ＞ＯＵｇｄｉ９ｇｊｄｌ２＝＜／ｖａｌｕｅ＞
＜／ｐｒｏｐｅｒｔｙ＞
＜ｐｒｏｐｅｒｔｙ  ｎａｍｅ＝“ａｕｄｉｔ”＞
＜ｖａｌｕｅ＞６Ｏａｍ９３ｇ２ＨＱ＝＜／ｖａｌｕｅ＞
＜／ｐｒｏｐｅｒｔｙ＞
＜ｐｒｏｐｅｒｔｙ  ｎａｍｅ＝“ａｕｄｉｔＩｎｔｅｒｖａｌ”＞
＜ｖａｌｕｅ＞ＵＦ９Ｑ０ｏ８ｇｋｆｕＰ＝＜／ｖａｌｕｅ＞
＜／ｐｒｏｐｅｒｔｙ＞
＜ｐｒｏｐｅｒｔｙ  ｎａｍｅ＝“ｐｒｉｎｔ”＞
＜ｖａｌｕｅ＞６ｍＯＰＨ２ｋｄｇ＝＜／ｖａｌｕｅ＞
＜／ｐｒｏｐｅｒｔｙ＞
＜ｐｒｏｐｅｒｔｙ  ｎａｍｅ＝“ｎｕｍＯｆＡｃｔｉｖｅＯｂｊｅｃｔｓ”＞
＜ｖａｌｕｅ＞１Ｙｋ９ｋｌｄＷＴｈｆｉ＝＜／ｖａｌｕｅ＞
＜／ｐｒｏｐｅｒｔｙ＞
設定値（ｖａｌｕｅ）はいずれも暗号化されている。したがって、ＸＭＬ暗／復号処理部４５３を利用せず、一般テキストエディタを利用して開く場合、設定値（ｖａｌｕｅ）はいずれも暗号化されて内容を把握できないようにする。
【００３１】
ＸＭＬファイル２５１は、前記設定事項及びＳＱＬ文をパラメータ化している。ＳＱＬ文をパラメータ化するためには、ＳＱＬ文それぞれに識別子（ｉｄ）を付与し、それについてのＳＱＬ文を併記することが一具現例になりうる。例えば、次のように構成できる。下の例は、識別の便宜のために暗号化していない平文でなるＸＭＬ文である。
【００３２】
＜ｓｑｌｄａｔａ＞
＜ｓｑｌｉｄ＞ｓｅｌｅｃｔ＿ａｄｄｒｅｓｓ＿ｂｙ＿ｎａｍｅ＜／ｓｑｌｉｄ＞
＜ｓｑｌｔｅｍｐｌａｔｅ＞ｓｅｌｅｃｔ  ａｄｄｒｅｓｓ  ｆｒｏｍ  ｐｅｒｓｏｎａｌ＿ｔａｂｌｅ  ｗｈｅｒｅ  ｎａｍｅ＝？＜／ｓｑｌｔｅｍｐｌａｔｅ＞
＜／ｓｑｌｄａｔａ＞
前記のように設定する場合、アプリケーションは、ｐｅｒｓｏｎａｌ＿ｔａｂｌｅから特定人のアドレス（ａｄｄｒｅｓｓ）を読み込むためには、ｓｅｌｅｃｔ＿ａｄｄｒｅｓｓ＿ｂｙ＿ｎａｍｅという識別子でＳＱＬ文を呼び出しうる。この時、特定人の名前（ｎａｍｅ）値を渡すためには、ＪＤＢＣのＰｒｅｐａｒｅｄ  Ｓｔａｔｅｍｅｎｔ形式によってＳＱＬ文を作成し、実際はランタイムにアプリケーションでその値を指定できる。
【００３３】
以後、データベースで名前についてのカラム名を‘ｎａｍｅ’から‘ｎａｍｅ＿ｖａｌ’に変えても、ＸＭＬファイルの内容のみ変えれば、アプリケーションを変える必要がなくなる。したがって、アプリケーションの独立が維持される。
【００３４】
データ処理システム２００は、次のように細分化される。ＸＭＬ処理部２５２は、ＸＭＬ設定ファイル内容をいずれもサーバにロードする。ジャバシステムの場合、スプリングフレームワークのビーンファクトリーという機能を使用して、ジャバビーン（Ｊａｖａ（登録商標）Ｂｅａｎ）化してサーバにロードする。ジャバビーン化すれば、一つのクラスで使用可能になる。その結果、サーバは前記ＸＭＬ設定情報を客体として利用できる。
【００３５】
ＸＭＬ暗／復号処理部２５３は、前述したように設定画面インターフェース４００で使われたＸＭＬ暗／復号処理部４５３のように、ＸＭＬファイルの設定情報を暗号化または復号化するモジュールである。ＸＭＬファイルは暗号化されて保存されているので、これを復号化して実行できるＳＱＬ文を得るようにする。
【００３６】
ＳＱＬ情報部２６０は、ＳＱＬ文で構成されており、サーバにキャッシュできる。この時、あらゆるサーバに共通に使われるために、メモリを節約するために全域情報（Ｇｌｏｂａｌ）にキャッシュできる。
【００３７】
客体プール２３０は、アプリケーションがデータベースに作業を要請する場合、この作業を処理する処理客体（プロセッシングオブジェクト）部を備える。
【００３８】
処理客体２３１は、ＳＱＬ処理部２２０を利用してデータベース３００と連結して作業を行い、結果を得る。
【００３９】
スケジューラ２４０は、外部システムがデータ処理システムに処理客体を要求する時、それを知能的にスケジューリングして割り当てる部分である。
【００４０】
スケジューラ２４０と客体プール２３０の処理客体２３１との相互動作については、後述する。
【００４１】
連結管理部２１０は、ＪＤＢＣのようにデータベースとの連結を提供するモジュールである。データベース連動のためのＡＰＩ（アプリケーションプログラミングインターフェース）を提供する。
【００４２】
ＳＱＬ処理部２２０は、クエリ（ｑｕｅｒｙ）を処理するためのインターフェース及び具現メソードが入っている部分である。
【００４３】
図６に例示されたデータ処理システム２００を通じて作業がなされる過程は次の通りである。
【００４４】
設定画面インターフェース４００を通じてデータベースの種類、連結方式、例えば、直接連結またはＪＮＤＩ（Ｊａｖａ（登録商標）  Ｎａｍｉｎｇ  ａｎｄ  Ｄｉｒｅｃｔｏｒｙ  Ｉｎｔｅｒｆａｃｅ）などを設定できる。そして、データベースと連動するためのパラメータであるドライブ名、ＵＲＬ、ＩＤ、パスワードなどを設定できる。それ以外にも、モニタリングのために統計出力如何、統計出力間隔、コンソールメッセージ出力如何を設定できる。前述したように客体プール２３０で生成される処理客体の数を設定でき、アプリケーションで使用できるクエリ文（ＳＱＬ文）をＸＭＬ内のパラメータとして保存できる。設定された事項は、ＸＭＬ暗／復号処理部４５３を通じてＸＭＬファイル２５１に保存される。
【００４５】
データ処理システム２００は、処理客体２３１を生成して外部アプリケーションのデータベース作業要請を処理する。この時、本発明の一実施形態による場合、処理客体は、システム全体で一つのみ生成していろいろなアプリケーションが共有できるように動作を始めることができる。これら処理客体については、図７で後述する。処理客体２３１がＸＭＬファイルを読み込めるように、ＸＭＬ処理部２５２は、ＸＭＬファイル２５１をオープンして読み込む。この時、ＳＱＬ文を含んでＸＭＬのあらゆる設定内容をジャバビーンに変換できる。このために、オープンソースフレームワークであるスプリングフレームワークのビーンファクトリーを一実施形態として適用できる。一般のパラメータ内容でロードする方式よりビーンでロードする場合、再使用性を向上させることができる。
【００４６】
ＸＭＬ暗／復号処理部２５３は、ＸＭＬに暗号化されている内容を復号化して元来の設定内容を読み込む。そして、ＳＱＬ情報部２６０は、ＳＱＬ関連情報を抽出してサーバにロードする。この時、ジャバｃｏｌｌｅｃｔｉｏｎ客体のマップを構築できる。
【００４７】
データ処理システム２００は、クエリについての識別子を以ってＳＱＬ文を探すことができる。
【００４８】
アプリケーション１００は、データ処理のためにデータ処理システム２００に処理客体を要求する。スケジューリング部２４０では、可用の処理客体に関する情報をアプリケーション１００に伝達する。アプリケーション１００は、所定の作業を果たすためにデータ処理を要請する。この時、アプリケーション１００はＳＱＬ文を直接入力するものではなく、実行または処理しようとするクエリＩＤ（識別子）を処理客体２３１に伝達する。例えば、アドレステーブルで特定人のアドレスを探すために、ｓｅｌｅｃｔ＿ａｄｄｒｅｓｓ＿ｂｙ＿ｎａｍｅ及び特定人の名前を伝達できる。データ処理システム２００は、該当クエリ識別子がいかなるクエリ文であるかに関する情報を管理するので、該当するＳＱＬ文を探して行うことができる。したがって、アプリケーション１００は、ＳＱＬ文が変わってもコードを変える必要がない。該当クエリＩＤ（識別子）が同じ場合にはそのコードをそのまま使用できる。したがって、アプリケーション１００がＳＱＬ文変換に独立的に存在する。
【００４９】
さらに、クエリを探す場合、該当クエリに関する統計を生成できる。アプリケーションが要請したクエリは、処理客体２３１が連結管理部２１０を通じてＳＱＬ処理部２２０が処理する。
【００５０】
連結管理部２１０は、ＪＤＢＣ標準インターフェースと同じインターフェースを利用してデータベース処理を担当する。そして、処理された結果を処理客体２３１に伝達し、アプリケーション１００は、処理客体２３１から結果を伝達される。
【００５１】
処理客体はデータベースにクエリを伝達し、そのクエリの結果を受信する。したがって、データベースと連結されねばならない。ところが、実際データベースとの連結にかかる時間が、クエリを伝達してそのクエリの結果を受信するのにかかる時間より長い。したがって、コネクションを維持するように処理客体を構成する必要がある。したがって、コネクションよりプーリングの単位を高めたオブジェクトプール方式を使用して、あらかじめコネクション及び処理客体を確保した状態で、アプリケーションに処理客体を割り当てる方式を提供できる。
【００５２】
一方、データベースとコネクションを結ぶ時間以外にも、コンテキストスイッチングする時間も長くかかる。したがって、コンテキストスイッチングを減らすために、以前要請者が再び作業スレッドを割り当てるようにする。スケジューラ２４０は、以前要請者に関する情報を保持して、該当要請者が最も最近に使用した客体を割り当てるようにすることができる。図６では、ＳＱＬ処理部２２０をデータ処理システム２００の外部に置いているが、これは一実施形態であり、ＳＱＬ処理部２２０は、具現によってデータ処理システム２００の内部に置くことができる。
【００５３】
図７は本発明の一実施形態によるスケジューラ処理客体を選択してアプリケーションのデータベース作業要請を処理する過程を示す例示図である。
【００５４】
アプリケーション１０１がスケジューラ２４０に、データベース作業を処理できるように処理客体を割り当てることを要請する。スケジューラ２４０は、アプリケーション１０１のデータベース作業を以前に行った処理客体をアプリケーションに割り当てる。これは、コンテキストスイッチングを防止するためである。そのための実施形態としては、処理客体を一つのみ生成して、この処理客体がＮ個のアプリケーションのデータベース作業処理を行うようにする。そして、処理客体が処理できる限界に到達すれば、新たな処理客体を生成して他のアプリケーションの作業処理は新たな処理客体に割り当てるように設定できる。
【００５５】
例えば、処理客体２３２が２個のアプリケーション１０１、１０２のデータベース処理作業の実行中に第３アプリケーション１０３がデータベース作業の処理を要請する場合、スケジューラ２４０は、他の処理客体２３３を割り当てることができる。そして、以後にアプリケーション１０３のデータベース処理要請は、処理客体２３３が作業できるようにスケジューラ２４０が割り当てる。
【００５６】
図８は本発明の一実施形態によるＸＭＬファイルに保存されたＳＱＬ文及び識別情報を使用してデータベースに作業を要請する過程を示すフローチャートである。
【００５７】
システムは、ＸＭＬファイルの各構成要素を分析してＳＱＬ文についての識別情報及びＳＱＬ文を抽出する（Ｓ４０１）。この場合、構成要素が暗号化されているか、またはＸＭＬファイル自体が暗号化されている場合、それを復号化できる（Ｓ４０２）。そして、抽出したＳＱＬ文についての識別情報及びＳＱＬ文を記憶装置にロードする（Ｓ４０３）。この過程でジャバシステムを使用する場合、ジャバビーンに変更して記憶装置にロードできる。ロードした後には処理客体部を生成して、アプリケーションからデータベースに対する作業要請を処理させる。
【００５８】
アプリケーションから作業要請があるまで、システムは待機状態に存在できる（Ｓ４１０）。待機中、アプリケーションからＳＱＬ文についての識別情報を受信すれば、それを処理客体部に伝達する（Ｓ４１１）。前述したように、スケジューラがアプリケーションに関する情報を保持して、以前にいかなる処理客体部が該当アプリケーションのデータベース作業要請を処理したかを検索する。検索結果、該当処理客体部に識別情報を伝達する。これは、前述したコンテキストスイッチングにかかる時間を短縮するためである。処理客体部は、Ｓ４０３段階でロードした情報に基づいていかなるＳＱＬ文を要請するかを検索する。そして、該当ＳＱＬ文をデータベースに送信してデータベース作業を処理することを要請する（Ｓ４１２）。そして、処理客体部は、データベースから処理結果を受信する（Ｓ４２０）。この時、処理結果としては、テーブルのレコードで構成されるか、またはデータベースについて処理した結果、成敗の如何など、多様でありえる。処理客体部は、受信した処理結果をアプリケーションに送信する（Ｓ４２１）。今後、該当アプリケーションでデータベースに対する作業を要請すれば、スケジューラは該当処理客体部にＳＱＬ文の識別情報を伝達できる。
【００５９】
図９は従来の方法及び本発明の実施形態を適用した場合の性能向上を示す図面である。
【００６０】
性能テストのためにデータベースベンチマークプログラムであるＡＳ３ＡＰ（ＡＮＳＩ  ＳＱＬ  Ｓｔａｎｄａｒｄ  Ｓｃａｌａｂｌｅ  ａｎｄ  Ｐｏｒｔａｂｌｅ  Ｂｅｎｃｈｍａｒｋ）を適用した。本発明を利用すれば、ソフトウェアの独立性は向上する一方、性能低下が発生できる。しかし、コネクションよりプールの単位を高めたオブジェクトプール方式と、先立ちコンテキストスイッチングを減らすように処理客体をスケジューリングする方式、ＳＱＬ  Ｒｅｓｕｌｔ  ＳｅｔのＲｏｗ及びＣｏｌｕｍｎを、それぞれ処理速度が速くて軽いジャバのＡｒｒａｙＬｉｓｔ及びＯｂｊｅｃｔ［］で選択することによって、性能低下を挽回できる。
【００６１】
図９に示すように、Ｓ０の場合に応答時間が従来の方式より短くて性能が向上することが分かる。その他の場合は、応答時間が従来の方式と比較して短いかまたは類似したレベルである。しかし、その他の場合は、応答時間自体が従来の場合にも短いために、最も応答時間が長くかかるＳ０を中心に比較する時、性能がかえって向上することが分かる。
【００６２】
図１０は従来の方法及び本発明の実施形態を適用した場合の性能向上を示すさらに他の図面である。
【００６３】
スレッドの数が増加する場合、処理速度を調べれば、本発明を選択的に適用した場合、スレッドが増加しても秒当たり処理する作業数があまり減少していないことが分かる。
【産業上の利用可能性】
【００６４】
本発明は、ソフトウェアモジュールの独立性を保障するデータベースアプリケーションを具現するシステムの関連技術分野に好適に用いられる。
【００６５】
本発明が属する技術分野で当業者ならば本発明がその技術的思想や必須特徴を変更せずとも他の具体的な形に実施されうるということが理解できるであろう。したがって、前述した実施例はあらゆる面で例示的なものであり、限定的なものと理解してはならない。本発明の範囲は前述した詳細な説明よりは特許請求の範囲によって現れ、特許請求の範囲の意味及び範囲、そしてその均等概念から導かれるあらゆる変更または変形された形が本発明の範囲に含まれると解釈せねばならない。
【図面の簡単な説明】
【００６６】
【図１】データベースを構成するソフトウェアでデータを処理するモジュールの構成を示す構成図である。
【図２】アプリケーションコード内にデータ処理のためにＪＤＢＣを使用し、ＳＱＬ文がハードコーディングされている場合を示す構成図である。
【図３】アプリケーションコード内にデータ処理のためにＪＤＢＣを使用するが、ＳＱＬ文は別途に分離された場合を示す図である。
【図４】別途のデータ処理コードがアプリケーションコードと分離されて存在する場合の図である。
【図５】本発明の一実施形態によるデータ処理システムの構成を示す構成図である。
【図６】本発明の一実施形態によるデータ処理システム内の各構成要素間の相互作用を示す図である。
【図７】本発明の一実施形態によるスケジューラ処理客体を選択してアプリケーションのデータベース作業要請を処理する過程を示す例示図である。
【図８】本発明の一実施形態によるＸＭＬファイルに保存されたＳＱＬ文及び識別情報を使用してデータベースに作業を要請する過程を示すフローチャートである。
【図９】従来の方法及び本発明の実施形態を適用した場合の性能向上を示す図である。
【図１０】従来の方法及び本発明の実施形態を適用した場合の性能向上を示すさらに他の図である。
【符号の説明】
【００６７】
１００、１０１、１０２、１０３      アプリケーション
２００      データ処理システム
２２０      ＳＱＬ文
２３１      処理客体
２４０      スケジューラ
２５１      ＸＭＬファイル
【図１】
2006344213.tif 000004
【図２】
2006344213.tif 000005
【図３】
2006344213.tif 000006
【図４】
2006344213.tif 000007
【図５】
2006344213.tif 000008
【図６】
2006344213.tif 000009
【図７】
2006344213.tif 000010
【図８】
2006344213.tif 000011
【図９】
2006344213.tif 000012
【図１０】
2006344213.tif 000013