明 細 害
デ一夕ベース操作装截およびその方法 技術分野
本発明は、 デ一夕ベースなどに対する接銃を制御する接銑制御装笸およ びその方法に閼する。 觜景技術
デ一夕を保存し、 多くのユーザの間で共用するために、 情報処理の様々 な分野において、 デ一夕ベースが利用されている。
データベースの操作のためには、 I B M社により開発された S Q L
(Structured Query Language)が、 現在、 一般的に用いられている。
S Q L記述されたプログラムを解析し、 デ一夕の記惚,検索などを行う システムとして、 D B M S (Data Base Management System)が知られている。
S Q Lおよび D B M Sの応用製品は、 l tp:〃 www, microsoi t. com/sd/な ど、 傑々な文献に關示されている。
また、 例えば、 ht tp://www, microsoifc. com/jaoaa/com/coinpres. aspil^ マイクロソフト社により開発され、 データペースの操作をサポートする C OM + を開示する
データベースの操作は、 現在、 一般的に、 その処理を、 ユーザイン夕一 フェースを提供する U I層と、 ビジネスのための機能などを提供するアプリケ一 シヨン層と、 データベースへのアクセス機能を提供するデータ層とに分けて行う ことにより案現されている。
このように, その操作を、 3つの階層に機能分担させて実現するデータ ペースは、 3階層システムなどとも呼ばれる。
しかしながら、 この 3階層データペースにおいては、 アプリケーション J1のプログラミングが煩雑になりやすく、 その工数も多く必要とされる傾向にあ る。
上述した C O M +は、 3階屑データベースに適応され、 各階屑の独立性
を高めて、 そのプログラミングを容易にする。
しかしながら、 C O M +を用いると、 各階層の独立性が高くなるので、 却って、 作成されたプログラムの全階層を通じたデバッグが難しくなる傾向があ り、 従って、 製品出荷後のメンテナンスも難しくなる傾向がある。
[非特許文献 1 ] ht tp : //www. mi crosof t, com/sal/
[非特許文献 2 ] t tp : //www. microsof t, com/j apan/com/com res. asp 発明の開示
本発明は、 上述のような背景からなされたものであり、 操作のためのプ ログラミングが容易なデータべ一ス操作装置お びその方法を提供することを目 的とする。
また、 本発明は、 操作のためのプログラムのデバッグおよびメンテナン スが容易なデータべ一ス操作装置およびその方法を提供することを目的とする。
上記目的を達成するために、 本発明にかかるデータベース操作装置は、 複数の階層に分かれた処理により、 デ一夕ベースを操作するデー夕べ一ス操作装 置であって、 前記処理は、 他の階層の処理を起動する起動処理、 および、 前記起 動処理により起動される被起動処理またはこれらのいずれかであって、 前記被起 動処理の 1つ以上は、 前記データベースに対する操作を行うデータベース操作処 理であって、 1つ以上の前記起動処理を含む処理集合を定義する集合定義手段と 、 前記処理集合に含まれる起動処理の進行と、 前記処理集合に含まれる起動処理 により起動されたデータベース操作処理の処理結果とに基づいて、 少なくとも、 このデータベース操作処理による前記デー夕べ一スに対する操作の内容を制御す る処理制御手段とを有する。
好適には、 前記階層は、 3つ以上に分かれ、 前記処理制御手段は、 前記 処理集合に含まれる起動処理の進行と、 前記処理集合に含まれる起動処理により 起動されたデータベース操作処理以外の被起動処理の処理結果とに応じて、 前記 データべ—ス操作処理以外の被起動処理の処理内容を、 さらに制御する。 好適には、 1つ以上の前記データベース操作処理を含むライブラリ手段
をさらに有し、 前記データベース操作処理を起動する起動処理は、 前記ライブラ リ手段に含まれる前記データベース操作処理を起動する。
好適には、 前記処理集合それぞれに対して、 この処理集合に含まれる起 動処理、 および、 この処理集合に含まれる起動処理により起動される被起動処理 のための記憶領域を設定する記憶領域設定手段と、 前記処理集合それぞれに含ま れる処理のために用いられるデータを、 前記処理集合それぞれに対して設定され た記憶領域において管理するデー夕管理手段とをさらに有する。
好適には、 前記被起動処理それぞれは、 この被起動処理を起動した起動 処理に対して、 処理の結果を示す戻り値を返し、 前記階層は、 インタ一フェース 層と、 アプリケーション層と、 データベース層とを含み、 前記インタ一フェース 層は、 前記起動処理として、 外部からの操作に応じて、 前記アプリケーション層 に含まれる被起動処理を起動し、 起動した被起動処理から返された戻り値に応じ た処理を行うュ一ザインターフェース処理、 1つ以上を含み、 前記アプリケーシ ヨン層は、 前記起動処理および前記被起動処理として、 前記インタ一フエ一ス処 理により起動され、 前記データべ一ス層に含まれるデータベース操作処理を 1つ 以上、 起動し、 前記起動されたデータベース操作処理からの戻り値に基づいて、 前記データべ一スを用いたサービスを実現し、 前記戻り値として、 このサービス の結果を、 前記ユーザインターフェース処理に返すアプリケーション処理、 1つ 以上を含み、 データベース層は、 前記データベース操作処理として、 前記アプリ ケ一シヨン処理により起動され、 前記データベースに対する操作を行い、 前記戻 り値として、 このデ一タベースに対する操作の結果を、 前記アプリケーション処 理に返すデータベース操作処理、 1つ以上を含む。
好適には、 前記処理制御手段は、 前記処理集合に含まれる前記アプリケ ーシヨン処理により、 前記データベース操作処理が、 最初に起動されたときに、 前記起動されたデータベース操作処理と、 前記データベースとを接続し、 前記処 理集合に含まれる前記アプリケ一ション処理により、 最後に起動された前記デ一 タベース操作処理が終了したとき、 または、 前記デ一夕ベース操作処理が失敗し たときに、 前記起動されたデ一夕べ一ス操作処理と、 前記データベースとを切断 するように、 前記データベース操作処理の実行を制御する。
好適には、 前記処理制御手段は、 前記処理集合に含まれる前記アプリケ —シヨン処理により、 最後に起動された前記データベース操作処理が成功したと きに、 前記処理集合に含まれる前記アプリケーション処理により起動された前記 データべ—ス操作処理の結果を、 前記デ一夕ベースにおいて確定させ、 これ以外 のときには、 前記データベースを、 前記処理集合に含まれる前記アプリケ一ショ ン処理により、 前記データベース操作処理が最初に起動される前の状態に戻す。
好適には、 前記処理制御手段は、 前記処理集合に含まれる前記アプリケ ーシヨン処理により起動された前記データベース操作処理が失敗したときに、 前 記データベースを、 前記処理集合に含まれる前記アプリケーション処理により、 前記データベース操作処理が最初に起動される前の状態に戻す。
また、 本発明にかかる情報処理装置は、 複数の階層に分かれた処理によ り、 所定の情報処理を行う情報処理装置であって、 前記処理は、 他の階層の処理 を起動する起動処理、 および、 前記起動処理により起動される被起動処理または これらのいずれかであって、 1つ以上の前記起動処理を含む処理集合を定義する 集合定義手段と、 前記処理集合に含まれる起動処理の進行と、 前記処理集合に含 まれる起動処理により起動された被起動処理の処理結果とに応じて、 この被起動 処理の処理内容を制御する処理内容制御手段とを有する。
また、 本発明にかかるデータベース操作方法は、 複数の階層に分かれた 処理により、 データべ一スを操作するデータべ一ス操作方法であって、 前記処理 は、 他の階層の処理を起動する起動処理、 および、 前記起動処理により起動され る被起動処理またはこれらのいずれかであって、 前記被起動処理の 1つ以上は、 前記デ一夕べ一スに対する操作を行うデータべ一ス操作処理であって、 1つ以上 の前記起動処理を含む処理集合を定義する定義ステップと、 前記処理集合に含ま れる起動処理の進行と、 前記処理集合に含まれる起動処理により起動されたデー 夕べ一ス操作処理の処理結果とに基づいて、 少なくとも、 このデータベース操作 処理による前記デ一夕ベースに対する操作の内容を制御する処理制御ステップと を含む。
また、 本発明にかかる情報処理方法は、 複数の階層に分かれた処理によ り、 所定の情報処理を行う情報処理方法であって、 前記処理は、 他の階層の処理
を起動する起動処理、 および、 前記起動処理により起動される被起動処理または これらのいずれかであって、 1つ以上の前記起動処理を含む処理集合を定義する 集合定義ステップと、 前記処理集合に含まれる起動処理の進行と、 前記処理集合 に含まれる起動処理により起動された被起動処理の処理結果とに応じて、 この被 起動処理の処理内容を制御する処理内容制御ステップとを含む。
また、 本発明にかかる第 1のプログラムは、 複数の階層に分かれた処理 により、 データベースを操作するデータべ一ス操作装置のプログラムであって、 前記処理は、 他の階層の処理を起動する起動処理、 および、 前記起動処理により 起動される被起動処理またはこれらのいずれかであって、 前記被起動処理の 1つ 以上は、 前記データベースに対する操作を行うデータベース操作処理であって、 1.つ以上の前記起動処理を含む処理集合を定義する集合定義ステップと、 前.記処 理集合に含まれる起動処理の進行と、 前記処理集合に含まれる起動処理により起 動されたデータベース操作処理の処理結果とに基づいて、 少なくとも、 このデー 夕ベース操作処理による前記データベースに対する操作の内容を制御する処理制 御ステップとをコンピュータに実行させる。
また、 本発明にかかる第 2のプログラムは、 複数の階層に分かれた処理 により、 所定の情報処理を行う情報処理装置のプログラムであって、 前記処理は 、 他の階層の処理を起動する起動処理、 および、 前記起動処理により起動される 被起動処理またはこれらのいずれかであって、 1つ以上の前記起動処理を含む処 理集合を定義する集合定義ステップと、 前記処理集合に含まれる起動処理の進行 と、 前記処理集合に含まれる起動処理により起動された被起動処理の処理結果と に応じて、 この被起動処理の処理内容を制御する処理内容制御ステップとをコン ピュー夕に実行させる。
本発明によれば、 操作のためのプログラミングが容易なデータべ一ス操 作装置およびその方法が提供される。
また、 本発明によれば、 操作のためのプログラムのデバッグおよびメン テナンスが容易なデータベース操作装置およびその方法が提供される。 図面の簡単な説明
図 1は、 S Q L (Struc tured Query Language)により記述されたデータべ —ス操作用のプログラムの第 1の例を、 リスト形式で示す図である。
図 2は、 S Q Lにより記述されたデータベース操作用のプログラムの第 2の例を、 リスト形式で示す図である。
図 3は、 図 2に示したデータベース操作用のプログラムの処理 (S 1 0
) を示すフローチャートである。
図 4は、 図 2に示したデータベース操作用のプログラムの処理を、 概念 的に示す図である。
図 5は、 S Q Lにより記述されたデ一夕ベース操作用のプログラムの第 3の例を、 リスト形式で示す図である。
図 6は、 図 5に例示したプログラムに対するデバッグ作業の困難さを説 明する図である。
図 7は、 本発明にかかるデ一夕ベース操作方法が適用されるネットヮー クシステムの構成を例示する図である。
図 8は、 図 7に示したサーバ、 開発 ·操作用 P Cおよびクライアント P
Cのハードウェア構成を例示する図である。
図 9は、 図 7に示したサーバにおいて実行されるサーバプログラムの構 成を示す図である。
図 1 0は、 図 7に示した開発 ·操作用 P Cにおいて実行される開発 -制 御用プログラムの構成を示す図である。
図 1 1は、 図 1 0に示したプログラム開発支援部などにより作成される 制御プログラムの例を、 リスト形式で示す図である。
図 1 2は、 図 1 1に示した制御プログラムの処理 (S 1 2 ) を示すフロ —チャートである。
図 1 3は、 図 1 1に示した制御プログラムの処理およびその実行管理を
、 概念的に示す図である。
図 1 4は、 図 1 0に示した開発 ·制御用プログラムのプログラム実行制 御部による制御プログラム (図 1 1〜図 1 3 ) の処理の実行の制御 (S 2 0 ) を 示すフローチャートである。
図 1 5は、 開発 ·制御用プログラム (図 1 0 ) による制御プログラムに 対するデバッグの容易さを説明する図である。
図 1 6は、 各階層に複数のトランザクションを含む制御プログラムを例 示する図である。 発明を実施するための最良の形態
[本発明がなされるに至った背景]
本発明の理解を容易にするために、 まず、 本発明がなされるに至った背 景を、 さらに説明する。
一般に、 デ一夕ベースの操作のためには、 ュ一ザからの操作を受け入れ
、 処理結果をユーザに表示するユーザインターフェース機能と、 ユーザの操作に 応じて、 デ一夕ベースを操作し、 様々なサービスをユーザに提供するアプリケ一 シヨン機能と、 実際にデータベース (D B M S ) に対するアクセスを行うデータ ベース機能とが必要とされる。
図 1は、 S Q L (St ruc tured Query Language)により記述されたデータべ
—ス操作用のプログラムの第 1の例を、 リスト形式で示す図である
例えば、 図 1にリストとして示すように、 これら 3つの機能を階層分け せずに実現することも可能である。
つまり、 図 1に示すプログラムは、 以下のように、 デ一夕ベースに対す る操作を行うように記述されている。
まず、 ュ一ザによる操作があるたびに、 まず、 データベース (D B ) へ の接続が行なわれ、 トランザクションが開始される。
次に、 トランザクションが開始され、 さらに、 データベースに対する必 要な操作が、 順次、 行われる。
データベースに対する操作が終了すると、 最後に、 トランザクションに おいて、 データベースに生じた変更内容などが確定 (コミット) され、 データべ ースへの接続が終了される。
しかしながら、 階層分けせずにプログラムを記述すると、 ユーザによる 操作および提供されるサービスの組み合わせの全てについて、 図 1に例示したよ
うなプログラムを作成しなければならない。
従って、 階層分けせずにプログラムを記述すると、 プログラムの量が多 くなる上に、 システムとしての構成が柔軟性を欠き、 また、 プログラムモジュ一 ル (関数) のコンポーネント化が難しいので、 機能の変更 ·追加などがしにくい このような理由から、 現在では、 データベースの操作のためのプロダラ ムは、 ユーザインターフェースを実現するュ一ザインタ一フェース層 (U I層) 、 デ一夕ベースを応用した様々なサービスを提供するアプリケーション層 (AP 層) 、 および、 実際にデータベースに対する操作を行うデータベース層 (DB層 ) に分けられた形式で作成されるようになっている。
図 2は、 S Q Lにより記述されたデ一夕ベース操作用のプログラムの第 2の例を、 リスト形式で示す図である
図 3は、 図 2に示したデータベース操作用のプログラムの処理 (S 10 ) を示すフローチャートである。
図 4は、 図 2に示したデータベース操作用のプログラムの処理を、 概念 的に示す図である。
図 2〜図 4に示すように、 ユーザィンターフェース層のプログラムの処 理において、 コンピュータなどの画面に表示されたユーザィンターフェース画像 内 (図示せず) の 「ポタン 5 (buUon5)」 に対するユーザによるクリックが検出 されると、 アプリケーション層のプログラムが起動される (S 100, S 102 J図 3) 。
アプリケーション層の処理において、 まず、 データべ一スへの接続が行 われ、 データベースがオープンされて、 トランザクションが開始される (S 10 4 ;図 3) 。
次に、 サービスの提供のために、 データべ一スに対する操作 (DB操作
# 1, #2) が、 順次、 実行され、 これらの処理が実行されるたびに、 データべ ース層のプログラムが起動される (S 106, S 108 ;図 3) 。
アプリケーション層の処理は、 全てのデータべ一スに対する操作が成功 したときには、 データベースにおける操作結果を確定 (コミット) し、 データべ
ースへの接続を終了 (クローズ) し、 処理結果および戻り値を、 ュ一ザインター フエ一ス層の処理に返す (S 1 1 0 , S 1 1 2 ;図 3 ) 。
アプリケーション層の処理は、 これ以外のときには、 データベースに対 する操作を取り消して内容を復元 (ロールバック) する (S 1 1 4 ;図 3 ) 。
最後に、 アプリケーション層の処理は、 デ一夕ベースへの接続を終了 ( クローズ) し、 処理結果および戻り値を、 ユーザインターフェース層の処理に返 す (S 1 1 6 ;図 3 ) 。
ユーザィンターフェース層の処理により、 アプリケーション層の処理結 果がュ一ザに示される。
図 2に例示したように、 データべ一スに対する操作を、 ユーザインター フェース層と、 アプリケーション層と、 データベース層とに分けてプロダラミン グすると、 プログラムモジュールのコンポーネント化が容易になるので、 図 1に 例示したように階層分けせずにプログラミングする場合に比べて、 機能の変更 · 追加などが容易になる。
しかしながら、 図 2に例示した場合には、 データベースへの接続と、 ト ランザクシヨンの管理とを共通とするためには、 アプリケーション層の処理にお いて、 デ一夕ベースへの接続のためのオブジェクト (con) 、 および、 卜ランザ クシヨンのためのオブジェクト (txのこと) を作成しなければならない。
作成されたこれら 2つのオブジェクトは、 引数として、 データベース層 の処理を実現するプログラムモジュールの呼び出しごとに、 毎回、 渡されること となる。
また、 これら 2つのオブジェクトは、 データベース層において、 データ ベースを実際に操作する処理のプログラムモジュールに対してばかりではかく、 デ—夕べ—スを操作しない処理のプログラムモジュールに対しても、 引数として 渡さなければならないので、 アプリケーション層のプログラミングが煩雑になる 傾向がある (ただし、 ここで述べたデータベースを操作しない処理のプログラム モジュールは、 図 2に示したリストには含まれない。 アプリケーション層にサブ ルーチンを作成し、 その中からデ一夕べ一ス層を呼ぶときに、 そのサブルーチン では con, t Xを使わないにもかかわらず、 下位のデータベース層に引き渡すた
めだけに、 引数を二つ付加しなければならいない。 このような引数の付加は、 こ れはサブルーチンが増えると、 かなりの手間となる) 。
引数を渡さなくてもよいように、 データベース層の処理を実現するプロ グラムモジュールを作成することも可能であるが、 この場合には、 プログラムモ ジュールの機能を引数によって変更することができないので、 データべ一ス層に 、 機能が少しずつ異なるプログラムモジュールを、 数多く作成する必要が生じる 従って、 この場合には、 デ一夕べ一ス層におけるプログラミングの工数 が増えたり、 作成されたプログラムのデバッグおよびメンテナンスのために、 多 くの手間が必要となったりする。
データべ—ス層のプログラムモジュールをコンポーネント化するために
、 マイクロソフト社のオペレーティングシステム W i n d o w s (登録商標) に は、 C O M +と呼ばれる機能が付加されている。
図 5は、 S Q Lにより記述されたデータベース操作用のプログラムの第 3の例を、 リスト形式で示す図である
C O M +を利用して、 図 2に示したものと同様のプログラムを作成する と、 図 5に例示する通りとなる。
図 5に例示するように、 ユーザィンターフェ一ス層のプログラムの処理 において、 「ポタン 5」 に対するタリックが検出されると、 アプリケーション層 のプログラムが起動される。
アプリケーション層の処理において、 まず、 トランザクションの動作を 指定する属性が指定され、 サービスの提供のために、 データベースに対する操作 (D B操作 # 1, # 2 ) が、 順次、 実行され、 これらの処理が実行されるたびに 、 デ一夕ベース層のプログラムが起動される。
起動されたデ一夕べ一ス層の処理結果は、 戻り値としてアプリケ一ショ ン層に返され、 アプリケーション層の処理結果および戻り値は、 ュ一ザイン夕一 フェース層の処理に返される。
ユーザィンターフェース層の処理により、 アプリケ一ション層の処理結 果がユーザに示される。
このように、 C O M +を利用すると、 アプリケーション層に対するデー 夕べ一ス層のプログラムモジュールの独立性が高まる。
また、 アプリケーション層から、 データベース層のプログラムモジュールそれ ぞれに、 引数を渡す必要がなくなるので、 プログラミングの内容がシンプルにな る。
しかしながら、 C O M +を利用したプログラミングを行うプログラマは 、 当然ながら、 C O M +特有の仕様を学習し、 その利用法に習熟しなければなら ならないので、 そのために、 多くの手間と時間が必要となる。
図 6は、 図 5に例示したプログラムに対するデバッグ作業の困難さを説 明する図である。
また、 図 5に例示したユーザインターフェース層の処理は、 一般的な S Q L処理方式に従って実行されるのに対し、 アプリケーション層およびデータべ —ス層の処理は、 C O M +特有の処理方式に従って実行される。
図 6に示すユーザインターフェース (U I ) 層の処理を実現するプロセ スが動作しており、 デバッガをアタッチして、 デバッグを行うことができたとし ても、 アプリケーション層およびデータベース層のプロセスは、 これらが起動さ れない限り存在しないことがあるので、 デバッガをアタッチすることができると は限らない。
従って、 ュ一ザインターフェース層、 アプリケーション層およびデータ ベース層を通したプログラムの動作確認およびデバッグを行うためには、 例えば 、 ュ一ザインタ一フエ一ス層のプロセスにおいて、 アプリケーション層のプログ ラムを起動する処理にブレークポイントを設定し、 その実行を停止してから、 起 動されたアプリケーション層のプロセスに対して、 別途、 デバッガをアタッチし 、 デバッグを行うようにしなければならない。
従って、 この場合には、 C O M +を採用しない場合に比べても、 プログ ラムのデバッグおよびメンテナンスに、 却って多くの手間と時間とが必要となり かねない。
本発明は、 以上説明した背景からなされたものであって、 本発明の実施 形態によると、 ここまでに背景として述べた方式の不利な点が全て解消される。
なお、 以下に説明する本発明の実施形態は、 例示であって、 本発明の技 術範囲の限定を意図するものではない。
また、 以下に説明する本発明の実施形態の構成部分における機能分担は 、 固定的ではなく、 1つの構成部分の機能が、 複数の構成部分に分散されたり、 複数の構成部分の機能が、 1つの構成部分に集約されたりしうる。
[実施形態]
以下、 本発明の実施形態を説明する。
図 7は、 本発明にかかるデータべ一ス操作方法が適用されるネットヮ一 クシステム 1の構成を例示する図である。
図 7に示すように、 ネットワークシステム 1は、 サーバシステム 2およ びクライアントコンピュータ (クライアント PC) 102—:!〜 102— nとが 、 LAN, WANあるいはインタ一ネットなどのネットワーク 100を介して接 続された構成を採る。
サーバシステム 2は、 サ一パ 3と開発 '操作用 P C 4とが、 LAN 20 を介して接続された構成を採る。
ネットワークシステム 1において、 サーバシステム 2は、 例えば、 デ一 夕ベースを利用した We bサーバとしての機能を有し、 クライアント PC 102 — 1〜102_nに対して、 様々なサービスを提供する。
なお、 以下、 クライアント PC 102— 1〜 102— nなど、 複数ある 構成部分は、 単にクライアント PC 102などと略記されることがある。
また、 ネットワークシステム 1の各構成部分を、 ノードと記すことがあ る。
図 8は、 図 7に示したサーバ 3、 開発 ·操作用 PC 4およびクライアン ト PC 102のハードウェア構成を例示する図である。
図 8に示すように、 サーバ 3、 開発,操作用 P C 4およびクライアント PC 102は、 CPU122、 メモリ 124およびこれらの周辺回路などを含む コンピュータ本体 120、 表示装置、 キーボードおよびマウスなどを含む入力 · 出力装置 126、 FD、 CDおよび HDなどの記録媒体 130に対してデータを
記録 '再生する記録装置 128、· および、 ネットワーク 100 (図 7) を介して 他のノードと通信を行う通信装置 132などから構成される。
つまり、 サーバ 3、 開発 '操作用 P C 4およびクライアント P C 102 は、 ネットワーク 100あるいは LAN 20を介して、 他のノードとの間で通信 を行うことができる一般的なコンピュータとしての構成部分を有する。
図 9は、 図 7に示したサーバ 3において実行されるサーバプログラム 3 0の構成を示す図である。
図 9に示すように、 サーバプログラム 30は、 データベース部 300、 データべ—ス管理システム部 (DBMS) 302およびサービス提供部 304か ら構成される。
サーバプログラム 30は、 例えば、 記録媒体 130を介してサーバ 3に 供給され、 メモリ 124 (図 8) にロードされて実行される (以下のプログラム について同様) 。
サーバプログラム 30は、 これらの構成部分により、 開発 ·操作用 PC 4の制御にしたって、 クライアント PC 102 (図 7) に対して、 様々なサービ スを提供する。
サーバプログラム 30において、 DBMS 302は、 開発 '操作用 P C 4からの制御に従って、 データべ一ス部 300を操作して、 ザ一ビス提供部 30 4から入力されるデ一夕をデ一夕ベース部 300に記憶する。
また、 DBMS 302は、 データベース部 300を操作して、 データべ ース部 300に記憶したデータを読み出し、 サービス提供部 304に対して出力 する。
データベース部 300は、 DBMS 302による操作に従って、 DBM S 302から入力されるデータを記憶し、 また、 記憶したデータを DBMS 30 2に対して出力する。
つまり、 データベース部 300および DBMS 302は、 上述したデー 夕ベース層の処理を行い、 サービス提供部 304に対して、 データベースの機能 を提供する。
サービス提供部 304は、 開発 '操作用 PC 4からの制御に従って、 ク
ライアント P C 1 0 2などに対するサービス、 例えば、 データべ一スサ一バある いは W e bサーバとしてのサービスを実現する。
つまり、 サービス提供 3 0 4は、 上述したユーザインターフェース層 の処理およびアプリケーション層の処理を行い、 クライアント P C 1 0 2に表示 された操作画像 (図示せず) に対するユーザの操作に応じて、 データベース部 3 0 0および D B M S 3 0 2により提供されるデ一夕べ一ス機能を利用し、 クライ アン卜 P C 1 0 2に対して、 データベース部 3 0 0に記憶されたデータを提供し 、 あるいは、 クライアント P C 1 0 2から入力されるデ一夕を、 データべ一ス部 3 0 0に記憶させる。
なお、 サービス提供部 3 0 4は、 開発 '操作用 P C 4におけるデバッグ 作業などのために、 開発 ·操作用 P C 4から入力されたデ一夕をデータベース部
3 0 0に記憶させ、 また、 データべ一ス部 3 0 0に記憶されたデ一夕を開発 ·操 作用 P C 4に対して出力することもある。
図 1 0は、 図 7に示した開発 ·操作用 P C 4において実行される開発 · 制御用プログラム 4 0の構成を示す図である。
図 1 0に示すように、 開発 '制御用プログラム 4 0は、 11 1部4 0 0、 プログラム開発部 4 2およびプログラム実行制御部 4 6から構成される。
プログラム開発部 4 2は、 プログラム開発支援部 4 2 0およびデバッガ
4 2 2などを含む。
プログラム実行制御部 4 6は、 実行制御部 4 8、 U I層制御部 4 6 0、
A P層制御部 4 6 2および D B層制御部 4 6 4などを含み、 実行制御部 4 8は、 U I · A P層実行管理部 4 8 0、 D B層実行管理部 4 8 2、 データ管理部 4 8 4 、 メモリ領域管理部 4 8 6、 ライブラリ 4 8 8およびトランザクション管理部 4 9 0から構成される。
開発 ·制御用プログラム 4 0は、 これらの構成部分により、 ユーザの操 作に応じて、 サーバプログラム 3 0を制御する制御プログラム 4 4の開発および そのデバッグを行う。
また、 開発 ·制御用プログラム 4 0は、 制御プログラム 4 4の実行を制 御して、 サーバプログラム 3 0におけるデータベース操作、 および、 データべ一
スを利用した所望のサ一ビスを実現する。
開発 ·制御用プログラム 40において、 111部400は、 開発,操作用 P C 4のユーザに対するユーザインタ一フェース機能を提供する。
また、 U I部 400は、 ユーザの操作に応じて、 開発 ·制御用プロダラ ム 40の各構成部分の処理を制御する。
プログラム開発部 42において、 プログラム開発支援部 420は、 ュ一 ザ (プログラマ) による SQL形式の制御プログラム 44の開発を支援する。
プログラム開発支援部 420により開発された制御プログラム 44の例 は、 図 1 1〜図 13を参照して後述される。
デバッガ 422は、 プログラム開発支援部 420などを用いて開発され た制御プログラム 44のステップ実行など、 制御プログラム 44に対するデバッ グ機能を提供する。
図 1 1は、 図 10に示したプログラム開発支援部 420などにより作成 される制御プログラム 44の例を、 リスト形式で示す図である。
図 12は、 図 1 1に示した制御プログラム 44の処理 (S 12) を示す フローチャートである。
図 13は、 図 1 1に示した制御プログラム 44の処理およびその実行管 理を、 概念的に示す図である。
プログラム開発支援部 420により、 図 1 1〜図 1 3に示すような制御 プログラム 44が作成される。
なお、 この制御プログラム 44の処理の内容は、 比較しやすいように、 図 1, 図 2, 図 5に例示したプログラムと同様になつている。
図 1 1〜図 13に示すように、 制御プログラム 44のユーザィンタ一フ エース層の処理 (S 120) において、 クライアント PC 102 (図 8) の入力 ·出力装置 126の表示装置などの画面に表示されたユーザインターフェース画 像内 (図示せず) の 「ポタン 5 (button5)」 に対するュ一ザによるクリックが検 出されると、 アプリケーション層のプログラムが起動される (S 120 ;図 12 ) 。
起動されたアプリケーション層の処理 (S 122) において、 まず、 ト
ランザクシヨンの単位が指定される。
このトランザクションは、 アプリケーション層の処理 (S 1 22) にお いて、 サ一バ 3によるサービスの提供のために必要な 1つ以上のデータベース層 の処理の起動を含む。
なお、 図 1 1〜図 13においては、 08操作# 1, # 2のために、 デ一 夕ベース層の処理が起動される場合が例示されている。
トランザクションの定義とともに、 このトランザクションにおける処理 のために、 専用の連続したメモリ領域が、 開発 ·操作用 PC 4のメモリ 124 ( 図 8) 上に確保される (図 13) 。
トランザクションそれぞれに含まれる全ての処理において用いられるデ —夕は、 トランザクションそれぞれのために専用に確保されたメモリ領域に記憶 され、 管理される。
このように確保されたメモリ領域には、 データベースに対する接続に必 要な接続オブジェクトも記憶される。
記憶された接続オブジェクトは、 必要に応じて処理のために用いられる ので、 引数の受け渡しが不要となる。
次に、 サーバ 3に対する操作 (08操作# 1, # 2) のために、 デ一夕 ベース層の処理が、 順次、 起動される。 '
これらの操作が終了すると、 アプリケーション層の処理が終了する。 データべ—ス層の処理 (S 124) において、 デ一夕べ一ス (DBMS 302およびデ一夕べ一ス部 300 ;図 9) に対する接続が行われる。
さらに、 アプリケーション層の処理により起動されたデータベース操作 のための処理が実行される。
デ—夕ベース操作のための処理を行うプログラムモジユールそれぞれは
、 ライブラリに含まれるコンポーネント化されたプログラムモジュールとして提 供される。
図 11においては、 このようにコンポーネント化されたデータベース層のプログ ラムモジュールとして、 アプリケーション層において定義されたトランザクショ ンにおいて、 データベース (DBMS 302およびデータべ一ス部 300 ;図 9
) に接続するための " ;MyCoimect ioii&Quot;、 および、 このトランザクション におけるデータベースの操作を行うための &QUO t; MyTrans ac t i on&auo t;が例示さ れている。
データベース操作のための処理結果は、 データベース部 3 0 0において 確定 (コミット) され、 あるいは、 取り消されて復元 (ロールバック) される。
これらの処理が終了すると、 データベース層の処理が終了する。
図 1 1〜図 1 3に例示した制御プログラム 4 4の処理の実行は、 後述す るように、 プログラム実行制御部 4 6 (図 1 0 ) により制御される。
再び図 1 0を参照する。
実行制御部 4 8において、 U I · A P層実行管理部 4 8 0は、 制御プロ グラム 4 4のユーザインタ一フェース層のプログラムおよびアプリケーション層 のプログラムを解釈し、 トランザクションごとに、 これらのプログラムの処理の 実行を管理する。
D B層実行管理部 4 8 2は、 制御プログラム 4 4のデータベース層のプ ログラムを解釈し、 トランザクションごとに、.その処理の実行を管理する。
メモリ領域管理部 4 8 6は、 トランザクションそれぞれの処理に用いら れるメモリ領域 (図 1 3 ) を、 開発 ·操作用 P C 4のメモリ 1 2 4 (図 8 ) 上に 確保し、 管理する。
また、 メモリ領域管理部 4 8 6は、 処理が終了したトランザクションの メモリ領域を開放する。
データ管理部 4 8 4は、 トランザクションそれぞれの処理において、 メ モリ領域に記憶されるデ一夕を管理する。
ライブラリ 4 8 8は、 データべ一ス層の処理を行うコンポーネント化さ れたプログラムモジュールを提供する。
トランザクション管理部 4 9 0は、 アプリケーション層において定義さ れたトランザクションを管理する。
U I層制御部 4 6 0および A P層制御部 4 6 2は、 U I · Α Ρ層実行管 理部 4 8 0による管理に従って、 サーバプログラム 3 0 (図 9 ) のサービス提供 部 3 0 4の処理を制御する。
DB層制御部 464は、 DB層実行管理部 482の管理に従って、 DB MS 302およびデータベース部 300の処理を制御する。
図 14を参照して、 開発 ·制御用プログラム 40のプログラム実行制御 部 46の処理を、 さらに説明する。
図 14は、 図 10に示した開発 ·制御用プログラム 40のプログラム実 行制御部 46による制御プログラム 44 (図 1 1〜図 13) の処理の実行の制御 (S 20) を示すフローチャートである。
なお、 図 14においては、 図 3に示した処理と対応する処理には、 同じ 符号が付されている。
図 14に示すように、 ステップ 100 (S 100) において、 サーバプ ログラム 30のサービス提供部 304 (図 8) は、 ユーザによる'クライアント P C 102 (図 7) の入力 '出力装置 126に表示されたユーザインタ一フェース 画像のボタン 5の押下を検出する。
サービス提供部 304は、 ポタン 5の押下の検出結果を、 実行制御部 4 8 (図 10) の U I層制御部 460を介して、 U I · AP層実行管理部 480に 対して出力する。
U I · AP層実行管理部 480は、 このポタン 5の押下の検出結果を受 け入れる。
ステップ 102 (S 202) において、 U I · A P層実行管理部 480 (図 10) は、 制御プログラム 44のユーザインターフエ一ス層のプログラム ( 図 11〜図 13) を解釈して実行し、 ポタン 5の押下が検出されか否かを判断す る。
プログラム実行制御部 46は、 ポタン 5の押下が検出されたときには S 200の処理に進み、 これ以外のときには S 200の処理に戻る。
ステップ 200 (S 200) において、 U I · ΑΡ層実行管理部 480 (図 1 0) は、 アプリケーション層のプログラムを解釈して実行し、 トランザクション の属性を指定し、 トランザクションを定義する。
トランザクションの指定は、 アプリケーション層のラス宣言の部分でお こなわれ、 図 1 1には、 マイクロソフト社のプログラミング言語 C#を用いた場
合のトランザクションの指定が例示されている。
サーバ 3に対する接続処理が行われるときには、 この部分が参照され、 その動作が変更される。
メモリ領域管理部 486は、 定義されたトランザクションの処理のため に用いられるメモリ領域を確保し、 管理する。
データ管理部 484は、 確保されたメモリ領域に記憶されるデータを管 理する。
トランザクション管理部 490は、 定義されたトランザクションを管理 する。
ステップ 202 (S 202 ) において、 U Γ · AP層実行管理部 480
(図 10) は、 データベース (DBMS 302およびデ一夕ベース部 300 ;図 9) に対する操作のための第 1の処理 (08操作# 1) を開始し、 データべ一ス 層のプログラムの処理を起動する。
第 1の処理のためのデータべ一ス層のプログラムは、 ライブラリ 488 により、 コンポーネント化されたプログラムモジュールとして提供される。
起動されたデータベース層のプログラムは、 DB層実行管理部 482に より解釈され、 DB層実行管理部 482は、 データベースに対する接続を行い、 データベースをオープンする。 ステップ 204 (S 204) において、 DB層実行管理部 482 (図 1 0 ) は、 ライブラリ 488により提供されたデ一タベース操作 (08操作# 1) のためのプログラムモジュールを解釈し、 DB層制御部 464を介して、 データ ベース (DBMS 302およびデータベース部 300 ;図 9) に対する操作を行 ラ。
ステップ 206 (S 206 ) において、 DB層実行管理部 482は、 デ —夕ベースからの戻り値を判断し、 S 204において実行された処理が成功した か否かを判断する。
プログラム実行制御部 46は、 処理が成功したときには S 208の処理 に進み、 これ以外のときには S 1 14の処理に進む。
ステップ 208 (S 208) において、 U I · ΑΡ層実行管理部 480
(図 10) は、 デ一夕ベース (DBMS 302およびデータベース部 300 ;図 9) に対する操作のための第 2の処理 (DB操作 #2) を開始し、 データベース 層のプログラムの処理を起動する。
第 2の処理のためのデ一夕ベース層のプログラムは、 第 1の処理のため のプログラムと同様に、 ライブラリ 488により、 コンポーネント化されたプロ グラムモジュールとして提供される。
ステップ 1 10 (S 1 10) において、 DB層実行管理部 482 (図 1 0) は、 データベース (DBMS 302およびデータベース部 300 ;図 9) か らの戻り値を判断し、 S 204において実行された処理が成功したか否かを判断 する。
プログラム実行制御部 46は、 処理が成功したときには S 1 12の処理 に進み、 これ以外のときには S 1 14の処理に進む。
ステップ 1 12 (S 1 12) において、 DB層実行管理部 482 (図 1 0) は、 データベース (DBMS 302およびデータべ一ス部 300 ;図 9) に 対する操作内容を確定 (コミット) させ、 処理結果および戻り値を、 U I · ΑΡ 層実行管理部 480に返す。
ステップ 1 14 (S 1 14) において、 DB層実行管理部 482は、 デ 一夕ベースに対する操作内容を取り消して、 その内容を復元 (ロールバック) し 、 処理結果および戻り値を、 U I · A Ρ層実行管理部 480に返す。
ステップ 1 16 (S 1 16) において、 DB層実行管理部 482は、 デ 一夕管理部 484を介して、 デ一夕ベースに対する接続を切り、 データベースを クローズする。
U I · AP層実行管理部 480は、 DB層実行管理部 482から入力さ れた処理結果および戻り値に応じて、 U I層制御部 460および AP層制御部 4 62を介して、 サ一ビス提供部 304を制御し、 クライアン卜 PC 102 (図 7 ) の入力 ·出力装置 126 (図 8) に、 処理結果を表示させるなど、 必要な処理 を行わせる。
また、 メモリ領域管理部 486は、 メモリ領域を解放し、 トランザクシ ョン管理部 490は、 トランザクションの終了のための処理を行う。
なお、 図 2に例示したプログラムの処理においては、 データベースの切 断およびクローズが、 個々のデ一夕ベース層の処理が成功したか否かにかかわら ず、 全てのデータベース層の処理が終了した後に、 初めて行われる。
これに対して、 図 1 1〜図 1 3に例示した制御プログラム 4 4の処理は 、 図 2に例示した処理と比べて、 データベース層の処理が最初に失敗したとき、 または、 全てのデ一夕ベース層の処理が終了したときに行われる点で異なつてい る。
図 1 5は、 開発 ·制御用プログラム 4 0 (図 1 0 ) による制御プロダラ ム 4 4に対するデバッグの容易さを説明する図である。
図 1 5に示すように、 開発 ·制御用プログラム 4 0 (図 1 0 ) により制 御プログラム 4 4の開発およびそのデバッグを行うと、 ユーザィン夕ーフェース 層のプロセス、 および、 アプリケーション層およびデータベース層のプロセスの 両方が、 同じプログラム実行制御部 4 6の制御の下で実行される。
従って、 開発 ·制御用プログラム 4 0を用いると、 制御プログラム 4 4 のユーザインタ一フェース層と、 アプリケーション層およびデータべ一ス層とで 、 同じデバッガ 4 2 2を用いてデバッグを行うことができる。
つまり、 開発 ·制御用プログラム 4 0を用いると、 図 6に示したように 、 ユーザインタ一フエ一ス層と、 アプリケーション層およびデータベース層とで 、 異なる複数のデバッガを用いてデバッグを行う必要がないので、 図 6に示した 場合に比べて、 制御プログラム 4 4のデバッグが容易になる。
図 1 6は、 各階層に複数のトランザクションを含む制御プログラム 4 4 を例示する図である。
なお、 図 1 1〜図 1 3には、 ある 1つの階層において、 1つのトランザ クシヨンが定義されている制御プログラム 4 4を例示したが、 実際には、 図 1 6 に示すように、 制御プログラム 4 4の 1つの階層において、 複数のトランザクシ ヨン (例えば、 階層 # 1における T 1一;!〜 T 1 一 3 ) が定義されていてもよい また、 あるトランザクション (例えば、 T 1— 1 ) により起動される処 理において、 さらにトランザクション (例えば、 T 2— 1〜T 2— 3 ) が定義さ
れていてもよい。
プログラム実行制御部 4 6 (図 1 0 ) は、 図 1 6に例示した制御プログ ラム 4 4に対しても、 図 1 1〜図 1 3に例示した制御プログラム 4 4に対してと 同様な実行管理を行うことができる。 産業上の利用可能性
本発明は、 デ一夕ベースの操作に利用可能である。