特許第5799812号(P5799812)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 日本電気株式会社の特許一覧

特許5799812データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法
<>
  • 特許5799812-データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法 図000002
  • 特許5799812-データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法 図000003
  • 特許5799812-データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法 図000004
  • 特許5799812-データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法 図000005
  • 特許5799812-データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法 図000006
  • 特許5799812-データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法 図000007
  • 特許5799812-データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法 図000008
  • 特許5799812-データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法 図000009
  • 特許5799812-データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法 図000010
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5799812
(24)【登録日】2015年9月4日
(45)【発行日】2015年10月28日
(54)【発明の名称】データ配置・計算システム、データ配置・計算方法、マスタ装置、及びデータ配置方法
(51)【国際特許分類】
   G06F 9/50 20060101AFI20151008BHJP
【FI】
   G06F9/46 465E
【請求項の数】18
【全頁数】23
(21)【出願番号】特願2011-545163(P2011-545163)
(86)(22)【出願日】2010年11月24日
(86)【国際出願番号】JP2010070854
(87)【国際公開番号】WO2011070910
(87)【国際公開日】20110616
【審査請求日】2013年10月8日
(31)【優先権主張番号】特願2009-277521(P2009-277521)
(32)【優先日】2009年12月7日
(33)【優先権主張国】JP
(73)【特許権者】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(74)【代理人】
【識別番号】100102864
【弁理士】
【氏名又は名称】工藤 実
(72)【発明者】
【氏名】西村 祥治
【審査官】 田中 幸雄
(56)【参考文献】
【文献】 特開2006−252394(JP,A)
【文献】 特開2001−101149(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 9/50
(57)【特許請求の範囲】
【請求項1】
所定のキーに従って順番に並べられた複数のレコードを有するデータと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブとを有するマスタ装置と、
前記マスタ装置と接続する複数のスレーブ装置と
を具備し、
前記マスタ装置は、
前記データを分割し、前記複数のスレーブ装置の各々に配置するデータ配置部と、
前記ジョブを、前記複数のスレーブ装置の各々に割り当てるジョブ割当部と
を備え、
前記データ配置部は、
前記データを分割して、複数のブロックと、前記複数のブロックの複製とを生成するデータ分割部と、
前記複数のブロックのうちの第1ブロックを、Ownerとして前記複数のスレーブ装置のうちの第1スレーブ装置に配置し、更に、前記所定のキーの順番により前記第1ブロックの次の順番となる第2ブロックの複製を、Replicaとして前記第1スレーブ装置に配置する配置部と
を含み、
前記第1スレーブ装置は、
前記第1ブロック及び前記第2ブロックの複製を格納するデータ保持部と、
前記ジョブを受け取り、前記第1ブロックに対して前記所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブ実行部と
を備え、
前記ジョブ実行部は、前記所定のウィンドウ幅が前記第1ブロックと前記第2ブロックの複製とにまたがる場合、前記第1ブロックと前記第2ブロックの複製とを用いてスライディングウィンドウ計算を実行する
データ配置・計算システム。
【請求項2】
請求項1に記載のデータ配置・計算システムであって、
前記マスタ装置において、
前記配置部は、前記第1ブロックをOwnerとして前記第1スレーブ装置に関連付け、前記第2ブロックの複製をReplicaとして前記第1スレーブ装置に関連付けた配置情報を生成し、
前記ジョブ割当部は、前記配置情報を参照して、前記第1ブロックに含まれる複数の第1レコードの順番を定めている前記所定のキーの種類を認識し、前記所定のキーの種類に相当する複数の第1キーと、前記ジョブとを前記第1スレーブ装置に割り当て、
前記第1スレーブ装置において、
前記ジョブ実行部は、前記複数の第1キーを、前記所定のウィンドウ幅の開始キーとしてスライディングウィンドウ計算を実行する
データ配置・計算システム。
【請求項3】
請求項2に記載のデータ配置・計算システムであって、
新たなレコードを含むデータを受け取る場合、前記複数のスレーブ装置の各々を更新するデータ再配置部
を更に具備し、
前記データ再配置部は、
前記配置情報を参照し、前記新たなレコードに含まれる前記所定のキーと同じ種類の第2キーに基づいて、前記新たなレコードを前記第2ブロックに挿入して挿入ブロックとするデータ挿入部と、
前記挿入ブロックの大きさが、第1閾値内であるか否かを判定する判定部と、
前記挿入ブロックの大きさが前記第1閾値より大きい場合、前記挿入ブロックを半分の大きさに分割して第4ブロックと第5ブロックとを生成し、新たな第2スレーブ装置にOwnerとして前記第4ブロックを配置し、前記第2スレーブ装置にReplicaとして前記第4ブロックの次の順番となる前記第5ブロックの複製を配置し、前記第2ブロックの複製をReplicaとして格納している前記第1スレーブ装置に、Replicaとして前記第4ブロックの複製を再配置し、前記第2ブロックをOwnerとして格納している第3スレーブ装置に、Ownerとして前記第5ブロックを再配置する再配置部とを備える
データ配置・計算システム。
【請求項4】
請求項3に記載のデータ配置・計算システムであって、
前記再配置部は、前記挿入ブロックの大きさが前記第1閾値内の場合、前記第2ブロック及び前記第2ブロックの複製に前記新たなレコードを挿入する
データ配置・計算システム。
【請求項5】
請求項3又は4に記載のデータ配置・計算システムであって、
前記データ再配置部は、
前記第2ブロックに含まれる第2レコードを削除する要求を受け取る場合、前記配置情報を参照し、前記第2レコードを前記第2ブロックから削除して削除ブロックとするデータ削除部
を更に備え、
前記判定部は、前記削除ブロックの大きさが、第2閾値内であるか否かを判定し、
前記再配置部は、前記削除ブロックの大きさが前記第2閾値内の場合、前記所定のキーの順番により、前記削除ブロックの次の順番となる第3ブロックと、前記削除ブロックとを統合して統合ブロックを生成し、前記第2ブロックの複製をReplicaとして格納している前記第1スレーブ装置に、Replicaとして前記統合ブロックの複製を再配置し、前記第3ブロックをOwnerとして格納している第4スレーブ装置に、Ownerとして前記統合ブロックを再配置し、前記第2ブロックをOwnerとして格納している前記第3スレーブ装置に前記第2ブロックを削除させる
データ配置・計算システム。
【請求項6】
請求項5に記載のデータ配置・計算システムであって、
前記再配置部は、前記削除ブロックの大きさが前記第2閾値より大きい場合、前記第2ブロック及び前記第2ブロックの複製から、前記第2レコードを削除する
データ配置・計算システム。
【請求項7】
マスタ装置が、所定のキーに従って順番に並べられた複数のレコードを有するデータを分割するステップと、
前記マスタ装置が、分割された前記データを、接続された複数のスレーブ装置の各々に配置するステップと、
前記マスタ装置が、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを、前記複数のスレーブ装置の各々に割り当てるステップと、
前記複数のスレーブ装置の各々が、割り当てられた前記ジョブに基づいてスライディングウィンドウ計算を実行するステップと
を具備し、
前記分割するステップは、
前記データを分割して、複数のブロックと、前記複数のブロックの複製とを生成するステップ
を備え、
前記配置するステップは、
前記複数のブロックのうちの第1ブロックを、Ownerとして前記複数のスレーブ装置のうちの第1スレーブ装置に配置するステップと、
前記所定のキーの順番により前記第1ブロックの次の順番となる第2ブロックの複製を、Replicaとして前記第1スレーブ装置に配置するステップと
を備え、
前記実行するステップは、
前記第1スレーブ装置が、前記ジョブを受け取り、前記第1ブロックに対して前記所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するステップ
を備え、
前記第1スレーブ装置が実行するステップは、前記所定のウィンドウ幅が前記第1ブロックと前記第2ブロックの複製とにまたがる場合、前記第1ブロックと前記第2ブロックの複製とを用いてスライディングウィンドウ計算を実行するステップ
を含む
データ配置・計算方法。
【請求項8】
請求項7に記載のデータ配置・計算方法であって、
前記配置するステップは、
前記第1ブロックをOwnerとして前記第1スレーブ装置に関連付け、前記第2ブロックの複製をReplicaとして前記第1スレーブ装置に関連付けた配置情報を生成するステップ
を更に備え、
前記割り当てるステップは、
前記配置情報を参照して、前記第1ブロックに含まれる複数の第1レコードの順番を定めている前記所定のキーの種類を認識するステップと、
前記所定のキーの種類に相当する複数の第1キーと、前記ジョブとを前記第1スレーブ装置に割り当てるステップと
を備え、
前記第1スレーブ装置が実行するステップは、
前記複数の第1キーを、前記所定のウィンドウ幅の開始キーとしてスライディングウィンドウ計算を実行するステップ
を含む
データ配置・計算方法。
【請求項9】
請求項8に記載のデータ配置・計算方法であって、
前記マスタ装置が、新たなレコードを含むデータを受け取る場合、前記複数のスレーブ装置の各々を更新するステップ
を更に具備し、
前記更新するステップは、
前記配置情報を参照して、前記新たなレコードに含まれる前記所定のキーと同じ種類の第2キーに基づいて、前記新たなレコードを前記第2ブロックに挿入して挿入ブロックとするステップと、
前記挿入ブロックの大きさが、第1閾値内であるか否かを判定するステップと、
前記挿入ブロックの大きさが前記第1閾値より大きい場合、前記挿入ブロックを半分の大きさに分割した第4ブロックと第5ブロックとを生成するステップと、
新たな第2スレーブ装置にOwnerとして前記第4ブロックを配置するステップと、
前記第2スレーブ装置にReplicaとして前記第4ブロックの次の順番となる前記第5ブロックの複製を配置するステップと、
前記第2ブロックの複製をReplicaとして格納している前記第1スレーブ装置に、Replicaとして前記第4ブロックの複製を再配置するステップと、
前記第2ブロックをOwnerとして格納している第3スレーブ装置に、Ownerとして前記第5ブロックを再配置するステップと
を備える
データ配置・計算方法。
【請求項10】
請求項9に記載のデータ配置・計算方法あって、
前記更新するステップは、
前記挿入ブロックの大きさが前記第1閾値内の場合、前記第2ブロック及び前記第2ブロックの複製に前記新たなレコードを挿入するステップ
を更に備える
データ配置・計算方法。
【請求項11】
請求項9または10に記載のデータ配置・計算方法であって、
前記マスタ装置が、前記第2ブロックに含まれる第2レコードを削除する要求を受け取る場合、前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップ
を更に具備し、
前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップは、
前記要求を受け取ると、前記配置情報を参照し、前記第2レコードを前記第2ブロックから削除して削除ブロックとするステップと、
前記削除ブロックの大きさが、第2閾値内であるか否かを判定するステップと、
前記削除ブロックの大きさが前記第2閾値内の場合、前記所定のキーの順番により、前記削除ブロックの次の順番となる第3ブロックと、前記削除ブロックとを統合して統合ブロックを生成するステップと、
前記第2ブロックの複製をReplicaとして格納している前記第1スレーブ装置に、Replicaとして前記統合ブロックの複製を再配置するステップと、
前記第3ブロックをOwnerとして格納している第4スレーブ装置に、Ownerとして前記統合ブロックを再配置するステップと、
前記第2ブロックをOwnerとして格納している前記第3スレーブ装置に前記第2ブロックを削除させるステップと
を備える
データ配置・計算方法。
【請求項12】
請求項11に記載のデータ配置・計算方法であって、
前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップは、
前記削除ブロックの大きさが前記第2閾値より大きい場合、前記第2ブロック及び前記第2ブロックの複製から、前記第2レコードを削除するステップ
を更に備える
データ配置・計算方法。
【請求項13】
所定のキーに従って順番に並べられた複数のレコードを有するデータを分割するステップと、
分割された前記データを、接続された複数のスレーブ装置の各々に配置するステップと、
所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを、前記複数のスレーブ装置の各々に割り当てるステップと
を具備し、
前記分割するステップは、
複数のブロックと、前記複数のブロックの複製とを生成するステップ
を備え、
前記配置するステップは、
前記複数のブロックのうちの第1ブロックを、Ownerとして前記複数のスレーブ装置のうちの第1スレーブ装置に配置するステップと、
前記所定のキーの順番により前記第1ブロックの次の順番となる第2ブロックの複製を、Replicaとして前記第1スレーブ装置に配置するステップと
前記第1ブロックをOwnerとして前記第1スレーブ装置に関連付け、前記第2ブロックの複製をReplicaとして前記第1スレーブ装置に関連付けた配置情報を生成するステップと
を備え
前記割り当てるステップは、
前記配置情報を参照して、前記第1ブロックに含まれる複数の第1レコードの順番を定めている前記所定のキーの種類を認識するステップと、
前記所定のキーの種類に相当する複数の第1キーと、前記ジョブとを前記第1スレーブ装置に割り当てるステップと
を備える
データ配置方法。
【請求項14】
請求項13に記載のデータ配置方法であって、
新たなレコードを含むデータを受け取る場合、前記複数のスレーブ装置の各々を更新するステップ
を更に具備し、
前記更新するステップは、
前記配置情報を参照して、前記新たなレコードに含まれる前記所定のキーと同じ種類の第2キーに基づいて、前記新たなレコードを前記第2ブロックに挿入して挿入ブロックとするステップと、
前記挿入ブロックの大きさが、第1閾値内であるか否かを判定するステップと、
前記挿入ブロックの大きさが前記第1閾値より大きい場合、前記挿入ブロックを半分の大きさに分割した第4ブロックと第5ブロックとを生成するステップと、
新たな第2スレーブ装置にOwnerとして前記第4ブロックを配置するステップと、
前記第2スレーブ装置にReplicaとして前記第4ブロックの次の順番となる前記第5ブロックの複製を配置するステップと、
前記第2ブロックの複製をReplicaとして格納している前記第1スレーブ装置に、Replicaとして前記第4ブロックの複製を再配置するステップと
前記第2ブロックをOwnerとして格納している第3スレーブ装置に、Ownerとして前記第5ブロックを再配置するステップと
を備える
データ配置方法。
【請求項15】
請求項14に記載のデータ配置方法あって、
前記更新するステップは、
前記挿入ブロックの大きさが前記第1閾値内の場合、前記第2ブロック及び前記第2ブロックの複製に前記新たなレコードを挿入するステップ
を更に備える
データ配置方法。
【請求項16】
請求項14または15に記載のデータ配置方法であって、
前記第2ブロックに含まれる第2レコードを削除する要求を受け取る場合、前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップ
を更に具備し、
前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップは、
前記要求を受け取ると、前記配置情報を参照し、前記第2レコードを前記第2ブロックから削除して削除ブロックとするステップと、
前記削除ブロックの大きさが、第2閾値内であるか否かを判定するステップと、
前記削除ブロックの大きさが前記第2閾値内の場合、前記所定のキーの順番により、前記削除ブロックの次の順番となる第3ブロックと、前記削除ブロックとを統合して統合ブロックを生成するステップと、
前記第2ブロックの複製をReplicaとして格納している前記第1スレーブ装置に、Replicaとして前記統合ブロックの複製を再配置するステップと、
前記第3ブロックをOwnerとして格納している第4スレーブ装置に、Ownerとして前記統合ブロックを再配置するステップと、
前記第2ブロックをOwnerとして格納している前記第3スレーブ装置に前記第2ブロックを削除させるステップと
を備える
データ配置方法。
【請求項17】
請求項16に記載のデータ配置方法であって、
前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップは、
前記削除ブロックの大きさが前記第2閾値より大きい場合、前記第2ブロック及び前記第2ブロックの複製から、前記第2レコードを削除するステップ
を更に備える
データ配置方法。
【請求項18】
請求項13乃至17の何れか一項に記載の方法をコンピュータに実現させるためのプログラムが前記コンピュータによって読み取り可能に記録された
記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明はデータ配置・計算システムに関し、特にスライディングウィンドウ計算を実行するデータ配置・計算システムに関する。
【背景技術】
【0002】
データ配置・計算システムの一例として、大規模なデータを管理するBigtableが非特許文献1に記載されている。Bigtableは、テーブルをタブレットに分割し、分割したタブレットを複数のサーバに分散して管理するシステムである。Bigtableは、テーブルをいくらでも大きくできるのと同時に、多数のサーバによって負荷を分散できることを特徴としている。データが適当なサイズに分割され、複数のサーバにまたがって格納されたこのようなシステムでは、並べられたキーにそってスライディングウィンドウ計算を行うことが可能となる。スライディングウィンドウ計算は、時系列データなど、ある順序で並んだ一連のデータに対して、特定の区間に区切って順々に計算を行う計算方法である。例えば、スライディングウィンドウ計算は、株価の移動平均を計算することや、ユーザの時系列の位置情報からユーザが一定期間滞留している場所及び時間を計算することなどに利用される。
【0003】
また、非特許文献1には、MapReduceという計算モデルのデータ処理が記載されている。MapReduceは、Map処理とReduce処理とに分けられる。Map処理は、データを持っているサーバで実行されるフィルタ演算処理である。Reduce処理は、Map処理の結果、あるキーに関連付けられたデータセットを集めて、簡約演算を実施する処理である。MapReduceでスライディングウィンドウ計算を行う場合、Map処理は、各レコードが属するウィンドウをキーとしてレコードを関連付ける。そして、Reduce処理は、ウィンドウ毎のキーに関連付けられたレコードに対してスライディングウィンドウ計算を行う。
【0004】
また、高性能コンピューティング分野ではシャドウという最適化手法が知られている(例えば、特許文献1参照)。特許文献1で挙げられているように、HPF(High Performance Fortran)の仕様には、SHADOW指示文というものが定義されている。これは、複数のコンピュータにデータを分散させる際、特許文献1の図2のように、シャドウ領域とよばれる領域をオーバラップさせて分割する方法である。つまり、プログラム開発者が明示的にSHADOW指示文によりシャドウ領域を指定することによって、コンパイラにその部分だけを重複して分散させることができるようになっている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開平11−120151号公報
【非特許文献】
【0006】
【非特許文献1】西田圭介著、「Googleを支える技術 巨大システムの内側の世界」技術評論社、平成20年4月25日、p.97−99、149−152
【発明の概要】
【0007】
前述したBigtableのように、データが適当なサイズに分割され、複数のサーバにまたがって格納されたシステムでは、並べられたキーにそってスライディングウィンドウ計算を行うことが可能である。しかし、このようなシステムでは、ウィンドウサイズの取り方によって、データ分割境界をまたぐようなウィンドウができてしまう問題がある。
【0008】
また、MapReduceにおいてもスライディングウィンドウ計算を行うには問題がある。Map処理はデータを持っているサーバで演算が実施されるため、通信コストがかからない。一方、Reduce処理は、キーに関連付けられたデータセットを集めてこなければならないため、通信コストが大きくなる。そこで、MapReduceは、Map処理の後、ローカルにあるデータセットに対してReduce処理を実行することが可能となっている。しかし、データ分割境界をまたぐようなウィンドウがあると、同一のウィンドウに入るべきデータが複数のサーバに分散されているため、Map処理後にローカルなReduce処理を実施することはできない。従って、MapReduceは、データ分割境界をまたぐウィンドウに含まれるレコードがある場合、一旦同一のサーバに集めてから計算する必要があり、スライディングウィンドウ計算の効率を悪くしてしまう。
【0009】
特許文献1のシャドウ領域を用いた最適化手法は、非常に有効な最適化手法ではあるが、プログラマは事前にシャドウ領域として必要な幅を知っておく必要がある。この方法では、プログラマが試行錯誤で様々なウィンドウ幅を試したい場合、計算を実施する毎にシャドウ領域を設定し、データの再分散をさせなければならない問題がある。更に、そもそもこの方法は、一つのプロセスがデータセットおよび計算機システムを占有することが念頭に置かれているため、同一のデータセットに対して並行して複数のウィンドウ幅をもつ計算を実施することはできない。つまり、この方法を実現するシステムは、計算毎に必要な部分を算出し、その領域だけ計算開始時に複製するように構成されている。このように、この方法には、同じデータセットに対して様々なウィンドウ幅を持つスライディングウィンドウ計算を同時に実行できない問題もある。
【0010】
本発明の目的は、分散配置されたデータに対してスライディングウィンドウ計算を行う場合、データ分割境界をまたぐようなウィンドウがあっても、効率良くスライディングウィンドウ計算を行うことができるデータ配置・計算システムを提供することにある。
【0011】
本発明のデータ配置・計算システムは、所定のキーに従って順番に並べられた複数のレコードを有するデータと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブとを有するマスタ装置と、マスタ装置と接続する複数のスレーブ装置とを具備する。マスタ装置は、データを分割し、複数のスレーブ装置の各々に配置するデータ配置部と、ジョブを複数のスレーブ装置の各々に割り当てるジョブ割当部とを備える。データ配置部は、データを分割して、複数のブロックと、複数のブロックの複製とを生成するデータ分割部と、複数のブロックのうちの第1ブロックを、Ownerとして複数のスレーブ装置のうちの第1スレーブ装置に配置し、更に、所定のキーの順番により第1ブロックの次の順番となる第2ブロックの複製を、Replicaとして第1スレーブ装置に配置する配置部とを含む。第1スレーブ装置は、第1ブロック及び第2ブロックの複製を格納するデータ保持部と、ジョブを受け取り、第1ブロックに対して所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブ実行部とを備える。ジョブ実行部は、所定のウィンドウ幅が第1ブロックと第2ブロックの複製とにまたがる場合、第1ブロックと第2ブロックの複製とを用いてスライディングウィンドウ計算を実行する。
【0012】
本発明のデータ配置・計算方法は、マスタ装置が所定のキーに従って順番に並べられた複数のレコードを有するデータを分割するステップと、マスタ装置が分割されたデータを接続された複数のスレーブ装置の各々に配置するステップと、マスタ装置が、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを複数のスレーブ装置の各々に割り当てるステップと、複数のスレーブ装置の各々が、割り当てられたジョブに基づいてスライディングウィンドウ計算を実行するステップとを具備する。分割するステップは、データを分割して、複数のブロックと、複数のブロックの複製とを生成するステップを備える。配置するステップは、複数のブロックのうちの第1ブロックを、Ownerとして複数のスレーブ装置のうちの第1スレーブ装置に配置するステップと、所定のキーの順番により第1ブロックの次の順番となる第2ブロックの複製を、Replicaとして第1スレーブ装置に配置するステップとを備える。実行するステップは、第1スレーブ装置が、ジョブを受け取り、第1ブロックに対して所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するステップを備える。第1スレーブ装置が実行するステップは、所定のウィンドウ幅が第1ブロックと第2ブロックの複製とにまたがる場合、第1ブロックと第2ブロックの複製とを用いてスライディングウィンドウ計算を実行するステップを含む。
【0013】
本発明のマスタ装置は、所定のキーに従って順番に並べられた複数のレコードを有するデータを分割し、接続された複数のスレーブ装置の各々に配置するデータ配置部と、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを、複数のスレーブ装置の各々に割り当てるジョブ割当部とを具備する。データ配置部は、データを分割して、複数のブロックと、複数のブロックの複製とを生成するデータ分割部と、複数のブロックのうちの第1ブロックを、Ownerとして複数のスレーブ装置のうちの第1スレーブ装置に配置し、更に、所定のキーの順番により第1ブロックの次の順番となる第2ブロックの複製を、Replicaとして第1スレーブ装置に配置する配置部とを備える。
【0014】
本発明のデータ配置方法は、所定のキーに従って順番に並べられた複数のレコードを有するデータを分割するステップと、分割されたデータを接続された複数のスレーブ装置の各々に配置するステップと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを、複数のスレーブ装置の各々に割り当てるステップとを具備する。分割するステップは、複数のブロックと、複数のブロックの複製とを生成するステップを備える。配置するステップは、複数のブロックのうちの第1ブロックを、Ownerとして複数のスレーブ装置のうちの第1スレーブ装置に配置するステップと、所定のキーの順番により第1ブロックの次の順番となる第2ブロックの複製を、Replicaとして第1スレーブ装置に配置するステップとを備える。
【0015】
本発明の記録媒体は、データ配置方法を実現させるためのコンピュータ読み取り可能なプログラムを記録する。データ配置方法は、所定のキーに従って順番に並べられた複数のレコードを有するデータを分割するステップと、分割されたデータを接続された複数のスレーブ装置の各々に配置するステップと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを、複数のスレーブ装置の各々に割り当てるステップとを具備する。分割するステップは、複数のブロックと、複数のブロックの複製とを生成するステップを備える。配置するステップは、複数のブロックのうちの第1ブロックを、Ownerとして複数のスレーブ装置のうちの第1スレーブ装置に配置するステップと、所定のキーの順番により第1ブロックの次の順番となる第2ブロックの複製を、Replicaとして第1スレーブ装置に配置するステップとを備える。
【0016】
本発明のデータ配置・計算システムは、分散配置されたデータに対してスライディングウィンドウ計算を行う場合、データ分割境界をまたぐようなウィンドウがあっても、効率良くスライディングウィンドウ計算を行うことができる。
【図面の簡単な説明】
【0017】
上記発明の目的、効果、特徴は、添付される図面と連携して実施の形態から、より明らかになる。
図1図1は、本発明の第1の実施の形態によるデータ配置・計算システム10の構成例を示したブロック図である。
図2図2は、データ配置・計算システム10の実施の形態における、マスタ装置100及びスレーブ装置200のハードウエア構成例を示すブロック図である。
図3図3は、本発明の第1の実施の形態によるデータ配置・計算システム10の処理動作を示したフローチャートである。
図4図4は、ユーザ毎、且つ、時系列に沿ったスライディングウィンドウ計算をするために、ユーザIDと時刻とを1つの組にした順で並べたデータである。
図5図5は、各ブロックをどのように各スレーブに分散配置したかを示す配置情報の一例である。
図6図6は、ジョブの一例である。
図7図7は、本発明の第2の実施の形態によるデータ配置・計算システム20の構成例を示したブロック図である。
図8図8は、本発明の第2の実施の形態によるデータ配置・計算システム20の処理動作を示すフローチャートである。
図9図9は、本発明の第2の実施の形態によるデータ配置・計算システム20の処理動作を示すフローチャートである。
【発明を実施するための形態】
【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を基礎とする優先権を主張し、その開示の全てをここに取り込む。
図1
図2
図3
図4
図5
図6
図7
図8
図9