(57)【要約】    【課題】  データがキー情報の値によって複数のテーブルに分割して格納されている場合に、複数のテーブルの中からアクセス先のテーブルを容易に特定する。    【解決手段】  所定のデータがキー情報の値に応じて複数のテーブル３１Ａ，３１Ｂ，３１Ｃに分割して格納されている。そして、テーブル３１Ａ，３１Ｂ，３１Ｃのいずれかに対応付けられていて、それぞれ対応付けられているテーブルにアクセスするための複数のコネクション１９Ａ〜Ｃと、リクエスト電文１０を受信し、リクエスト電文１０からキー情報を抽出するリクエスト解析部１１と、抽出されたキー情報に基づいて、複数のコネクション１９Ａ〜Ｃのうちの一つを選択するコネクション管理部１３と、リクエスト電文１０に基づいて所定の業務処理を行い、当該業務処理の処理結果に基づいて、選択されたコネクションを用いて当該コネクションに対応付けられているデータテーブルにアクセスする業務処理部１５と、を備える。    【選択図】  図１
2006259790.tif 000002
【特許請求の範囲】
【請求項１】
所定のデータを所定のキー情報の値に応じて複数に分割し、分割された前記所定のデータをそれぞれ記憶した複数のテーブルを備えたデータベースを有するアプリケーションシステムであって、
前記複数のテーブルのいずれかに対応付けられていて、それぞれ対応付けられているテーブルにアクセスするための複数のアクセス手段と、
外部からのリクエストを受信し、受信したリクエストからキー情報を抽出する抽出手段と、
前記抽出手段が抽出されたキー情報に基づいて、前記複数のアクセス手段のうちの一つを選択する手段と、
前記受信したリクエストに基づいて所定の業務処理を行い、当該業務処理の処理結果に基づいて、前記選択されたアクセス手段を用いて当該アクセス手段に対応付けられているテーブルにアクセスする業務処理手段と、を備えることを特徴とするアプリケーションシステム。
【請求項２】
前記業務処理手段は、前記業務処理を行って前記データベースにアクセスするためのＳＱＬ（Structured Query Language）文を生成し、前記選択されたアクセス手段を用いて当該アクセス手段に対応付けられているテーブルに対して前記ＳＱＬ文を実行することを特徴とする請求項１記載のアプリケーションシステム。
【請求項３】
前記アクセス手段は、それぞれ対応付けられているテーブルに対して確立されたコネクションであり、
前記業務処理手段は、前記選択手段により選択されたコネクションを用いて、当該コネクションに対応付けられているテーブルにアクセスすることを特徴とする請求項１記載のアプリケーションシステム。
【請求項４】
所定のデータを所定のキー情報の値に応じて複数に分割し、分割された前記所定のデータをそれぞれ異なるテーブルに記憶するステップと、
外部からのリクエストを受信し、受信したリクエストからキー情報を抽出するステップと、
前記抽出されたキー情報に基づいて、前記複数のテーブルのいずれかに対応付けられていて、それぞれ対応付けられているテーブルにアクセスするための複数のアクセス手段のうちの一つを選択するステップと、
前記受信したリクエストに基づいて所定の業務処理を行い、当該業務処理の処理結果に基づいて、前記選択されたアクセス手段を用いて当該アクセス手段に対応付けられているテーブルにアクセスするステップと、を有することを特徴とするデータベースのアクセス方法。
【請求項５】
コンピュータに実行させると、
所定のデータを所定のキー情報の値に応じて複数に分割し、分割された前記所定のデータをそれぞれ異なるテーブルに記憶するステップと、
外部からのリクエストを受信し、受信したリクエストからキー情報を抽出するステップと、
前記抽出されたキー情報に基づいて、前記複数のテーブルのいずれかに対応付けられていて、それぞれ対応付けられているテーブルにアクセスするための複数のアクセス手段のうちの一つを選択するステップと、
前記受信したリクエストに基づいて所定の業務処理を行い、当該業務処理の処理結果に基づいて、前記選択されたアクセス手段を用いて当該アクセス手段に対応付けられているテーブルにアクセスするステップと、を行ってデータベースへアクセスするためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、所定のデータを所定のキー情報の値に応じて複数に分割したデータベースへアクセスするための技術に関する。
【背景技術】
【０００２】
従来、データベースの処理速度を向上させるため、データを複数のテーブル等に分割して格納し、各テーブルのレコード数の増加を抑えてアクセス速度の低下を防止する。このうち、特に、同一のテーブル構造に格納されるレコードが大量になってしまう場合に、所定のキー情報の値の範囲を決めて、この大量なレコードを複数のテーブルに分割する場合がある。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
上記のようにキー情報の値の範囲に基づいてテーブルを分割した場合、業務処理に関連してこのテーブルへアクセスする必要があるときは、キー情報の値により、どのテーブルに目的のデータが格納されているかを判定しなければならない。従って、リレーショナルデータベースであれば、業務処理により生成されたＳＱＬ文を解析し、アクセスすべきテーブルを特定することが行われていた。
【０００４】
しかしながら、現実のシステムで利用されるＳＱＬ文は、種々の実装上の細かいテクニックを用いて生成されているのでかなり複雑であり、これを解析してアクセス先のテーブルを特定するのは容易ではない。
【０００５】
そこで、ＳＱＬ文を解析してテーブルを特定するためには、業務処理を設計する段階において一定のルールを定めておき、キー情報を容易に抽出できるようにしておくことも考えられる。しかし、このようなルールを定めると、業務処理設計の自由度が低下して、好ましくない。
【０００６】
そこで、本発明の目的は、業務処理の設計の自由度を低下させることなく、データがキー情報の値によって複数のテーブルに分割して格納されている場合に、複数のテーブルの中からアクセス先のテーブルを容易に特定することである。
【課題を解決するための手段】
【０００７】
本発明の一実施態様に従うアプリケーションシステムは、所定のデータを所定のキー情報の値に応じて複数に分割し、分割された前記所定のデータをそれぞれ記憶した複数のテーブルを備えたデータベースを有するアプリケーションシステムである。そして、前記複数のテーブルのいずれかに対応付けられていて、それぞれ対応付けられているテーブルにアクセスするための複数のアクセス手段と、外部からのリクエストを受信し、受信したリクエストからキー情報を抽出する抽出手段と、前記抽出手段が抽出されたキー情報に基づいて、前記複数のアクセス手段のうちの一つを選択する手段と、前記受信したリクエストに基づいて所定の業務処理を行い、当該業務処理の処理結果に基づいて、前記選択されたアクセス手段を用いて当該アクセス手段に対応付けられているテーブルにアクセスする業務処理手段と、を備える。
【０００８】
好適な実施形態では、前記業務処理手段は、前記業務処理を行って前記データベースにアクセスするためのＳＱＬ（Structured Query Language）文を生成し、前記選択されたアクセス手段を用いて当該アクセス手段に対応付けられているテーブルに対して前記ＳＱＬ文を実行してもよい。
【０００９】
好適な実施形態では、前記アクセス手段は、それぞれ対応付けられているテーブルに対して確立されたコネクションである。そして、前記業務処理手段は、前記選択手段により選択されたコネクションを用いて、当該コネクションに対応付けられているテーブルにアクセスするようにしてもよい。
【発明を実施するための最良の形態】
【００１０】
以下、本発明の一実施形態に係るアプリケーションシステムについて、図面を参照して説明する。
【００１１】
図１は、本実施形態に係るアプリケーションシステムの構成を示す図である。本システムは、アプリケーションサーバ（ＡＰサーバ）１と、複数のデータベースサーバ（ＤＢサーバ）３（３Ａ，３Ｂ，３Ｃ）とを備える。本実施形態では、データベースに格納されるべきデータが３つのＤＢサーバに分割して記憶されている。そして、各ＤＢサーバ３は互いに独立に動作する。ここで、本実施形態では３つのＤＢサーバ３に分割しているが、いくつに分割するかは任意である。
【００１２】
ＡＰサーバ１および各ＤＢサーバ３は、いずれも例えば汎用的なコンピュータシステムにより構成され、以下に説明する各サーバ１，３内の個々の構成要素または機能は、例えば、コンピュータプログラムを実行することにより実現される。
【００１３】
各ＤＢサーバ３Ａ，３Ｂ，３Ｃには、それぞれデータテーブル３１Ａ，３１Ｂ，３１Ｃが含まれている。各データテーブル３１（３１Ａ，３１Ｂ，３１Ｃ）は、いずれも同一の構造を有している。各データテーブル３１には、キーとなる情報の値に応じて複数のレコードが分割して格納されている。ここでは、「店番」がキー情報であって、「店番」が００１〜１００までのレコードのデータがデータテーブル３１Ａに格納されている。さらに、「店番」が１０１〜２００までのデータレコードがデータテーブル３１Ｂに格納されていて、「店番」が２０１〜３００までのデータレコードがデータテーブル３１Ｃに格納されている。
【００１４】
ＡＰサーバ１は、後述するコネクション１９（１９Ａ，１９Ｂ，１９Ｃ）を用いて、各データテーブル３１にアクセスすることができる。
【００１５】
ＡＰサーバ１は、内部機能として、リクエスト解析部１１と、コネクション管理部１３と、業務処理部１５と、複数のコネクションプール１７（１７Ａ，１７Ｂ，１７Ｃ）とを有する。
【００１６】
コネクションプール１７Ａには、データテーブル３１Ａにアクセスするときに用いるコネクション１９Ａが複数個格納されている。
【００１７】
コネクション１９Ａは、ＡＰサーバ１からＤＢサーバ３Ａのデータテーブル３１Ａにアクセスするために、予め確立されているコネクションである。
【００１８】
ここで、コネクションプール１７Ａ及びコネクション１９Ａについてさらに説明する。データテーブル３１Ａにアクセスするために認証を必要とする場合、通常、アクセス要求がある度に認証を行う。しかし、これでは認証に要するオーバーヘッドが大きい。そこで、本実施形態では、予め認証を済ませてデータテーブル３１Ａとの間に確立されたコネクション１９Ａが、コネクションプール１７Ａに複数個格納されている。
【００１９】
同様に、コネクションプール１７Ｂ、１７Ｃには、それぞれデータテーブル３１Ｂ，３１Ｃにアクセスするために予め確立されているコネクション１９Ｂ，１９Ｃが格納されている。
【００２０】
リクエスト解析部１１は、外部からのリクエスト電文１０を受信すると、そのリクエスト電文１０に含まれているキー情報を抽出する。本実施形態では、「店番」がキー情報であるから、図２に示すようなリクエスト電文１０から、「店番」に関する情報１１０を抽出する。
【００２１】
コネクション管理部１３は、各コネクションプール１７にプールされているコネクション１９を管理する。また、コネクション管理部１３は管理テーブル５を有している。
【００２２】
図３に、管理テーブル５の一例を示す。管理テーブル５には、複数のデータテーブル３１へデータを分割するための基準となる情報が格納されている。すなわち、本実施形態では、テーブル名５１と各テーブルに格納される店番の値の範囲５２とが対応付けられている。
【００２３】
コネクション管理部１３は、リクエスト解析部１１の解析結果に応じて、管理テーブル５を参照し、業務処理部１５が利用するコネクション１９を選択する。例えば、リクエスト解析部１１から、キー情報である「店番」に関して「店番＝"０５６"」という通知を受けると、コネクション管理部１３は管理テーブル５を参照し、「店番＝"０５６"」に関するデータレコードは、データテーブル３１Ａに格納されていると特定する。従って、コネクション管理部１３は、コネクションプール１７Ａに蓄積されているいずれかのコネクション１９Ａを選択し、業務処理部１５へ通知する。
【００２４】
これにより、リクエスト電文１０から抽出したキー情報に基づいて、アクセス先のテーブルを特定することができる。この結果、アクセス先のテーブルを特定するために、業務処理部１５が生成したＳＱＬ文等の解析を行う必要がない。
【００２５】
業務処理部１５は、リクエスト電文１０に基づいて所定の処理を実行する。そして、その処理結果に基づいて、いずれかのデータテーブル３１にアクセスする。例えば、業務処理部１５はＳＱＬ文を生成し、いずれかのＤＢサーバ３へ送って実行させることにより、そのＤＢサーバ３が有するデータテーブル３１の参照または更新を行う。
【００２６】
ここで、業務処理部１５がＤＢサーバ３へＳＱＬ文を送る場合、コネクション管理部１３から通知されたコネクション１９を用いて行う。つまり、業務処理部１５の処理結果に基づくＳＱＬ文をいずれのＤＢサーバ３へ送り、いずれのデータテーブル３１Ａの参照または更新を行うかは、コネクション管理部１３によって決定される。従って、データベースに格納されているデータに対してアクセスする場合であっても、業務処理部１５が行うＳＱＬ文の生成に関しては、どのＤＢサーバ３あるいはデータテーブル３１に格納されているかを意識する必要がない。
【００２７】
業務処理部１５が、コネクション管理部１３から通知されたコネクション１９を用いたアクセスを終了すると、そのコネクション１９を解放する。
【００２８】
上述した本発明の実施形態は、本発明の説明のための例示であり、本発明の範囲をそれらの実施形態にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【００２９】
例えば、上述したＡＰサーバ及び複数のＤＢサーバは、それら２つ以上を纏めて一つのコンピュータマシンで集中的に実現することもできるし、それぞれ一つのコンピュータマシンに分けて実現することもできる。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態に係るアプリケーションシステムの構成を示す図である。
【図２】リクエスト電文１０の構造の一例を示す図である。
【図３】管理テーブル５の一例を示す図である。
【符号の説明】
【００３１】
１    ＡＰサーバ
３Ａ，３Ｂ，３Ｃ    ＤＢサーバ
５    管理テーブル
１０    リクエスト電文
１１    リクエスト解析部
１３    コネクション管理部
１５    業務処理部
１７Ａ、１７Ｂ，１７Ｃ    コネクションプール
１９Ａ、１９Ｂ，１９Ｃ    コネクション
３１Ａ，３１Ｂ，３１Ｃ    データテーブル
【図１】
2006259790.tif 000003
【図２】
2006259790.tif 000004
【図３】
2006259790.tif 000005