(57)【特許請求の範囲】
【請求項１】
複数のデータ項目を有するデータを複数のデータベース装置に分散する処理をコンピュータに実行させるためのデータ分散プログラムであって、
前記複数のデータ項目のうち特定の複数のデータ項目を前記複数のデータベース装置のうち同じデータベース装置に配置しないことを示す排他情報を記憶部から読み出し、
前記排他情報に基づき、前記特定の複数のデータ項目を前記複数のデータベース装置のうち異なるデータベース装置に配置するように、前記データ項目の配置を決定し、
決定した配置に従って、前記特定の複数のデータ項目について、前記複数のデータベース装置への送信を行う、
処理を前記コンピュータに実行させるデータ分散プログラム。
【請求項２】
前記データ項目の名前を変更する処理をさらに実行させることを特徴とする請求項１記載のデータ分散プログラム。
【請求項３】
前記データベース装置の特性を示す特性情報および前記複数のデータベース装置にデータを配置するポリシーが記述された配置ポリシーを前記記憶部から読み出し、
前記特性情報および前記配置ポリシーに基づいて、前記データ項目の配置を決定する、
処理をさらに実行させることを特徴とする請求項１または２記載のデータ分散プログラム。
【請求項４】
前記データベース装置に配置された前記データ項目のアクセス頻度およびデータ量を示す統計情報を収集し、
前記特性情報と前記統計情報とに基づき、前記統計情報が示すデータの配置が前記配置ポリシーを満たしているか判定し、
前記配置ポリシーを満たしていないとき、前記特性情報、前記統計情報、および前記配置ポリシーに基づき、前記データ項目の再配置を決定する、
処理をさらに実行させることを特徴とする請求項３記載のデータ分散プログラム。
【請求項５】
複数のデータ項目を有するデータを複数のデータベース装置に分散するデータ分散装置から、１つ以上のデータ項目に対応し複数の行からなるデータを受信し、
受信したデータの各行に対応するユニークなキーを生成し、
前記キーと前記受信したデータの各行を対応付けたデータを記憶部に格納し、
前記対応付けたデータの行をシャッフルすることで、データ項目毎に複数の行のデータが入れ替えられたデータを生成して前記記憶部に格納し、
データ分散装置に前記キーを送信する、
処理をコンピュータに実行させるためのデータ格納プログラム。
【請求項６】
複数のデータ項目を有するデータを複数のデータベース装置に分散するデータ分散装置において、
前記複数のデータ項目のうち特定の複数のデータ項目を前記複数データベース装置のうち同じデータベース装置に配置しないことを示す排他情報を記憶する記憶部と、
前記排他情報に基づき、前記特定の複数のデータ項目を前記複数のデータベース装置のうち異なるデータベース装置に配置するように、前記データ項目の配置を決定する配置決定部と、
決定した配置に従って、前記特定の複数のデータ項目について、前記複数のデータベース装置への送信を行うリクエスト処理部と、
を備えるデータ分散装置。
【請求項７】
前記配置決定部は、前記データ項目の名前を変更することを特徴とする請求項６記載のデータ分散装置。
【請求項８】
前記記憶部は、前記データベース装置の特性を示す特性情報および前記複数のデータベース装置にデータを配置するポリシーが記述された配置ポリシーを記憶し、
前記配置決定部は、前記特性情報および前記配置ポリシーに基づいて、前記データ項目の配置を決定することを特徴とする請求項６または７記載のデータ分散装置。
【請求項９】
前記データベース装置に配置された前記データ項目のアクセス頻度およびデータ量を示す統計情報を収集する収集部と、
前記特性情報と前記統計情報とに基づき、前記統計情報が示すデータの配置が前記配置ポリシーを満たしているか判定し、前記配置ポリシーを満たしていないとき、前記特性情報、前記統計情報、および前記配置ポリシーに基づき、前記データ項目の再配置を決定する再配置決定部と、
をさらに備えることを特徴とする請求項８記載のデータ分散装置。
【請求項１０】
記憶部と、
複数のデータ項目を有するデータを複数のデータベース装置に分散するデータ分散装置から、１つ以上のデータ項目に対応し複数の行からなるデータを受信し、受信したデータの各行に対応するユニークなキーを生成し、前記キーと前記受信したデータの各行を対応付けたデータを前記記憶部に格納し、前記対応付けたデータの行をシャッフルすることで、データ項目毎に複数の行のデータが入れ替えられたデータを生成して前記記憶部に格納し、前記データ分散装置に前記キーを送信する処理部と、
を備えるデータ格納装置。
【請求項１１】
複数のデータ項目を有するデータを複数のデータベース装置に分散する処理を実行するコンピュータが、
前記複数のデータ項目のうち特定の複数のデータ項目を前記複数のデータベース装置のうち同じデータベース装置に配置しないことを示す排他情報を記憶部から読み出し、
前記排他情報に基づき、前記特定の複数のデータ項目を前記複数のデータベース装置のうち異なるデータベース装置に配置するように、前記データ項目の配置を決定し、
決定した配置に従って、前記特定の複数のデータ項目について、前記複数のデータベース装置への送信を行う、
データ分散方法。
【請求項１２】
コンピュータが、
複数のデータ項目を有するデータを複数のデータベース装置に分散するデータ分散装置から、１つ以上のデータ項目に対応し複数の行からなるデータを受信し、
受信したデータの各行に対応するユニークなキーを生成し、
前記キーと前記受信したデータの各行を対応付けたデータを記憶部に格納し、
前記対応付けたデータの行をシャッフルすることで、データ項目毎に複数の行のデータが入れ替えられたデータを生成して前記記憶部に格納し、
データ分散装置に前記キーを送信する、
データ格納方法。
【請求項１３】
特定の複数のデータ項目の配置に関する排他関係を示す排他情報を記憶部から読み出し、
前記排他情報に基づき、前記特定の複数のデータ項目のデータを異なる情報処理装置に配置させる、
処理をコンピュータに実行させるデータ分散プログラム。
【請求項１４】
特定の複数のデータ項目の配置に関する排他関係を示す排他情報を記憶する記憶部と、
前記排他情報に基づき、前記特定の複数のデータ項目のデータを異なる情報処理装置に配置させる処理部と、
を備えるデータ分散装置。
【請求項１５】
コンピュータが、
特定の複数のデータ項目の配置に関する排他関係を示す排他情報を記憶部から読み出し、
前記排他情報に基づき、前記特定の複数のデータ項目のデータを異なる情報処理装置に配置させる、
データ分散方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、分散データベースにおいてデータを分散するデータ分散プログラムおよびデータ分散装置、並びにデータベース装置においてデータを格納するデータ格納プログラムおよびデータ格納装置に関する。
【背景技術】
【０００２】
現在、データベース技術において、スケーラビリティやアベイラビリティの向上のために、分散データベースが用いられている。
分散データベースは、ネットワークに接続した複数のコンピュータにデータを分散して配置し、複数のコンピュータが持っている複数のデータベースをあたかも単一のデータベースであるかのように見せる技術である。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−８５２０８号公報
【特許文献２】特開２００７−２１９６３４号公報
【特許文献３】特開２００５−１４１４３６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、分散データベースを構築する場合、高信頼データセンター（例えば、オンプレミス、プライベートクラウド）のみを利用して、データ分散を行うと、コストが高くなるという問題があった。
【０００５】
また、秘密分散技術を用いて、データを暗号化して分散配置する場合、暗号化・復号化に時間がかかるという問題、データを復号するためには複数個の分散情報が必要となるという問題があった。
【０００６】
本発明の課題は、セキュアな分散データベース構築するためのデータ分散プログラムおよびデータ格納プログラムを提供することである。
【課題を解決するための手段】
【０００７】
実施の形態のプログラムは、複数のデータ項目を有するデータを複数のデータサーバ装置に分散する処理をコンピュータに実行させるためのデータ分散プログラムであって、前記複数のデータ項目のうち２つ以上のデータ項目を前記複数データサーバ装置のうち同じデータベース装置に配置しないことを示す排他情報を記憶部から読み出す手順と、前記排他情報に基づき、前記２つ以上のデータ項目を前記複数のデータベース装置のうち異なるデータサーバ装置に配置するように、前記データ項目の配置を決定する手順と、決定した配置に従って、前記複数のデータ項目を前記複数のデータサーバ装置に送信する手順と、を前記コンピュータに実行させる。
【０００８】
実施の形態のプログラムは、複数の行からなるデータを格納するコンピュータに実行させるためのデータ格納プログラムであって、前記データを受信する手順と、前記データの各行に対応するユニークなキーを生成する手順と、前記キーと前記データの各行を対応付けたデータを記憶部に格納する手順と、前記格納したデータの行をシャッフルして、シャッフルしたデータを記憶部に格納する手順と、を前記コンピュータに実行させる。
【発明の効果】
【０００９】
実施の形態のプログラムによれば、一つのデータベース装置からデータが漏洩しても、該データだけでは意味を成さないため、セキュリティが向上するという効果を奏する。
また、実施の形態のプログラムによれば、複数のデータベースからデータが漏洩しても、データベース間のデータの対応関係が分からないため、セキュリティが向上するという効果を奏する。
【００１０】
また、コストの高い高信頼の装置を使う必要がないため、コストを低くすることが出来る。
【図面の簡単な説明】
【００１１】
【図１】実施の形態に係るデータベースシステムの構成図である。
【図２】実施の形態に係るデータベースシステムの詳細な構成図である。
【図３】データベース装置特性情報の例である。
【図４】データ配置ポリシーの例である。
【図５】スキーマの例である。
【図６】登録データの例である。
【図７】列名対応表の例である。
【図８】行対応表の例である。
【図９Ａ】データベース装置Ａに登録されたデータの例である。
【図９Ｂ】データベース装置Ｂに登録されたデータの例である。
【図９Ｃ】データベース装置Ｃに登録されたデータの例である。
【図９Ｄ】シャッフル後のデータベース装置Ａに登録されたデータの例である。
【図９Ｅ】シャッフル後のデータベース装置Ｂに登録されたデータの例である。
【図９Ｆ】シャッフル後のデータベース装置Ｃに登録されたデータの例である。
【図１０Ａ】データベース装置Ａの統計情報の例である。
【図１０Ｂ】データベース装置Ｂの統計情報の例である。
【図１０Ｃ】データベース装置Ｃの統計情報の例である。
【図１１】実施の形態に係るデータベース設定処理のフローチャートである。
【図１２】実施の形態に係るスキーマ作成処理の詳細なフローチャートである。
【図１３】実施の形態に係るデータ配置の決定処理の詳細なフローチャートである
【図１４】実施の形態に係る列データの分散決定処理の詳細なフローチャートである。
【図１５】実施の形態に係るデータ登録処理のフローチャートである。
【図１６】実施の形態に係るデータの配置変更処理のフローチャートである。
【図１７】実施の形態に係るポリシー適合判定処理の詳細なフローチャートである。
【図１８】実施の形態に係るデータアクセス処理のフローチャートである。
【図１９】情報処理装置（コンピュータ）の構成図である。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら本発明の実施の形態を説明する。
図１は、実施の形態に係るデータベースシステムの構成図である。
データベース（ＤＢ）システム１０１は、DB Proxy１０２、データベース装置１０３−ｎ（ｎ＝１〜３）を備える。尚、データベース装置１０３−１、１０３−２、１０３−３は、それぞれデータベース装置Ａ、データベース装置Ｂ、データベース装置Ｃとも呼ぶ。
【００１３】
DB Proxy１０２、データベース装置１０３−ｎ、およびクライアント１０４は、ネットワーク１０５を介して接続している。
DB Proxy１０２は、データベース装置１０３へのデータ配置の決定や検索結果の応答などを行う。
【００１４】
データベース装置１０３は、データを格納する。また、データベース装置１０３は、データの容量やデータに対するアクセス頻度などの情報を収集する。
クライアント１０４は、DB Proxy１０２に対して、データの登録や検索などを依頼する。また、DB Proxy１０２から検索結果などの処理結果を受け取る。
【００１５】
図２は、データベースシステムの詳細な構成図である。
DB Proxy１０２は、リクエスト受付部２０１、データ配置決定部２０２、統計情報収集部２０３、データ再配置計画部２０４、リクエスト処理部２０５、および記憶部２０６を備える。
【００１６】
リクエスト受付部２０１は、クライアント１０４からのテーブル作成リクエストやデータ登録リクエスト等を受信する。
データ配置決定部２０２は、データベース装置１０３に配置するデータを決定する。
【００１７】
統計情報収集部２０３は、データベース装置１０３のアクセス頻度などの統計情報を収集する。
データ再配置計画部２０４は、データ配置がデータ配置ポリシーに適合しているか判断し、適合していない場合は、データの再配置を行う。
【００１８】
リクエスト処理部２０５は、スキーマ作成やデータ登録などのリクエストをデータベース装置１０３へ発行する。
記憶部２０６は、データベース装置１０３の特性情報やデータ配置ポリシー等の情報を格納する。
【００１９】
データベース装置１０３−ｎは、情報収集部３０１−ｎ、リクエスト処理部３０２−ｎ、記憶部３０３−ｎを備える。
情報収集部３０１は、データベース装置１０３が格納しているデータへのアクセス頻度や格納しているデータ量をカウントし、アクセス頻度およびデータ量を統計情報として記憶部３０３に記憶する。
【００２０】
リクエスト処理部３０２は、クライアントから１０４のリクエストに応じて、データの送受信やデータの格納などを行う。
記憶部３０３は、分散されたデータが記述されたテーブル（データベース）や該テーブルの構造を示すスキーマを格納する。
【００２１】
以下、実施の形態のデータ配置決定処理やデータ更新処理などについて説明する。
先ず、実施の形態の処理を説明する前に、実施の形態の処理で用いられる各種情報について説明する。
【００２２】
図３は、データベース装置特性情報の例である。
データベース装置特性情報４０１は、データベース装置名とデータベース装置の特性とが対応付けられて記述されている。特性として記述される内容としては、稼働率、性能、コスト、容量がある。
【００２３】
稼働率は、全時間に対するデータベース装置１０３が稼動している時間の割合である。
性能は、データベース装置１０３の処理速度やレイテンシ等に基づいた値である。
コストは、データ量に対する必要金額である。
【００２４】
容量は、データベース装置１０３の最大記憶容量である。
例えば、図３のデータベース装置特性情報４０１において、データベース装置Ａの稼働率は９９．９５％、性能は５、コストは１ドル当たり０．２０ＧＢ、最大記憶容量は１００ＧＢである。
データベース装置特性情報４０１は、記憶部２０６に格納される。
【００２５】
図４は、データ配置ポリシーの例である。
データ配置ポリシー４０２には、データをどのように配置するかを示す情報（ポリシー）が記載されている。
【００２６】
例えば、図４のデータ配置ポリシー４０２には「稼働率９９％未満のデータベース装置を利用する場合は、複数データベース装置にレプリカを作成」と記述されている。すなわち、稼働率９９％未満のデータベース装置では、同様に稼働率９９％未満の他データベース装置複数台と組み合わせて同じデータを管理する旨が記載されている。
【００２７】
また、図４のデータ配置ポリシー４０２には、ポリシーとして「コスト重視」と記述されている。すなわち、コストが低くなるようにデータの配置を決定する旨が記載されている。
データ配置ポリシー４０２は、記憶部２０６に格納される。
【００２８】
図５は、スキーマの例である。
スキーマは、例えばStructured Query Language（ＳＱＬ）スキーマであり、データベースの構造を表す。
【００２９】
図５のスキーマ４０３には、データ項目（例えば、顧客ＩＤ、顧客名）、該データ項目のデータ型（例えば、CHARACTER、DATE）、制約条件（例えば、UNIQUE、NOT NULL）が対応付けられて記述されている。
スキーマ４０３は、例えば、従来と同様にＳＱＬによって作成される。
【００３０】
実施の形態において、同じデータベース装置に配置できないデータ項目に対して、排他関係を示すMUTEX(n)が制約条件として付加される。同じキーnを持つデータ項目は、同じデータベース装置１０３に配置しないことを示す。
【００３１】
例えば、図５のスキーマ４０３において、顧客名ＩＤと顧客名の制約条件にMUTEX(1)が記述されている。これは、同じデータベース装置１０３に顧客ＩＤと顧客名のデータを配置できないことを示す。
【００３２】
同様に、生年月日と家族構成の制約条件にMUTEX(2)が記述されており、同じデータベース装置１０３に生年月日と家族構成のデータを配置できないことを示す。
ユーザは、同じデータベース装置１０３に配置したくないデータ項目がある場合、スキーマ４０３の該データ項目の制約条件にMUTEX(n)を記述することで、後述のデータ分散決定処理において、該データ項目は同じデータベース装置１０３に配置されなくなる。
【００３３】
例えば、組み合わせると意味を成すようなデータ項目に対して、MUTEX(n)を記述すると、該データ項目は同じデータベース装置１０３に配置されなくなる。したがって、ある一つのデータベース装置１０３からデータが漏洩しても、該データベース装置１０３にあるデータだけでは、意味を成さないのでセキュリティが向上する。
【００３４】
図６は、登録データの例である。
図６の登録データ４０４は、データベース装置１０３に分散する前のデータである。
登録データ４０４は、データ項目として、顧客ＩＤ、顧客名、生年月日、資産、家族構成、掛金、および分類を有する。
【００３５】
登録データ４０４には、各データ項目に対し、３つのデータが記述されている。
したがって、実施の形態の登録データ４０４は、３行×７列のデータである。
【００３６】
図７は、列名対応表の例である。
図７の列名対応表４０５は、変更前のデータ項目名（列名）と変更後のデータ項目名（列名）の対応関係を示す表である。列名対応表４０５には、変更前のデータ項目名と変更後のデータ項目名とが対応付けられて記述されている。また、データベース名やテーブル名も記述しても良い。
【００３７】
列名対応表４０５は、項目として、オリジナルおよび変更後を有する。
オリジナルには、変更前のデータ項目名（列名）が記述されている。
変更後名は、変更後のデータ項目名（列名）が記述されている。実施の形態において、変更後名に記述されるデータの形式は、「データベース名.テーブル名.変更後のデータ項目名」である。
【００３８】
例えば、列名対応表４０５において、顧客ＩＤとA.Foo.Bが対応している。これは、顧客ＩＤがデータベース装置ＡのテーブルFooのデータ項目（列名）Ｂに記述されていることを示す。
【００３９】
図８は、行対応表の例である。
図８の行対応表４０６は、データベース装置間のテーブルの行の対応関係を示す表である。行対応表４０６には、各データベース装置のテーブルの行に割り当てられたキーが対応付けられて記述されている。
【００４０】
行対応表４０６において、キーXYZ、324、およびw4tが対応付けられて記述されている。これは、データベース装置ＡのテーブルのXYZが記述された行と、データベース装置Ｂのテーブルの324が記述された行と、データベース装置Ｃのテーブルのw4tが記述された行とが対応していることを示す。すなわち、これらキーが記述された行のデータが関連したデータであることを示す。
【００４１】
図９Ａ、Ｂ、およびＣは、それぞれデータベース装置Ａ、Ｂ、およびＣに登録されたデータの例である。
図９Ａ〜Ｃのデータは、実施の形態のデータ配置決定処理を行い、図６の登録データ４０４を各データベース装置１０３に分散して登録したデータである。
尚、データベース装置Ａ、Ｂ、およびＣにおいて、それぞれデータを格納するテーブル（またはデータベースと呼ぶ）をFoo４０７、Bar４０８、およびBaz４０９としている。
【００４２】
図９Ｄ、Ｅ、およびＦは、それぞれシャッフル後のデータベース装置Ａ、Ｂ、およびＣに登録されたデータの例である。
図９Ｄ、Ｅ、およびＦは、それぞれ図９Ａ、Ｂ、およびＣに示すデータの行をシャッフル（適当に入れ替え）したデータである。
尚、データベース装置Ａ、Ｂ、およびＣにおいて、シャッフル後のそれぞれデータを格納するテーブルをFoo４１０、Bar４１１、およびBaz４１２としている。
【００４３】
図１０Ａ〜Ｃは、統計情報の例である。
図１０Ａ、Ｂ、およびＣは、それぞれデータベース装置Ａ、Ｂ、およびＣの統計情報である。
【００４４】
統計情報４１３−ｎは、それぞれ記憶部３０３−ｎに格納されている。
統計情報４１３には、データベース装置に登録されたデータに関する情報が格納されている。
【００４５】
具体的には、統計情報４１３は、テーブルの列名、アクセス頻度、およびデータ量が対応付けられて記述されている。
アクセス頻度は、列名のデータに対するアクセスの頻度を示す。
【００４６】
データ量は、列名のデータの大きさである。
例えば、図１０Ａにおいて、列名Ｂのデータは、１日あたり５０万回アクセスされ、データのサイズは１０ＧＢであることを示す。
【００４７】
以下、実施の形態のDB proxy１０２およびデータベース装置１０３が行う処理について説明する。
図１１は、実施の形態に係るデータベース設定処理のフローチャートである。
【００４８】
ステップＳ１００１において、ユーザはデータベース装置特性情報４０１を記憶部２０６に登録する。
ステップＳ１００２において、ユーザはデータ配置ポリシー４０２を記憶部２０６に登録する。
【００４９】
ステップＳ１００３において、ユーザはクライアント１０４からスキーマ作成リクエストをDB Proxy１０２に発行する。実施の形態において、スキーマ作成リクエストには、図５に示すスキーマ４０３が含まれる。
ステップＳ１００４において、各データベース装置１０３はスキーマを作成する。
尚、ステップＳ１００４の詳細な処理については後述する。
【００５０】
図１２は、実施の形態に係るスキーマ作成処理（ステップＳ１００４）の詳細なフローチャートである。
ステップＳ１１０１において、リクエスト受付部２０１は、クライアント１０４からスキーマ作成リクエストを受信する。また、スキーマ作成リクエストに含まれるスキーマ４０３は、記憶部２０６に格納しておく。
【００５１】
ステップＳ１１０２において、データ配置決定部２０２は、各データベース装置１０３へのデータ配置を決定する。
尚、ステップＳ１１０２のデータ配置の決定処理の詳細については後述する。
【００５２】
ステップＳ１１０３において、リクエスト処理部２０５は、利用する全てのデータベース装置１０３にリクエストを送信したかチェックする。利用する全てのデータベース装置１０３にリクエストを送信した場合、処理を終了し、利用する全てのデータベース装置１０３にリクエストを送信していない場合、ステップＳ１１０４に制御は進む。
【００５３】
ステップＳ１１０４において、リクエスト処理部２０５は、ステップＳ１１０２で決定したデータ配置および列対応表に基づいて、スキーマ作成リクエストを生成し、データベース装置１０３へ送信する。
ステップＳ１１０５において、データベース装置１０３は、スキーマ作成リクエストに基づいてスキーマを作成する。
【００５４】
図１３は、実施の形態に係るデータ配置の決定処理（ステップＳ１１０２）の詳細なフローチャートである。
ステップＳ１２０１において、データ配置決定部２０２は、データベース装置間でのデータ項目（列データ）の分散を決定する。
尚、列データの分散決定の処理の詳細については後述する。
【００５５】
実施の形態においては、登録データ４０４のうち、顧客ＩＤ、生年月日、資産、掛金、および分類をデータベース装置Ａに配置し、顧客名および家族構成をデータベース装置Ｂ、Ｃに配置すると決定されたとする。
【００５６】
ステップＳ１２０２において、データ配置決定部２０２は、各データベース装置１０３に作成するテーブル名を任意に決定し、各データ項目名（列データ名）に任意の名前を割り当てる。
【００５７】
各データ項目名に任意の名前を割り当てることで、データが漏洩しても、データが何のデータであるか不明であるため、セキュリティが向上する。
実施の形態において、データベース装置Ａ〜Ｃに作成するテーブル名は、それぞれFoo、Bar、Bazとする。
【００５８】
また、テーブルFooにおいて、顧客ＩＤ、生年月日、資産、掛金、および分類をそれぞれ、Ｂ、Ｃ、Ｄ、Ｅ、Ｆとする。テーブルBarにおいて、顧客名および家族構成をそれぞれ、βおよびγとする。テーブルBazにおいて、顧客名および家族構成をそれぞれ、IIおよびIIIとする。
【００５９】
ステップＳ１２０３において、データ配置決定部２０２は、ステップＳ１２０２で割り当てたテーブル名、データ項目名を記憶部２０６の列対応表に登録する。
実施の形態において、上述のテーブル名やデータ項目名を登録すると、図７のような列対応表４０５が生成される。
ステップＳ１２０４において、データ配置決定部２０２は、列対応表を参照し、各データベース装置１０３に対して発行するスキーマ作成リクエストを生成する。
【００６０】
図１４は、実施の形態に係る列データの分散決定処理（ステップＳ１２０１）の詳細なフローチャートである。
ステップＳ１３０１において、データ配置決定部２０２は、データベース装置特性情報４０１およびデータ配置ポリシー４０２を参照し、データベース装置特性情報４０１およびデータ配置ポリシー４０２に基づいて、データ配置ポリシー４０２に指定された稼働率を満たさないデータベース装置１０３を組み合わせる。
【００６１】
実施の形態において、データ配置ポリシー４０２には「稼働率９９％未満のデータベース装置を利用する場合は、複数データベース装置にレプリカを作成」と記述されている。すなわち、稼働率９９％未満のデータベース装置では、同様に稼働率９９％未満の他データベース装置複数台と組み合わせて同じデータを管理する旨が記載されている。
【００６２】
また、データベース装置特性情報４０１を参照すると、データベース装置Ａの稼働率は９９．９５％、データベース装置Ｂの稼働率は９８．９％、データベース装置Ｃの稼働率は９８．０％である。
【００６３】
したがって、稼働率が９９％未満のデータベース装置Ｂとデータベース装置Ｃが組み合わせられる。よって、以下の処理において、データベース装置Ａと（データベース装置Ｂ、Ｃ）の２つに分散するようにデータの配置が決定される。
【００６４】
ステップＳ１３０２において、データ配置決定部２０２は、スキーマ４０３を参照し、スキーマ４０３に記載された項目のうち、組み合わせ不可な項目をそれぞれ抽出する。
実施の形態において、図５のスキーマ４０３では、顧客ＩＤと顧客名には引数としてMUTEX(1)、生年月日と家族構成には引数としてMUTEX(2)が割り当てられている。したがって、顧客ＩＤと顧客名、生年月日と家族構成をそれぞれ組み合わせ不可な項目リストとして抽出する。
【００６５】
ステップＳ１３０３において、データ配置決定部２０２は、データ配置ポリシー４０２を参照し、データ配置ポリシーがコスト重視か性能重視か判定する。データ配置ポリシーがコスト重視の場合、制御はステップＳ１３０４に進み、性能重視の場合、制御はステップＳ１３０８に進む。
【００６６】
例えば、実施の形態において、図４のデータ配置ポリシー４０２には、「コスト重視」と記述されているので、ステップＳ１３０４に制御は進む。
ステップＳ１３０４において、データ配置決定部２０２は、割り当て未決定の不可項目リストのうちの一つを選択する。
【００６７】
例えば、実施の形態において、不可項目リストとして、顧客ＩＤと顧客名を選択する。
ステップＳ１３０５において、データ配置決定部２０２は、選択した不可項目リストのうち、サイズが大きい順にデータ項目をコストの安いデータベース装置１０３に順次割り当てる。サイズの大きさは、スキーマ４０３に記述されたデータ型（例えば、CHARACTER, DATE, INTEGERなど）に基づき判断する。尚、項目のデータ型が同じ場合は、不可項目リストの並び順に割り当てる。
【００６８】
実施の形態において、顧客ＩＤと顧客名を割り当てる場合、顧客ＩＤと顧客名のデータ型はCHARACTERであるので、データ型は等しい。よって、顧客ＩＤ、顧客名の順でデータベース装置１０３に割り当てる。
【００６９】
実施の形態において、上記ステップＳ１３０１で述べたように、データベース装置Ｂとデータベース装置Ｃが組み合わせられたので、データベース装置Ａと（データベース装置Ｂ、Ｃ）の２つにデータを割り当てる。データベース装置特性情報４０１を参照して、データベース装置Ａと（データベース装置Ｂ、Ｃ）のそれぞれのコストを算出すると、データベース装置Ａのコストは$0.20/GBであり、データベース装置Ｂ、Ｃのコストは、$0.15/GB+$0.10/GB=$0.25/GBである。したがって、データベース装置Ａのほうがコストが安いので、データベース装置Ａ、データベース装置Ｂ、Ｃの順にデータを割り当てる。
【００７０】
以上より、顧客ＩＤはデータベース装置Ａに割り当てられ、顧客名はデータベース装置Ｂ、Ｃに割り当てられる。
また、生年月日と家族構成を割り当てる場合、生年月日と家族構成のデータ型は、それどれ、DATEとINTEGERである。DATEのほうがINTEGERよりサイズが大きいので、生年月日と家族構成の順で割り当てる。
【００７１】
したがって、生年月日はデータベース装置Ａに割り当てられ、家族構成はデータベース装置Ｂ、Ｃに割り当てられる。
ステップＳ１３０６において、データ配置決定部２０２は、全ての割り当て未決定の不可項目リストの割り当てを完了したか判断する。割り当てが完了した場合、制御はステップＳ１３０７に進み、割り当てが完了していない場合、制御はステップS１２０５に戻る。
【００７２】
ステップＳ１３０７において、データ配置決定部２０２は、最もコストの安いデータベース装置に残りの項目を割り当てる。
実施の形態において、上述のようにデータベース装置Ａのコストが最も安いので、スキーマ４０３を参照して、ステップＳ１３０２で抽出しなかった項目（すなわち、資産、掛け金、および分類）をデータベース装置Ａに割り当てる。
【００７３】
ステップＳ１３０８において、データ配置決定部２０２は、スキーマ４０３を参照し、スキーマ４０３に記載された項目のうち、組み合わせ不可な項目をそれぞれ抽出する。
実施の形態において、図５のスキーマ４０３では、顧客ＩＤと顧客名には引数としてMUTEX(1)、生年月日と家族構成には引数としてMUTEX(2)が割り当てられている。したがって、顧客ＩＤと顧客名、生年月日と家族構成をそれぞれ組み合わせ不可な項目リストとして抽出する。
【００７４】
ステップＳ１３０９において、データ配置決定部２０２は、選択した不可項目リストのうち、サイズが大きい順にデータ項目を性能の高いデータベース装置１０３に順次割り当てる。サイズの大きさは、スキーマ４０３に記述されたデータ型（例えば、CHARACTER, DATE, INTEGERなど）に基づき判断する。尚、データ項目のデータ型が同じ場合は、不可項目リストの並び順に割り当てる。
【００７５】
実施の形態において、顧客ＩＤと顧客名を割り当てる場合、顧客ＩＤと顧客名のデータ型はCHARACTERであるので、データ型は等しい。よって、顧客ＩＤ、顧客名の順で割り当てる。
【００７６】
実施の形態において、上記ステップＳ１３０１で述べたように、データベース装置Ｂとデータベース装置Ｃが組み合わせられたので、データベース装置Ａと（データベース装置Ｂ、Ｃ）の２つにデータを割り当てる。データベース装置特性情報を参照して、データベース装置Ａと（データベース装置Ｂ、Ｃ）のそれぞれの性能を算出すると、データベース装置Ａの性能は５であり、データベース装置Ｂ、Ｃの性能は、MIN（８,１０）＝８である。したがって、性能は（データベース装置Ｂ、Ｃ）の方が高いので、（データベース装置Ｂ、Ｃ）、データベース装置Ａの順にデータを割り当てる。
【００７７】
以上より、顧客ＩＤは（データベース装置Ｂ、Ｃ）に割り当てられ、顧客名はデータベース装置Ａに割り当てられる。
また、生年月日と家族構成を割り当てる場合、生年月日と家族構成のデータ型は、それどれ、DATEとINTEGERである。DATEのほうがINTEGERよりサイズが大きいので、生年月日と家族構成の順で割り当てる。
【００７８】
したがって、生年月日はデータベース装置Ｂ、Ｃに割り当てられ、家族構成はデータベース装置Ａに割り当てられる。
ステップＳ１３１０において、データ配置決定部２０２は、全ての割り当て未決定の不可項目リストの割り当てを完了したか判断する。割り当てが完了した場合、制御はステップＳ１３１１に進み、割り当てが完了していない場合、制御はステップＳ１３０９に戻る。
【００７９】
ステップＳ１３１１において、データ配置決定部２０２は、最も性能の高いデータベース装置に残りの項目を割り当てる。
実施の形態において、上述のようにデータベース装置Ｂ、Ｃの性能が最も高いので、スキーマ４０３を参照して、ステップＳ１３０２で抽出しなかった項目（すなわち、資産、掛け金、および分類）をデータベース装置Ｂ、Ｃに割り当てる。
次に、データベース装置１０３にデータを登録する処理について述べる。尚、上述のデータベース設定処理は、すでに行われているものとする。
【００８０】
図１５は、実施の形態に係るデータ登録処理のフローチャートである。
尚、以下の処理において、ステップＳ１４０１〜Ｓ１４０５、Ｓ１４０９〜１４１１は、DB Proxy１０２で行われ、ステップＳ１４０６〜Ｓ１４０７はデータベース装置１０３で行われる。
【００８１】
ステップＳ１４０１において、リクエスト処理部２０１は、クライアント１０４からデータ登録リクエストを受信する。データ登録リクエストには、登録データ４０４と登録データ４０４の登録を要求する旨とが含まれている。
【００８２】
ステップＳ１４０２において、リクエスト処理部２０５は、行対応表４０６に各データベース装置１０３のユニークキーを記述するためのエントリを作成する。
ステップＳ１４０３において、リクエスト処理部２０５は、データの登録が済んでいないデータベース装置１０３を一つ選択する。
【００８３】
ステップＳ１４０４において、リクエスト処理部２０５は、列名対応表４０５を参照して、選択したデータベース装置１０３が保持するデータ項目に合わせて、データ登録リクエストを修正する。データ登録リクエストには、選択したデータベース装置１０３に登録する登録データおよび該登録データを登録する旨が含まれている。
【００８４】
例えば、実施の形態において、列名対応表４０５を参照すると、データベース装置Ａは、登録データとして、DB Aキー、顧客ＩＤ、生年月日、資産、掛け金、および分類を保持する。また、データベース装置Ａにおいて、DB Aキー、顧客ＩＤ、生年月日、資産、掛け金、および分類は、それぞれA、B、C、D、E、およびFに名前が変更される。したがって、リクエスト処理部２０５は、登録データ４０４のうち、顧客ＩＤ、生年月日、資産、掛け金、および分類をデータベース装置Ａに登録する登録データとして送信する。また、DB Aキー、顧客ＩＤ、生年月日、資産、掛け金、および分類を、それぞれA、B、C、D、E、およびFとして、登録する旨を送信する。
【００８５】
ステップＳ１４０５において、リクエスト処理部２０５は、選択したデータベース装置１０３に、データ登録リクエストを送信する。
ステップＳ１４０６において、リクエスト処理部３０２は、受信した登録データの各行に対応するユニークキーを生成する。尚、データベース装置ＸのユニークキーはDB Xキーと呼ぶ。
【００８６】
例えば、実施の形態において、データベース装置Ａでは、登録データの１、２、および３行目に対応するユニークキー（DB Aキー）としてXYZ、AFG、およびFRGが生成される。
ステップＳ１４０７において、リクエスト処理部３０２は、上記ユニークキーと受信した登録データをテーブルに登録する。そして、テーブルに登録したデータの行をシャッフル（適当に入れ替え）する。これにより、データベース装置１０３には、データの行がシャッフルされたテーブルが配置される。
【００８７】
例えば、実施の形態において、データベース装置Ａでは、ユニークキーと受信したデータをテーブルFooに登録すると、図９Ａに示すようなテーブルFoo４０７が登録される。そして、テーブルFoo４０７の行のシャッフルを行う。例えば、テーブルFoo４０７の２行目と３行目を入れ替える。
これにより、データベース装置Ａには、図９Ｄに示すようなテーブルFoo４１０が登録される。
【００８８】
同様に、データベース装置Ｂおいて、図９Ｂに示すようなテーブルBar４０８が登録され、データベース装置Ｃおいて、図９Ｃに示すようなテーブルBaz４０９が登録される。そして、データベース装置ＢおよびＣにおいて、それぞれ行のシャッフルを行うことにより、データベース装置Ｂには、図９Ｅに示すようなテーブルBar４１１が登録され、データベース装置Ｃには、図９Ｆに示すようなテーブルBaz４１２が登録される。
【００８９】
ステップＳ１４０８において、リクエスト処理部３０２は、DB Proxyにデータの登録完了を通知する。このとき、ステップＳ１４０６で生成したユニークキーも送信する。
ステップＳ１４０９において、リクエスト処理部２０５は、行対応表４０６に受信したユニークキーを登録する。
【００９０】
例えば、実施の形態において、リクエスト処理部２０５は、データベース装置Ａから受信したユニークキーXYZ、AFG、およびFRGを行対応表４０６のDB Aキーのエントリに記述する。
【００９１】
ステップＳ１４１０において、リクエスト処理部２０５は、すべてのデータベース装置１０３にデータの登録が完了したかチェックする。データの登録が完了した場合、制御はステップＳ１４１１に進み、完了していない場合、制御はステップＳ１４０３に戻る。
【００９２】
ステップＳ１４１１において、リクエスト受付部２０１は、クライアント１０４に登録完了を通知する。
上述の処理により、各データベース装置１０３にデータが分散して登録される。
【００９３】
次に、データベース装置の統計情報に基づいて、設定されたポリシー（例えば、コスト重視、性能重視）を満たすようにデータの配置を動的に変更する処理について説明する。
図１６は、実施の形態に係るデータの配置変更処理のフローチャートである。
【００９４】
ステップＳ１５０１において、統計情報収集部２０３は、定期的に各データベース装置１０３から統計情報４１３を収集する。
実施の形態において、統計情報収集部２０３は、データベース装置Ａ、Ｂ、およびＣから、それぞれ統計情報４１３−１、４１３−２、および４１３−３を収集する。また、収集した統計情報４１３は、記憶部２０６に格納しておく。
【００９５】
ステップＳ１５０２において、データ再配置計画部２０４は、収集した統計情報４１３に基づいて、データの配置がデータ配置ポリシー４０２に記述されたポリシーに合致しているか否か判定する。データの配置がポリシーに合致していた場合、処理は終了し、合致していない場合、制御はステップＳ１５０３に進む。
尚、データ配置がポリシーに合致しているか否かの判定処理の詳細については後述する。
【００９６】
ステップＳ１５０３において、データ再配置計画部２０４は、データ配置ポリシー４０２に記述されたポリシーに合致するように、データ配置を決定する。尚、このとき、スキーマに記述された制約条件（排他情報MUTEX）も考慮して決定する。データ配置の決定の方法としては、例えば、データ配置のすべての組み合わせをチェックして、ポリシー（例えばコスト重視）および制約条件を満たすものを選択する。
ここで、データの再配置のため、データ移動を行うデータ項目を移動対象項目と呼ぶ。
【００９７】
ステップＳ１５０４において、データ再配置計画部２０４は、移動対象項目のうち、また移動していない移動対象項目を一つ選択する。
ステップＳ１５０５において、データ再配置計画部２０４は、移動先データベース装置に対し、スキーマに移動対象項目を追加するように指示する。移動先データベース装置は、スキーマに移動対象項目を追加する。
【００９８】
ステップＳ１５０６において、データ再配置計画部２０４は、移動元データベース装置に移動先データベース装置へ移動対象項目のデータを送信するように指示する。移動元データベース装置は、指示を受信すると、移動先データベース装置へ移動対象項目のデータを送信する。移動先データベース装置は、データを受信すると、テーブルに該データを登録する。
【００９９】
ステップＳ１５０７において、データ再配置計画部２０４は、移動元データベース装置にスキーマから移動対象項目を削除するように指示する。移動元データベース装置は、スキーマから移動対象項目を削除する。
【０１００】
ステップＳ１５０８において、データ再配置計画部２０４は、列名対応表４０５の移動対象項目に対応する変更後名の欄を「移動先データベース装置名.移動先データベース装置のテーブル名. 変更後のデータ項目名」に変更する。
【０１０１】
ステップＳ１５０９において、データ再配置計画部２０４は、移動対象項目をすべて移動完了したか判断する。移動完了した場合、制御はステップＳ１５１０に進み、移動完了していない場合、ステップＳ１５０４に制御は戻る。
【０１０２】
ステップＳ１５１０において、データ再配置計画部２０４は、データベース装置１０３に統計情報４１３を初期化するように指示する。各データベース装置１０３は、統計情報４１３を初期化する。
【０１０３】
図１７は、ポリシー適合判定処理（ステップＳ１５０２）の詳細なフローチャートである。
ステップＳ１６０１において、データ再配置計画部２０４は、データ配置ポリシー４０２を参照し、ポリシーがコスト重視か性能重視か判定する。ポリシーがコスト重視の場合、制御はステップＳ１６０２へ進み、性能重視の場合、制御はＳ１６０８へ進む。
【０１０４】
ステップＳ１６０２において、データ再配置計画部２０４は、スキーマ４０３を参照し、未チェックの組み合わせ不可項目リストを一つ選択する。
例えば、実施の形態において、組み合わせ不可項目リストとして顧客ＩＤと顧客名を選択する。
【０１０５】
ステップＳ１６０３において、データ再配置計画部２０４は、統計情報４１３を参照して、ステップＳ１６０２で選択した組み合わせ不可項目リストの中の各項目について、データ量を抽出する。尚、統計情報４１３の列名が何を示すかは、列名対応表４０５を参照することにより分かる。
【０１０６】
実施の形態において、統計情報４１３を参照すると、顧客ＩＤ（A.Foo.B）のデータ量は１０ＧＢ、顧客名（B.Bar.γ/C.BAZ.II）のデータ量は８０ＧＢである。
ステップＳ１６０４において、データ再配置計画部２０４は、ステップＳ１６０３で抽出した各項目のデータ量に関して、コストの安いデータベース装置１０３に記録されているデータ量のほうがコストの高いデータベース装置１０３に記録されているデータ量より多いか判定する。コストの安いデータベース装置１０３に記録されているデータ量のほうがコストの高いデータベース装置１０３に記録されているデータ量より多い場合、制御はステップＳ１６０５へ進み、少ない場合、制御はステップＳ１６０７へ進む。尚、データベース装置のコストについては、上述のデータベース装置特性情報４０１を参照することに判断可能である。
【０１０７】
例えば、実施の形態において、顧客ＩＤと顧客名について判定すると、データ量の多い顧客名の方がコストの高いデータベース装置Ｂ、Ｃに格納されている。よって、ポリシー違反と判定される。
【０１０８】
ステップＳ１６０５において、データ再配置計画部２０４は、すべての組み合わせ不可項目リストのチェックを完了したか判定する。すべての組み合わせ不可項目リストのチェックを完了した場合、制御はステップＳ１６０６へ進み、完了していない場合、制御はステップＳ１６０２へ戻る。
【０１０９】
ステップＳ１６０６において、データ再配置計画部２０４は、データ配置がデータ配置ポリシーに適合していると判定する。
ステップＳ１６０７において、データ再配置計画部２０４は、データ配置がデータ配置ポリシーに適合していないと判定する。
【０１１０】
ステップＳ１６０８において、データ再配置計画部２０４は、データ再配置計画部２０４は、未チェックの組み合わせ不可項目リストを一つ選択する。
実施の形態において、組み合わせ不可項目リストとして顧客ＩＤと顧客名を選択する。または、組み合わせ不可項目リストとして生年月日と家族構成を選択する。
【０１１１】
ステップＳ１６０９において、データ再配置計画部２０４は、統計情報４１３を参照して、ステップＳ１６０２で選択した組み合わせ不可項目リストの中の各項目について、アクセス頻度を抽出する。
【０１１２】
実施の形態において、統計情報４１３を参照すると、顧客ＩＤ（A.Foo.B）のアクセス頻度は５０万アクセス／日、顧客名（B.Bar.γ/C.BAZ.II）のアクセス頻度は８０万アクセス／日である。
また、生年月日（A.Foo.C）のアクセス頻度は３０万アクセス／日、家族構成（B.Bar.β/C.Baz.III）のアクセス頻度は３万アクセス／日である。
【０１１３】
ステップＳ１６１０において、データ再配置計画部２０４は、ステップＳ１６０９で抽出した各項目のアクセス頻度に関して、性能の高いデータベース装置１０３に記録されている項目のアクセス頻度のほうが性能の低いデータベース装置１０３に記録されている項目のアクセス頻度より高いか判定する。性能の高いデータベース装置１０３に記録されている項目のアクセス頻度が性能の低いデータベース装置１０３に記録されている項目のアクセス頻度より高い場合、制御はステップＳ１６１１へ進み、低い場合、制御はステップＳ１６１３へ進む。尚、データベース装置１０３の性能については、上述のデータベース装置特性情報４０１を参照することに判断可能である。
【０１１４】
実施の形態において、顧客ＩＤと顧客名について判定すると、アクセス頻度の高い顧客名は、性能の高いデータベース装置Ｂ、Ｃに格納されている。よって、ポリシー適合と判定される。
また、生年月日と家族構成について判定すると、アクセス頻度の高い生年月日は、性能の低いデータベース装置Ａに格納されている。よって、ポリシー違反と判定される。
【０１１５】
ステップＳ１６１１において、データ再配置計画部２０４は、すべての組み合わせ不可項目リストのチェックを完了したか判定する。すべての組み合わせ不可項目リストのチェックを完了した場合、制御はステップＳ１６１２へ進み、完了していない場合、制御はステップＳ１６０８へ戻る。
【０１１６】
ステップＳ１６１２において、データ再配置計画部２０４は、データ配置がデータ配置ポリシーに適合していると判定する。
ステップＳ１６１３において、データ再配置計画部２０４は、データ配置がデータ配置ポリシーに適合していないと判定する。
【０１１７】
次に、クライアントからデータに対してアクセスしたときの処理について説明する。
図１８は、実施の形態に係るデータアクセス処理のフローチャートである。
ステップＳ１７０１において、リクエスト受付部２０１は、クライアント１０４からデータアクセスリクエストを受信する。データアクセスリクエストには、クライアント１０４が求めるデータ項目などの情報が含まれている。
【０１１８】
ステップＳ１７０２において、リクエスト処理部２０５は、列対応表４０５を参照して、アクセス先データベース装置を決定する。例えば、顧客ＩＤの情報がリクエストされた場合、顧客ＩＤを格納しているデータベース装置Ａがアクセス先データベース装置となる。
【０１１９】
ステップＳ１７０３において、リクエスト処理部２０５は、列対応表４０５を参照して、アクセス先データベース装置が保持するデータ内容に合わせてリクエストを修正する。例えば、データベース装置Ａに顧客ＩＤをリクエストする場合、列対応表４０５を参照すると、データベース装置Ａにおいて、顧客ＩＤは列名Ｂに変更されている。したがって、リクエスト処理部２０５は、列名Ｂのデータを要求するようにリクエストを修正する。
【０１２０】
ステップＳ１７０４において、リクエスト処理部２０５は、アクセス先データベース装置に修正したリクエストを送信する。アクセス先データベース装置は、受信したリクエストに応じたデータをリクエスト結果として、DB proxy装置１０２に送信する。リクエスト処理部２０５は、リクエスト結果を受信する。
例えば、列名Ｂのデータをリクエストされた場合は、アクセス先データベース装置は、列名Ｂのデータと対応するユニークキーをDB proxy装置１０２に送信する。
【０１２１】
ステップＳ１７０５において、利用するすべてのデータベース装置１０３にリクエストを送信したか判定する。利用するすべてのデータベース装置１０３にリクエストを送信した場合、制御はステップＳ１７０６へ進み、送信していない場合、制御はステップＳ１７０３へ戻る。
【０１２２】
ステップＳ１７０６において、リクエスト処理部は２０５、取得したデータを集約し、リクエスト受付部２０１に渡す。リクエスト受付部２０１は、受け取ったデータをクライアント１０４に送信する。
【０１２３】
例えば、上述のように各データベース装置１０３において、格納されているデータの行は元の登録データに対してシャッフルされて格納されている。したがって、データ間の対応が適切になるように複数のデータを組み合わせる必要がある。
【０１２４】
例えば、リクエスト処理部２０５は、データベース装置Ａ、Ｂ、およびＣからそれぞれデータを受け取った場合、行対応表４０６を参照して、データベース装置Ａから受け取ったデータのうちXYZに対応する行のデータ、データベース装置Ｂから受け取ったデータのうち324に対応する行のデータ、およびデータベース装置Ｃから受け取ったデータのうちw4tに対応する行のデータを対応付けてクライアント１０４に送信するデータとする。以下、同様にAFGに対応する行のデータ、67に対応する行のデータ、およびr5rtyに対応する行のデータが対応付けられ、また、FRGに対応する行のデータ、234に対応する行のデータ、およびasdfに対応する行のデータが対応付けられ、クライアント１０４に送信するデータとなる。
【０１２５】
実施の形態のデータベースシステムによれば、組み合わせると意味を成すデータが同一のデータベース装置に配置されないように指定された制約条件（MUTEX）を用いて、データの配置を決定している。それにより、同じデータベース装置には、組み合わせると意味を成すデータが配置されなくなる。したがって、１つのデータベース装置からデータが漏洩しても、該データだけでは意味を成さないので、セキュリティが向上する。
【０１２６】
また、実施の形態のデータベースシステムによれば、テーブルの列名を変更しているため、データを見ても何のデータであるか判別不明なので、セキュリティが向上する。
また、実施の形態のデータベースシステムによれば、各テーブルの行をシャッフルしているため、複数のデータベース装置からデータが漏洩しても、データ間の組み合わせが分からないので、セキュリティが向上する。
【０１２７】
また、実施の形態のデータベースシステムによれば、高セキュリティのデータベース装置ではなく、任意のデータベース装置を用いることが出来るので、コストを低くすることが出来る。
【０１２８】
また、実施の形態のデータベースシステムによれば、各データベース装置の特性や配置ポリシーに基づいて、データの配置を決定している。これにより、低コストや高性能などのユーザの希望に沿ったデータベースシステムを構築できる。
また、実施の形態のデータベースシステムによれば、データの統計情報を用いて、データの配置を動的に変更することが可能となる。
【０１２９】
図１９は、情報処理装置（コンピュータ）の構成図である。
実施の形態のDB proxy１０２およびデータベース装置１０３は、例えば、図１９に示すような情報処理装置１によって実現される。
情報処理装置１は、CPU２、メモリ３、入力部４、出力部５、記憶部６、記録媒体駆動部７、およびネットワーク接続部８を備え、それらはバス９により互いに接続されている。
【０１３０】
CPU２は、情報処理装置１全体を制御する中央処理装置である。CPU２は、リクエスト受付部２０１、データ配置決定部２０２、統計情報収集部２０３、データ再配置計画部２０４、リクエスト処理部２０５、情報収集部３０１、およびリクエスト処理部３０２に対応する。
【０１３１】
メモリ３は、プログラム実行の際に、記憶部６（あるいは可搬記録媒体１０）に記憶されているプログラムあるいはデータを一時的に格納するRead Only Memory(ROM)やRandom Access Memory(RAM)等のメモリである。CPU２は、メモリ３を利用してプログラムを実行することにより、上述した各種処理を実行する。
【０１３２】
この場合、可搬記録媒体１０等から読み出されたプログラムコード自体が実施の形態の機能を実現する。
入力部４は、例えば、キーボード、マウス、タッチパネル等である。
【０１３３】
出力部５は、例えば、ディスプレイ、プリンタ等である。
記憶部６は、例えば、磁気ディスク装置、光ディスク装置、テープ装置等である。情報処理装置１は、記憶部６に、上述のプログラムとデータを保存しておき、必要に応じて、それらをメモリ３に読み出して使用する。
【０１３４】
メモリ３または記憶部６は、記憶部２０６、３０３に対応する。
記録媒体駆動部７は、可搬記録媒体１０を駆動し、その記録内容にアクセスする。可搬記録媒体としては、メモリカード、フレキシブルディスク、Compact Disk Read Only Memory(CD-ROM)、光ディスク、光磁気ディスク等、任意のコンピュータ読み取り可能な記録媒体が用いられる。ユーザは、この可搬記録媒体１０に上述のプログラムとデータを格納しておき、必要に応じて、それらをメモリ３に読み出して使用する。
【０１３５】
ネットワーク接続部８は、LAN等の任意の通信ネットワークに接続され、通信に伴うデータ変換を行う。
【符号の説明】
【０１３６】
１０１    データベースシステム
１０２    DB Proxy
１０３    データベース装置
１０４    クライアント
１０５    ネットワーク
２０１    リクエスト受付部
２０２    データ配置決定部
２０３    統計情報収集部
２０４    データ再配置計画部
２０５    リクエスト処理部
２０６    記憶部
３０１    情報収集部
３０２    リクエスト処理部
３０３    記憶部
４０１    データベース装置特性情報
４０２    データ配置ポリシー
４０３    スキーマ
４０４    登録データ
４０５    列名対応表
４０６    行対応表
４０７〜４１２    データテーブル
４１３    統計情報
【図２】
0005625634.tif 000002
【図３】
0005625634.tif 000003
【図４】
0005625634.tif 000004
【図５】
0005625634.tif 000005
【図６】
0005625634.tif 000006
【図７】
0005625634.tif 000007
【図８】
0005625634.tif 000008
【図９Ａ】
0005625634.tif 000009
【図９Ｂ】
0005625634.tif 000010
【図９Ｃ】
0005625634.tif 000011
【図９Ｄ】
0005625634.tif 000012
【図９Ｅ】
0005625634.tif 000013
【図９Ｆ】
0005625634.tif 000014
【図１０Ａ】
0005625634.tif 000015
【図１０Ｂ】
0005625634.tif 000016
【図１０Ｃ】
0005625634.tif 000017
【図１１】
0005625634.tif 000018
【図１２】
0005625634.tif 000019
【図１３】
0005625634.tif 000020
【図１４】
0005625634.tif 000021
【図１５】
0005625634.tif 000022
【図１６】
0005625634.tif 000023
【図１７】
0005625634.tif 000024
【図１８】
0005625634.tif 000025
【図１９】
0005625634.tif 000026
【図１】
0005625634.tif 000027