(57)【要約】    【課題】  データベースサーバと他のコンピュータとの組み合わせにより、トランザクションの処理速度を向上する。    【解決手段】  データベースサーバ１と、データベースサーバ１に接続された複数のＡＰサーバ２と、複数のＡＰサーバ２のいずれかにトランザクションを送信する複数のクライアント３とを備える。複数のＡＰサーバ２は、それぞれ、メモリ２１と、複数のクライアント３のいずれかから送られたトランザクションを受け付け、そのトランザクションに対する応答を出力するトランザクション処理部２２と、受け付けたトランザクションの内容に基づいて、データベースサーバ２上のデータベース管理システム１１へデータの読み出しを指示し、およびデータの更新を指示するＤＢアクセス処理部２３と、読み出されたデータをメモリ２１へ格納するメモリ管理部２４と、メモリ２１に格納されたデータに対して、受け付けたトランザクションの内容に基づいて、所定の処理を実行するデータ処理部２５とを備える。    【選択図】  図１
2005165610.tif 000002
【特許請求の範囲】
【請求項１】
データベース管理システムが動作しているデータベースサーバと、データ処理装置とを備えたデータ処理システムであって、
前記データ処理装置は、
メモリと、
前記データベース管理システムに対して、データの読み出しを指示し、読み出されたデータを前記メモリへ格納するデータ読み出し部と、
前記データベース管理システムに対して、前記メモリに格納されているデータの書き込みを指示するデータ書き込み部と、
前記メモリに格納されているデータに対して、それぞれ所定の処理を行う複数の共通関数部と、
外部からトランザクションを受け付け、受け付けた前記トランザクションに従って、前記データ読み出し部、前記データ書き込み部および前記共通関数部に処理を指示するトランザクション処理部と、を備えるデータ処理システム。
【請求項２】
前記データ読み出し部は、前記データを圧縮して前記メモリへ格納する請求項１に記載のデータ処理システム。
【請求項３】
前記データ読み出し部は、ＳＱＬ（Structured Query Language）を用いて前記データの読み出しを指示し、
前記データ書き込み部は、ＳＱＬを用いて前記メモリに格納されているデータの書き込みを指示する請求項１に記載のデータ処理システム。
【請求項４】
データベース管理システムが動作しているデータベースサーバに接続可能なデータ処理装置であって、
メモリと、
前記データベース管理システムに対して、データの読み出しを指示し、読み出されたデータを前記メモリへ格納するデータ読み出し部と、
前記データベース管理システムに対して、前記メモリに格納されているデータの書き込みを指示するデータ書き込み部と、
前記メモリに格納されているデータに対して、それぞれ所定の処理を行う複数の共通関数部と、
外部からトランザクションを受け付け、受け付けた前記トランザクションに従って、前記データ読み出し部、前記データ書き込み部および前記共通関数部に処理を指示するトランザクション処理部と、を備えるデータ処理装置。
【請求項５】
データベース管理システムが動作しているデータベースサーバに接続可能なデータ処理装置が実行する方法であって、
外部からトランザクションを受け付け、
受け付けたトランザクションに基づいて、前記データベース管理システムに対してデータの読み出しを指示し、
読み出されたデータをメモリへ格納し、
前記メモリに格納されているデータに対して、それぞれ所定の処理を行う複数の共通関数を用いて、前記受け付けたトランザクションに基づく処理を実行し、
前記データベース管理システムに対して、前記メモリに格納されている、前記処理実行後のデータの書き込みを指示するデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクションを処理するための技術に関し、特に、データベースへのアクセスを単純化し、データベースの負荷を軽減して、トランザクションの処理にかかる時間を短縮するための技術に関する。
【背景技術】
【０００２】
クライアント／サーバシステムが広く実用に供されている。このシステムにおいては、各クライアントがサーバへトランザクションを送り、処理を依頼する。クライアント／サーバシステムは、通常１台のサーバと複数台のクライアントから構成されているが、近年では負荷分散の考え方から、サーバを２台に分け、データベースシステムを稼動させるサーバ１台と、データ処理を行うサーバ１台と複数台のクライアントから構成することが多い。さらには、データ処理を行うサーバを複数台配し、より効果的な負荷分散を図ることも行われている。しかし、データの同期を維持する必要性から、データベースサーバを複数台に分散することは、通常行われていない（例えば、特許文献１）。
【０００３】
ここで、クライアント／サーバシステムには、トランザクションを受け付けたデータベースサーバが、そのトランザクションに従ってデータベースを更新するものがある。このとき、データベースサーバでは種々の機能を提供するデータベース管理システムが用いられる。このシステムでは、トランザクションが集中したり、一つのトランザクションの処理が複雑になったりすると、データベース管理システムの処理速度が低下し、実用に耐えられない場合がある。例えば、複雑なＳＱＬ（Structured Query Language）を実行したり、大量のデータに対する処理を行ったりするときは、データベース管理システムにおいてボトルネックが発生し、結果としてトランザクションの処理速度が著しく低下する。このようなケースは、リアルタイム処理を諦め、トランザクションが発生しない夜間などの時間帯に、まとめてバッチで処理されることが多い。
【０００４】
【特許文献１】特開２００１−２８２７３７公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
しかし、バッチ処理では、トランザクションが発生した時刻と実際に処理が実行される時刻との間に時間差ができるため、バッチ処理が終了した翌朝になってはじめて処理の失敗やデータの不備等が発覚することになる。これに対し、データベースでのボトルネックが解消すれば、従前はバッチ処理で行っていたものをリアルタイムで処理可能となる。
【０００６】
一方、データベースを提供しているベンダ以外は、データベースの処理速度を向上させるために、データベース管理システムそのものを改良することは難しい。
【０００７】
また、複雑な処理をデータベース管理システムに行わせずに、複数台のサーバによる負荷分散が可能なデータ処理サーバで行わせるべく、従来データベース上で行っていた処理をプログラムに組み込んで開発すれば処理速度を向上できる可能性はあるが、膨大な工数がかかり、開発の生産性が低くなるという問題がある。
【０００８】
そこで、本発明の目的は、データベースサーバと他のコンピュータとの組み合わせにより、トランザクションの処理速度を向上することである。
【０００９】
本発明の他の目的は、開発生産性を高めつつ、トランザクションの処理速度を向上することである。
【課題を解決するための手段】
【００１０】
本発明の一つの実施態様に従うデータ処理システムは、データベース管理システムが動作しているデータベースサーバと、データ処理装置とを備える。前記データ処理装置は、メモリと、前記データベース管理システムに対して、データの読み出しを指示し、読み出されたデータを前記メモリへ格納するデータ読み出し部と、前記データベース管理システムに対して、前記メモリに格納されているデータの書き込みを指示するデータ書き込み部と、前記メモリに格納されているデータに対して、それぞれ所定の処理を行う複数の共通関数部と、外部からトランザクションを受け付け、受け付けた前記トランザクションに従って、前記データ読み出し部、前記データ書き込み部および前記共通関数部に処理を指示するトランザクション処理部と、を備える。
【００１１】
好適な実施形態では、前記データ格納手段は、前記データを圧縮して前記メモリへ格納するようにしてもよい。
【００１２】
好適な実施形態では、前記読み出し指示手段は、ＳＱＬ（Structured Query Language）を用いて前記データの読み出しを指示し、前記更新指示手段は、ＳＱＬを用いて前記データの更新を指示することもできる。
【００１３】
本発明の一つの実施態様に従うデータ処理装置は、データベース管理システムが動作しているデータベースサーバに接続可能なデータ処理装置であり、メモリと、前記データベース管理システムに対して、データの読み出しを指示し、読み出されたデータを前記メモリへ格納するデータ読み出し部と、前記データベース管理システムに対して、前記メモリに格納されているデータの書き込みを指示するデータ書き込み部と、前記メモリに格納されているデータに対して、それぞれ所定の処理を行う複数の共通関数部と、外部からトランザクションを受け付け、受け付けた前記トランザクションに従って、前記データ読み出し部、前記データ書き込み部および前記共通関数部に処理を指示するトランザクション処理部と、を備える。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を適用した一実施形態に係るトランザクション処理システムついて、図面を用いて説明する。
【００１５】
図１は、本実施形態に係るトランザクション処理システムの全体構成を示す図である。本システムは、データベースサーバ１と、複数のＡＰサーバ２と、複数のクライアント３と、複数の負荷分散装置４とを備える。
【００１６】
データベースサーバ１、ＡＰサーバ２およびクライアント３は、いずれも例えば汎用的なコンピュータシステムにより構成され、以下に説明する各サーバ等の個々の構成要素または機能は、例えば、コンピュータプログラムを実行することにより実現される。
【００１７】
負荷分散装置４は、クライアント３からのトランザクションを各ＡＰサーバ２にかかっている負荷に応じて分散する。
【００１８】
データベースサーバ１では、データベース管理システム（以下、ＤＢＭＳと記す）１１が動作している。ＤＢＭＳ１１は、データベース（以下、ＤＢと記す）１２を管理し、ＤＢ１２内のデータの入出力、更新、および所定の演算などを行う。ＤＢ１２は、例えば、リレーショナルデータベースであってもよい。
【００１９】
ＡＰサーバ２は、クライアント３から送られてくるトランザクションを受け付けて、これに基づいてＤＢ１２に格納されているデータへアクセスし、所定の処理を実行する。ＡＰサーバ２は上記処理を行うために、例えば、メモリ２１と、トランザクション処理部２２と、データベースアクセス処理部２３と、メモリ管理部２４と、データ処理部２５とを備える。
【００２０】
トランザクション処理部２２は、トランザクションを受け付けて、そのトランザクションに応じた処理の実行を制御する。トランザクション処理部２２の処理手順の一例を、図２に示すフローチャートを用いて説明する。
【００２１】
トランザクション処理部２２は、まず、いずれかのクライアント３から送られたトランザクションを、負荷分散装置４を介して受信する（Ｓ１１）。ここで、トランザクション処理部２２は、受信したトランザクションを解析し、トランザクションの種別を判定する（Ｓ１２）。そして、トランザクション処理部２２は、データベースアクセス処理部２３、メモリ管理部２４、およびデータ処理部２５と協調して、トランザクションの種別ごとに、それぞれ定められている処理を実行する（Ｓ１３）。そして、トランザクションの処理結果を、トランザクションの送信元クライアント３へ送信する。
【００２２】
本システムは、種々の業務システムに適用可能である。トランザクション処理部２２は、本システムが適用されたそれぞれの業務に固有な処理を行う。この場合のトランザクション処理部２２が行う処理の具体例については、後述する。また、次に説明するデータベースアクセス管理部２３、メモリ管理部２４、およびデータ処理２５は、業務に依存しない、データベース管理に関する処理を行う。
【００２３】
このように、業務に固有な処理と、例えばマッチング処理やソート処理、コントロールブレイク処理などのような業務に依存しないシステム共通の処理とを分離することにより、システム開発の生産性を向上することができる。すなわち、業務処理はシステムのユーザ仕様に依存するところが大きく、その設計および開発には業務的な知識も必要となる。一方、システム共通処理の設計および開発には、システム的な深い知識が必要となる。また、システム共通処理は、様々な業務処理において繰返し利用されるので、各業務処理のプログラムを開発するたびに、そのなかで利用されるすべての共通処理を書き込むには、膨大な工数を要する。このため、これらを明確に分離することにより、それぞれの設計および開発段階での作業効率向上すると共に、メンテナンスの効率も向上する。
【００２４】
再び図１を参照すると、データベースアクセス処理部２３は、ＤＢＭＳ１１に対して、データの読み出しおよび書き込みを指示する。例えば、データベースアクセス処理部２３は、トランザクション処理部２２からの指示に基づいて、ＤＢ１２からデータを読み出すため、およびＤＢ１２へデータを書き込むためにＳＱＬ（Structured Query Language）文を生成して、ＤＢＭＳ１１へ送る。そして、データベースアクセス処理部２３は、ＤＢＭＳ１１がＳＱＬ文を実行した結果（データ、戻り値など）を取得する。ＳＱＬ文を実行した結果得られたデータは、メモリ管理部２４へ渡される。
【００２５】
ＤＢ１２から読み出されたデータは、メモリ２１に格納される。このとき、メモリ管理部２４は、メモリ上のデータを管理する。例えば、メモリ管理部２４は、ＤＢＭＳ１１がＳＱＬ文を実行した結果得られたデータを取得し、メモリ２１へ格納する。また、ＤＢ１２へデータを格納するときには、メモリ２１からデータを読み出す。メモリ管理部２４は、例えば、配列を用いてデータを管理することができる。
【００２６】
また、メモリ管理部２４は、データを圧縮してメモリへ格納してもよい。具体的な圧縮手法は後述する。
【００２７】
データ処理部２５は、トランザクション処理部２２からの指示に基づき、メモリ２１に格納されているデータに対する処理を行う。例えば、データ処理部２５は、複数の関数を備えていてもよい。各関数の処理は、それぞれ、あらかじめ定義されている。各関数は、それぞれの定義に従い、メモリ２１に格納されているデータをハンドリングする。本実施形態では、データのソートおよび比較など、種々の業務処理で共通に利用される処理が関数化されている。
【００２８】
上述のような構成を備える本システムが、業務システムに適用されたときの処理を以下において具体的に説明する。ここでは、本システムをコンビニエンスストアなど複数の店舗の商品管理を行うシステムに適用した場合を例に説明する。以下では、店舗に設置されたクライアント３から商品の発注を受けて、商品管理センタなどに設置されたデータベースサーバ１の発注テーブルを更新して、発注を受け付けるときの手順を例に説明する。
【００２９】
まず、この処理で用いられるデータについて説明する。ＤＢ１２には、図３〜図７に示すテーブルが格納されている。すなわち、店テーブル１２１と、配送グループテーブル１２２と、配送テーブル１２３と、在庫テーブル１２４と、発注テーブル１２５とがＤＢ１２に格納されている。
【００３０】
店テーブル１２１は、例えば、図３に示すように、店コード１２１１と、店名１２１２とをデータ項目として有する。
配送グループテーブル１２２は、店を配送グループに応じて分類するためのテーブルである。
【００３１】
配送グループテーブル１２２は、例えば、図４に示すように、グループコード１２２１と、店コード１２２２とをデータ項目として有する。
【００３２】
配送テーブル１２３は、各グループコードの配送グループを示す。配送テーブル１２３は、例えば、図５に示すように、グループコード１２３１と、午前配送１２３２と、午後配送１２３３とをデータ項目として有する。午前配送１２３２、および午後配送１２３３には、配送があるときは“１”が、配送がないときは“０”がそれぞれセットされる。
【００３３】
在庫テーブル１２４は、商品別の在庫数量が記憶されている。在庫テーブル１２４は、例えば、図６に示すように、商品コード１２４１と、在庫数量１２４２とをデータ項目として有する。
【００３４】
発注テーブル１２５は、受け付けた発注に関する情報を記憶する。発注テーブル１２５は、例えば、図７に示すように、店コード１２５１と、商品コード１２５２と、発注数量１２５３とをデータ項目として有する。
【００３５】
次に、具体的な処理手順について、図２および図８のフローチャートを用いて説明する。
【００３６】
いずれかのクライアント３から商品発注トランザクションが出力されると、いずれかのＡＰサーバ１２が、負荷分散装置４経由でこのトランザクションを受信する（Ｓ１１）。ここで、トランザクションのフォーマットの一例を図９に示す。トランザクション５０には、トランザクションの種別を示す領域５１と、データ領域５２とを有する。ここでは、種別領域５１には「発注」を示すデータがセットされている。発注トランザクションの場合、データ領域５２には、さらに、商品コード５２１と、店コード５２２と、発注数量５２３とが含まれている。ここでは、商品コード５２１には「１００２」、店コード５２２には「Ｓ０１」、発注数量５２３には「２０」がそれぞれセットされている。
【００３７】
トランザクション処理部２２は、種別領域５１にセットされているデータを解析して、トランザクション種別を判定する（Ｓ１２）。ここでは、トランザクション種別は「発注」なので、次のステップＳ１３では発注トランザクションの処理を実行する。この具体的な処理手順について、図８を用いて説明する。
【００３８】
トランザクション処理部２２が、受信したトランザクションを処理するために必要なテーブルをデータベースサーバ１から取得するよう、データベースアクセス処理部２３へ指示をする。そして、取得したデータをメモリ管理部２４がメモリ２１へロードする（Ｓ２１）。
【００３９】
例えば、ここでは、発注トランザクションを処理するために必要なテーブルは、上述の店テーブル１２１、配送グループテーブル１２２、配送テーブル１２３、在庫テーブル１２４、および発注テーブル１２５であるから、トランザクション処理部２２これらのテーブルを取得するよう、データベースアクセス管理部２３へ指示する。これを受けて、データベースアクセス管理部２３は、これらのテーブルを取得するためのＳＱＬ文を生成し、ＤＢＭＳ１１へ通知する。
【００４０】
ＤＢＭＳ１１がＳＱＬ文を受信するとこれを実行し、その結果をＡＰサーバ２へ返信する。ここでは、ＤＢＭＳ１１がＳＱＬ文を実行して各テーブル１２１〜１２５のデータを取得し、ＡＰサーバ２へ送信する。
【００４１】
データベースアクセス管理部２３は、ＤＢＭＳ１１からデータを受信すると、これをメモリ管理部２４へ渡す。メモリ管理部２４は、このデータをメモリ２１へ格納する。このとき、メモリ管理部２４は、テーブルごとに、配列構造を用いてデータの管理を行う。
【００４２】
また、ここでは、メモリ管理部２４は、図１０に示すようにデータを圧縮してメモリへ格納する。
【００４３】
まず、メモリ管理部２４は、各テーブル１２１〜１２５に含まれているデータに基づいて、インデックステーブル７１，７２を生成する。インデックステーブルには、コードのインデックステーブル７１と、テキストのインデックステーブル７２とがある。インデックステーブル７１，７２は、各テーブル１２１〜１２５に含まるデータの値であるコードおよびテキストにインデックスを付している。
【００４４】
そして、メモリ管理部２４は、インデックスを用いてそれぞれのデータテーブル８１，８２，８３、８４，８５を生成する。つまり、図１０では、店テーブル８１と、配送グループテーブル８２と、配送テーブル８３と、在庫テーブル８４と、発注テーブル８５とを示している。このうち、配送グループテーブル８２は、インデックステーブル７１との対応関係を破線矢印で示している（他のテーブル８１、８３〜８５については、破線矢印は省略）。
【００４５】
再び図８を参照する。必要なデータのメモリ２１へのロードが完了すると、つぎに、トランザクション管理部２２は、発注のあった店舗に関する配送グループを確認する（Ｓ２２）。このとき、データ処理部２５が備える関数を利用する。例えば、発注トランザクションに含まれている店コード５２２をキーにして、配送グループテーブル８２を用いて、その店のグループコードを特定する。そして、特定されたグループコードをキーにして配送テーブル８３を参照し、配送グループ（午前のみか、午後のみか、午前および午後か）を特定し、トランザクション処理部２２へ通知する。
【００４６】
午前配送および午後配送で配送を行うためには、それぞれ発注を受け付ける時間帯があらかじめ定められている。このため、トランザクション処理部２２は、発注があった店舗の配送グループと現在時刻とに基づいて、その店の発注要求を受け付け可能な時間帯であるかどうかを判定する（Ｓ２３）。発注可能な時間帯でないときは（Ｓ２３：Ｎｏ）、以下の処理をスキップする。
【００４７】
発注可能な時間帯であるときは（Ｓ２３：Ｙｅｓ）、トランザクション管理部２２は、発注のあった商品の在庫の有無を確認する（Ｓ２４）。例えば、商品コード５２１をキーにして在庫テーブル８４を検索し、在庫数量と発注数量５２３とを比較する。そして、比較結果をトランザクション処理部２２へ通知する。
【００４８】
在庫数量が発注数量よりも少ないときは（Ｓ２４：Ｎｏ）、以下の処理をスキップする。
【００４９】
在庫数量が発注数量よりも少なくないときは（Ｓ２４：Ｙｅｓ）、トランザクション処理部２２がデータ処理部２５へ在庫テーブル８４および発注テーブル８５を更新するよう指示をする（Ｓ２５）。データ処理部２５は、所定の関数を実行して、メモリ２１上のデータを更新する。
【００５０】
メモリ２１上のデータが更新されると、トランザクション処理部２２は、在庫テーブル８４および発注テーブル８５をＤＢ１２へ書き戻して、ＤＢ１２上の在庫テーブル１２４および発注テーブル１２５を更新するようデータベースアクセス管理部２３へ指示をする（Ｓ２６）。データベースアクセス管理部２３は、この指示に基づいてメモリ管理部２４を介してメモリ２１から必要なデータを取得し、ＳＱＬ文を生成する。メモリ管理部２４は、生成されたＳＱＬ文をＤＢＭＳ１１へ送り、ＤＢ１２のデータを更新する。
【００５１】
以上に説明した処理により、発注トランザクションに対する処理が完了する。
【００５２】
図２に戻り説明を続ける。トランザクション処理部２２は、上述のようなステップＳ１３の処理が実行された結果を、トランザクション送信元のクライアント３へ返信する。つまり、発注処理が完了したときはその旨を返信し、発注処理が完了しなかったときは、完了しなかった理由を返信するようにしてもよい。
【００５３】
本実施形態によれば、ＤＢ１２内のデータに対する実質的な処理は、ＤＢＭＳ１１ではなく、ＡＰサーバ２が行う。そして、ＡＰサーバ２は複数台あるので、従前はＤＢＭＳ１１に集中していた処理を分散させることができる。従って、従前に比べＤＢＭＳ１１にかかる負荷は軽減され、システム全体での処理速度は向上する。この結果、従来はリアルタイム処理ができず、バッチ処理を行っていたトランザクションを、リアルタイム処理することが可能になる。
【００５４】
さらに、ＡＰサーバ２は、データをメモリ２１上に圧縮しながら展開し、このデータに対して処理を行う。この結果、大量のデータを扱うときでも、メモリを節約することができる。
【図面の簡単な説明】
【００５５】
【図１】本発明の一実施形態にかかるトランザクション処理システムの構成図である。
【図２】トランザクションの処理手順を示すフローチャートである。
【図３】店テーブルの一例を示す図である。
【図４】配送グループテーブルの一例を示す図である。
【図５】配送テーブルの一例を示す図である。
【図６】在庫テーブルの一例を示す図である。
【図７】発注テーブルの一例を示す図である。
【図８】トランザクション種別ごとの処理の詳細な処理手順を示すフローチャートである。
【図９】トランザクションのフォーマットの一例を示す図である。
【図１０】メモリ上に展開されたテーブルの一例を示す図である。
【符号の説明】
【００５６】
１…データベースサーバ、２…ＡＰサーバ、３…クライアント、４…負荷分散装置、１１…ＤＢＭＳ、２１…メモリ、２２…トランザクション処理部、２３…ＤＢアクセス処理部、２４…メモリ管理部、２５…データ処理部。
【図１】
2005165610.tif 000003
【図２】
2005165610.tif 000004
【図３】
2005165610.tif 000005
【図４】
2005165610.tif 000006
【図５】
2005165610.tif 000007
【図６】
2005165610.tif 000008
【図７】
2005165610.tif 000009
【図８】
2005165610.tif 000010
【図９】
2005165610.tif 000011
【図１０】
2005165610.tif 000012