(58)【調査した分野】(Int.Cl.,DB名)
所定のキーに従って順番に並べられた複数のレコードを有するデータと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブとを有するマスタ装置と、
前記マスタ装置と接続する複数のスレーブ装置と
を具備し、
前記マスタ装置は、
前記データを分割し、前記複数のスレーブ装置の各々に配置するデータ配置部と、
前記ジョブを、前記複数のスレーブ装置の各々に割り当てるジョブ割当部と
を備え、
前記データ配置部は、
前記データを分割して、複数のブロックと、前記複数のブロックの複製とを生成するデータ分割部と、
前記複数のブロックのうちの第1ブロックを、Ownerとして前記複数のスレーブ装置のうちの第1スレーブ装置に配置し、更に、前記所定のキーの順番により前記第1ブロックの次の順番となる第2ブロックの複製を、Replicaとして前記第1スレーブ装置に配置する配置部と
を含み、
前記第1スレーブ装置は、
前記第1ブロック及び前記第2ブロックの複製を格納するデータ保持部と、
前記ジョブを受け取り、前記第1ブロックに対して前記所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブ実行部と
を備え、
前記ジョブ実行部は、前記所定のウィンドウ幅が前記第1ブロックと前記第2ブロックの複製とにまたがる場合、前記第1ブロックと前記第2ブロックの複製とを用いてスライディングウィンドウ計算を実行する
データ配置・計算システム。
【発明を実施するための形態】
【0018】
以下、添付図面を参照して本発明の実施の形態によるデータ配置・計算システム、データ配置・計算方法、マスタ装置、データ配置方法、データ配置プログラム及び記録媒体を説明する。
【0019】
(第1の実施の形態)
本発明の第1の実施の形態を説明する。
図1は、本発明の第1の実施の形態によるデータ配置・計算システム10の構成を示したブロック図である。
図1を参照すると、データ配置・計算システム10は、マスタ装置100と、複数のスレーブ装置200とを具備する。マスタ装置100は、所定のキーに従って順番に並べられた複数のレコードを有するデータと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブとを有する。複数のスレーブ装置200の各々は、マスタ装置100と接続される。
【0020】
まず、マスタ装置100について説明する。マスタ装置100は、データ配置部110と、Owner/Replica管理部120と、ジョブ割当部130とを備える。
【0021】
データ配置部110は、所定のキーに従って順番に並べられた複数のレコードを有するデータを分割し、複数のスレーブ装置200の各々に配置する。データ配置部110は、データ分割部111と、配置部112とを含む。
【0022】
データ分割部111は、外部装置(図示略)から、複数のレコードを有するデータを受け取る。データ分割部111は、データに含まれる複数のレコードを、各レコードの所定のキーに従って、複数のスレーブ装置200の各々でスライディングウィンドウ計算させたい順番に並び替えて格納する。例えば、データ分散部111は、各スレーブ装置200で時系列に沿って複数のレコードをスライディングウィンドウ計算させたい場合、複数のレコードを、時間を示すキーの順番に並べて格納する。データ分割部111は、複数のレコードに含まれる所定のキーの順番を反映させたまま、データを分割して複数のブロックを生成する。このとき、データ分割部111は、データを予め設定したサイズで分割してもよいし、予め設定されたレコード数で分割してもよい。その後、データ分割部111は、分割した複数のブロックの複製を生成する。データ分割部111は、分割した複数のブロックと、複製した複数のブロックとを配置部112へ提供する。
【0023】
配置部112は、分割された複数のブロックと、複製された複数のブロックとを受け取る。配置部112は、複数のブロックの各々を、Ownerとして複数のスレーブ装置200の各々に配置する。このとき、配置部112は、全てのスレーブ装置200に満遍なく、Ownerとしてブロックを配置することが好ましい。尚、Ownerとして各スレーブ装置200に配置された任意のブロックを「Ownerブロック」と称する。例えば、配置部112は、所定のキーの順番により1番目のブロックを、Ownerとして、複数のスレーブ装置200のうちのスレーブ装置200aに配置する。
【0024】
また、配置部112は、所定のキーの順番により、Ownerブロックの次の順番となるブロックの複製を、Replicaとして各スレーブ装置200に配置する。尚、Replicaとして各スレーブ装置200に配置されたブロックを、「Replicaブロック」と称する。例えば、配置部112は、所定のキーの順番により1番目のブロックの次の順番となる2番目のブロックの複製を、Replicaとしてスレーブ装置200aに配置する。
【0025】
更に、配置部112は、各ブロックをOwnerとして各スレーブ装置200に関連付け、各ブロックの複製をReplicaとして各スレーブ装置200に関連付けた配置情報を生成する。例えば、配置部112は、1番目のブロックとスレーブ装置200aとを関連付け、2番目のブロックの複製とスレーブ装置200aとを関連付けた配置情報を生成する。配置部112は、生成した配置情報をOwner/Replica管理部120へ提供する。
【0026】
Owner/Replica管理部120は、配置部112から受け取る配置情報を格納する。
【0027】
ジョブ割当部130は、外部装置(図示略)から、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを受け取る。そして、ジョブ割当部130は、受け取ったジョブを、複数のスレーブ装置200の各々に割り当てる。詳細には、ジョブ割当部130は、ジョブを受け取ると、Owner/Replica管理部120の配置情報を参照する。ジョブ割当部130は、Ownerブロックに含まれる複数のレコードの順番を決めている所定のキーの種類を認識する。そして、ジョブ割当部130は、Ownerブロックに含まれる複数のレコードから、順番を決めている所定のキーの種類に相当するキーを各レコードから抽出する。ジョブ割当部130は、抽出した複数のキーと、ジョブとを、Ownerブロックが配置されたスレーブ装置200に割り当てる。例えば、ジョブ割当部130は、配置情報を参照して、Ownerブロックである1番目のブロックに含まれる複数のレコードの順番を定めている所定のキーの種類として、時間を認識する。ジョブ割当部130は、第1番目のブロックから時間に相当する複数の時間キーを抽出する。ジョブ割当部130は、Ownerとして第1番目のブロックが配置されたスレーブ装置200aに、ジョブと、抽出した複数の時間キーとを割り当てる。尚、ジョブ割当の具体例については後述する。
【0028】
次に、複数のスレーブ装置200について説明する。各スレーブ装置200は、データ保持部210と、ジョブ実行部220とを備える。
【0029】
データ保持部210は、データ配置部110からOwnerブロックと、Replicaブロックとを受け取り、格納する。例えば、スレーブ装置200aのデータ保持部210は、1番目のブロックをOwnerとして格納し、2番目のブロックの複製をReplicaとして格納する。
【0030】
ジョブ実行部220は、ジョブ割当部130からジョブと、Ownerブロックに含まれる複数のレコードの順番を決定している複数のキーとを受け取る。そして、ジョブ実行部220は、データ保持部210に格納されているOwnerブロックに対して、ジョブで設定された所定のウィンドウ幅毎にスライディングウィンドウ計算を実行する。このとき、ジョブ実行部220は、順番を決定している複数のキーを、ジョブの所定のウィンドウ幅の開始キーとしてスライディングウィンドウ計算を実行する。そして、ジョブ実行部220は、ジョブの所定のウィンドウ幅がOwnerブロックとReplicaブロックとにまたがる場合、Ownerブロックだけでなく、Replicaブロックを用いてスライディングウィンドウ計算を実行する。例えば、スレーブ装置200aのジョブ実行部220は、ジョブ割当部130から、ジョブと、抽出した複数の時間キーとを受け取る。ジョブ実行部220は、複数の時間キーをウィンドウ幅の開始キーとして、1番目のブロックに対してスライディングウィンドウ計算を実行する。そして、ウィンドウ幅が2番目のブロックの複製にまたがる場合、スレーブ装置200aのジョブ実行部220は、1番目のブロックと2番目のブロックの複製とを用いてスライディングウィンドウ計算を実行する。
【0031】
本発明のデータ配置・計算システム10は、各スレーブ装置200にOwnerブロックとReplicaブロックとが配置されているため、ウィンドウ幅がOwnerブロックを超える場合でも、Replicaブロックを用いて効率よくスライディングウィンドウ計算を実行させることができる。
【0032】
本発明の実施の形態によるデータ配置・計算システム10は、コンピュータを用いて実現可能である。
図2は、データ配置・計算システム10の実施の形態における、マスタ装置100及びスレーブ装置200のハードウエア構成例を示すブロック図である。
図2を参照すると、本発明のマスタ装置100及びスレーブ装置200は、CPU(Central Processing Unit)1と、記憶装置2と、入力装置3と、出力装置4と、各装置を接続するバス5とを備えるコンピュータシステムで構成される。
【0033】
CPU1は、記憶装置2に格納されている本発明のデータ配置・計算システム10に係る演算処理及び制御処理を行う。記憶装置2は、ハードディスクやメモリなど、情報の記録を行う装置である。記憶装置2は、CD−ROMやDVD等のコンピュータ読み取り可能な記憶媒体から読み取られたプログラム、ネットワーク(図示略)を介してダウンロードされたプログラム、入力装置3から入力された信号やプログラム、及びCPU1の処理結果を格納する。入力装置3は、マウス、キーボード、マイクロフォンなど、ユーザがコマンド及び信号を入力することが出来る装置である。出力装置4は、ディスプレイ、スピーカなど、ユーザに出力結果を認識させる装置である。尚、本発明はハードウエア構成例と示したものに限定されず、各部はハードウエアとソフトウエアとを単独又は組み合わせて実現することが出来る。
【0034】
図3は、本発明の第1の実施の形態によるデータ配置・計算システム10の処理動作を示したフローチャートである。
図3を参照して、本発明の第1の実施の形態によるデータ配置・計算システム10の処理動作を説明する。
【0035】
ステップA01:
データ分割部111は、外部装置(図示略)から、複数のレコードを有するデータを受け取る。データ分割部111は、データに含まれる複数のレコードを、各レコードの所定のキーに従って、複数のスレーブ装置200の各々でスライディングウィンドウ計算させたい順番に並び替えて格納する。データ分割部111は、複数のレコードに含まれる所定のキーの順番を反映させたまま、データを分割して複数のブロックを生成する。その後、データ分割部111は、分割した複数のブロックの複製を生成する。データ分割部111は、分割した複数のブロックと、複製した複数のブロックとを配置部112へ提供する。
【0036】
ステップA02:
配置部112は、複数のブロックの各々を、Ownerとして複数のスレーブ装置200の各々に配置する。即ち、配置部112は、各ブロックについてOwnerを決定する。このとき、配置部112は、全てのスレーブ200に満遍なく、Ownerとしてブロックを配置することが好ましい。
【0037】
ステップA03:
配置部112は、Ownerブロックの配置先を元に、Replicaブロックの配置先を決定する。そして、配置部112は、Ownerブロックと、Replicaブロックと、スレーブ装置200とを関連付けた配置情報を生成する。詳細には、配置部112は、所定のキーの順番により、Ownerブロックの次の順番となるブロックの複製を、Replicaとして各スレーブ装置200に配置する。そして、配置部112は、各ブロックをOwnerとして各スレーブ装置200に関連付け、各ブロックの複製をReplicaとして各スレーブ装置200に関連付けた配置情報を生成する。配置部112は、生成した配置情報をOwner/Replica管理部120へ提供する。Owner/Replica管理部120は、配置部112から受け取る配置情報を格納する。
【0038】
ステップA04:
各スレーブ装置200のデータ保持部210は、マスタ装置100のデータ配置部110からOwnerブロックと、Replicaブロックとを受け取り、格納する。
【0039】
ステップA05:
ジョブ割当部130は、外部装置(図示略)から、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを受け取る。そして、ジョブ割当部130は、受け取ったジョブを、複数のスレーブ装置200の各々に割り当てる。詳細には、ジョブ割当部130は、ジョブを受け取ると、Owner/Replica管理部120の配置情報を参照する。ジョブ割当部130は、Ownerブロックに含まれる複数のレコードの順番を決めている所定のキーの種類を認識する。そして、ジョブ割当部130は、Ownerブロックに含まれる複数のレコードから、順番を決めている所定のキーの種類に相当するキーを各レコードから抽出する。ジョブ割当部130は、抽出した複数のキーと、ジョブとを、Ownerブロックが配置されたスレーブ装置200に割り当てる。
【0040】
ステップA06:
ジョブ実行部220は、割り当てられたジョブを実行する。詳細には、ジョブ実行部220は、ジョブ割当部130からジョブと、Ownerブロックの順番を決定している複数のキーとを受け取る。そして、ジョブ実行部220は、データ保持部210に格納されているOwnerブロックに対して、ジョブで設定された所定のウィンドウ幅毎にスライディングウィンドウ計算を実行する。このとき、ジョブ実行部220は、順番を決定している複数のキーを、ジョブの所定のウィンドウ幅の開始キーとしてスライディングウィンドウ計算を実行する。そして、ジョブ実行部220は、ジョブの所定のウィンドウ幅がOwnerブロックとReplicaブロックとにまたがる場合、Ownerブロックだけでなく、Replicaブロックを用いてスライディングウィンドウ計算を実行する。
【0041】
本発明の第1の実施の形態によるデータ配置・計算システム10は、マスタ装置100が各スレーブ装置200に、Ownerブロックの他に、Ownerブロックの次の順番のブロックの複製をReplicaブロックとして配置することができる。そして、マスタ装置100は、各スレーブ装置200にOwnerブロックに対するジョブを割り当てることができる。その結果、各スレーブ装置200は、ジョブに基づいてスライディングウィンドウ計算をする際、ブロックの分割境界をまたぐようなウィンドウがある場合でも、ローカルアクセスのみでスライディングウィンドウ計算を完了することができる。また、本発明の第1の実施の形態のデータ配置・計算システム10は、各スレーブ装置200がOwnerブロックと、Replicaブロックとを格納しているため、スライディングウィンドウ計算のたびにシャドウ領域を指定する必要がなく、スライディングウィンドウ計算の効率を高めることができる。
【0042】
ここで、具体例を用いて、本発明のデータ配置・計算システムを説明する。本発明のデータ配置・計算システムは、データの配置やジョブの分割割り当てをするマスターサーバ(マスタ装置100)と、データの格納及びジョブの実行をする複数台のスレーブサーバ(スレーブ装置200)とに分けることができる。
【0043】
まず、データの配置について説明する。マスターサーバはクライアントよりデータの格納要求があると、データをブロックに分割して各スレーブサーバに分散配置する。ブロックへの分割方法は、予め設定したサイズで分割してもよいし、予め設定したレコード数で分割してもよい。このとき、マスターサーバは、各スレーブサーバがスライディングウィンドウ計算する並び順で各レコードをソートした上で、ブロックに分割する。例えば、マスターサーバが時系列に沿って各スレーブサーバにスライディングウィンドウ計算をさせたいのであれば、各レコードを時系列に並べて格納する。
図4は、ユーザ毎、且つ、時系列に沿ったスライディングウィンドウ計算をするために、ユーザIDと時刻とを1つの組にした順で並べたデータである。
【0044】
次にマスターサーバは、それぞれのブロックをスレーブサーバのどこかにOwnerとして分散配置する。分散配置の方法としては、例えばラウンドロビンに各スレーブサーバに割り当てる方法、ランダムに各スレーブサーバに割り当てる方法、後で述べるReplicaの割り当てを考え、障害発生時のダメージを減らすために隣り合うブロックを別のラックにあるスレーブサーバとなるように割り当てる方法などを挙げることができる。全スレーブサーバに満遍なくOwnerとして分散配置したほうが、後のジョブの実行時の負荷分散になる。
【0045】
Replicaの分散配置について説明する。マスターサーバはReplicaとしてブロックを割り当てる際、そのブロックの一つ前のブロックがOwnerとして割り当てられたスレーブサーバへと割り当てる。例えば、ブロック1が、スレーブXにOwnerとして配置されているとする。このとき、ブロック2は、ブロック1の一つ後ろ隣のブロックとする。言い換えると、ブロック1はブロック2の一つ前のブロックである。そこで、ブロック2の複製を、スレーブXにReplicaとして配置する。
【0046】
図5は、各ブロックをどのように各スレーブサーバに分散配置したかを示す配置情報の一例である。この例では、配置情報は、ブロックID、開始キー、終了キー、Owner、Replicaの項目を有している。ブロックIDは、各ブロックを一意に識別するためのものである。開始キー、終了キーは、各ブロックが保持している先頭および末尾のレコードのキーである。Ownerは、そのブロックをOwnerとして保持しているスレーブサーバのIDである。Replicaは、そのブロックをReplicaとして保持しているスレーブサーバのIDである。尚、配置情報は、各ブロックがどの範囲のレコードを保持し、どのスレーブサーバによってOwnerもしくはReplicaとして保持されているかを表現できるものであれば、これ以外の形式で記録してもよい。また、各ブロックは、複数のスレーブサーバにOwnerブロックおよびReplicaブロックとして割り当てられていてもよい。複数割り当てることで障害発生時のデータ再配置のコストおよび復旧時間の短縮が実現できる。
【0047】
ジョブの分割について説明する。
図6は、ジョブの一例である。ここでは、
図4に示すユーザ毎、且つ、10秒毎の位置(X,Y)をあらわすレコードを有するデータに対して、1分ごとに値XとYの平均をとっていくスライディングウィンドウ計算するジョブを例に説明する。尚、
図4のデータは、10件のレコード毎に分散配置されているとする。
図6の1行目の「scan_by_window」関数は、ウィンドウの開始点と終了点となるキーをマッチさせるパターンを取り出すことを表す。ここでは、「”:00”」で終わるキーから開始し、開始キーの最後の「”:00”」から「“:50”」に変わったキーまでをウィンドウとして取り出す。そして、取り出したウィンドウに対して、1行目から4行目までのdoからendまでのコードで、平均の位置を求め(2行目)、その結果を発行する(3行目)。例えば、
図4において、「Usr1−00:00:00」から「Usr1−00:00:50」や、「Usr1−00:01:00」から「Usr−1−00:01:50」などがそれぞれウィンドウとして取り出されることになる。
【0048】
ジョブの分割は次のようにして行う。マスターサーバは、
図5の配置情報を参照して、Ownerとしてブロックを持っているスレーブサーバに対して、実行すべきジョブと、開始キーとして読み込むべき範囲(複数のキー)を渡す。例えば、スレーブサーバ「1」は、「Usr1−00:00:00」から「Usr1−00:01:30」までの範囲のレコードをもつブロックをOwnerとして保持している。そこで、マスターサーバは、スレーブサーバ「1」に、開始キーとして読み込むべき範囲として、「Usr1−00:00:00」から「Usr1−00:01:30」までの範囲の複数のキーを割り当てる。即ち、それらのキーの範囲を実行するジョブを割り当てる。スレーブサーバ「1」は、Ownerとして持っているブロックの先頭から、ウィンドウの開始キーとして、「”:00”」で終わるキーをもつレコードを探す。すると「Usr1−00:00:00」に関連付けられたレコードがマッチする。次に、スレーブサーバ「1」は、ウィンドウの終了キーとして「”:50”」で終わるキーを探し、「Usr1−00:00:50」がマッチすることを認識する。そこで、スレーブサーバ「1」は、「Usr1−00:00:00」から「Usr1−00:00:50」までの範囲のレコードを1つのウィンドウとして平均の位置を計算し、その結果を発行する。同様に、スレーブサーバ「1」は、次のウィンドウの開始キーと終了キーを探し、「Usr1−00:01:00」から「Usr1−00:01:50」までの範囲のウィンドウに対して計算を実行する。このとき、スレーブサーバ「1」は、「Usr1−00:01:40」と「Usr1−00:01:50」のキーを持つレコードを、Ownerとして持っていないが、Replicaとしてローカルに持つようにデータが配置されているので、ローカルアクセスのみでスライディングウィンドウ計算が実現できる。さらに、スレーブサーバ「1」は、次のウィンドウの開始キーを探すが、与えられた範囲内(Usr1−00:00:00からUsr1−00:01:30までの範囲)では見つからないことから、ジョブを終了する。このようにして各スレーブサーバには、Ownerとして持っているブロックの開始キーから終了キーまでの範囲内に関するジョブが割り当てられることになる。
【0049】
(第2の実施の形態)
本発明の第2の実施の形態を説明する。
図7は、本発明の第2の実施の形態によるデータ配置・計算システム20の構成を示したブロック図である。本発明の第2の実施の形態のデータ配置・計算システム20は、第1の実施の形態で分散配置されたデータに対して、データの挿入及び削除ができる機能を追加したものである。尚、本発明の第2の実施の形態において、第1の実施の形態と同様の構成には同じ符号を用いて説明を省略する。
図7を参照すると、データ配置・計算システム20は、マスタ装置300と、複数のスレーブ装置200とを具備する。マスタ装置300は、所定のキーに従って順番に並べられた複数のレコードを有するデータと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブとを有する。複数のスレーブ装置200の各々は、マスタ装置300と接続される。
【0050】
マスタ装置300について説明する。マスタ装置300は、データ配置部110と、Owner/Replica管理部120と、ジョブ割当部130と、データ再配置部140とを備える。
【0051】
データ再配置部140は、第1の実施の形態と同様の動作によって各スレーブ装置200にデータが分散配置された後に動作する。データ再配置部140は、新たなレコードを含むデータを外部装置(図示略)から受け取る場合、複数のスレーブ装置200の各々を更新する。また、データ配置部140は、データに含まれる所定のレコードを削除する要求を外部装置(図示略)から受け取る場合、削除要求に基づいて複数のスレーブ装置200の各々を更新する。データ再配置部140は、データ挿入部141と、データ削除部142と、判定部143と、再配置部144とを備える。
【0052】
データ挿入部141は、新たなレコードを含むデータを受け取ると、Owner/Replica管理部120の配置情報を参照する。データ挿入部141は、新たなレコードに含まれる前述した所定のキーと同じ種類のキーに基づいて、新たなレコードを対応するブロックに挿入する。尚、新たなレコードが挿入されたブロックを「挿入ブロック」と称する。例えば、データ挿入部141は、配置情報を参照し、新たなレコードに含まれる所定のキーと同じ種類のキーに基づいて、新たなレコードを2番目のブロックに挿入して、挿入ブロックとする。
【0053】
データ削除部142は、ブロックに含まれるレコードを削除する要求を受け取ると、Owner/Replica管理部120の配置情報を参照し、そのレコードをブロックから削除する。尚、レコードが削除されたブロックを「削除ブロック」と証する。例えば、削除対象のレコードが2番目のブロックに含まれるとする。データ削除部142は、削除対象のレコードに含まれる所定のキーに基づいて2番目のブロックを抽出し、2番目のブロックからそのレコードを削除して削除ブロックとする。
【0054】
判定部143は、挿入ブロックの大きさが、閾値内であるか否か(あるサイズより大きいか否か)を判定する。また、判定部143は、削除ブロックの大きさが、閾値内であるか否か(あるサイズより小さいか否か)を判定する。
【0055】
再配置部144の説明をする。まず、データ挿入部141が新たなレコードを含むデータを受け取る場合を説明する。再配置部144は、挿入ブロックの大きさが閾値より大きい場合、挿入ブロックを半分の大きさに分割して、ブロックFとブロックRとを生成する。尚、挿入ブロックの前半分がブロックFであり、後半分がブロックRである。再配置部144は、スレーブ装置200のひとつに、OwnerとしてブロックFを配置し、ReplicaとしてブロックRの複製を配置する。
【0056】
次に、再配置部144は、新たなレコードが挿入されるブロックの複製をReplicaとして格納しているスレーブ装置200に、ReplicaとしてブロックFの複製を再配置する。更に、再配置部144は、新たなレコードが挿入されるブロックをOwnerとして格納しているスレーブ装置200に、OwnerとしてブロックRを再配置する。再配置部144は、再配置後の配置情報を、Owner/Replica管理部120に提供し、配置情報を更新する。
【0057】
例えば、スレーブ装置200aにOwnerとして1番目のブロックが配置され、Replicaとして2番目のブロックの複製が配置され、スレーブ装置200b(図示略)にOwnerとして2番目のブロックが配置され、Replicaとして3番目のブロックの複製が配置されているとする。再配置部144は、2番目のブロックに新たなレコードが挿入された挿入ブロックの大きさが閾値より大きい場合、挿入ブロックをブロックFとブロックRとに分割する。再配置部144は、新たなスレーブ装置200c(図示略)に、OwnerとしてブロックFを配置し、ReplicaとしてブロックRの複製を配置する。再配置部144は、スレーブ装置200aにReplicaとしてブロックFの複製を再配置する。更に、再配置部144は、スレーブ装置200bにOwnerとしてブロックRを再配置する。尚、再配置部144は再配置するとき、スレーブ装置200aにReplicaとして配置されている2番目のブロックの複製を削除させ、スレーブ装置200bにOwnerとして配置されている2番目のブロックを削除させる。
【0058】
一方、再配置部144は、挿入ブロックの大きさが閾値内の場合、新たなレコードの挿入対象となるブロック及びブロックの複製に、新たなレコードを挿入する。例えば、再配置部144は、スレーブ装置200aのReplicaとして配置されている2番目のブロックの複製に、新たなレコードを挿入する。また、再配置部144は、スレーブ装置200bのOwnerとして配置されている2番目のブロックに、新たなレコードを挿入する。
【0059】
次に、データ削除部142がブロックに含まれるレコードを削除する要求を受け取る場合を説明する。再配置部144は、削除ブロックの大きさが閾値内の場合、所定のキーの順番により、削除ブロックの次の順番となるブロックと、削除ブロックとを統合して統合ブロックを生成する。再配置部144は、レコードが削除されるブロックの複製をReplicaとして格納しているスレーブ装置200に、Replicaとして統合ブロックの複製を再配置する。また、再配置部144は、削除ブロックの次の順番となるブロックをOwnerとして格納しているスレーブ装置200に、Ownerとして統合ブロックを再配置する。更に、再配置部144は、レコードが削除されるブロックをOwnerとして格納しているスレーブ装置200を解放する(再配置部144は当該スレーブ装置200に割り当てられているOwnerブロックとReplicaブロックとを削除させる)。再配置部144は、再配置後の配置情報を、Owner/Replica管理部120に提供し、配置情報を更新する。
【0060】
例えば、スレーブ装置200aにOwnerとして1番目のブロックが配置され、Replicaとして2番目のブロックの複製が配置され、スレーブ装置200b(図示略)にOwnerとして2番目のブロックが配置され、Replicaとして3番目のブロックの複製が配置され、スレーブ装置200d(図示略)にOwnerとして3番目のブロックが配置されているとする。再配置部144は、2番目のブロックからレコードが削除された削除ブロックの大きさが閾値より小さい場合、削除ブロックと3番目のブロックとを統合して統合ブロックを生成する。再配置部144は、スレーブ装置200aにReplicaとして統合ブロックの複製を再配置する。また、再配置部144は、スレーブ装置200dにOwnerとして統合ブロックを再配置する。更に、再配置部144は、2番目のブロックをOwnerとして格納しているスレーブ装置200bを解放する(再配置部144はスレーブ装置200bに割り当てられているOwnerブロックとReplicaブロックとを削除させる)。尚、再配置部144は再配置するとき、スレーブ装置200aにReplicaとして配置されている2番目のブロックの複製を削除させ、スレーブ装置200dにOwnerとして配置されている3番目のブロックを削除させる。
【0061】
一方、再配置部144は、削除ブロックの大きさが閾値より大きい場合、レコードの削除対象となるブロック及びブロックの複製から、その対象となるレコードを削除する。例えば、再配置部144は、スレーブ装置200aのReplicaとして配置されている2番目のブロックの複製から、その対象となるレコードを削除する。また、再配置部144は、スレーブ装置200bのOwnerとして配置されている2番目のブロックから、その対象となるレコードを削除する。
【0062】
図8は、本発明の第2の実施の形態によるデータ配置・計算システム20の処理動作を示すフローチャートである。
図8を参照して、データ配置・計算システム20のデータ挿入処理を説明する。ここでは、データ配置・計算システム20は、第1の実施の形態と同様の処理によって、各スレーブ装置200にデータを既に分散配置させているものとする。
【0063】
ステップB01:
データ挿入部141は、新たなレコードを含むデータを受け取ると、Owner/Replica管理部120の配置情報を参照する。データ挿入部141は、新たなレコードに含まれる前述した所定のキーと同じ種類のキーに基づいて、新たなレコードを対応するブロックに挿入し、挿入ブロックとする。
【0064】
ステップB02:
判定部143は、挿入ブロックの大きさが閾値内であるか否かを判定する。
【0065】
ステップB03:
ステップB02において、挿入ブロックの大きさが閾値より大きい場合(YES)、再配置部144は挿入ブロックを半分の大きさに分割して、ブロックFとブロックRとを生成する。尚、挿入ブロックの前半分がブロックFであり、後ろ半分がブロックRである。
【0066】
ステップB04:
再配置部144は、新たなスレーブ装置200に、Ownerとして前半分のブロックFを配置し、Replicaとして後半分のブロックRの複製を配置する。
【0067】
ステップB05:
再配置部144は、Replicaブロックを再配置する。つまり、再配置部144は、新たなレコードが挿入されるブロックの複製をReplicaとして格納しているスレーブ装置200に、ReplicaとしてブロックFの複製を再配置する。尚、再配置部144は再配置するとき、スレーブ装置200にReplicaとして配置されているブロックの複製を削除させる。
【0068】
ステップB06:
再配置部144は、Ownerブロックを再配置する。つまり、再配置部144は、新たなレコードが挿入されるブロックをOwnerとして格納しているスレーブ装置200に、OwnerとしてブロックRを再配置する。尚、再配置部144は再配置するとき、スレーブ装置200にOwnerとして配置されているブロックを削除させる。
【0069】
ステップB07:
再配置部144は、再配置後の配置情報を、Owner/Replica管理部120に提供し、配置情報を更新する。
【0070】
ステップB08:
一方、ステップB02において、挿入ブロックの大きさが閾値内の場合(NO)、再配置部144は、新たなレコードの挿入対象となるブロック及びブロックの複製に、新たなレコードを挿入する。
【0071】
図9は、本発明の第2の実施の形態によるデータ配置・計算システム20の処理動作を示すフローチャートである。
図9を参照して、データ配置・計算システム20のデータ削除処理を説明する。ここでも、データ配置・計算システム20は、第1の実施の形態と同様の処理によって、各スレーブ装置200にデータを既に分散配置させているものとする。
【0072】
ステップC01:
データ削除部142は、ブロックに含まれるレコードを削除する要求を受け取ると、Owner/Replica管理部120の配置情報を参照し、そのレコードをブロックから削除し、削除ブロックとする。
【0073】
ステップC02:
判定部143は、削除ブロックの大きさが閾値内であるか否かを判定する。
【0074】
ステップC03:
ステップC02において、削除ブロックの大きさが閾値内の場合(YES)、再配置部144は、所定のキーの順番により、削除ブロックの次の順番となるブロックと、削除ブロックとを統合して統合ブロックを生成する。
【0075】
ステップC04:
再配置部144は、Replicaブロックを再配置する。つまり、再配置部144は、レコードが削除されるブロックの複製をReplicaとして格納しているスレーブ装置200に、Replicaとして統合ブロックの複製を再配置する。尚、再配置部144は再配置するとき、スレーブ装置200にReplicaとして配置されているブロックの複製を削除させる。
【0076】
ステップC05:
再配置部144は、Ownerブロックを再配置する。つまり、再配置部144は、削除ブロックの次の順番となるブロックをOwnerとして格納しているスレーブ装置200に、Ownerとして統合ブロックを再配置する。尚、再配置部144は再配置するとき、スレーブ装置200にOwnerとして配置されているブロックを削除させる。
【0077】
ステップC06:
再配置部144は、レコードが削除されるブロックをOwnerとして格納しているスレーブ装置200を解放する。
【0078】
ステップC07:
再配置部144は、再配置後の配置情報を、Owner/Replica管理部120に提供し、配置情報を更新する。
【0079】
ステップC08:
一方、ステップC02において、削除ブロックの大きさが閾値より大きい場合(NO)、再配置部144は、レコードの削除対象となるブロック及びブロックの複製から、そのレコードを削除する。
【0080】
本発明の第2の実施の形態によるデータ配置・計算システム20は、第1の実施の形態と同様に、ウィンドウ幅がOwnerブロックを超える場合でも、Replicaブロックを用いて効率よくスライディングウィンドウ計算を実行させることができる。しかも、本発明の第2の実施の形態によるデータ配置・計算システム20は、データが各スレーブ装置200に配置された後にデータの挿入及び削除を行う場合でも、各スレーブ装置200にデータの挿入及び削除が反映されたOwnerブロックとReplicaブロックとを再配置させることができる。
【0081】
以上、実施形態(及び実施例)を参照して本願発明を説明したが、本願発明は上記実施形態(及び実施例)に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0082】
この出願は、2009年12月7日に出願された日本出願特願2009−277521を基礎とする優先権を主張し、その開示の全てをここに取り込む。