(57)【要約】【課題】ノード間のアクセス負荷の差を小さくする。【解決手段】アクセス制御装置１０は、取得手段１１と変更手段１２とを有する。取得手段１１は、複数のアクセス装置２，３からアクセスされるストレージ装置１内のデータを複数のデータグループに分け、データグループごとに、該データグループに属するデータへのアクセス頻度を取得する。変更手段１２は、複数のデータグループそれぞれのアクセス頻度に基づいて、複数のアクセス装置２，３それぞれがアクセス対象とするデータグループのアクセス頻度の合計の差が小さくなるように、複数のアクセス装置２，３それぞれがアクセス対象とするデータグループの定義を変更する。【選択図】図１
2015153123.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
複数のアクセス装置からアクセスされるストレージ装置内のデータを複数のデータグループに分け、データグループごとの、該データグループに属するデータへのアクセス頻度を取得し、
複数のデータグループそれぞれのアクセス頻度に基づいて、前記複数のアクセス装置それぞれがアクセス対象とするデータグループのアクセス頻度の合計の差が小さくなるように、前記複数のアクセス装置それぞれがアクセス対象とするデータグループの定義を変更する、
処理を実行させるアクセス制御プログラム。
【請求項２】
アクセス装置に対応付けて、該アクセス装置がアクセス対象とする１以上のデータグループが設定されていると共に、データグループに対応付けて、該データグループに属するデータを格納する記憶領域を示す情報が設定されており、
定義の変更の際には、データグループに対応付けられた記憶領域を示す情報を維持したまま、アクセス装置に対応付けて設定されている、該アクセス装置がアクセス対象とするデータグループの構成を変更することを特徴とする請求項１記載のアクセス制御プログラム。
【請求項３】
定義の変更の際には、前記複数のアクセス装置それぞれが行ったデータアクセスのアクセス頻度の平均値を求め、アクセス頻度が該平均値から所定の範囲内のアクセス装置については、アクセス対象とするデータグループの変更を抑止することを特徴とする請求項１または２記載のアクセス制御プログラム。
【請求項４】
コンピュータが、
複数のアクセス装置からアクセスされるストレージ装置内のデータを複数のデータグループに分け、データグループごとの、該データグループに属するデータへのアクセス頻度を取得し、
複数のデータグループそれぞれのアクセス頻度に基づいて、前記複数のアクセス装置それぞれがアクセス対象とするデータグループのアクセス頻度の合計の差が小さくなるように、前記複数のアクセス装置それぞれがアクセス対象とするデータグループの定義を変更する、
アクセス制御方法。
【請求項５】
複数のアクセス装置からアクセスされるストレージ装置内のデータを複数のデータグループに分け、データグループごとの、該データグループに属するデータへのアクセス頻度を取得する取得手段と、
複数のデータグループそれぞれのアクセス頻度に基づいて、前記複数のアクセス装置それぞれがアクセス対象とするデータグループのアクセス頻度の合計の差が小さくなるように、前記複数のアクセス装置それぞれがアクセス対象とするデータグループの定義を変更する変更手段と、
を有するアクセス制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アクセス制御プログラム、アクセス制御方法、およびアクセス制御装置に関する。
【背景技術】
【０００２】
分散コンピューティングにおいて、複数のノードからの資源へのアクセス方式には、シェアードエブリシング方式とシェアードナッシング方式とがあり、各々一長一短がある。シェアードエブリシング方式は、システム内のすべてのノードが資源を共有するアクセス方式である。資源を共有する場合、データベースなどの資源へのアクセスの競合を回避するための排他制御を行うこととなり、処理効率の低下を招く。排他制御の負荷の増加は、システムが大規模となりノード数が増加するほど顕著となる。
【０００３】
他方、シェアードナッシング方式は、ノード間で資源を共有しないアクセス方式である。シェアードナッシング方式では、各ノードがデータベース資源を共有しないため、ノード間での競合が発生せず、ノードの追加によるリニアな性能向上が見込める。
【０００４】
シェアードナッシング方式では、例えばデータベースが複数のパーティションに分割される。またデータベースを構成するデータテーブルに含まれる複数のデータが、種別によってグループ化され、各グループがいずれかのパーティションに対応付けられる。そしてパーティションには、対応付けられたグループのデータが格納される。各パーティションは、いずれか１つのノードからのみアクセスされる。これにより、データへのアクセスの競合の発生が回避される。
【０００５】
なおシステムを運用していると、管理するデータ量が増大し、資源が足りなくなることがある。その場合、例えば新たにノードを追加するスケールアウトが行われる。スケールアウトを実施した場合、データベースのパーティション分割によるデータテーブルの分割と、パーティションの各ノードへの再配置を行うこととなる。
【０００６】
データの分割技術としては、例えば、ハッシュ関数を用いる技術がある。この技術では、データベースの一つ又は複数のデータ項目をパーティショニングキーとし、データベースのパーティショニングキーに対してハッシュ関数を適用し、複数のバケットに分割する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００１−１４２７５２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、シェアードナッシング方式では各ノードでのアクセス負荷の差が小さくなるように、複数のパーティションに格納するデータを決定するのが難しい。例えばハッシュ関数などにより規則的にパーティションへのデータの振り分けを行った場合、データへのアクセスの傾向が考慮されない。そのため、アクセス頻度の高いデータが集中して格納されたパーティションへのアクセスが集中し、各ノードのアクセス負荷に関し、ノード間で偏りが生じる可能性がある。ノードのアクセス負荷に偏りがあると、負荷が大きいノードでの処理が遅くなり、システムの運用効率の低下を招いてしまう。
【０００９】
なお、データテーブルのパーティション分割と、パーティションの各ノードへの配置について、熟練の技術者が顧客の業務内容をヒアリングし長時間かけて設計すれば、ノード間のアクセス負荷の偏りを低減することができる。ただし、技術者が常に適切な判断を下すのは困難であり、データアクセス状況が想定と大きく異なる場合もある。その場合、各ノードのアクセス負荷に偏りが生じてしまう。
【００１０】
しかも業務による資源へのアクセスの傾向が変動することが十分に考えられる。このような場合、運用開始時点でのアクセス負荷を均等にすることができたとしても、システムを運用している間に、各ノードのアクセス負荷に偏りが生じてしまう。
【００１１】
１つの側面では、本件は、データにアクセスする複数の装置間のアクセス負荷の差を小さくすることを目的とする。
【課題を解決するための手段】
【００１２】
１態様によれば、コンピュータに、以下の処理を実行させるアクセス制御プログラムが提供される。このアクセス制御プログラムに従ってコンピュータは、複数のアクセス装置からアクセスされるストレージ装置内のデータを複数のデータグループに分け、データグループごとの、該データグループに属するデータへのアクセス頻度を取得する。次にコンピュータは、複数のデータグループそれぞれのアクセス頻度に基づいて、複数のアクセス装置それぞれがアクセス対象とするデータグループのアクセス頻度の合計の差が小さくなるように、複数のアクセス装置それぞれがアクセス対象とするデータグループの定義を変更する。
【発明の効果】
【００１３】
１態様によれば、データにアクセスする複数の装置間のアクセス負荷の差が小さくなる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態のシステム構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】第２の実施の形態に用いるデータベースサーバのハードウェアの一構成例を示す図である。
【図４】パーティショニングの一例を示す図である。
【図５】データベース内のデータグループとストレージ装置内の記憶領域との関係を示す図である。
【図６】パーティションの作成処理の一例を示す図である。
【図７】パーティションとデータ格納領域との対応関係の一例を示す図である。
【図８】インデックス再創成の一例を示す図である。
【図９】データベースサーバの機能を示すブロック図である。
【図１０】統計情報記憶部のデータ構造の一例を示す図である。
【図１１】メタデータ内の情報の一例を示す図である。
【図１２】パーティション作成処理の手順の一例を示すフローチャートである。
【図１３】パーティション構成の決定例を示す図である。
【図１４】パーティション構成決定処理の手順の一例を示すフローチャートである。
【図１５】現状組み合わせ確認処理の手順の一例を示すフローチャートである。
【図１６】現状パーティション情報の一例を示す図である。
【図１７】処理済フラグの欄を追加したデータグループリストの一例を示す図である。
【図１８】新規組み合わせ作成処理の手順の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
図１は、第１の実施の形態のシステム構成例を示す図である。第１の実施の形態に係るシステムには、ストレージ装置１、複数のアクセス装置２，３、およびアクセス制御装置１０が含まれる。
【００１６】
ストレージ装置１では、アクセス装置２，３によりデータの入出力が行われる。複数のアクセス装置２，３からアクセスされるストレージ装置１内のデータは、例えば複数のデータグループに分けられている。各データグループのデータは、データ領域１ａ内のそのデータグループに対応する格納領域に格納される。またストレージ装置１は、管理情報１ｂを記憶している。管理情報１ｂには、複数のアクセス装置２，３それぞれがアクセス対象とするデータグループが定義されている。例えば管理情報１ｂには、アクセス装置に対応付けて、そのアクセス装置がアクセス対象とする１以上のデータグループが設定されていると共に、データグループに対応付けて、そのデータグループに属するデータを格納する記憶領域を示す情報が設定されている。
【００１７】
アクセス装置２，３は、ネットワークなどを経由したデータへのアクセス要求に応じて、ストレージ装置１内のデータにアクセスする。例えばアクセス装置２，３は、シェアードナッシング方式によりアクセスを行う。すなわちストレージ装置１内のアクセス単位の単位データは、いずれか１台のアクセス装置からのみアクセスされる。例えばアクセス装置２，３は、管理情報１ｂを参照することで、自己のアクセス対象とするデータグループを認識する。そしてアクセス装置２，３は、自己のアクセス対象のデータグループ内のデータに対してのみ参照または書き込みのアクセスを実行する。
【００１８】
またアクセス装置２，３は、それぞれアクセス頻度記憶手段２ａ，３ａを有している。アクセス頻度記憶手段２ａ，３ａには、アクセス装置２，３からストレージ装置１内のデータへの、データグループごとのアクセス頻度を示す情報が格納される。アクセス頻度は、例えば対応するデータグループ内のデータへの、所定期間内でのアクセス回数である。アクセス装置２，３は、ストレージ装置１内のデータにアクセスするごとに、アクセス対象のデータが属するデータグループのアクセス頻度を更新する。またアクセス装置２，３は、例えばアクセス制御装置１０からの要求に応じて、アクセス頻度をアクセス制御装置１０に送信する。
【００１９】
アクセス制御装置１０は、アクセス装置２，３それぞれがアクセス対象とするデータグループを決定する。そのためにアクセス制御装置１０は、取得手段１１と変更手段１２とを有する。
【００２０】
取得手段１１は、アクセス装置２，３から、データグループごとの、データグループに属するデータへのアクセス頻度を示す情報を取得する。例えば取得手段１１は、管理情報の更新要求が入力されると、アクセス装置２，３に対してアクセス頻度の取得要求を送信し、アクセス装置２，３からアクセス頻度を示す情報を受け取る。取得手段１１は、取得した情報を変更手段１２に渡す。
【００２１】
変更手段１２は、複数のデータグループそれぞれのアクセス頻度に基づいて、複数のアクセス装置２，３それぞれがアクセス対象とするデータグループのアクセス頻度の合計の差が小さくなるように、管理情報１ｂを変更する。
【００２２】
例えば変更手段１２は、複数のアクセス装置２，３それぞれが行ったデータアクセスのアクセス頻度の平均値を求め、アクセス頻度がその平均値から所定の範囲内のアクセス装置については、アクセス対象とするデータグループの変更を抑止することができる。これにより、構成するデータグループの変更に伴い再創成されるインデックスの数が削減され、処理が効率化される。
【００２３】
また変更手段１２は、管理情報１ｂを変更する際には、データグループに対応付けられた記憶領域を示す情報を維持したまま、アクセス装置に対応付けて設定されている、そのアクセス装置がアクセス対象とするデータグループの構成を変更することができる。データグループに対応付けられた記憶領域を示す情報を変更せずに維持することで、データ領域１ａ内でのデータの移動をせずに済む。その結果、アクセス装置２，３からアクセス対象とするデータグループの変更が容易となる。
【００２４】
このようなシステムによれば、例えば、アクセス装置２，３は、アクセス要求を受信すると、管理情報１ｂを参照し、アクセス要求で指定されたデータが、自己のアクセス対象のデータグループに属しているかどうかを判断する。そしてアクセス装置２，３は、自己のアクセス対象のデータグループに属していれば、アクセス要求で指定されたストレージ装置１内のデータにアクセスする。アクセス装置２，３は、データアクセスを行うと、そのデータが属するデータグループのアクセス頻度を更新する。
【００２５】
その後、アクセス制御装置１０に管理情報の更新要求が入力されると、取得手段１１がアクセス装置２，３からアクセス頻度を示す情報を取得する。取得したアクセス頻度を示す情報は、変更手段１２に渡される。
【００２６】
アクセス頻度を示す情報を受け取った変更手段１２は、複数のアクセス装置２，３それぞれがアクセス対象とするデータグループのアクセス頻度の合計の差が小さくなるように、管理情報１ｂを変更する。図１の例では、２台のアクセス装置２，３があるため、変更手段１２は、データグループの組み合わせを２組生成する。このとき、すべてのデータグループが、いずれかの組に含まれるようにする。この際、変更手段１２は、各組に含まれるデータグループのアクセス頻度の合計の差が小さくなるようにする。変更手段１２は、生成した２つの組それぞれを、２台のアクセス装置２，３それぞれのアクセス対象に決定する。そして変更手段１２は、決定に従って、管理情報１ｂを更新する。
【００２７】
このようにして、アクセス装置間のアクセス負荷の差を小さくすることができる。例えば図１の例では、管理情報１ｂの更新前は、アクセス装置２のアクセス対象として、データグループ名「Group001,Group003,Group006」の３つのデータグループが設定されている。またアクセス装置２のアクセス対象として、データグループ名「Group002,Group004,Group005」の３つのデータグループが設定されている。この場合、アクセス頻度の高い方から２つのデータグループ「Group002,Group005」が、共にアクセス装置３のアクセス対象となっている。そのため、アクセス装置２とアクセス装置３とのアクセス負荷を比較すると、アクセス負荷がアクセス装置３に偏っている。
【００２８】
図１の例において、更新後の管理情報１ｂでは、アクセス装置２のアクセス対象が、データグループ名「Group001,Group002,Group004」の３つのデータグループに変更されている。更新後のアクセス装置２のアクセス対象のデータグループのアクセス頻度の合計は、「１２８７」である。またアクセス装置２のアクセス対象が、データグループ名「Group003,Group005,Group006」の３つのデータグループに変更されている。更新後のアクセス装置３のアクセス対象のデータグループのアクセス頻度の合計は、「１３３０」である。このように、アクセス制御装置１０による管理情報１ｂの更新により、アクセス装置２，３がアクセス対象とするデータグループのアクセス頻度の合計の差が小さくなっている。その結果、アクセス装置２，３のアクセス負荷の差も小さくなる。アクセス装置２，３のアクセス負荷の差が小さくなることで、システム全体のデータアクセス効率が向上する。
【００２９】
なお、アクセス制御装置１０やアクセス装置２，３は、例えばコンピュータで実現することができる。その場合、取得手段１１と変更手段１２は、例えばアクセス制御装置１０が有するプロセッサにより実現される。また、アクセス頻度記憶手段２ａ，３ａは、例えばアクセス装置２，３が有するメモリにより実現することができる。
【００３０】
また、図１に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、複数のストレージ装置に格納されているデータに複数のデータベースサーバでアクセスする際に、複数のデータベースサーバのアクセス負荷の均等化を図るものである。なお、第２の実施の形態における負荷の均等化とは、負荷の差を小さくすることであり、最終的に負荷に多少の差が出ることは許容される。
【００３１】
第２の実施の形態では、シェアードナッシング方式により複数のデータベースサーバからアクセスが可能なように、ＲＤＢ（Relational DataBase）が複数のパーティションに分割されている。パーティションは、論理的な複数のデータグループ（例えば商品コードのようなグループ）で構成される。そして、データグループごとのアクセス頻度に基づいて、少なくとも一部のデータグループを他のパーティションに移動させ、各パーティションのアクセス頻度が均一となるように、パーティションの再構成が行われる。ここでパーティションの再構成とは、パーティションに含まれるデータグループの組み合わせを変更する処理である。パーティションの再構成を行うことにより、複数のデータベースサーバ間の負荷バランスが均一化できる。
【００３２】
なお、パーティションの再構成を行う際は、例えば、アクセスが高いグループとアクセスが低いグループを組み合わせて、パーティションを構築することで、平均的なアクセス頻度を有するパーティションを構築できる。またパーティションの再構成の際は、テーブルデータの移動を伴わず、メタデータの変更で実施することができる。
【００３３】
図２は、第２の実施の形態のシステム構成例を示す図である。複数のアプリケーションサーバ３１〜３４が、ネットワーク２０ａを介して複数のデータベースサーバ１００，２００に接続されている。アプリケーションサーバ３１〜３４は、端末装置４１，４２，・・・からの処理要求に応じてアプリケーションプログラムを実行するコンピュータである。データベースサーバ１００，２００は、データベースを管理するコンピュータである。
【００３４】
ネットワーク２０ａには、さらに端末装置４１，４２，・・・が接続されている。端末装置４１，４２，・・・は、ユーザの操作に応じた処理を実行するコンピュータである。複数のデータベースサーバ１００，２００は、ネットワーク２０ｂを介してストレージ装置３００，４００に接続されている。ストレージ装置３００，４００は、１以上のＨＤＤ（Hard Disk Drive）またはＳＳＤ（Solid State Drive）を内蔵している。
【００３５】
ストレージ装置３００，４００には、データベースを構成するデータが分散格納されている。データベースは、複数のパーティションに分割されている。またデータベース内のデータは複数のデータグループに分けられており、各データグループはいずれかのパーティションに対応付けられている。各パーティションは、いずれか１台のデータベースサーバに対応付けられている。パーティションに含まれるデータグループのデータは、そのパーティションに対応付けられたデータベースサーバからのみアクセスされる。
【００３６】
端末装置４１，４２，・・・は、ユーザからの入力に応じて、アプリケーションサーバ３１〜３４に対して処理要求を送信する。アプリケーションサーバ３１〜３４は、処理要求に応じて処理を実行する。またアプリケーションサーバ３１〜３４は、データベース内のデータの参照またはデータの更新のアクセスを伴う処理が発生すると、いずれか一方のデータベースサーバにデータのアクセス要求を送信する。データのアクセス要求を受信したデータベースサーバは、アクセス対象のデータが、自己のアクセス対象のデータであれば、そのストレージ装置内の該当データにアクセスする。またデータベースサーバは、アクセス対象のデータが自己のアクセス対象のデータでなければ、別のデータベースサーバにデータへのアクセスを依頼する。
【００３７】
このようなシステムにおいて、複数のデータベースサーバ１００，２００の処理負荷が均等化するように、パーティションの再構成が行われる。
図３は、第２の実施の形態に用いるデータベースサーバのハードウェアの一構成例を示す図である。データベースサーバ１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３８】
メモリ１０２は、データベースサーバ１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３９】
バス１０９に接続されている周辺機器としては、ＨＤＤ１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８ａ，１０８ｂがある。
【００４０】
ＨＤＤ１０３は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。ＨＤＤ１０３は、データベースサーバ１００の補助記憶装置として使用される。ＨＤＤ１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、補助記憶装置としては、ＳＳＤのようなフラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
【００４１】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４２】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４３】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４４】
機器接続インタフェース１０７は、データベースサーバ１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００４５】
ネットワークインタフェース１０８ａ，１０８ｂは、それぞれネットワーク２０ａ，２０ｂに接続されている。ネットワークインタフェース１０８ａは、ネットワーク２０ａを介して、アプリケーションサーバ３１〜３４との間でデータの送受信を行う。ネットワークインタフェース１０８ｂは、ネットワーク２０ｂを介して、ストレージ装置３００，４００との間でデータの送受信を行う。
【００４６】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示したアクセス制御装置１０およびアクセス装置２，３も、図３に示したデータベースサーバ１００と同様のハードウェアにより実現することができる。
【００４７】
データベースサーバ１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。データベースサーバ１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、データベースサーバ１００に実行させるプログラムをＨＤＤ１０３に格納しておくことができる。プロセッサ１０１は、ＨＤＤ１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。またデータベースサーバ１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ＨＤＤ１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４８】
ここで、データベースのパーティショニングについて説明する。
図４は、パーティショニングの一例を示す図である。端末装置４１，４２，・・・は、ユーザからの操作に応じて、いずれかのアプリケーションサーバ３１〜３４に処理要求を送信する。アプリケーションサーバ３１〜３４は、処理要求時に応じた処理の実行過程でデータベース５０内のデータを利用する処理が発生すると、いずれかのデータベースサーバ１００，２００に、利用するデータのアクセス要求を送信する。
【００４９】
データベース５０内のデータは、複数のパーティション５１，５２に分割されている。データベースサーバ１００，２００は、それぞれアクセス対象とするパーティションが決められている。図４の例では、パーティション５１はデータベースサーバ１００のアクセス対象であり、パーティション５２はデータベースサーバ２００のアクセス対象である。
【００５０】
データベースサーバ１００，２００は、自身のアクセス対象とするパーティション内のデータへのアクセス要求を受信した場合、そのデータに対するアクセスを実行する。そしてデータベースサーバ１００，２００は、アクセス要求の送信元にアクセスの実行結果を応答する。例えばデータベースサーバ１００は、アプリケーションサーバ３１からパーティション５１内のデータへのアクセス要求を受信すると、そのデータにアクセスし、アプリケーションサーバ３１にアクセス結果を応答する。
【００５１】
またデータベースサーバ１００，２００は、他のデータベースサーバがアクセス対象とするパーティション内のデータへのアクセス要求を受信した場合、そのデータが属するパーティションをアクセス対象とするデータベースサーバにアクセス要求を転送する。この場合、転送されたアクセス要求を受信したデータベースサーバが、アクセス要求に示されたデータへのアクセスを行う。例えばデータベースサーバ１００は、アプリケーションサーバ３２からパーティション５２内のデータへのアクセス要求を受信すると、アクセス要求をデータベースサーバ２００に転送する。データベースサーバ２００は、転送されたアクセス要求に応じて、パーティション５２内のデータにアクセスし、データベースサーバ１００にアクセス結果を応答する。データベースサーバ１００は、データベースサーバ２００からのアクセス結果の応答を、アプリケーションサーバ３２に転送する。
【００５２】
このようなパーティショニング技術において、各データベースサーバ１００，２００のアクセス負荷が均一になるように、人手によりテーブルパーティショニングの設計を実施するのは困難である。例えばパーティション５１内には、商品グループ番号が「１００１〜２０００」の各商品グループが属しているものとする。またパーティション５２内には、商品グループ番号が「２００１〜３０００」の各商品グループが属しているものとする。この場合において、注文の９０％を商品グループ番号「１００１〜１０１０」の商品グループが占めている場合、２台のデータベースサーバ１００，２００の負荷分散が有効に行われない。従って、商品グループ数を均等にするといった単純な設計では、各データベースサーバ１００，２００のアクセス負荷を均一にできない。そこで第２の実施の形態では、データベースサーバ１００，２００においてデータグループごとのアクセス頻度が採取され、パーティショニングの際には、アクセス頻度に基づいて各パーティションに属するデータグループが決定される。
【００５３】
図５は、データベース内のデータグループとストレージ装置内の記憶領域との関係を示す図である。データベースを構成するデータテーブル内のデータは、複数のデータグループに分類されている。ストレージ装置３００，４００内のデータベース領域６０には、データグループごとのデータ格納領域６１が用意される。データグループごとの複数のデータ格納領域６１は、それぞれストレージ装置３００，４００の記憶領域の一部である。データグループ内のデータは、そのデータグループに対応するデータ格納領域に格納される。１つのデータグループのデータを格納するデータ格納領域６１は、連続した複数のページで構成される。これにより１つのデータグループのデータは、連続した記憶領域にまとめて格納される。同じデータグループのデータは、同じデータベースサーバからアクセスされるため、データをまとめることで、アクセス効率を向上させることができる。
【００５４】
ここで各データグループのデータ格納領域の空領域が少なくなると、データ格納領域が拡張される。例えば、データベースサーバ１００，２００が単位時間あたりの領域使用量を統計情報として保持し、その統計情報に基づいて１回の拡張量が決定される。この場合、使用量が多いデータグループのデータ格納領域ほど、１回の拡張量を大きくすることができる。このように領域使用量の統計情報を元に１回の領域拡張量を決定することにより、過大な量の拡張が行われることが抑止され、データベース領域６０内の記憶領域の使用効率を高めることができる。
【００５５】
他方、データ格納領域がほとんど使用されていないデータグループについては、例えば空き領域の一部を返却させることができる。返却させるとは、データ格納領域の少なくとも一部のページについて、データグループへの割り当てを解除することである。このように、領域使用量が少ないデータ格納領域（例えば初期割付け領域）の返却を行うことで、データベース領域６０内の記憶領域の使用効率を高めることができる。
【００５６】
また、第２の実施の形態では、採取した統計情報に基づいて、パーティションが作成される。
図６は、パーティションの作成処理の一例を示す図である。各データグループのアクセス数がデータベースサーバ１００，２００で統計情報６２として採取され、保持される。そしてデータベースサーバ１００，２００のいずれかが、パーティション作成処理を行う。パーティション作成処理では、アクセス量が均一になるようにデータグループの組み合わせ（データグループ集合）が決定される。例えばデータグループが、アクセス数で降順にソートされる。その後、例えば、アクセス数が上位のデータグループと、下位のデータグループとを組み合わせたデータグループ集合が作成される。またアクセス数が平均的な複数のデータグループを組み合わせたデータグループ集合が作成される。そして、各データグループ集合にパーティション６３，６４が対応付けられる。
【００５７】
パーティション６３，６４それぞれに対応するデータグループ集合内のデータグループのデータを格納しているデータ格納領域が、各パーティションのデータを格納するデータ格納領域となる。作成されたパーティション６３，６４は、図４に示したように、それぞれ１台ずつのデータベースサーバからのアクセス対象とされる。
【００５８】
このように、複数のパーティションへのデータグループの振り分けを、アクセス数に基づいて適切に行うことで、データベースサーバ１００，２００間の均一な負荷分散を実現できる。
【００５９】
なお、運用中のシステムにおいてパーティションを作成し直す場合において、データベース５０内のデータをすべて他の記憶装置に退避したのでは、データの再配置に時間がかかりすぎる。例えば、急激に商品グループ「１５００〜１５１０」の注文が増加したことで、パーティション５１をアクセス対象とするデータベースサーバ１００のアクセス負荷が増加した場合を想定する。このとき、各データベースサーバ１００，２００の負荷分散を均一にするため、例えば、データのアンロード、パーティション定義の変更、変更後のパーティション定義に合わせたデータのロードといった処理を行うことが考えられる。この一連の処理では、データベース規模に応じて処理時間がかかる。例えばデータが１０テラバイトの場合、１００Ｍ／ｓのＩ／Ｏ性能で再編成を行っても約５６時間かかる。
【００６０】
第２の実施の形態では、パーティションを再作成した場合、パーティションとデータグループとの対応関係を変更するものの、データを一端退避した上での再格納は行わない。これにより、パーティションを再作成した際にも、新しいパーティションによるデータアクセスに短時間で切り替えることができるようにする。パーティションとデータグループとの対応関係、およびデータグループとデータ格納領域との対応関係は、例えばメタデータに定義される。
【００６１】
図７は、パーティションとデータ格納領域との対応関係の一例を示す図である。メタデータ３４０には、パーティションごとに、そのパーティションに属するデータグループが定義されている。またメタデータ３４０には、データグループごとに、そのデータグループに属するレコードを格納するストレージ装置３００，４００内の記憶領域が定義されている。その結果、メタデータ３４０を参照すれば、アクセス対象となるデータを含むレコードが属するデータグループと、そのデータグループが属するパーティションとが判明する。
【００６２】
従って、メタデータ３４０の内容を更新すれば、データベースサーバ１００，２００がアクセスするパーティションに属するデータグループを変更することができる。そこで、第２の実施の形態では、データベースサーバ１００，２００間の負荷に偏りが生じた場合、パーティションとデータグループの関係をメタデータ３４０内で変更する。これにより、データの移動を伴わずに済み、データベースの規模に依存せず短時間でパーティションの設定変更が可能になる。
【００６３】
なお、第２の実施の形態では、複数のストレージ装置間でのＩ／Ｏの頻度の偏りの解消は目的としておらず、パーティションの再作成に伴ってデータの移動は行われない。そのため、複数のストレージ装置間でのＩ／Ｏの頻度の偏りが継続する可能性がある。しかし、近年のストレージ装置は進化しており、Ｉ／Ｏ速度が非常に高速になっているため、複数のストレージ装置間でのＩ／Ｏの頻度の偏りがシステム全体に与える影響は少ない。例えば、データベースデータ格納先としてＳＳＤ（メモリ）を使用することで、ストレージ装置のＩ／Ｏ速度が飛躍的に向上している。また、ディスクＩ／Ｏ負荷に応じて自動的にデータを再配置するストレージ装置もある。このように、ストレージ装置のＩ／Ｏの高速化技術の発達により、データの配置においてＩ／Ｏ負荷分散を意識せずに済む場合が多くなっている。
【００６４】
そうすると、データベースサーバ間での負荷の偏りを解消すれば、システム全体の処理効率を改善できることとなる。そこで、第２の実施の形態では、パーティションの再構成の際には、ストレージ装置間でのＩ／Ｏの偏りの解消を諦めることで、データベースサーバ間の負荷を均等化するためのパーティションへの切り替えに要する時間を短縮する。これにより、効率的なデータアクセス環境への変更が容易に実行可能となる。
【００６５】
なおパーティション構成の変更に伴い、各パーティションのインデックスが再創成される。インデックスは、例えばＢ木などのデータ構造を有する。Ｂ木は、データ構造を表す構造モデルの一種である。Ｂ木では、複数のノードが木構造で接続される。
【００６６】
図８は、インデックス再創成の一例を示す図である。図９に示すように、パーティションの再作成により、各パーティションに含まれるデータグループの組み合わせが変更される。この場合、例えば変更前のインデックス７１が読み込みまれ、新しいデータグループの組み合わせに応じて、レコードの集合が生成される。そしてパーティションごとのレコードの集合に対して、レコードのソートやページ組立などが行われ、インデックス７３，７４が生成される。生成されたインデックス７３，７４がメモリなどに書き込まれる。生成されたインデックス７３，７４を用いることで、新たなパーティション内のレコードを効率的に利用できるようになる。
【００６７】
次に、第２の実施の形態に係るパーティション作成処理を実現するための、データベースサーバ１００，２００の機能について説明する。
図９は、データベースサーバの機能を示すブロック図である。データベースサーバ１００は、アクセス部１１０とパーティション管理部１２０とを有する。アクセス部１１０は、アプリケーションサーバ３１，３２からのアクセス要求に応じて、ストレージ装置３００，４００にアクセスする。アクセス部１１０は、統計情報記憶部１１１、要求処理部１１２、およびデーモン１１３を有する。
【００６８】
統計情報記憶部１１１は、データグループごとの、そのデータグループ内のデータに対するアクセス回数などの統計情報を記憶する。例えばメモリ１０２の記憶領域の一部が、統計情報記憶部１１１として使用される。統計情報記憶部１１１内の統計情報は、例えばデーモンによって統計情報退避ファイル３３０に定期的に格納される。
【００６９】
要求処理部１１２は、アプリケーションサーバ３１，３２からのアクセス要求に応じて起動され、アクセス要求に応じた処理を実行する。複数のアクセス要求が入力された場合、アクセス要求ごとの要求処理部１１２が起動される。起動された要求処理部１１２は、メタデータ３４０を参照し、アクセス要求で指定されたデータが、データベースサーバ１００自身のアクセス対象としているパーティション内のデータなのか否かを判断する。データベースサーバ１００自身がアクセス対象としているパーティション内のデータへのアクセス要求であれば、要求処理部１１２は、データベースアクセス用のデーモン１１３に該当データへのアクセスを依頼する。他方、他のデータベースサーバ２００がアクセス対象としているパーティション内のデータへのアクセス要求であれば、要求処理部１１２は、データベースサーバ２００に該当データのアクセス要求を送信する。要求処理部１１２は、デーモン１１３またはデータベースサーバ２００から、データのアクセス結果を取得すると、アクセス要求の送信元であるアプリケーションサーバに、アクセス結果を応答する。
【００７０】
なお要求処理部１１２は、データベースサーバ２００からアクセス要求を受信する場合がある。例えばアプリケーションサーバ３３，３４からデータベースサーバ２００に、データベースサーバ１００がアクセス対象とするパーティション内のデータへのアクセス要求が出された場合である。データベースサーバ２００からデータのアクセス要求を受信した要求処理部１１２は、データベースアクセス用のデーモン１１３に該当データへのアクセスを依頼する。そして要求処理部１１２は、アクセス結果をデータベースサーバ２００に応答する。
【００７１】
また要求処理部１１２は、データのアクセスを行うごとに、統計情報記憶部１１１内の統計情報を更新する。例えば要求処理部１１２は、データへのアクセスを行うごとに、アクセスされたデータが属するデータグループに対応付けられたアクセス回数の値をカウントアップする。
【００７２】
デーモン１１３は、ストレージ装置３００，４００に対して、データアクセス処理を行う。なお、デーモン１１３は、ストレージ装置３００，４００へのデータアクセスごとに起動される。複数のデータアクセスが並行して実行される場合、複数のデーモン１１３が起動される。
【００７３】
パーティション管理部１２０は、データベースのパーティション分割処理を行う。例えばパーティション管理部１２０は、端末装置４１からのパーティション分割指示に従って、パーティション分割を行う。パーティション管理部１２０は、データベースの運用中にパーティション分割指示を受け取った場合、パーティションを再作成し、新たに作成したパーティションをデータベースサーバ１００，２００からのアクセス対象とする。
【００７４】
パーティション分割指示を受け取ったパーティション管理部１２０は、例えば、各データベースサーバ１００，２００のアクセス部１１０，２１０から、統計情報記憶部１１１，２１１内の統計情報を取得する。またパーティション管理部１２０は、ストレージ装置３００，４００に保存されている統計情報退避ファイル３３０，４３０から統計情報を取得してもよい。
【００７５】
パーティション管理部１２０は、取得した統計情報に基づいて、データベースサーバの台数分のパーティションを作成する。その際、パーティション管理部１２０は、各パーティションに対して、アクセス頻度が均等になるように１以上のデータグループが割り当てる。そしてパーティション管理部１２０は、作成したパーティションそれぞれを、いずれかのデータベースサーバ１００，２００のアクセス対象に決定する。パーティション管理部１２０は、作成したパーティションの情報をメタデータ３４０としてストレージ装置３００に格納する。そして、パーティション管理部１２０は、パーティションを作成したことを、各データベースサーバ１００，２００のアクセス部１１０，２１０に通知する。アクセス部１１０，２１０は、その通知を受け、メタデータ３４０を参照し、新たに作成されたパーティションに従って、自身がサクセス対象とするパーティションを認識する。
【００７６】
なお、図９の例では、端末装置４１からデータベースサーバ１００にパーティション分割指示が出されているため、データベースサーバ１００内にパーティション管理部１２０が存在している。端末装置４１からデータベースサーバ２００にパーティション分割指示が出された場合、パーティション管理部１２０と同じ機能を実行するプロセスが、データベースサーバ２００内に生成される。
【００７７】
データベースサーバ２００は、アクセス部２１０を有する。またアクセス部２１０は、統計情報記憶部２１１、要求処理部２１２、およびデーモン２１３を有する。アクセス部２１０内の各要素の機能は、データベースサーバ１００のアクセス部１１０内の同名の要素と同じである。
【００７８】
ストレージ装置３００は、ＤＢデータ３１０、ログファイル３２０、統計情報退避ファイル３３０を有する。またストレージ装置４００は、ＤＢデータ４１０、ログファイル４２０、および統計情報退避ファイル４３０を有する。ＤＢデータ３１０，４１０は、データベースを構成する複数のデータグループの内の少なくとも一部のデータグループのデータである。ログファイル３２０，４２０は、トランザクションログなどの、データへのアクセスログである。統計情報退避ファイル３３０，４３０は、統計情報を含むファイルである。メタデータ３４０は、作成されたパーティションを示す情報である。
【００７９】
図９に示すデータベースサーバ１００は、図１に示した第１の実施の形態におけるアクセス装置２とアクセス制御装置１０とを包含する装置の一例である。データベースサーバ１００内のアクセス部１１０がアクセス装置２の機能を実現し、パーティション管理部１２０がアクセス制御装置１０の機能を実現している。また図９に示すストレージ装置３００，４００は、図１に示した第１の実施の形態におけるストレージ装置１の一例である。ストレージ装置３００内のメタデータ３４０は、第１の実施の形態における管理情報１ｂの一例である。
【００８０】
なお図９に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図９に示したデータベースサーバ１００，２００内の各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００８１】
次に、統計情報記憶部１１１に格納される統計情報について具体的に説明する。
図１０は、統計情報記憶部のデータ構造の一例を示す図である。統計情報記憶部１１１には、統計情報管理テーブル１１１ａが格納されている。統計情報管理テーブル１１１ａには、ネットワーク２０ａ，２０ｂを介した通信のコネクションごとの統計情報が登録されている。統計情報管理テーブル１１１ａには、コネクション、接続時刻、データグループ、レコード参照回数、およびレコード更新回数の欄が設けられている。コネクションの欄には、接続されたコネクションの識別子（コネクションＩＤ）が設定される。接続時刻の欄には、コネクションの接続が確立した時刻が設定される。データグループの欄には、コネクションを介して受信したアクセス要求に基づいてアクセスしたデータが属するデータグループの名称（データグループ名）が設定される。レコード参照回数の欄には、対応するデータグループ内のレコードの参照回数が設定される。レコード更新回数の欄には、対応するデータグループ内のレコードの更新回数が設定される。
【００８２】
次にメタデータ３４０の内容について具体的に説明する。
図１１は、メタデータ内の情報の一例を示す図である。メタデータ３４０には、パーティション管理テーブル３４１、分類基準カラム情報３４２、およびデータグループ情報テーブル３４３が含まれている。
【００８３】
パーティション管理テーブル３４１は、パーティションとデータグループとの対応関係を保持するデータテーブルである。パーティション管理テーブル３４１には、パーティション名、ノード名、構成データグループ数、構成データグループ名などの情報が設定されている。パーティション名の欄には、パーティション名が設定される。ノード名の欄には、パーティション名で示されるパーティション内のデータをアクセス対象とするデータベースサーバの名称が設定される。構成データグループ数の欄には、パーティションに含まれるデータグループの数量が設定される。構成データグループ名の欄には、パーティションに含まれる１以上のデータグループの名称が設定される。なおデータベースが複数のテーブルで構成される場合、パーティション管理テーブル３４１は、テーブルごとに設けられる。
【００８４】
分類基準カラム情報３４２は、データベース内のレコードを複数のグループに分ける際の、分類基準として参照するカラムに関する情報である。分類基準カラム情報３４２には、カラム数、カラム名などの情報が含まれる。カラム数は、分類基準として参照するカラムの数である。カラム名は、分類基準として参照するカラムの名称である。なおデータベースが複数のテーブルで構成される場合、分類基準カラム情報３４２は、テーブルごとに設けられる。
【００８５】
データグループ情報テーブル３４３は、データグループに関する情報を保持するデータテーブルである。データグループ情報テーブル３４３には、データグループ名、データ値、及び格納域情報の欄が設けられている。データグループ名の欄には、データグループの名称が設定される。データ値の欄には、データグループに属するレコードの、分類基準として参照するカラムの値が設定される。格納域情報の欄には、データグループに属するレコードの格納領域に関する情報が設定される。格納域情報には、例えばスペース名、サイズ、先頭ブロック番号が含まれる。スペース名は、データグループに属するレコードが格納されたストレージ装置の識別情報である。サイズは、データグループに属するレコードの格納用に用意された記憶領域のサイズである。先頭ブロック番号は、データグループに属するレコードの格納用に用意された記憶領域の先頭のブロック番号である。
【００８６】
各データベースサーバ１００，２００の要求処理部１１２，２１２は、図１１に示したようなメタデータ３４０を参照して、自身がアクセス対象とするデータグループ、およびそのデータグループのデータが格納された記憶領域を認識する。例えばアプリケーションサーバ３１から要求処理部１１２にデータのアクセス要求が入力された場合を想定する。アクセス要求には、アクセス対象のデータを含むレコードの商品グループコードが示されているものとする。
【００８７】
この場合、要求処理部１１２は、分類基準カラム情報３４２に基づいて、商品グループコードの値によってデータグループが作成されていることを認識する。そして要求処理部１１２は、データグループ情報テーブル３４３を参照し、アクセス要求に示される商品グループコードのデータ値が設定されたデータグループのデータグループ名を取得する。次に要求処理部１１２は、パーティション管理テーブル３４１を参照し、取得したデータグループ名が、構成データグループ名として設定されたレコードのノード名を取得する。
【００８８】
要求処理部１１２は、取得したノード名が、データベースサーバ１００の名称であれば、アクセス要求で指定されたデータがデータベースサーバ１００からのアクセス対象であると判断する。データベースサーバ１００からのアクセス対象であれば、要求処理部１１２は、デーモン１１３を介して、アクセス要求で指定されたデータへのリードまたはライトのアクセスを行う。
【００８９】
他方、取得したノード名が、データベースサーバ２００の名称の場合、要求処理部１１２は、アクセス要求で指定されたデータがデータベースサーバ２００のアクセス対象であると判断する。データベースサーバ２００のアクセス対象であれば、要求処理部１１２は、データベースサーバ２００のアクセス部２１０に、アクセス要求を転送する。するとデータベースサーバ２００のアクセス部２１０により、アクセス要求で指定されたデータへのリードまたはライトのアクセスが行われる。
【００９０】
データベースサーバ１００，２００は、このようなアクセス手順でストレージ装置３００，４００内のデータへアクセスする。そのため、パーティション管理テーブル３４１におけるパーティション名と構成データグループ名との対応関係を変更すれば、各データベースサーバ１００，２００内のアクセス部１１０，２１０に対して、変更後のパーティションの構成を認識させることができる。
【００９１】
なおアクセス部１１０，２１０は、メタデータ３４０のコピーを、ローカルのメモリ内に格納しておくことができる。この場合、例えばパーティション管理部１２０は、メタデータ３４０の内容を更新したときに、アクセス部１１０，２１０に対して、メタデータが更新されたことを通知する。この通知に応じて、アクセス部１１０，２１０は、ストレージ装置３００からメタデータ３４０を読み出し、自己の管理するメモリ領域にコピーする。これよりアクセス部１１０，２１０は、アクセス要求を受信するごとにストレージ装置３００内のメタデータ３４０を参照せずに済み、処理が効率的にとなる。
【００９２】
次に、パーティション作成処理手順について詳細に説明する。
図１２は、パーティション作成処理の手順の一例を示すフローチャートである。
［ステップＳ１０１］パーティション管理部１２０は、端末装置４１からのパーティション分割指示に応答し、パーティション管理部１２０は、統計情報を集計する。例えばパーティション管理部１２０は、各データベースサーバ１００，２００のアクセス部１１０，２１０内の統計情報記憶部１１１，２１１から統計情報を取得する。そしてパーティション管理部１２０は、取得した統計情報に基づいて、データグループごとに、アクセス量を計算する。アクセス量は、データグループに対応するレコード参照回数とレコード更新回数との合計である。
【００９３】
［ステップＳ１０２］パーティション管理部１２０は、統計情報をソートする。例えばパーティション管理部１２０は、データグループを、アクセス量の大きい順（降順）にソートする。
【００９４】
［ステップＳ１０３］パーティション管理部１２０は、パーティションの構成を決定する。パーティション構成決定処理の詳細は後述する（図１３参照）。
［ステップＳ１０４］パーティション管理部１２０は、新たに決定したパーティションの構成内容に合わせて、メタデータ３４０を更新する。
【００９５】
［ステップＳ１０５］パーティション管理部１２０は、パーティションを１つ選択する。
［ステップＳ１０６］パーティション管理部１２０は、選択したパーティションの構成に変更があるか否かを判断する。構成に変更があれば、処理がステップＳ１０７に進められる。構成に変更がなければ、処理がステップＳ１０８に進められる。
【００９６】
［ステップＳ１０７］パーティション管理部１２０は、パーティションの構成が変更された場合、そのパーティションのインデックスを再創成する。再創成されたインデックスは、例えばＤＢデータ３１０，４１０の格納領域に格納される。
【００９７】
［ステップＳ１０８］パーティション管理部１２０は、未選択のパーティションがあるか否かを判断する。未選択のパーティションがある場合、処理がステップＳ１０５に進められる。すべてのパーティションが選択済みの場合、パーティション作成処理が終了する。
【００９８】
次に、パーティション構成決定処理について詳細に説明する。
図１３は、パーティション構成の決定例を示す図である。パーティションを構成するデータグループを決定する場合、図１３に示すように、アクセス量でソートされたデータグループリスト８０が用いられる。
【００９９】
パーティション管理部１２０は、アクセス量でソートされたデータグループリスト８０に基づいて、１パーティション当たりのアクセス量の平均値を求める。平均値は、アクセス量の合計を、パーティション数で割った値である。そして、パーティション管理部１２０は、組み合わせたデータグループのアクセス量の合計が、平均値に近づくように、データグループを組み合わせる。
【０１００】
例えばパーティション管理部１２０は、データグループリスト８０の上位から順にデータグループを選択し、選択したデータグループに対して、下位からの１または複数のデータグループを組み合わせる。図１３の例では、最もアクセス量が多いデータグループと、最もアクセス量が少ないデータグループとを組み合わせている。また２番目にアクセス量が多いデータグループと、２番目と３番目にアクセス量が少ないデータグループとを組み合わせている。
【０１０１】
なおパーティション管理部１２０は、パーティション変更時は、多少アクセス量の合計値が平均と違っても、平均値との違いが所定の範囲内にあるパーティションについては、現状の組み合わせを変更しないようにする。これによりインデックスの再創成数を最小に抑え、インデックスの創成時間を短縮できる。
【０１０２】
以下、パーティション構成決定処理の手順について説明する。
図１４は、パーティション構成決定処理の手順の一例を示すフローチャートである。
［ステップＳ１２１］パーティション管理部１２０は、各パーティションの現状のデータグループの組み合わせを確認する。この処理の詳細は後述する（図１４参照）。
【０１０３】
［ステップＳ１２２］パーティション管理部１２０は、現状のデータグループの組み合わせを元にして、データベースサーバ１００，２００間の負荷が均等化されるような新規の組み合わせを作成する。この処理の詳細は後述する（図１７参照）。
【０１０４】
次に、現状組み合わせ確認処理の詳細について説明する。
図１５は、現状組み合わせ確認処理の手順の一例を示すフローチャートである。
［ステップＳ１３１］パーティション管理部１２０は、現状のパーティションを１つ選択する。例えばパーティション管理部１２０は、メタデータ３４０内のパーティション管理テーブル３４１を取得し、メモリ１０２上に展開する。次にパーティション管理部１２０は、展開したパーティション管理テーブルに組み合わせ決定フラグ欄を追加して、現状パーティション情報とする。そしてパーティション管理部１２０は、現状パーティション情報の上位から順に、パーティションを１つずつ選択し、以下のステップＳ１３２〜Ｓ１３５の処理を行う。
【０１０５】
［ステップＳ１３２］パーティション管理部１２０は、選択したパーティションのアクセス量の合計値が、平均値から所定の範囲内（例えば上下１０％以内）か否かを判断する。合計値が平均値から所定の範囲内であれば、処理がステップＳ１３３に進められる。また合計値が平均値から所定の範囲内になければ、処理がステップＳ１３５に進められる。
【０１０６】
［ステップＳ１３３］パーティション管理部１２０は、選択したパーティションに対して組み合わせ決定済フラグを設定する。例えばパーティション管理部１２０は、メモリ１０２上に展開した現状パーティション情報における、選択したパーティションの組み合わせ決定フラグの欄に、決定済を示す値（決定済フラグ）を設定する。
【０１０７】
［ステップＳ１３４］パーティション管理部１２０は、選択したパーティションを構成するデータグループに構成済フラグを設定する。例えばパーティション管理部１２０は、アクセス量でソートされたデータグループリスト８０に、処理済フラグの欄を追加する。そしてパーティション管理部１２０は、選択したパーティションを構成するデータグループの処理済フラグの欄に、処理済であることを示す値（処理済フラグ）を設定する。
【０１０８】
［ステップＳ１３５］パーティション管理部１２０は、未処理のパーティションがあるか否かを判断する。未処理のパーティションがあれば、処理がステップＳ１３１に進められる。未処理のパーティションがなければ、現状組み合わせ確認処理が終了する。
【０１０９】
図１６は、現状パーティション情報の一例を示す図である。現状パーティション情報８１は、パーティション管理テーブル３４１（図１１参照）に、組み合わせ決定フラグの欄を追加したものである。組み合わせ決定フラグには、対応するパーティションを構成するデータグループの組み合わせが決定したときに、決定済フラグが設定される。例えば、組み合わせ決定フラグの欄には初期値「０」が設定されており、パーティションの組み合わせが決定したときに、そのパーティションの組み合わせ決定フラグの欄の値が「１」に変更される。
【０１１０】
図１７は、処理済フラグの欄を追加したデータグループリストの一例を示す図である。データグループリスト８２に追加された処理済フラグの欄には、対応するデータグループが属するパーティションが決定したときに、処理済フラグが設定される。例えば、処理済フラグの欄には初期値「０」が設定されており、データグループが属するパーティションが決定したときに、そのデータグループの処理済フラグの欄の値が「１」に変更される。
【０１１１】
現状組み合わせ確認処理が終了すると、次に新規組み合わせ作成処理が行われる。
図１８は、新規組み合わせ作成処理の手順の一例を示す図である。
［ステップＳ１４１］パーティション管理部１２０は、データグループの組み合わせが決定していないパーティションを１つ選択する。例えばパーティション管理部１２０は、現状パーティション情報８１を参照し、決定済フラグが設定されていないパーティションの１つを選択する。
【０１１２】
［ステップＳ１４２］パーティション管理部１２０は、降順でソート後のデータグループリスト８２において処理済フラグが設定されていないデータグループを、上位から１つ選択する。
【０１１３】
［ステップＳ１４３］パーティション管理部１２０は、降順でソート後のデータグループリスト８２において処理済フラグが設定されていないデータグループを、下位から１つ選択する。
【０１１４】
［ステップＳ１４４］パーティション管理部１２０は、選択したデータグループのアクセス量を合計する。
［ステップＳ１４５］パーティション管理部１２０は、選択したデータグループのアクセス量の合計値が、平均値以下か否かを判断する。合計値が平均値以下であれば、処理がステップＳ１４３に進められ、新たなデータグループの選択が行われる。また合計値が平均値より大きければ、処理がステップＳ１４６に進められる。
【０１１５】
［ステップＳ１４６］パーティション管理部１２０は、選択したパーティションに属するデータグループを、ステップＳ１４２、Ｓ１４３で選択したデータグループの組み合わせに決定する。また、パーティション管理部１２０は、選択したパーティションに対して組み合わせ決定済フラグを設定する。またパーティション管理部１２０は、選択したパーティションに対して、処理済フラグを設定する。
【０１１６】
［ステップＳ１４７］パーティション管理部１２０は、データグループの組み合わせの決定処理が未処理のパーティションがあるか否かを判断する。例えばパーティション管理部１２０は、決定済フラグが設定されていないパーティションが少なくとも１つあれば、未処理のパーティションがあると判断する。未処理のパーティションがあれば、処理がステップＳ１４１に進められる。未処理のパーティションがなければ、新規組み合わせ作成処理が終了する。
【０１１７】
このようにして、すべてのパーティションのアクセス量を平均化することができる。その結果、データベースサーバ間でのデータアクセスの処理負荷が偏らずにすみ、システム全体の処理を効率化することができる。
【０１１８】
しかも、パーティションに属するデータグループの組み合わせを変更するだけで、複数のデータベースサーバそれぞれが管理するデータ構成を変更することができ、パーティショニングの変更を迅速に行うことができる。すなわち、パーティションに属するデータグループを変更してもデータベース内でのデータの移動を行わずに済み、パーティショニングを短時間で変更することができる。
【０１１９】
なお、データグループの構成が変更されたパーティションに関してはインデックスの再創成が行われることになる。そこで第２の実施の形態では、アクセス量の合計値が平均値に近いパーティションについては、現在のデータグループの組み合わせを維持するように決定している。これにより、データグループの組み合わせの変更に伴うインデックス創成を行うパーティション数を削減し、処理の効率化を図ることができる。
【０１２０】
また、業務による実績データを元にデータベースのアクセス負荷を均一化するパーティション再構成をシステムで自動的に実施できるため、設計・運用コストも削減される。例えば、対象データ量が１０ＴＢの場合、ディスク間のデータコピーを伴うパーティションの再構成を行うと、設計時間＋５６時間（ディスクＩ／Ｏ性能１００ＭＢ／ｓの場合）かかる。第２の実施の形態によれば、数分以内でパーティションを再構成することができる。
【０１２１】
さらにパーティションを再構成に伴うストレージ装置間のデータの移動が行われないため、パーティションを再構成している間は、アクセス部１１０，２１０は、更新前のメタデータ３４０により、ストレージ装置３００，４００にアクセスすることができる。この場合、アクセス部１１０，２１０は、メタデータ３４０が更新された後に、更新後のメタデータ３４０を使用する。このように、パーティションを再構成している間は更新前のメタデータ３４０でデータアクセスを行うことで、パーティションの再構成をしても、データベースサーバ１００，２００によるデータアクセスのサービス停止期間は極めて短時間で済む。
【０１２２】
なお第２の実施の形態では、パーティションの再構成をデータベースサーバ１００で行っているが、データベースサーバ２００がパーティションの再構成を実行してもよい。また、データベースサーバ１００，２００以外の装置が、パーティションの再構成を行うこともできる。例えばシステムに設けられた管理装置が、各データベースサーバ１００，２００から統計情報を収集し、パーティションを再構成してもよい。
【０１２３】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１２４】
１  ストレージ装置
１ａ  データ領域
１ｂ  管理情報
２，３  アクセス装置
２ａ，３ａ  アクセス頻度記憶手段
１０  アクセス制御装置
１１  取得手段
１２  変更手段
【図１】
2015153123.tif 000003
【図２】
2015153123.tif 000004
【図３】
2015153123.tif 000005
【図４】
2015153123.tif 000006
【図５】
2015153123.tif 000007
【図６】
2015153123.tif 000008
【図７】
2015153123.tif 000009
【図８】
2015153123.tif 000010
【図９】
2015153123.tif 000011
【図１０】
2015153123.tif 000012
【図１１】
2015153123.tif 000013
【図１２】
2015153123.tif 000014
【図１３】
2015153123.tif 000015
【図１４】
2015153123.tif 000016
【図１５】
2015153123.tif 000017
【図１６】
2015153123.tif 000018
【図１７】
2015153123.tif 000019
【図１８】
2015153123.tif 000020