(57)【要約】【課題】データベースシステムにおいて生成子の利用に伴う負荷を低減すること。【解決手段】端末装置１からのデータベースへの処理要求を受け付けるＦＥＳ２と、ＦＥＳ２からの指示に従い、記憶装置５内のデータベースへのアクセスを制御するＢＥＳ４と、が用いられるデータベース管理システムによるデータベース管理方法であって、ＦＥＳ２は、ＤＢ格納領域５５ごとに、ＤＢ格納領域５５に既に配置されている生成子および表データ５２の数をもとに、ＤＢ格納領域５５の負荷評価値を計算し、その負荷評価値が低いＤＢ格納領域５５を生成子の配置先として決定する。【選択図】  図１
2010170446.tif 000002
【特許請求の範囲】
【請求項１】
ユーザが操作する端末装置からのデータベースへの処理要求を受け付けるデータベース受付装置と、前記データベース受付装置からの指示に従い、記憶装置内の格納領域に格納されるデータベースへのアクセスを制御するデータベース管理装置と、が用いられるデータベース管理システムによるデータベース管理方法であって、
前記データベース受付装置の制御部は、
前記端末装置からのデータベースへの処理要求として、前記データベースのデータとして記録される連番を生成するための生成子を配置する生成子定義文を受信し、
前記記憶装置内の格納領域ごとに、その格納領域に既に格納されているデータベースのデータ数と、その格納領域に既に格納されている生成子数とをもとに、それらの数が多くなるほど負荷評価値を高くするように、その格納領域への負荷評価値を計算し、前記負荷評価値が小さい格納領域を前記生成子の配置先として決定し、
前記生成子の配置先として決定した前記記憶装置内の格納領域へアクセス可能な前記データベース管理装置に対して、受信した前記生成子定義文で指定される前記生成子を、前記記憶装置内の格納領域に配置するように指示することを特徴とする
データベース管理方法。
【請求項２】
ユーザが操作する端末装置からのデータベースへの処理要求を受け付けるデータベース受付装置と、前記データベース受付装置からの指示に従い、記憶装置内の格納領域に格納されるデータベースへのアクセスを制御するデータベース管理装置と、が用いられるデータベース管理システムによるデータベース管理方法であって、
前記データベース受付装置の制御部は、
前記端末装置からのデータベースへの処理要求として、前記データベースのデータとして記録される連番を生成するための生成子を配置する生成子定義文を受信し、
前記記憶装置内の格納領域ごとに、その格納領域に対するアクセスの履歴を示すアクセスログを記憶装置から読み取り、そのアクセスログが多くなるほど負荷評価値を高くするように、その格納領域への負荷評価値を計算し、前記負荷評価値が小さい格納領域を前記生成子の配置先として決定し、
前記生成子の配置先として決定した前記記憶装置内の格納領域へアクセス可能な前記データベース管理装置に対して、受信した前記生成子定義文で指定される前記生成子を、前記記憶装置内の格納領域に配置するように指示することを特徴とする
データベース管理方法。
【請求項３】
前記データベース管理装置の制御部は、前記データベース受付装置からの指示により作成された前記生成子について、その生成子の使用処理による負荷が高いときには、前記生成子の使用履歴を前記記憶装置にログとして書き出す処理回数を抑制することを特徴とする
請求項１または請求項２に記載のデータベース管理方法。
【請求項４】
前記データベース管理装置の制御部は、前記データベース受付装置からの指示により作成された前記生成子について、その生成子の使用処理による負荷が高いときには、前記生成子を前記負荷評価値が低い前記記憶装置内の格納領域に再配置するように指示することを特徴とする
請求項１または請求項２に記載のデータベース管理方法。
【請求項５】
前記データベース管理装置の制御部は、前記データベース管理システムのシステム再開始時に、前記記憶装置に記録されている前記生成子の使用履歴を読み取り、その使用履歴に記載されている前記生成子の現在値を元に、前記記憶装置内の格納領域に配置されている前記生成子の現在値を再設定することを特徴とする
請求項１ないし請求項４のいずれか１項に記載のデータベース管理方法。
【請求項６】
前記データベース受付装置と、前記データベース管理装置と、を同一の筐体に収容することを特徴とする
請求項１ないし請求項５のいずれか１項に記載のデータベース管理方法。
【請求項７】
請求項１ないし請求項６のいずれか１項に記載のデータベース管理方法を、前記データベース管理システムに用いられる各装置に実行させるための、データベース管理プログラム。
【請求項８】
ユーザが操作する端末装置からのデータベースへの処理要求を受け付けるデータベース受付装置と、前記データベース受付装置からの指示に従い、記憶装置内の格納領域に格納されるデータベースへのアクセスを制御するデータベース管理装置と、が用いられるデータベース管理システムに用いられるデータベース受付装置であって、
前記データベース受付装置の制御部は、
前記端末装置からのデータベースへの処理要求として、前記データベースのデータとして記録される連番を生成するための生成子を配置する生成子定義文を受信し、
前記記憶装置内の格納領域ごとに、その格納領域に既に格納されているデータベースのデータ数と、その格納領域に既に格納されている生成子数とをもとに、それらの数が多くなるほど負荷評価値を高くするように、その格納領域への負荷評価値を計算し、前記負荷評価値が小さい格納領域を前記生成子の配置先として決定し、
前記生成子の配置先として決定した前記記憶装置内の格納領域へアクセス可能な前記データベース管理装置に対して、受信した前記生成子定義文で指定される前記生成子を、前記記憶装置内の格納領域に配置するように指示することを特徴とする
データベース受付装置。
【請求項９】
ユーザが操作する端末装置からのデータベースへの処理要求を受け付けるデータベース受付装置と、前記データベース受付装置からの指示に従い、記憶装置内の格納領域に格納されるデータベースへのアクセスを制御するデータベース管理装置と、が用いられるデータベース管理システムに用いられるデータベース受付装置であって、
前記データベース受付装置の制御部は、
前記端末装置からのデータベースへの処理要求として、前記データベースのデータとして記録される連番を生成するための生成子を配置する生成子定義文を受信し、
前記記憶装置内の格納領域ごとに、その格納領域に対するアクセスの履歴を示すアクセスログを記憶装置から読み取り、そのアクセスログが多くなるほど負荷評価値を高くするように、その格納領域への負荷評価値を計算し、前記負荷評価値が小さい格納領域を前記生成子の配置先として決定し、
前記生成子の配置先として決定した前記記憶装置内の格納領域へアクセス可能な前記データベース管理装置に対して、受信した前記生成子定義文で指定される前記生成子を、前記記憶装置内の格納領域に配置するように指示することを特徴とする
データベース受付装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベース管理方法、データベース管理プログラム、および、データベース受付装置に関するものである。
【背景技術】
【０００２】
情報化社会の発展に伴い、多くの企業がデータベースシステムを利用している。データベースシステムは、データベースのデータに対する問い合わせに応えるシステムである。データに対する問い合わせを記述する問い合わせ言語としては、ＳＱＬがよく利用される。
【０００３】
データベースのデータとして、社員番号や注文の受付番号などのデータは、通番として番号を付加することで、取り扱いが容易になる場合がある。通番を生成する機能を、システムの開発者が開発するのではなく、データベースシステムに持たせることによって、システムの開発スピードを上げることができ、企業の競争力を向上させることができる。
【０００４】
非特許文献１に記載されているSQL2003の概要において、データベースシステムが通番を生成するための機能として、「シーケンス生成子（Sequence Generators）」（以下、生成子とする）が記載されている。生成子は、ＳＱＬ文中で使用されるごとに加算される現在値である。例えば、次のようなＳＱＬ文によって、生成子の定義処理（生成子定義文）と問い合わせ処理（生成子使用文）を行う。
【０００５】
生成子定義文は、例えば、以下の文が挙げられる。この文は、開始値「０」から始まって増分「１」ずつ増加する現在値を生成する生成子「ＳＥＱ」を定義する。
create sequence SEQ start with 0 increment by 1
【０００６】
生成子使用文は、例えば、以下の文が挙げられる。この文は、「next value for SEQ」命令で生成子「ＳＥＱ」を使用する。その結果、生成子「ＳＥＱ」の現在値が返却された後、その現在値に増分「１」が加算される。つまり、この文は、「ＳＥＱ」の現在値を表「ＴＡＢ」に挿入する旨の命令文である。
insert into TAB value （next values for SEQ）
【０００７】
非特許文献２には、複数サーバ構成の無共有型（シェアードナッシング）のＤＢＭＳ（database management system）が記載されている。そして、非特許文献２には、データベースを処理するための複数のサーバを、並列に構成することによって、多量のデータを扱うことが記載されている。
【０００８】
並列データベースシステムにおいて生成子を実現するためには、生成子を使用するサーバが、現在値を特定のサーバに格納して、現在値を格納しているサーバを参照する方法が考えられる。そのためには、生成子を含む問い合わせ処理を、複数のサーバで実行する場合に、各サーバ間で生成する値に重複や順序の逆転などが発生しないように管理する機構が求められる。
【０００９】
並列データベースシステムにおいて、生成子を記述した問い合わせ処理を実行する場合に、生成子の現在値を取得するためのサーバ間の通信や現在値に対する排他処理を実行するために、処理時間が長くなる。
そこで、特許文献１では、各サーバが使用する生成子の現在値の範囲を事前に割り当てることによって、排他処理にかかる時間を短縮した。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第７０８９３５６号明細書
【非特許文献】
【００１１】
【非特許文献１】Andrew Eisenberg, Jim Melton, etc: SQL:2003 Has Been Published, SIGMOD Record, Vol. 33, No. 1, March 2004, P.119-P.126、[online]、［平成２１年１月８日検索］、インターネット＜ＵＲＬ：http://www.sigmod.org/record/issues/0403/E.JimAndrew-standard.pdf＞
【非特許文献２】Parallel Database Systems :The Future of High Performance Database Systems（David DeWitt and Jim Gray, COMMUNICATIONS OF THE ACM, Vol.35, No.6, 1992, P.85-P.98）
【発明の概要】
【発明が解決しようとする課題】
【００１２】
複数サーバ構成のデータベースシステムにおいては、生成子が複数のサーバ間で共用されるため、サーバ間の通信処理が頻繁に発生し、データベースシステムに対するオーバーヘッドとなっていた。このオーバーヘッドの要因の１つは、生成子の配置先として適切なデータベースの格納領域（以下、ＤＢ格納領域と略す）が選択されていないことにある。
【００１３】
例えば、第１ＤＢ格納領域には既に多くの生成子が既に配置されているにもかかわらず、新たな生成子を第１ＤＢ格納領域に配置してしまうと、第１ＤＢ格納領域へのデータアクセス負荷が高くなってしまう。一方、第２ＤＢ格納領域には、あまり生成子が配置されていないため、新たな生成子を追加しても、データアクセス負荷はさほど増加しない。このとき、第２ＤＢ格納領域を配置先として選択することが望ましいが、この選択を実現するような手法は提案されていない。
【００１４】
そこで、本発明は、前記した問題を解決し、データベースシステムにおいて生成子の利用に伴う負荷を低減することを、主な目的とする。
【課題を解決するための手段】
【００１５】
前記課題を解決するために、本発明は、ユーザが操作する端末装置からのデータベースへの処理要求を受け付けるデータベース受付装置と、前記データベース受付装置からの指示に従い、記憶装置内の格納領域に格納されるデータベースへのアクセスを制御するデータベース管理装置と、が用いられるデータベース管理システムによるデータベース管理方法であって、
前記データベース受付装置の制御部が、
前記端末装置からのデータベースへの処理要求として、前記データベースのデータとして記録される連番を生成するための生成子を配置する生成子定義文を受信し、
前記記憶装置内の格納領域ごとに、その格納領域に既に格納されているデータベースのデータ数と、その格納領域に既に格納されている生成子数とをもとに、それらの数が多くなるほど負荷評価値を高くするように、その格納領域への負荷評価値を計算し、前記負荷評価値が小さい格納領域を前記生成子の配置先として決定し、
前記生成子の配置先として決定した前記記憶装置内の格納領域へアクセス可能な前記データベース管理装置に対して、受信した前記生成子定義文で指定される前記生成子を、前記記憶装置内の格納領域に配置するように指示することを特徴とする。
その他の手段は、後記する。
【発明の効果】
【００１６】
本発明によれば、データベースシステムにおいて生成子の利用に伴う負荷を低減することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施形態に関するデータベースシステムを示す構成図である。
【図２】本発明の一実施形態に関するデータベースシステムの各装置の処理部を示す構成図である。
【図３】本発明の一実施形態に関するＦＥＳが管理するテーブル（表定義テーブル、領域管理テーブル）を示す構成図である。
【図４】本発明の一実施形態に関するＢＥＳが管理する生成子定義テーブルを示す構成図である。
【図５】本発明の一実施形態に関する記憶装置が収容するデータ（生成子情報テーブル、表データ）を示す構成図である。
【図６】本発明の一実施形態に関する記憶装置が収容するログテーブル（更新ログテーブル、採番ログテーブル）を示す構成図である。
【図７】本発明の一実施形態に関する生成子定義文の処理の概要を示すフローチャートである。
【図８】本発明の一実施形態に関する生成子配置部が実行する、生成子配置先のＤＢ格納領域を決定する処理の詳細を示すフローチャートである。
【図９】本発明の一実施形態に関する生成子定義文の処理の詳細を示す説明図である。
【図１０】本発明の一実施形態に関する生成子定義文の処理の詳細を示す説明図である。
【図１１】本発明の一実施形態に関する生成子使用文の処理の概要を示すフローチャートである。
【図１２】本発明の一実施形態に関する生成子使用文の処理の詳細を示す説明図である。
【図１３】本発明の一実施形態に関する生成子管理部が実行する、システム再開始時における「生成子回復処理」を示す説明図である。
【図１４】本発明の一実施形態に関する生成子回復処理を示すフローチャートである。
【図１５】本発明の一実施形態に関する生成子負荷対策部が実行する、生成子の負荷対策処理を示すフローチャートである。
【図１６】本発明の一実施形態に関する確認メッセージを示す画面図である。
【発明を実施するための形態】
【００１８】
以下に、本発明が適用されるデータベースシステムの一実施形態について、図面を参照して詳細に説明する。
【００１９】
図１は、データベースシステムを示す構成図である。データベースシステムは、端末装置１と、ＦＥＳ（Front End Server）２と、ＤＳ（Dictionary Server）３と、ＢＥＳ（Back End Server）４と、がネットワーク９で接続されて構成される。
ネットワーク９では、データベースシステムの各装置のネットワークインタフェース（ＦＥＳ２のインタフェース９１ａ、ＢＥＳ４のインタフェース９１ｂなど）を介して、データの通信が行われる。
【００２０】
端末装置１は、ＦＥＳ２に対して、データベースへのアクセス要求を送信するために用いられる装置である。この端末装置１は、ユーザによって操作される。データベースへのアクセス要求は、例えば、ＳＱＬの文法に従って記述される。
【００２１】
ＦＥＳ２は、インタフェース９１ａと、プロセッサ９２ａと、メモリ９３ａと、を備えるコンピュータである。
ＦＥＳ２は、端末装置１から受け付けたデータベースへのアクセス要求を、そのデータベースを収容するＢＥＳ４に対して割り振るデータベース受付装置である。
【００２２】
ＤＳ３は、インタフェース（図示省略）と、プロセッサ９２ｃと、メモリ９３ｃと、を備えるコンピュータである。ＤＳ３は、データベースの生成子に関する情報を生成子定義テーブル３２に格納し、生成子定義管理部３１が管理する。生成子定義管理部３１は、プロセッサ９２ｃがメモリ９３ｃ内のプログラムを実行することで構成される。さらに、ＤＳ３は、データベースの利用者に関する情報や、表に関する情報など、他の情報を管理してもよい。
【００２３】
ＢＥＳ４は、インタフェース９１ｂと、プロセッサ９２ｂと、メモリ９３ｂと、を備えるコンピュータである。
ＢＥＳ４は、ＦＥＳ２から受け付けたデータベースへのアクセス要求をもとに、収容する記憶装置５のデータベースのアクセスを制御するデータベース管理装置である。ＢＥＳ４と記憶装置５とは、例えば、無共有型（シェアードナッシング）で接続されている。例えば、ＢＥＳ４ａは記憶装置５ａと接続され、ＢＥＳ４ｂは記憶装置５ｂと接続される。つまり、記憶装置５は、１台のＢＥＳ４に対して専用的に収容されることで、アクセス先が１台のＢＥＳ４に特定される。一方、ＢＥＳ４と記憶装置５とは、共有型（シェアード）で接続されていてもよい。
【００２４】
以上説明した図１の各装置について、装置構成および装置の台数は、あくまで一例であり、図１の構成に限定されない。例えば、図１では、ＦＥＳ２とＢＥＳ４とを別々の筐体に収容しているが、ＦＥＳ２とＢＥＳ４とを同じ１つの筐体に収容してもよい。
【００２５】
本実施形態の特徴の１つは、ＦＥＳ２が各記憶装置５内の複数のＤＢ格納領域５５（図２参照）の中から、処理効率の優れるＤＢ格納領域５５を選択し、その選択したＤＢ格納領域５５を管理するＢＥＳ４に対して生成子の配置を要求する点である。
そのため、ＦＥＳ２は、端末装置１から新しく生成子を定義する旨の生成子定義文を受信し、その生成子の処理効率がよいＤＢ格納領域５５を管理するＢＥＳ４を選択し、そのＢＥＳ４に対して生成子を配置する。
さらに、ＦＥＳ２は、生成子の配置先をＤＳ３に登録するとともに、生成子の使用状況により、適宜生成子の再配置などの生成子の負荷対策処理を実施する。
【００２６】
図２は、データベースシステムの各装置の処理部を示す構成図である。
【００２７】
ＦＥＳ２のメモリ９３ａには、表定義管理部２１と、表定義テーブル２２と、領域管理テーブル２３と、生成子配置部２４と、表データ処理要求部２５と、アクセスログ処理部２６と、生成子負荷対策部２７と、が格納されている。なお、メモリ９３ａに格納されている各処理部は、プロセッサ９２ａにより実行されるプログラムである。
ＢＥＳ４のメモリ９３ｂには、生成子管理部４１と、表データ処理部４２と、更新ログ管理部４３と、が格納されている。なお、メモリ９３ｂに格納されている各処理部は、プロセッサ９２ｂにより実行されるプログラムである。
【００２８】
表定義管理部２１は、表定義テーブル２２および領域管理テーブル２３のデータ内容を管理する。
生成子配置部２４は、生成子管理部４１に対して、生成子の初回配置処理および再配置処理を要求する。生成子管理部４１は、生成子情報テーブル５１に格納されている生成子へのアクセスを実施する。
ここで、生成子配置部２４は、複数のＢＥＳ４から配置先のＢＥＳ４を選択し、かつ、その配置先のＢＥＳ４が管理するＤＢ格納領域５５を選択する。ＤＢ格納領域５５は、生成子情報テーブル５１および表データ５２を任意の数だけ格納する。
【００２９】
表データ処理要求部２５は、表定義テーブル２２に登録されている表データ５２のリストを参照し、処理対象の表データ５２を管理するＤＢ格納領域５５を特定した後、特定したＤＢ格納領域５５に対応するＢＥＳ４（領域管理テーブル２３を参照）の表データ処理部４２に対して、データアクセスを要求する。表データ処理部４２は、表データ処理要求部２５からの要求を受け、表データ５２にデータアクセスする。
【００３０】
アクセスログ処理部２６は、記憶装置５ごとに管理されているアクセスログへの処理をＢＥＳ４に要求する。なお、アクセスログは、更新ログテーブル５３に格納されている更新ログ、および、採番ログテーブル５４に格納されている採番ログを示す。
生成子管理部４１は、アクセスログ処理部２６からの要求を受け、採番ログテーブル５４に格納されている採番ログにアクセスする。採番ログとは、生成子情報テーブル５１に格納されている生成子へのアクセス履歴である。
更新ログ管理部４３は、アクセスログ処理部２６からの要求を受け、更新ログテーブル５３に格納されている更新ログにアクセスする。更新ログとは、表データ５２への更新（操作）のログ、および、生成子情報テーブル５１に格納されている生成子への定義（生成）処理および削除処理のログである。
【００３１】
図３は、ＦＥＳ２が管理するテーブル（表定義テーブル２２、領域管理テーブル２３）を示す構成図である。
表定義テーブル２２は、表データ５２ごとにその表名称と、その表データ５２が格納されるＤＢ格納領域５５と、を対応づけて管理する。例えば、表名称「Ｔ２」の表データ５２は、「ＩＤ＝１」のＤＢ格納領域５５に格納されている。
領域管理テーブル２３は、ＤＢ格納領域５５と、そのＤＢ格納領域５５にアクセス可能なＢＥＳ４と、を対応づけて管理する。例えば、「ＩＤ＝１」のＤＢ格納領域５５は、ＢＥＳ４ｂからアクセス可能に構成されている。なお、図３の領域管理テーブル２３の「ＢＥＳ」列は、１つのＢＥＳが専用的にアクセスするシェアードナッシングの一例を示しているが、複数台のＢＥＳを１つのレコード内に納める、シェアード方式としてもよい。
なお、表定義テーブル２２や領域管理テーブル２３の「ＤＢ格納領域５５」を示す列の表記において、「ＤＢ格納領域１」とは、「ＩＤ＝１」のＤＢ格納領域５５を示す。
【００３２】
図４は、ＢＥＳ４が管理する生成子定義テーブル３２を示す構成図である。
生成子定義テーブル３２は、各ＢＥＳ４にそれぞれ配置されている生成子に関する情報をリストとして記憶する。
生成子定義テーブル３２は、生成子ごとに、その生成子名称と、生成子配置先ＤＢ格納領域と、生成子の開始値と、生成子の増分と、採番ログ格納間隔（詳細は図９で後記する）と、を対応づけて管理する。なお、生成子名称と、生成子の開始値と、生成子の増分と、採番ログ格納間隔とは、生成子定義文に記載される情報である。
【００３３】
図５は、記憶装置５が収容するデータ（生成子情報テーブル５１、表データ５２）を示す構成図である。
生成子情報テーブル５１は、生成子について、その生成子名称と、その生成子の現在値と、その生成子の使用回数と、を対応づけて管理する。生成子の現在値は、生成子の初回配置時に生成子定義テーブル３２の「生成子の開始値」から始まり、使用されるたびに「生成子の増分」ずつ加算される。生成子の使用回数は、生成子の初回配置時に「０」から始まり、使用されるたびに「１」ずつ加算される。
表データ５２（例えば、表名称「Ｔ２」）は、列「Ｃ１」と、列「Ｃ２」と、を対応づけて構成される。この表データ５２は、列「Ｃ１」を整数型として、列「Ｃ２」を１６文字の文字列として、作成されている。この表データ５２は、記憶装置５が、ＢＥＳ４からの指示に従い、作成する。なお、この表データ５２は、データベースの内容を示すものなので、ユーザが「create table」文で自由に定義できる。以下のＳＱＬ文は、列「Ｃ１」を整数型として、列「Ｃ２」を１６文字の文字列として、表「Ｔ２」を作成する要求である。
create table T2(C1 int, C2 char(16))
ＢＥＳ４ｂは、このＳＱＬ文に従い、表データ５２の作成を、自装置が収容する記憶装置５ｂに指示するとともに、ＦＥＳ２の表定義テーブル２２に対して、新たに作成する表名称「Ｔ２」の表に関する情報の登録を指示する。
【００３４】
図６は、記憶装置５が収容するログテーブル（更新ログテーブル５３、採番ログテーブル５４）を示す構成図である。なお、これらのログテーブルは、ＢＥＳ４ａによって管理される一例を示している。
更新ログテーブル５３は、表データ５２への操作が行われるたびに、その操作が行われた「時刻」と、その操作の種別を示す「操作」と、その操作に関するパラメータである「ログデータ」と、を対応づけて管理する。更新ログテーブル５３は、記憶装置５に記憶されており、その記憶装置５を収容するＢＥＳ４が制御する操作の分だけ、更新ログ管理部４３によって記録される。
採番ログテーブル５４は、生成子情報テーブル５１の生成子への使用操作が行われるたびに、その操作が行われた「時刻」と、その操作の対象を示す「生成子名称」と、その操作結果として更新される生成子の現在値である「採番ログ値」と、を対応づけて管理する。
【００３５】
図７は、生成子定義文の処理の概要を示すフローチャートである。
【００３６】
Ｓ１０１において、ＦＥＳ２は、端末装置１から、生成子定義文を受信する。
Ｓ１０２において、ＦＥＳ２は、Ｓ１０１の生成子定義文で指定されている生成子の配置先となるＤＢ格納領域５５を決定する（詳細は図８参照）。
Ｓ１０３において、ＦＥＳ２は、領域管理テーブル２３を参照して、Ｓ１０２で決定したＤＢ格納領域５５にアクセス可能な（担当する）ＢＥＳ４のうちの１台を生成子配置先ＢＥＳとして特定する。なお、シェアード形式により領域管理テーブル２３を省略するときには、各ＢＥＳ４のうち、任意の１台のＢＥＳ４を例えばランダムに特定する。
【００３７】
Ｓ１０４において、ＦＥＳ２は、Ｓ１０３で特定した生成子配置先ＢＥＳに対して、生成子の配置を要求する。
Ｓ１０５において、Ｓ１０４の配置要求を受けたＢＥＳ４は、収容する記憶装置５に対して、生成子の配置を実施する。
Ｓ１０６において、Ｓ１０５を実行したＢＥＳ４は、Ｓ１０５で配置された生成子に関する情報を、ＤＳ３の生成子定義テーブル３２に対して登録する。
【００３８】
図８は、生成子配置部２４が実行する、生成子配置先のＤＢ格納領域５５を決定する処理（Ｓ１０２）の詳細を示すフローチャートである。
Ｓ１１１において、アクセスログのエントリ数（レコード数）が多いか否かを判定し、ＹｅｓならＳ１２１へ、ＮｏならＳ１３１へ進む。アクセスログのエントリ数は、更新ログテーブル５３のエントリ数と、採番ログテーブル５４のエントリ数と、の和で求められる。
【００３９】
Ｓ１２１〜Ｓ１２５のループは、領域管理テーブル２３に格納されているＤＢ格納領域５５を順に選択し、その選択中のＤＢ格納領域５５ごとのアクセスログを用いて負荷評価値を計算するものである。
Ｓ１２２において、更新ログテーブル５３を参照し、条件(所定の期間内)に合致する更新ログのエントリ数(NumOfUpdLog)を算出する。
Ｓ１２３において、採番ログテーブル５４を参照し、条件(所定の期間内)に合致する採番ログのエントリ数(NumOfCountLog)を算出する。
Ｓ１２４において、Ｓ１２２で求めたエントリ数(NumOfUpdLog)、および、Ｓ１２３で求めた(NumOfCountLog)を加算し、その和(NumOfCountUpdLog)を負荷評価値として算出する。
Ｓ１２６において、Ｓ１２４で求めたＤＢ格納領域５５ごとの負荷評価値(NumOfCountUpdLog)の内、最小値の負荷評価値に対応するＤＢ格納領域５５を、生成子の配置先として決定する。
【００４０】
Ｓ１３１〜Ｓ１３５のループは、領域管理テーブル２３に格納されているＤＢ格納領域５５を順に選択し、その選択中のＤＢ格納領域５５ごとの定義情報を用いて負荷評価値を計算するものである。
Ｓ１３２において、表定義テーブル２２を参照し、ループで選択中のＤＢ格納領域５５に定義されている(対応付けられている)表の数(NumOfTableDef)を算出する。
Ｓ１３３において、生成子定義テーブル３２を参照し、ループで選択中のＤＢ格納領域５５に配置されている(対応付けられている)生成子の数(NumOfGenDef)を算出する。
Ｓ１３４において、Ｓ１３２で求めた表の数(NumOfTableDef)と、Ｓ１３３で求めた生成子の数(NumOfGenDef)とを加算し、和(NumOfDef)を負荷評価値として求める。
Ｓ１３６において、Ｓ１３４で求めたＤＢ格納領域５５ごとの負荷評価値(NumOfDef)の内、最小値の負荷評価値に対応するＤＢ格納領域５５を、生成子の配置先として決定する。
【００４１】
以上、図８で説明した負荷評価値の計算式は、あくまで一例であり、その他の計算式を用いてもよい。
例えば、アクセスログを用いて負荷評価値を計算する（Ｓ１２１〜Ｓ１２５）ときに、エントリ数(NumOfUpdLog)と、エントリ数(NumOfCountLog)とを加算する代わりに、２つのエントリ数のいずれか１つだけを負荷評価値としてもよいし、各エントリ数に対してそれぞれの重みをかけてから和を取る（加重加算）してもよい。
また、定義情報を用いて負荷評価値を計算する（Ｓ１３１〜Ｓ１３５）ときにも同様に、２つのパラメータのうちの１つだけを使用してもよいし、加重加算してもよい。
さらに、表の数(NumOfTableDef)は、表データ５２のデータ容量に比例した重みをかけても計算してもよい。例えば、１００ＭＢの表を表１つ分とすると、２０００ＭＢのデータは、表２０個分になる。
【００４２】
図９は、生成子定義文の処理（図７，図８）の詳細（特に、図８のＳ１３１〜Ｓ１３６）の一例を示す説明図である。
Ｓ１０１において、生成子配置部２４は、以下に示す生成子定義文を受信する。
create sequence MOUSE start with 10 increment by 2 log interval 100
生成子配置部２４は、この生成子定義文に対して構文解析を行うことで、この生成子定義文が、生成子名称「ＭＯＵＳＥ」について、開始値「１０」、増分「２」および採番ログ格納間隔「１００」として定義する旨を取得する。
【００４３】
生成子配置部２４は、アクセスログのエントリ数（レコード数）が少ないときに（Ｓ１１１，Ｎｏ）、ＤＢ格納領域５５ごとの定義情報を用いて負荷評価値を計算する。
生成子配置部２４は、２つのＤＢ格納領域５５（ＩＤ＝１，ＩＤ＝４）を領域管理テーブル２３から取得し、生成子配置先ＢＥＳの候補とする。そして、これらの候補を順に選択し（Ｓ１３１）、表の数を算出し（Ｓ１３２）、生成子の数を算出する（Ｓ１３３）。さらに、生成子配置部２４は、表の数と生成子の数との和を、負荷評価値とする（Ｓ１３４）。
その結果、「ＩＤ＝１」のＤＢ格納領域５５の負荷評価値「２＋１＝３」は、「ＩＤ＝４」のＤＢ格納領域５５の負荷評価値「３＋２＝５」よりも小さいので、生成子配置部２４は、「ＩＤ＝１」のＤＢ格納領域５５を配置先に決定する。
【００４４】
図１０は、生成子定義文の処理（図７）の詳細（Ｓ１０３〜Ｓ１０６）の一例を示す説明図である。
生成子配置部２４は、Ｓ１０２で配置先に決定した「ＩＤ＝１」のＤＢ格納領域５５にアクセス可能なＢＥＳ４（ＢＥＳ４ｂ）を、領域管理テーブル２３を参照して選択し、生成子配置先ＢＥＳとする（Ｓ１０３）。
生成子配置部２４は、Ｓ１０３で決定した生成子配置先ＢＥＳに対して、生成子の配置を要求する。この要求には、Ｓ１０２で決定した「ＩＤ＝１」のＤＢ格納領域５５の指定が含まれる。
【００４５】
配置要求を受けたＢＥＳ４ｂの生成子管理部４１は、配置要求から生成される生成子定義メッセージを、配置要求で指定されているＤＢ格納領域５５を収容する記憶装置５ｂに送信する（Ｓ１０５）。記憶装置５ｂは、生成子定義メッセージに従い、生成子情報テーブル５１に対して、生成子名称「ＭＯＵＳＥ」、現在値「１０」、および、使用回数「０」を対応づけるレコードを新たに作成する。
【００４６】
生成子配置部２４は、さらに、配置した生成子「ＭＯＵＳＥ」に関する情報を、ＤＳ３の生成子定義テーブル３２に登録する。具体的には、生成子配置部２４は、生成子定義文の構文解析結果と、その生成子の配置先のＤＢ格納領域５５とを含む生成子登録メッセージをＤＳ３に送信する（Ｓ１０６）。ＤＳ３の生成子定義管理部３１は、生成子登録メッセージを受信すると、その内容を生成子定義テーブル３２に登録する。
【００４７】
図１１は、生成子使用文の処理の概要を示すフローチャートである。
【００４８】
Ｓ２０１において、ＦＥＳ２は、端末装置１から、生成子使用文を受信する。
Ｓ２０２において、ＦＥＳ２は、生成子使用文で指定される表データ５２を格納するＤＢ格納領域５５を、表定義管理部２１から取得する。
Ｓ２０３において、ＦＥＳ２は、生成子使用文で指定される生成子を格納するＤＢ格納領域５５を、ＤＳ３の生成子定義管理部３１から取得する。
【００４９】
Ｓ２０４において、ＦＥＳ２は、Ｓ２０１〜Ｓ２０３で取得した情報を、表データ５２を格納するＤＢ格納領域５５（Ｓ２０２で取得）にアクセス可能なＢＥＳ４へ送信する。
【００５０】
Ｓ２０５において、Ｓ２０４で送信された情報を受信したＢＥＳ４は、生成子を格納するＤＢ格納領域５５（Ｓ２０３で取得）が自装置に収容されている（自装置の管理下）か否かを判定し、判定条件を満たすときにはＳ２０６へ、満たさないときにはＳ２０７へ、処理を進める。
Ｓ２０６において、ＢＥＳ４は、自装置が収容する記憶装置５のＤＢ格納領域５５（Ｓ２０３で取得）に配置されている生成子を使用することにより、生成子の現在値を取得するとともに、その現在値を加算する。
Ｓ２０７において、ＢＥＳ４は、生成子使用文で指定される生成子を管理する他装置のＢＥＳ４に対して、生成子の使用を依頼することにより、生成子の現在値を取得するとともに、その現在値を加算する。
Ｓ２０８において、ＢＥＳ４は、Ｓ２０６またはＳ２０７で取得した生成子の現在値をもとに、自装置が収容する記憶装置５に格納されている表データ５２にアクセスする。
Ｓ２０９において、ＢＥＳ４は、Ｓ２０８のアクセス結果を、自装置の更新ログテーブル５３へと反映するとともに、Ｓ２０６またはＳ２０７のアクセス結果を、採番ログテーブル５４へと反映する。
【００５１】
図１２は、生成子使用文の処理（図１１）の詳細の一例を示す説明図である。以下の図１２の説明において、適宜図１１の処理ステップを引用する。
【００５２】
ＦＥＳ２は、端末装置１から、以下に示す生成子使用文を受信する（Ｓ２０１）。
insert into T2 values(next value for MOUSE, ‘GRAPE’)
ＦＥＳ２の表データ処理要求部２５は、この生成子使用文に対して構文解析を行うことで、この生成子使用文が、表データ５２「Ｔ２」の列「Ｃ１」に生成子「ＭＯＵＳＥ」の現在値を書き込み、対応する列「Ｃ２」に値「ＧＲＡＰＥ」を書き込む旨のアクセス要求である旨を取得する。
【００５３】
表データ処理要求部２５は、生成子使用文で指定される表データ５２「Ｔ２」をキーとして、表定義管理部２１に対して、問い合わせを行う。表定義管理部２１は、問い合わせを受け、表定義テーブル２２から表名称「Ｔ２」に該当するレコードを検索し、そのレコードのＤＢ格納領域５５「ＩＤ＝１」を表データ処理要求部２５に返答する（Ｓ２０２）。
【００５４】
表データ処理要求部２５は、生成子使用文の生成子「ＭＯＵＳＥ」をキーとして、ＤＳ３の生成子定義管理部３１に問い合わせを行う。生成子定義管理部３１は、問い合わせを受信すると、生成子定義テーブル３２から生成子名称「ＭＯＵＳＥ」に該当するレコードを検索し、そのレコードのＤＢ格納領域５５「ＩＤ＝１」を表データ処理要求部２５に返答する（Ｓ２０３）。
【００５５】
表データ処理要求部２５は、領域管理テーブル２３を参照して、表データ５２「Ｔ２」を含むＤＢ格納領域５５「ＩＤ＝１」を管理するＢＥＳ４ｂを特定し、そのＢＥＳ４ｂ（表データ処理部４２）に対して、受信した生成子使用文と、その生成子を含むＤＢ格納領域５５「ＩＤ＝１」などの情報を、送信する（Ｓ２０４）。
【００５６】
ＢＥＳ４ｂの表データ処理部４２は、自装置の生成子管理部４１（Ｓ２０５，Ｙｅｓ）に対して、生成子使用文で指定される生成子名称「ＭＯＵＳＥ」の使用を依頼する。
ＢＥＳ４ｂの生成子管理部４１は、表データ処理部４２からの依頼を受け、生成子使用文で指定される生成子名称「ＭＯＵＳＥ」を含めた生成子使用メッセージを、ＤＢ格納領域５５「ＩＤ＝１」を収容する記憶装置５ｂに送信する。
記憶装置５ｂは、生成子使用メッセージを受信すると、以下の（１）〜（３）の処理を順に実行する（Ｓ２０６）。
（１）生成子名称「ＭＯＵＳＥ」の現在値「１４」を生成子情報テーブル５１から読み取り、生成子使用メッセージの送信元（生成子管理部４１）に返却する。なお、図１２では、生成子名称「ＭＯＵＳＥ」の現在値は、更新前の「１４」ではなく、更新後の「１６」を記載している。
（２）生成子名称「ＭＯＵＳＥ」の現在値「１４」に対して、生成子情報テーブル５１に格納されている増分「２」を加えることで、現在値を「１６」に更新する。
（３）生成子名称「ＭＯＵＳＥ」の「使用回数」に「１」を加算する。
【００５７】
表データ処理部４２は、生成子管理部４１が返却を受けた生成子名称「ＭＯＵＳＥ」の現在値「１４」を、生成子使用文の構文解析結果へと代入することで、表データ５２「Ｔ２」の列「Ｃ１」に「１４」を書き込み、対応する列「Ｃ２」に値「ＧＲＡＰＥ」を書き込む旨のデータアクセスメッセージを作成する。生成子管理部４１は、作成したデータアクセスメッセージを、「ＢＥＳ４ｂ」へ送信する。
【００５８】
データアクセスメッセージを受信したＢＥＳ４ｂの表データ処理部４２は、収容する記憶装置５の表データ５２「Ｔ２」に対して、列「C1,C2」のデータ書き込みを要求する。記憶装置５は、その要求に従い、新たなレコード「C1=14，C2=GRAPE」を書き込む（Ｓ２０８）。
そして、表データ５２の更新操作が行われたので、更新ログ管理部４３は、更新ログテーブル５３に対して、データアクセスメッセージが示す操作内容とその操作時刻とを格納する。そして、生成子管理部４１は、採番ログテーブル５４に対して、生成子使用内容とその使用時刻とを格納する（Ｓ２０９）。
【００５９】
図１３は、生成子管理部が実行する、システム再開始時における「生成子回復処理」を示す説明図である。生成子の現在値は、開始値「１０」からスタートして、使用されるごとに（使用は右矢印で図示する）増分「２」ずつ増加する。
採番ログテーブル５４には、生成子の使用回数が採番ログ格納間隔（例えば、２０）の倍数になるごとに、時刻と、生成子名称と、採番ログ値とが対応づけて格納される。採番ログ値は、例えば、以下の式で求められる。
「採番ログ値（例えば、８６）」＝「採番(NEXT VALUE実行)後の現在値（例えば、４８）」＋「増分（例えば、２）」×（「採番ログ格納間隔（例えば、２０）」−１）
【００６０】
図１４は、図１３で示した説明図を実行するためのフローチャートである。
Ｓ３０１において、生成子管理部４１は、採番ログテーブル５４から、最新の回復対象の生成子名称に対応する採番ログテーブル５４のエントリを取得する。
Ｓ３０２において、生成子管理部４１は、取得したエントリに含まれる「採番ログ値（８６）」を、生成子情報テーブル５１の現在値に設定する。
【００６１】
図１５は、生成子負荷対策部２７が実行する、生成子の負荷対策処理を示すフローチャートである。このフローチャートは、生成子の定義（初回配置）処理が行われた後、その生成子への負荷が高くなることへの対策として実行される。このフローチャートは、ＤＳ３の生成子定義テーブル３２から、１つの生成子を選択してから、実行される。
【００６２】
Ｓ４０１において、生成子の使用が性能ボトルネックか（つまり、生成子の使用処理による負荷が、データベースの処理の弱点となる）否かを判定し、ＹｅｓならＳ４０２に進み、Ｎｏなら負荷が低いので処理を終了する。
Ｓ４０２において、生成子の採番ログ格納間隔が上限（所定閾値）に達しているか否かを判定し、ＹｅｓならＳ４２１に進み、ＮｏならＳ４１１へ進む。
Ｓ４１１において、生成子定義テーブル３２の採番ログ格納間隔を増加させる。これにより、採番ログテーブル５４への書き込み頻度が下がるので、生成子の使用に伴う負荷を下げることができる。
【００６３】
Ｓ４２１において、生成子の再配置先のＤＢ格納領域５５の候補を決定する。この決定処理は、基本的には、図８の決定処理に従うが、再配置検討対象の生成子に関するアクセスログは、負荷評価値の計算対象のエントリ数からは除外する。
Ｓ４２２において、Ｓ４２１で候補として決定されたＤＢ格納領域５５を、生成子の移動先(再配置先)として提案する。具体的には、表示装置は、確認メッセージ（後記する図１６参照）を表示する。
Ｓ４２３において、Ｓ４２２で生成子の移動を行う旨の入力を受け付けたか否かを判定し、ＹｅｓならＳ４２４に進み、Ｎｏならユーザの指示に従って処理を終了する。
【００６４】
Ｓ４２４において、生成子をＳ４２２で提案した移動先へと移動する。
具体的には、移動元のＤＢ格納領域５５を管理する生成子配置部２４は、移動先のＤＢ格納領域５５を管理する生成子配置部２４に対して、自装置の生成子情報テーブル５１に記載されている移動対象の生成子に関する情報（生成子名称、現在値、使用回数）を通知した後、その移動対象の生成子に関する情報を、自装置の生成子情報テーブル５１から削除する。
そして、移動先の生成子配置部２４は、移動元から通知を受けた移動対象の生成子に関する情報（生成子名称、現在値、使用回数）を、自装置の生成子情報テーブル５１に新規追加する。
さらに、移動先の生成子配置部２４は、ＤＳ３の生成子定義管理部３１に対して、移動対象の生成子に関する生成子定義テーブル３２の「ＤＢ格納領域５５」を、移動元から移動先へと変更するように要求する。
Ｓ４２５において、Ｓ４２４で移動した生成子についての、生成子定義テーブル３２の採番ログ格納間隔を、初期値（例えば、生成子定義文に記載されていた値）にリセットする。
【００６５】
図１６は、図１５のＳ４２２で表示される確認メッセージを示す画面図である。確認メッセージには、ＤＢ格納領域５５ごとのアクセスログの格納頻度が表形式で表示されている。この確認メッセージの下部に表示されている「yes」ボタンをクリックすると、Ｓ４２４へ処理が進む。
【００６６】
以上説明したように、本実施形態では、新たな生成子の配置先を、負荷の低いＤＢ格納領域５５へと決定する。負荷の評価は、アクセスログや、定義情報をもとに計算する。これにより、配置された生成子の使用時に、その生成子を格納するＤＢ格納領域５５への負荷が抑制されるので、オーバーヘッドを削減することができる。
【符号の説明】
【００６７】
１      端末装置
２      ＦＥＳ
３      ＤＳ
４      ＢＥＳ
５      記憶装置
９      ネットワーク
２１    表定義管理部
２２    表定義テーブル
２３    領域管理テーブル
２４    生成子配置部
２５    表データ処理要求部
２６    アクセスログ処理部
２７    生成子負荷対策部
３１    生成子定義管理部
３２    生成子定義テーブル
４１    生成子管理部
４２    表データ処理部
４３    更新ログ管理部
５１    生成子情報テーブル
５２    表データ
５３    更新ログテーブル
５４    採番ログテーブル
５５    ＤＢ格納領域
９１ａ，９１ｂ  インタフェース
９２ａ，９２ｂ，９２ｃ  プロセッサ
９３ａ，９３ｂ，９３ｃ  メモリ
【図１】
2010170446.tif 000003
【図２】
2010170446.tif 000004
【図３】
2010170446.tif 000005
【図４】
2010170446.tif 000006
【図５】
2010170446.tif 000007
【図６】
2010170446.tif 000008
【図７】
2010170446.tif 000009
【図８】
2010170446.tif 000010
【図９】
2010170446.tif 000011
【図１０】
2010170446.tif 000012
【図１１】
2010170446.tif 000013
【図１２】
2010170446.tif 000014
【図１３】
2010170446.tif 000015
【図１４】
2010170446.tif 000016
【図１５】
2010170446.tif 000017
【図１６】
2010170446.tif 000018