(57)【要約】【課題】複数の装置に分散して管理されるデータ群の操作に関する装置間の通信量を削減すること。【解決手段】データ処理プログラムは、データ群を分散して記憶する複数のデータ記憶装置のそれぞれに、前記データ群を構成する各データの記憶先のデータ記憶装置を示す情報を、前記各データ記憶装置の記憶部に分散して記憶し、当該データ記憶装置が記憶するデータのうち、当該データの記憶先のデータ記憶装置を示す情報が、当該データ記憶装置の前記記憶部に記憶されないデータについて、記憶先が当該データ記憶装置であることを示す情報を前記記憶部に記憶し、当該データ記憶装置が記憶する第一のデータに関連して操作対象とされる第二のデータの記憶先を、当該データ記憶装置の前記記憶部を参照して特定する、処理を実行させる。【選択図】図５
2015072629.tif 000002
【特許請求の範囲】
【請求項１】
データ群を分散して記憶する複数のデータ記憶装置のそれぞれに、
前記データ群を構成する各データの記憶先のデータ記憶装置を示す情報を、前記各データ記憶装置の記憶部に分散して記憶し、
当該データ記憶装置が記憶するデータのうち、当該データの記憶先のデータ記憶装置を示す情報が、当該データ記憶装置の前記記憶部に記憶されないデータについて、記憶先が当該データ記憶装置であることを示す情報を前記記憶部に記憶し、
当該データ記憶装置が記憶する第一のデータに関連して操作対象とされる第二のデータの記憶先を、当該データ記憶装置の前記記憶部を参照して特定する、
処理を実行させるデータ処理プログラム。
【請求項２】
前記データ群を構成する各データの記憶先のデータ記憶装置を示す情報は、所定の規則に基づいて分散され、
前記第二のデータの記憶先が、当該データ記憶装置の記憶部を参照して特定されない場合に、前記所定の規則に基づいて特定されるデータ記憶装置に対して、前記第二のデータの記憶先を問い合わせる処理を前記データ記憶装置に実行させる請求項１記載のデータ処理プログラム。
【請求項３】
他のデータ記憶装置から、当該データ記憶装置が記憶するデータに関連して操作されるデータを受信し、
受信されたデータを当該データ記憶装置に記憶し、
前記受信されたデータの記憶先が当該データ記憶装置であることを示す情報を、当該データ記憶装置の記憶部に記憶する、
処理を前記データ記憶装置に実行させる請求項１又は２記載のデータ処理プログラム。
【請求項４】
データ群を分散して記憶する複数のデータ記憶装置のそれぞれが、
前記データ群を構成する各データの記憶先のデータ記憶装置を示す情報を、前記各データ記憶装置の記憶部に分散して記憶し、
当該データ記憶装置が記憶するデータのうち、当該データの記憶先のデータ記憶装置を示す情報が、当該データ記憶装置の記憶部に記憶されないデータについて、記憶先が当該データ記憶装置であることを示す情報を前記記憶部に記憶し、
当該データ記憶装置が記憶する第一のデータに関連して操作対象とされる第二のデータの記憶先を、当該データ記憶装置の記憶部を参照して特定する、
処理を実行することを特徴とするデータ処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理プログラム及びデータ処理方法に関する。
【背景技術】
【０００２】
従来、データ群の管理形態として、データ群を構成する各データを、所定の分散規則に基づいて複数のノードに分散する形態が有る。
【０００３】
図１は、分散管理の対象とされるデータ群の一例を示す図である。図１では、テーブルＴａ及びテーブルＴｂが示されている。テーブルＴａは、項目Ａ等を含み、テーブルＴｂは、項目Ｂ及び項目Ｘ等を含む。各テーブルには、複数のレコードが登録されている。ここでは、テーブルＴａ及びテーブルＴｂのそれぞれのレコード群が、複数のノードに分散されて管理されるデータ群に相当する。
【０００４】
図２は、各テーブルの各レコードが複数のノードに分散された例を示す図である。図２では、テーブルＴａ及びテーブルＴｂのそれぞれのレコード群が、ノードＮ１からノードＮ６の６つのノードに分散された例が示されている。例えば、テーブルＴａのレコードは、項目Ａの値のハッシュ値に基づいて、ノードＮ１からノードＮ６に分散される。換言すれば、テーブルＴａは、テーブルＴａ１からテーブルＴａ６に分割され、分割後の各テーブルは、相互に異なるノードにおいて管理される。また、テーブルＴｂのレコードは、項目Ｂの値のハッシュ値に基づいて、ノードＮ１からノードＮ６に分散される。換言すれば、テーブルＴｂは、テーブルＴｂ１からテーブルＴｂ６に分割され、分割後の各テーブルは、相互に異なるノードにおいて管理される。
【０００５】
図２に示される状態において、テーブルＴａ及びテーブルＴｂに跨って、所定の操作の実行が要求された場合を考える。例えば、項目Ａの値と項目Ｘの値との共通性に基づいて、テーブルＴａとテーブルＴｂとの結合（ｊｏｉｎ）が要求されたとする。この場合、項目Ａの値は、レコードの分散に関与しているが、項目Ｘの値は、レコードの分散に関与していない。すなわち、テーブルＴａ及びテーブルＴｂのそれぞれのレコードの分散において、項目Ａと項目Ｘとの共通性は、考慮されていない。したがって、結合のためのノード間の通信量は、総データ量に対して｛（ノード数−１）÷ノード数｝となる。図２の例では、ノード数は、６であるため、総データ量に対して｛（６−１）÷６｝となる。なお、｛（ノード数−１）÷ノード数｝は、各ノードにおける、総データ量に対するデータ量でもある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１１−２１６０２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上記した通信量を削減するために、結合されたレコード同士が同一のノードに記憶されるように、レコードを移動することが考えられる。
【０００８】
しかしながら、レコードの移動が行われると、レコードの分散規則が崩れてしまう。したがって、当該分散規則に基づいて、レコードの管理先のノードを特定することが困難となる。そうすると、或るノードにおいて、当該ノードが管理するレコードに関連して操作される（例えば、当該レコードの結合相手となる）レコードの管理先のノードを特定するために、当該ノードは、他の各ノードに対し、当該レコードの所在を問い合わせる必要が生じる。その結果、問い合わせのための通信量が増加してしまうという問題が有る。
【０００９】
そこで、一側面では、複数の装置に分散して管理されるデータ群の操作に関する装置間の通信量を削減することを目的とする。
【課題を解決するための手段】
【００１０】
一つの案では、データ処理プログラムは、データ群を分散して記憶する複数のデータ記憶装置のそれぞれに、前記データ群を構成する各データの記憶先のデータ記憶装置を示す情報を、前記各データ記憶装置の記憶部に分散して記憶し、当該データ記憶装置が記憶するデータのうち、当該データの記憶先のデータ記憶装置を示す情報が、当該データ記憶装置の前記記憶部に記憶されないデータについて、記憶先が当該データ記憶装置であることを示す情報を前記記憶部に記憶し、当該データ記憶装置が記憶する第一のデータに関連して操作対象とされる第二のデータの記憶先を、当該データ記憶装置の前記記憶部を参照して特定する、処理を実行させる。
【発明の効果】
【００１１】
一態様によれば、複数の装置に分散して管理されるデータ群の操作に関する装置間の通信量を削減することができる。
【図面の簡単な説明】
【００１２】
【図１】分散管理の対象とされるデータ群の一例を示す図である。
【図２】各テーブルの各レコードが複数のノードに分散された例を示す図である。
【図３】本発明の実施の形態におけるシステム構成例を示す図である。
【図４】本発明の実施の形態におけるデータ管理ノードのハードウェア構成例を示す図である。
【図５】本発明の実施の形態におけるデータ管理ノードの機能構成例を示す図である。
【図６】テーブルの結合要求に応じてデータ管理ノードが実行する処理手順の一例を説明するためのフローチャートである。
【図７】各データ管理ノードにおける管理先情報記憶部の記憶内容の一例を示す図である。
【図８】他ノードからのデータの登録要求の受信に応じてデータ管理ノードが実行する処理手順の一例を説明するためのフローチャートである。
【図９】レコードＲａ及びレコードＲｂと管理先情報との分散状態の変化例を示す図である。
【図１０】管理先情報の一括生成処理の処理手順の一例を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
以下、図面に基づいて本発明の実施の形態を説明する。図３は、本発明の実施の形態におけるシステム構成例を示す図である。図３において、データ管理システム１は、ＬＡＮ（Local Area Network）又はインターネット等のネットワークを介して、１以上のクライアント装置３０と通信可能に接続されている。当該ネットワークは、無線区間を含んでいてもよい。
【００１４】
クライアント装置３０は、例えば、ＰＣ（Personal Computer）、スマートフォン、タブレット型端末、又は携帯電話等である。クライアント装置３０は、ユーザからデータの操作要求を受け付け、当該操作要求をデータ管理システム１に送信する。クライアント装置３０は、当該操作要求に応じた操作結果がデータ管理システム１から返信されると当該操作結果を表示する。なお、クライアント装置３０は、Ｗｅｂサーバ等、ユーザが直接操作する端末からデータの操作要求を受信するコンピュータであってもよい。データの操作の一例として、データの検索（参照）又は更新（書き込み）等が有る。データの検索には、データが登録されているテーブルに関する、選択（ｓｅｌｅｃｔｉｏｎ）、射影（ｐｒｏｊｅｃｔｉｏｎ）、又は結合（ｊｏｉｎ）等が含まれてもよい。
【００１５】
データ管理システム１は、操作対象とされるデータを管理する複数のコンピュータを含むコンピュータシステムである。図３において、データ管理システム１は、中継装置２０、及びデータ管理ノードＮ１〜Ｎ６等を含む。なお、以下において、データ管理ノードＮ１〜Ｎ６のそれぞれを区別しない場合、「データ管理ノードＮ」という。データ管理ノードＮの数（ノード数）は、６未満であってもよいし、７以上であってもよい。
【００１６】
中継装置２０は、クライアント装置３０からデータの操作要求を受信し、当該操作要求に応じた処理を、各データ管理ノードＮに実行させる。中継装置２０は、また、各データ管理ノードＮによる処理結果を必要に応じて統合して、クライアント装置３０に返信する。なお、中継装置２０は、データ管理ノードＮの一つであってもよい。
【００１７】
各データ管理ノードＮは、データ群を分散して管理するコンピュータである。本実施の形態では、図１に示したテーブルＴａのレコード群及びテーブルＴｂのレコード群が、分散管理されるデータであるとする。具体的には、テーブルＴａのレコード群及びテーブルＴｂのレコード群は、図２に示されるように、ノードＮ１〜Ｎ６に分散されて管理される。レコード群の分散は、所定の分散規則に基づいて行われる。例えば、テーブルＴａのレコード（以下、「レコードＲａ」という。）については、項目Ａの値のハッシュ値に基づいて、管理先（記憶先）のデータ管理ノードＮが決定される。テーブルＴｂのレコード（以下、「レコードＲｂ」という。）については、項目Ｂの値のハッシュ値に基づいて、管理先のデータ管理ノードＮが決定される。但し、他の分散規則に基づいて、各レコードの分散が行われても良い。なお、分散規則とは、レコードの管理先を決定するための規則をいう。したがって、分散規則によって、レコードの管理先を特定することができる。例えば、或レコードＲａの項目Ａのハッシュ値に基づいて、当該レコードＲａの管理先のデータ管理ノードＮを特定することができる。また、本実施の形態において、データ管理ノードＮによるデータの「管理」には、データの「記憶」という意味も含まれる。但し、実際にデータを記憶する記憶装置は、データ管理ノードＮの外部装置であってもよい。
【００１８】
図４は、本発明の実施の形態におけるデータ管理ノードのハードウェア構成例を示す図である。図４のデータ管理ノードＮは、それぞれバスＢで相互に接続されているドライブ装置１００、補助記憶装置１０２、メモリ装置１０３、ＣＰＵ１０４、及びインタフェース装置１０５等を有する。
【００１９】
データ管理ノードＮでの処理を実現するプログラム（データ処理プログラム）は、記録媒体１０１によって提供される。プログラムを記録した記録媒体１０１がドライブ装置１００にセットされると、プログラムが記録媒体１０１からドライブ装置１００を介して補助記憶装置１０２にインストールされる。但し、プログラムのインストールは必ずしも記録媒体１０１より行う必要はなく、ネットワークを介して他のコンピュータよりダウンロードするようにしてもよい。補助記憶装置１０２は、インストールされたプログラムを格納すると共に、必要なファイルやデータ等を格納する。
【００２０】
メモリ装置１０３は、プログラムの起動指示があった場合に、補助記憶装置１０２からプログラムを読み出して格納する。ＣＰＵ１０４は、メモリ装置１０３に格納されたプログラムに従ってデータ管理ノードＮに係る機能を実行する。インタフェース装置１０５は、ネットワークに接続するためのインタフェースとして用いられる。
【００２１】
なお、記録媒体１０１の一例としては、ＣＤ−ＲＯＭ、ＤＶＤディスク、又はＵＳＢメモリ等の可搬型の記録媒体が挙げられる。また、補助記憶装置１０２の一例としては、ＨＤＤ（Hard Disk Drive）又はフラッシュメモリ等が挙げられる。記録媒体１０１及び補助記憶装置１０２のいずれについても、コンピュータ読み取り可能な記録媒体に相当する。
【００２２】
なお、中継装置２０も、例えば、図４に示される構成と同様のハードウェア構成を有する。
【００２３】
図５は、本発明の実施の形態におけるデータ管理ノードの機能構成例を示す図である。図５において、データ管理ノードＮは、要求受信部１１、管理先特定部１２、データ操作部１３、管理先情報更新部１４、応答返信部１５、データ移動部１６、及びデータ登録部１７等を有する。これら各部は、データ管理ノードＮにインストールされたプログラムが、ＣＰＵ１０４に実行させる処理により実現される。データ管理ノードＮは、また、データ記憶部１１１及び管理先情報記憶部１１２等を利用する。データ記憶部１１１及び管理先情報記憶部１１２は、補助記憶装置１０２、又はデータ管理ノードＮにネットワークを介して接続される記憶装置等を用いて実現可能である。
【００２４】
データ記憶部１１１は、テーブルＴａ及びテーブルＴｂを記憶する。すなわち、データ記憶部１１１は、管理対象又は操作対象とされるデータを記憶する。管理先情報記憶部１１２は、レコードＲａ及びレコードＲｂごとに、各レコードの管理先のデータ管理ノードＮを示す情報（以下「管理先情報」という。）を記憶する。本実施の形態において、レコードＲａ及びレコードＲｂは、最初の登録時には、項目Ａのハッシュ値又は項目Ｂのハッシュ値に基づいて、管理先のデータ管理ノードＮが決まる。しかし、後述されるように、データ管理システム１に対するデータの操作要求に応じて、レコードＲｂの配置位置（管理先）は変化する可能性が有る。したがって、レコードＲｂの配置位置に関して、分散規則に基づいて特定可能であるという保証は無い。そうすると、或るレコードＲｂの配置位置を特定するためには、全てのデータ管理ノードＮに対して問い合わせを行う必要が発生し、通信量の増加が予想される。そこで、本実施の形態では、管理先情報記憶部１１２が設けられているのである。すなわち、管理先情報記憶部１１２が記憶する情報によって、レコードＲａ又はレコードＲｂの管理先のノード（以下、「管理先ノード」という。）を特定するための通信量の増加を抑制することができる。
【００２５】
要求受信部１１は、中継装置２０からデータの操作要求を受信する。管理先特定部１２は、操作対象とされるデータの管理先ノードを特定する。データ操作部１３は、レコードＲａ及びレコードＲｂに関して、要求された操作を実行する。管理先情報更新部１４は、データの操作に応じて、レコードＲｂの配置位置が変更された場合等に、管理先情報を更新する。応答返信部１５は、要求受信部１１によって受信されたデータの操作要求に対する応答を返信する。
【００２６】
データ移動部１６は、データの操作要求に応じた処理において操作対象とされるレコードＲｂを、当該レコードＲｂに関連して操作されるレコードＲａが配置されているデータ管理ノードＮへ移動する。レコードＲｂの移動は、レコードＲｂの配置位置（管理先ノード）が変化することを意味する。データ登録部１７は、他ノードのデータ移動部１６から送信されたレコードＲｂを、自ノードのデータ記憶部１１１におけるテーブルＴｂに登録する。
【００２７】
以下、データ管理ノードＮが実行する処理手順について説明する。図６は、テーブルの結合要求に応じてデータ管理ノードが実行する処理手順の一例を説明するためのフローチャートである。
【００２８】
ステップＳ１０１において、要求受信部１１は、中継装置２０からデータの操作要求を受信する。ここでは、テーブルＴａの項目Ａの値とテーブルＴｂの項目Ｘの値との共通性に基づいて、テーブルＴａとテーブルＴｂとを結合する操作が要求されたこととする。以下、テーブルＴａとテーブルＴｂとを結合する操作の要求を、単に「結合要求」という。なお、中継装置２０から受信される操作要求は、中継装置２０が、クライアント装置３０から受信したものであってもよいし、クライアント装置３０からの要求に応じた応答を作成するために、中継装置２０によって生成されたものであってもよい。いずれの場合であっても、結合要求は、各データ管理ノードＮに配信される。したがって、図６の処理は、各データ管理ノードＮによって並列的に実行される。但し、図６では、便宜上、一つのデータ管理ノードＮに注目して説明する。注目対象となるデータ管理ノードＮは、「自ノード」と呼ばれる。なお、各データ管理ノードＮへの結合要求の配信は、中継装置２０によって、例えば、ブロードキャスト等を用いて行いて実現されてもよいし、データ管理ノードＮ間において連鎖的に伝達されることにより実現されてもよい。
【００２９】
続いて、管理先特定部１２は、結合対象の一方のテーブルである、自ノードのテーブルＴｂからレコードＲｂを読み出す（Ｓ１０２）。なお、ステップＳ１０２以降は、自ノードのテーブルＴｂの各レコードＲｂについて、直列的に実行されてもよいし、並列的に実行されてもよい。ここでは、便宜上、直列的に実行されることとし、読み出されたレコードＲｂを、「対象レコードＲｂ」という。したがって、ステップＳ１０２以降は、自ノードに記憶されているレコードＲｂの数だけ繰り返される。
【００３０】
続いて、管理先特定部１２は、自ノードの管理先情報記憶部１１２を参照して、対象レコードＲｂの項目Ｘの値を項目Ａの値とするレコードＲａ（以下、「対象レコードＲａ」という。）の管理先ノードを特定する（Ｓ１０３）。
【００３１】
図７は、各データ管理ノードにおける管理先情報記憶部の記憶内容の一例を示す図である。図７には、データ管理ノードＮ１〜Ｎ６のそれぞれにおける管理先情報記憶部１１２の記憶内容の一例が示されている。なお、各データ管理ノードＮの管理先情報記憶部１１２の参照番号には、各データ管理ノードＮを識別する枝番（１〜６）が付されている。
【００３２】
図７に示されるように、管理先情報記憶部１１２は、各レコードＲａ又は各レコードＲｂを管理するデータ管理ノードＮを示す情報（管理先情報）を記憶する。具体的には、管理先情報記憶部１１２は、レコードＲａ又はレコードＲｂのキーに対応付けて、当該レコードの管理先ノードの識別情報（以下、「ノード番号」という。）を記憶する。また、各データ管理ノードＮにおける管理先情報記憶部１１２は、管理先情報を所定の分散規則に基づいて分散して記憶する。すなわち、データ管理ノードＮ１〜Ｎ６のそれぞれにおける管理先情報記憶部１１２の記憶内容を統合することで、全てのレコードＲａ及びレコードＲｂに関する管理先情報が得られる。管理先情報は、例えば、各データ管理ノードＮへのデータ（レコードＲａ又はレコードＲｂ）の配置後又は配置と同時に生成される。データの配置前では、各データの管理先ノードが未定であるため、管理先情報を生成できないからである。データ管理システム１の運用開始の当初において、管理先情報の配置先は、例えば、各管理先情報のキーの値に基づいて決定される。したがって、或るレコードＲａ又はレコードＲｂに対する管理先情報が記憶されているデータ管理ノードＮは、レコードＲａ又はレコードＲｂのキーに基づいて特定することができる。但し、他の分散規則に従って、管理先情報が分散されてもよい。
【００３３】
なお、本実施の形態において、レコードＲａのキーとは、当該レコードＲａの項目Ａの値のハッシュ値である。レコードＲｂのキーとは、当該レコードＲｂの項目Ｂの値のハッシュ値である。また、本実施の形態において、レコードＲａのキーは、便宜上、「Ａ．＜項目Ａの値＞」によって表現される。「．」の前の「Ａ」は、テーブルＴａの識別子である。また、レコードＲｂのキーは、便宜上、「Ｂ．＜項目Ｘの値＞」によって表現される。「．」の前の「Ｂ」は、テーブルＴｂの識別子である。
【００３４】
ステップＳ１０３では、自ノードの管理先情報記憶部１１２に、対象レコードＲａのキーを含む管理先情報が記憶されていれば（Ｓ１０４でＹｅｓ）、当該管理先情報に含まれているノード番号に基づいて、管理先ノードが特定される。ここで、対象レコードＲａのキーは、対象レコードＲｂの項目Ｘの値のハッシュ値によって求められる。
【００３５】
一方、自ノードの管理先情報記憶部１１２に、対象レコードＲａのキーを含む管理先情報が記憶されていない場合（Ｓ１０４でＮｏ）、自ノードの管理先特定部１２は、対象レコードＲａのキーに基づいて特定されるデータ管理ノードＮ（以下、以下、図６の説明において「他ノード」という。）に対して、管理先ノードを問い合わせる（Ｓ１０５）。具体的には、自ノードの管理先特定部１２は、他ノードの管理先特定部１２に対して、対象レコードＲａのキーを指定して、管理先ノードの特定要求を送信する。すなわち、管理先情報は、レコードＲａ又はレコードＲｂのキーに基づいて分散されているため、対象レコードＲａのキーに基づいて特定される他ノードの管理先情報記憶部１１２には、対象レコードＲａに関する管理先ノードが記憶されているからである。他ノードの管理先特定部１２は、当該他ノードの管理先情報記憶部１１２において、対象レコードＲａのキーに対応付いているノード番号を取得し、当該ノード番号を返信する。
【００３６】
続いて、自ノードのデータ操作部１３は、管理先ノードが自ノードであるか否かを判定する（Ｓ１０６）。具体的には、ステップＳ１０３又はＳ１０５において特定されたノード番号が、自ノードを示すノード番号であるか否かが判定される。
【００３７】
管理先ノードが自ノードである場合（Ｓ１０６でＹｅｓ）、自ノードのデータ操作部１３は、自ノードのデータ記憶部１１１に記憶されているテーブルＴａから、対象レコードＲａを取得する（Ｓ１０７）。続いて、自ノードの応答返信部１５は、対象レコードＲａと対象レコードＲｂとの結合結果を、中継装置２０に返信する（Ｓ１０８）。
【００３８】
一方、管理先ノードが自ノードでない場合（Ｓ１０６でＮｏ）、自ノードのデータ移動部１６は、管理先ノードに対して、対象レコードＲｂを送信して、対象レコードＲｂの登録を管理先ノードに要求する（Ｓ１０７）。当該要求に応じ、管理先ノードは、対象レコードＲｂを、管理先ノードのデータ記憶部１１１のテーブルＴｂに登録する。なお、当該要求に応じて管理先ノードにおいて実行される処理手順の詳細については、後述される。
【００３９】
管理先ノードにおいて、正常に登録が行われると、自ノードのデータ移動部１６は、テーブルＴｂから、対象レコードＲｂを削除する（Ｓ１１０）。続いて、自ノードの管理先情報更新部１４は、自ノードの管理先情報記憶部１１２における、対象レコードＲｂの管理先情報を更新する（Ｓ１１１）。具体的には、当該管理先情報のノード番号が、対象レコードＲｂの移動先のデータ管理ノードＮのノード番号によって上書きされる。
【００４０】
このように、本実施の形態では、結合されたレコードＲａとレコードＲｂとは、同じデータ管理ノードＮに記憶される。すなわち、結合されたレコードＲａとレコードＲｂとの配置位置について、局所性が確保される。その結果、次回以降において、テーブルＴａとテーブルＴｂとの結合が要求された場合、ステップＳ１０９における通信頻度を低下させることができる。通信頻度が低下する結果、応答性の向上も期待することができる。
【００４１】
なお、結合されたレコードＲａとレコードＲｂとの配置位置について、局所性を確保するためのロジックには、公知の各種のロジックが用いられてもよい。例えば、同じ結合要求が所定回数以上行われた場合に、局所性の確保（レコードＲｂの移動）が行われるようにしてもよい。
【００４２】
続いて、ステップＳ１０９において対象レコードＲｂの送信先とされたデータ管理ノードＮが実行する処理手順について説明する。
【００４３】
図８は、他ノードからのデータの登録要求の受信に応じてデータ管理ノードが実行する処理手順の一例を説明するためのフローチャートである。図８では、図６の説明との連続性を考慮して、図８における説明と図６における説明との同一対象に対して、図６と同一の用語が用いられる。例えば、図８の処理を実行するデータ管理ノードＮは、「管理先ノード」と呼ばれる。但し、図８の説明において「他ノード」は、図６の説明における「自ノード」に相当する。
【００４４】
ステップＳ２０１において、管理先ノードのデータ登録部１７は、他ノードから送信された対象レコードＲｂを受信する。続いて、管理先ノードのデータ登録部１７は、対象レコードＲｂを、管理先ノードのテーブルＴｂに記憶（登録）する（Ｓ２０２）。続いて、管理先ノードの管理先情報更新部１４は、対象レコードＲａに関する管理先情報を更新する（Ｓ２０３）。具体的には、対象レコードＲａのキー（すなわち、対象レコードＲｂの項目Ｘの値のハッシュ値）に対応付けられて、管理先ノードのノード番号が、管理先ノードの管理先情報記憶部１１２に記憶される。但し、既に、対象レコードＲａのキーを含む管理先情報が、管理先ノードの管理先情報に記憶されている場合は、当該管理先情報のノード番号が、管理先ノードのノード番号によって上書きされる。
【００４５】
続いて、管理ノードにおいて、対象レコードＲｂに関して、図６のステップＳ１０３以降の処理が実行される（Ｓ２０４）。その結果、対象レコードＲｂと、対象レコードＲｂの項目Ｘの値を項目Ａの値とするレコードＲａとの結合結果が、中継装置２０に返信される。
【００４６】
このように、対象レコードＲｂの新たな管理先のデータ管理ノードＮにおいては、対象レコードＲｂとの結合相手である対象レコードＲａについて、管理先ノードが当該データ管理ノードＮであることを示す管理先情報が、管理先情報記憶部１１２に記憶される。その結果、当該管理先情報が自ノードにおいて管理されていない場合に必要となる、図６のステップＳ１０５の通信頻度を低下させることができる。
【００４７】
図６及び図８の処理が実行されることにより、当初、図２のように分散されていたレコードＲａ群及びレコードＲｂ群と、当初図７のように分散されていた管理先情報との分散状態は、例えば、図９に示されるように変化する。
【００４８】
図９は、レコードＲａ及びレコードＲｂと管理先情報との分散状態の変化例を示す図である。図９では、各データ管理ノードＮのテーブルＴｂの内容が、図２に対して変化している。これは、レコードＲｂが、結合相手のレコードＲａの管理ノードに移動したためである。また、各データ管理ノードＮの、管理先情報記憶部１１２の記憶内容も変化している。例えば、各データ管理ノードＮの、管理先情報記憶部１１２には、自ノードにおいて管理されているレコードＲａに関する管理先情報が追加されている。
【００４９】
なお、図９は、便宜上、テーブルＴａとテーブルＴｂとの結合が行われた結果の分散状態を完全に示すものではない。
【００５０】
ところで、管理先情報記憶部１１２が記憶する管理先情報は、例えば、関連性を有するレコードＲａとレコードＲｂとの配置について局所性が確保された後に、一括生成されてもよい。具体的には、図９において、管理先情報が無い状態が形成された後に、管理先情報が生成されてもよい。なお、局所性の確保のためのロジックは、所定のものに限定されない。
【００５１】
この場合、各データ管理ノードＮの管理先情報更新部１４は、例えば、図１０に示される処理を実行する。図１０は、管理先情報の一括生成処理の処理手順の一例を説明するためのフローチャートである。
【００５２】
ステップＳ３０１において、各データ管理ノードＮの管理先情報更新部１４は、所定の分散規則に基づいて分散された結果、自ノードに割り当てられた管理先情報を、自ノードの管理先情報記憶部１１２に記憶する。例えば、管理先情報のキーの値に基づいて、当該管理先情報を記憶するデータ管理ノードＮが決定される。なお、管理先情報の分散は、中継装置２０によって一元的に行われてもよい。各データ管理ノードＮは、中継装置２０によって分散され、自ノードの割り当てられた管理先情報を、中継装置２０から受信してもよい。また、図１０の処理が実行されない場合、すなわち、管理先情報の一括生成が行われない場合であっても、ステップＳ３０１は、例えば、各データ管理ノードＮへのデータ（レコードＲａ又はレコードＲｂ）の配置後又は配置と同時に実行される。
【００５３】
続いて、各データ管理ノードＮの管理先情報更新部１４は、自ノードのテーブルＴａに記憶されている全てのレコードＲａを読み出（Ｓ３０２）す。続いて、管理先情報更新部１４は、当該レコードＲａのキーを含む管理先情報が、自ノードの管理先情報記憶部１１２に記憶されていないレコードＲａを、読み出されたレコードＲａの中から抽出する（Ｓ３０３）。続いて、管理先情報更新部１４は、抽出された各レコードＲａのキーに、自ノードのノード番号が対応付けられた管理先情報を、自ノードの管理先情報に記憶する（Ｓ３０４）。
【００５４】
以上の処理によっても、各データ管理ノードＮには、例えば、図９に示されるような管理先情報が記憶される。
【００５５】
続いて、図６及び図８において説明した処理に、図９の状態を当てはめて説明する。
【００５６】
テーブルＴａとテーブルＴｂとの結合要求に応じて、各データ管理ノードＮは、自ノードの管理先情報記憶部１１２を参照して、自ノードのレコードＲｂに結合されるレコードＲａの管理ノードを特定する。図９の例では、ノードＮ６のテーブルＴｂ６における、項目Ｘの値が「ａ４」であり、項目Ｂの値が「ｂ４」であるレコードＲｂ（以下、「レコードＲｂ（ｂ４）」という。）と、ノードＮ５のテーブルＴｂ５における、項目Ｘの値が「ａ１０」であり、項目Ｂの値が「ｂ６」であるレコードＲｂ（以下、「レコードＲｂ（ｂ６）という。」とを除くレコードＲｂについては、自ノードの管理先情報に基づいて、管理先ノードが自ノードであることが特定される。すなわち、ノードＮ５において、「Ａ．ａ１０」をキーとする管理先情報のノード番号は、ノードＮ６を示す値である。また、ノードＮ６には、「Ａ．ａ４」をキーとする管理先情報は無い。したがって、レコードＲｂ（ｂ４）及びレコードＲｂ（ｂ６）以外のレコードＲｂの結合については、各データ管理ノードＮは、他ノードと通信を行うことなく実行することができる。なお、レコードＲｂ（ｂ４）及びレコードＲｂ（ｂ６）のようなレコードは、例えば、テーブルＴａとテーブルＴｂとの結合の実行後に、新たなレコードＲｂがテーブルＴｂに追加されたり、テーブルＴａとテーブルＴｂとの結合以外の操作によってレコードが移動されたりすることにより発生する。
【００５７】
この場合、１２個のレコードＲｂ中、１０個のレコードＲｂの結合が、自ノード内で完結する。したがって、通信量は、総データ量の２／１２≒０．２６６である。この値は、｛（ノード数−１）÷ノード数｝＝５÷６＝０．８３３３より十分小さくなる。したがって、管理先情報を更新するための通信を考慮したとしても、通信量の削減が図られたと考えられる。
【００５８】
レコードＲｂ（ｂ４）については、ノードＮ６の管理先情報では、管理先ノードを特定できないため、レコードＲｂ（ｂ４）の項目Ｘの値である「ａ４」のハッシュ値に基づいて、ノードＮ５が、管理先情報を有していることが特定される。
【００５９】
そこで、ノードＮ６は、ノードＮ５に対し、「Ａ．ａ４」の管理先ノードを問い合わせる。この問い合わせのための通信を、以下「通信１」という。
【００６０】
ノードＮ５は、「Ａ．ａ４」の管理ノードがノードＮ５であることを示す応答を、ノードＮ６に返信する。この返信のための通信を、以下「通信２」という。
【００６１】
ノードＮ６は、レコードＲｂ（ｂ４）をノードＮ５に送信する。レコードＲｂ（ｂ４）の送信のための通信を、以下「通信３」という。ノードＮ５は、受信したレコードＲｂ（ｂ４）と、レコードＲｂ（ｂ４）の項目Ｘに値が一致する項目Ａを含むレコードＲａとを結合する。
【００６２】
一方、レコードＲｂ（ｂ６）については、結合相手のレコードＲａの管理先ノードが他ノード（この場合は、ノードＮ６）であることが通信することなく特定される。したがって、レコードＲｂ（ｂ６）については、通信１及び通信２は発生しない。
【００６３】
よって、結合時の通信量は、｛総データ量×（ノード数−１）／ノード数｝よりも小さくなる。
【００６４】
具体的には、本実施の形態による通信量は、以下の式（１）によって表される。
【００６５】
（１−α）×（Ｎ−１）／Ｎ×（通信１＋通信２）＋（１−α）×通信３  ・・・（１）
ここで、αは、関連するデータ（本実施の形態では、結合されるレコードの組）が局所化されている（同じノードに配置されている）確率である。Ｎは、ノード数である。
【００６６】
なお、通信３は、総データ量×（１−α）程度であり十分小さい。通信０は、管理先情報の１レコードのデータサイズが、レコードＲａ又はレコードＲｂに比べて十分小さい場合無視できる。通信１及び通信２は、項目Ｘのデータ又は管理ノードを示す情報なので、これも無視できるほど小さい。
【００６７】
したがって、本実施の形態によれば、相互に関連性を有するデータ同士の配置に関して、局所性が確保することができる。したがって、結合操作のように、２以上のデータを対象として行われる操作のための通信量を削減することができる。また、本実施の形態では、管理先情報記憶部１１２において、各データの管理先情報が記憶される。したがって、操作対象とされるデータの配置位置（管理先ノード）を特定するために必要とされる通信量を削減することができる。
【００６８】
なお、管理対象とされるデータのデータ量が少ない場合のように、管理先情報のレコードの数が小さい場合には、全てのデータ管理ノードＮに対して、同一の管理先情報がコピーされるようにしてもよい。但し、データの移動が頻繁に発生する場合は、各データ管理ノードＮの管理先情報を同期させる通信が発生することになるため、このような場合は、上記のように、管理先情報も分散管理されるのが望ましい。
【００６９】
また、本実施の形態では結合相手となるデータ、すなわち、所定の項目の値が共通するデータが、相互に関連性を有するデータの一例として用いられたが、本実施の形態は、他の関連性を有するデータに関して適用されてもよい。例えば、連続して参照される頻度が高いデータや、連続して書き込みが行われる頻度が高いデータ等に関して、本実施の形態が適用されてもよい。
【００７０】
なお、本実施の形態において、データ管理ノードＮは、データ記憶装置の一例である。管理先情報記憶部１１２は、記憶部の一例である。
【００７１】
以上、本発明の実施例について詳述したが、本発明は斯かる特定の実施形態に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である。
【００７２】
以上の説明に関し、更に以下の項を開示する。
（付記１）
データ群を分散して記憶する複数のデータ記憶装置のそれぞれに、
前記データ群を構成する各データの記憶先のデータ記憶装置を示す情報を、前記各データ記憶装置の記憶部に分散して記憶し、
当該データ記憶装置が記憶するデータのうち、当該データの記憶先のデータ記憶装置を示す情報が、当該データ記憶装置の前記記憶部に記憶されないデータについて、記憶先が当該データ記憶装置であることを示す情報を前記記憶部に記憶し、
当該データ記憶装置が記憶する第一のデータに関連して操作対象とされる第二のデータの記憶先を、当該データ記憶装置の前記記憶部を参照して特定する、
処理を実行させるデータ処理プログラム。
（付記２）
前記データ群を構成する各データの記憶先のデータ記憶装置を示す情報は、所定の規則に基づいて分散され、
前記第二のデータの記憶先が、当該データ記憶装置の記憶部を参照して特定されない場合に、前記所定の規則に基づいて特定されるデータ記憶装置に対して、前記第二のデータの記憶先を問い合わせる処理を前記データ記憶装置に実行させる付記１記載のデータ処理プログラム。
（付記３）
他のデータ記憶装置から、当該データ記憶装置が記憶するデータに関連して操作されるデータを受信し、
受信されたデータを当該データ記憶装置に記憶し、
前記受信されたデータの記憶先が当該データ記憶装置であることを示す情報を、当該データ記憶装置の記憶部に記憶する、
処理を前記データ記憶装置に実行させる付記１又は２記載のデータ処理プログラム。
（付記４）
データ群を分散して記憶する複数のデータ記憶装置のそれぞれが、
前記データ群を構成する各データの記憶先のデータ記憶装置を示す情報を、前記各データ記憶装置の記憶部に分散して記憶し、
当該データ記憶装置が記憶するデータのうち、当該データの記憶先のデータ記憶装置を示す情報が、当該データ記憶装置の記憶部に記憶されないデータについて、記憶先が当該データ記憶装置であることを示す情報を前記記憶部に記憶し、
当該データ記憶装置が記憶する第一のデータに関連して操作対象とされる第二のデータの記憶先を、当該データ記憶装置の記憶部を参照して特定する、
処理を実行することを特徴とするデータ処理方法。
（付記５）
前記データ群を構成する各データの記憶先のデータ記憶装置を示す情報は、所定の規則に基づいて分散され、
前記第二のデータの記憶先が、当該データ記憶装置の記憶部を参照して特定されない場合に、前記所定の規則に基づいて特定されるデータ記憶装置に対して、前記第二のデータの記憶先を問い合わせる処理を前記データ記憶装置が実行する付記４記載のデータ処理方法。
（付記６）
他のデータ記憶装置から、当該データ記憶装置が記憶するデータに関連して操作されるデータを受信し、
受信されたデータを当該データ記憶装置に記憶し、
前記受信されたデータの記憶先が当該データ記憶装置であることを示す情報を、当該データ記憶装置の記憶部に記憶する、
処理を前記データ記憶装置が実行する付記４又は５記載のデータ処理方法。
【符号の説明】
【００７３】
１            データ管理システム
１１          要求受信部
１２          管理先特定部
１３          データ操作部
１４          管理先情報更新部
１５          応答返信部
１６          データ移動部
１７          データ登録部
２０          中継装置
３０          クライアント装置
１００        ドライブ装置
１０１        記録媒体
１０２        補助記憶装置
１０３        メモリ装置
１０４        ＣＰＵ
１０５        インタフェース装置
１１１        データ記憶部
１１２        管理先情報記憶部
Ｂ            バス
Ｎ１、Ｎ２、Ｎ３、Ｎ４、Ｎ５、Ｎ６  データ管理ノード
【図１】
2015072629.tif 000003
【図２】
2015072629.tif 000004
【図３】
2015072629.tif 000005
【図４】
2015072629.tif 000006
【図５】
2015072629.tif 000007
【図６】
2015072629.tif 000008
【図７】
2015072629.tif 000009
【図８】
2015072629.tif 000010
【図９】
2015072629.tif 000011
【図１０】
2015072629.tif 000012