(57)【要約】  マスタ装置と複数のスレーブ装置とを具備し、マスタ装置は、データ配置部とジョブ割当部とを備え、データ配置部は、データを分割して、複数のブロックと、複数のブロックの複製とを生成するデータ分割部と、複数のブロックのうちの第１ブロックを、Ｏｗｎｅｒとして複数のスレーブ装置のうちの第１スレーブ装置に配置し、更に、所定のキーの順番により第１ブロックの次の順番となる第２ブロックの複製を、Ｒｅｐｌｉｃａとして第１スレーブ装置に配置する配置部とを含む。第１スレーブ装置は、第１ブロック及び第２ブロックの複製を格納するデータ保持部と、所定のウィンドウ幅が第１ブロックと第２ブロックの複製とにまたがる場合、第１ブロックと第２ブロックの複製とを用いてスライディングウィンドウ計算を実行するジョブ実行部とを備える。
2011070910.tif 000002
【特許請求の範囲】
【請求項１】
所定のキーに従って順番に並べられた複数のレコードを有するデータと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブとを有するマスタ装置と、
前記マスタ装置と接続する複数のスレーブ装置と
を具備し、
前記マスタ装置は、
前記データを分割し、前記複数のスレーブ装置の各々に配置するデータ配置部と、
前記ジョブを、前記複数のスレーブ装置の各々に割り当てるジョブ割当部と
を備え、
前記データ配置部は、
前記データを分割して、複数のブロックと、前記複数のブロックの複製とを生成するデータ分割部と、
前記複数のブロックのうちの第１ブロックを、Ｏｗｎｅｒとして前記複数のスレーブ装置のうちの第１スレーブ装置に配置し、更に、前記所定のキーの順番により前記第１ブロックの次の順番となる第２ブロックの複製を、Ｒｅｐｌｉｃａとして前記第１スレーブ装置に配置する配置部と
を含み、
前記第１スレーブ装置は、
前記第１ブロック及び前記第２ブロックの複製を格納するデータ保持部と、
前記ジョブを受け取り、前記第１ブロックに対して前記所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブ実行部と
を備え、
前記ジョブ実行部は、前記所定のウィンドウ幅が前記第１ブロックと前記第２ブロックの複製とにまたがる場合、前記第１ブロックと前記第２ブロックの複製とを用いてスライディングウィンドウ計算を実行する
データ配置・計算システム。
【請求項２】
請求項１に記載のデータ配置・計算システムであって、
前記マスタ装置において、
前記配置部は、前記第１ブロックをＯｗｎｅｒとして前記第１スレーブ装置に関連付け、前記第２ブロックの複製をＲｅｐｌｉｃａとして前記第１スレーブ装置に関連付けた配置情報を生成し、
前記ジョブ割当部は、前記配置情報を参照して、前記第１ブロックに含まれる複数の第１レコードの順番を定めている前記所定のキーの種類を認識し、前記所定のキーの種類に相当する複数の第１キーと、前記ジョブとを前記第１スレーブ装置に割り当て、
前記第１スレーブ装置において、
前記ジョブ実行部は、前記複数の第１キーを、前記所定のウィンドウ幅の開始キーとしてスライディングウィンドウ計算を実行する
データ配置・計算システム。
【請求項３】
請求項２に記載のデータ配置・計算システムであって、
新たなレコードを含むデータを受け取る場合、前記複数のスレーブ装置の各々を更新するデータ再配置部
を更に具備し、
前記データ再配置部は、
前記配置情報を参照し、前記新たなレコードに含まれる前記所定のキーと同じ種類の第２キーに基づいて、前記新たなレコードを前記第２ブロックに挿入して挿入ブロックとするデータ挿入部と、
前記挿入ブロックの大きさが、第１閾値内であるか否かを判定する判定部と、
前記挿入ブロックの大きさが前記第１閾値より大きい場合、前記挿入ブロックを半分の大きさに分割して第４ブロックと第５ブロックとを生成し、新たな第２スレーブ装置にＯｗｎｅｒとして前記第４ブロックを配置し、前記第２スレーブ装置にＲｅｐｌｉｃａとして前記第４ブロックの次の順番となる前記第５ブロックの複製を配置し、前記第２ブロックの複製をＲｅｐｌｉｃａとして格納している前記第１スレーブ装置に、Ｒｅｐｌｉｃａとして前記第４ブロックの複製を再配置し、前記第２ブロックをＯｗｎｅｒとして格納している第３スレーブ装置に、Ｏｗｎｅｒとして前記第５ブロックを再配置する再配置部とを備える
データ配置・計算システム。
【請求項４】
請求項３に記載のデータ配置・計算システムであって、
前記再配置部は、前記挿入ブロックの大きさが前記第１閾値内の場合、前記第２ブロック及び前記第２ブロックの複製に前記新たなレコードを挿入する
データ配置・計算システム。
【請求項５】
請求項３又は４に記載のデータ配置・計算システムであって、
前記データ再配置部は、
前記第２ブロックに含まれる第２レコードを削除する要求を受け取る場合、前記配置情報を参照し、前記第２レコードを前記第２ブロックから削除して削除ブロックとするデータ削除部
を更に備え、
前記判定部は、前記削除ブロックの大きさが、第２閾値内であるか否かを判定し、
前記再配置部は、前記削除ブロックの大きさが前記第２閾値内の場合、前記所定のキーの順番により、前記削除ブロックの次の順番となる第３ブロックと、前記削除ブロックとを統合して統合ブロックを生成し、前記第２ブロックの複製をＲｅｐｌｉｃａとして格納している前記第１スレーブ装置に、Ｒｅｐｌｉｃａとして前記統合ブロックの複製を再配置し、前記第３ブロックをＯｗｎｅｒとして格納している第４スレーブ装置に、Ｏｗｎｅｒとして前記統合ブロックを再配置し、前記第２ブロックをＯｗｎｅｒとして格納している前記第３スレーブ装置に前記第２ブロックを削除させる
データ配置・計算システム。
【請求項６】
請求項５に記載のデータ配置・計算システムであって、
前記再配置部は、前記削除ブロックの大きさが前記第２閾値より大きい場合、前記第２ブロック及び前記第２ブロックの複製から、前記第２レコードを削除する
データ配置・計算システム。
【請求項７】
マスタ装置が、所定のキーに従って順番に並べられた複数のレコードを有するデータを分割するステップと、
前記マスタ装置が、分割された前記データを、接続された複数のスレーブ装置の各々に配置するステップと、
前記マスタ装置が、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを、前記複数のスレーブ装置の各々に割り当てるステップと、
前記複数のスレーブ装置の各々が、割り当てられた前記ジョブに基づいてスライディングウィンドウ計算を実行するステップと
を具備し、
前記分割するステップは、
前記データを分割して、複数のブロックと、前記複数のブロックの複製とを生成するステップ
を備え、
前記配置するステップは、
前記複数のブロックのうちの第１ブロックを、Ｏｗｎｅｒとして前記複数のスレーブ装置のうちの第１スレーブ装置に配置するステップと、
前記所定のキーの順番により前記第１ブロックの次の順番となる第２ブロックの複製を、Ｒｅｐｌｉｃａとして前記第１スレーブ装置に配置するステップと
を備え、
前記実行するステップは、
前記第１スレーブ装置が、前記ジョブを受け取り、前記第１ブロックに対して前記所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するステップ
を備え、
前記第１スレーブ装置が実行するステップは、前記所定のウィンドウ幅が前記第１ブロックと前記第２ブロックの複製とにまたがる場合、前記第１ブロックと前記第２ブロックの複製とを用いてスライディングウィンドウ計算を実行するステップ
を含む
データ配置・計算方法。
【請求項８】
請求項７に記載のデータ配置・計算方法であって、
前記配置するステップは、
前記第１ブロックをＯｗｎｅｒとして前記第１スレーブ装置に関連付け、前記第２ブロックの複製をＲｅｐｌｉｃａとして前記第１スレーブ装置に関連付けた配置情報を生成するステップ
を更に備え、
前記割り当てるステップは、
前記配置情報を参照して、前記第１ブロックに含まれる複数の第１レコードの順番を定めている前記所定のキーの種類を認識するステップと、
前記所定のキーの種類に相当する複数の第１キーと、前記ジョブとを前記第１スレーブ装置に割り当てるステップと
を備え、
前記第１スレーブ装置が実行するステップは、
前記複数の第１キーを、前記所定のウィンドウ幅の開始キーとしてスライディングウィンドウ計算を実行するステップ
を含む
データ配置・計算方法。
【請求項９】
請求項８に記載のデータ配置・計算方法であって、
前記マスタ装置が、新たなレコードを含むデータを受け取る場合、前記複数のスレーブ装置の各々を更新するステップ
を更に具備し、
前記更新するステップは、
前記配置情報を参照して、前記新たなレコードに含まれる前記所定のキーと同じ種類の第２キーに基づいて、前記新たなレコードを前記第２ブロックに挿入して挿入ブロックとするステップと、
前記挿入ブロックの大きさが、第１閾値内であるか否かを判定するステップと、
前記挿入ブロックの大きさが前記第１閾値より大きい場合、前記挿入ブロックを半分の大きさに分割した第４ブロックと第５ブロックとを生成するステップと、
新たな第２スレーブ装置にＯｗｎｅｒとして前記第４ブロックを配置するステップと、
前記第２スレーブ装置にＲｅｐｌｉｃａとして前記第４ブロックの次の順番となる前記第５ブロックの複製を配置するステップと、
前記第２ブロックの複製をＲｅｐｌｉｃａとして格納している前記第１スレーブ装置に、Ｒｅｐｌｉｃａとして前記第４ブロックの複製を再配置するステップと、
前記第２ブロックをＯｗｎｅｒとして格納している第３スレーブ装置に、Ｏｗｎｅｒとして前記第５ブロックを再配置するステップと
を備える
データ配置・計算方法。
【請求項１０】
請求項９に記載のデータ配置・計算方法あって、
前記更新するステップは、
前記挿入ブロックの大きさが前記第１閾値内の場合、前記第２ブロック及び前記第２ブロックの複製に前記新たなレコードを挿入するステップ
を更に備える
データ配置・計算方法。
【請求項１１】
請求項８乃至１０の何れか一項に記載のデータ配置・計算方法であって、
前記マスタ装置が、前記第２ブロックに含まれる第２レコードを削除する要求を受け取る場合、前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップ
を更に具備し、
前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップは、
前記要求を受け取ると、前記配置情報を参照し、前記第２レコードを前記第２ブロックから削除して削除ブロックとするステップと、
前記削除ブロックの大きさが、第２閾値内であるか否かを判定するステップと、
前記削除ブロックの大きさが前記第２閾値内の場合、前記所定のキーの順番により、前記削除ブロックの次の順番となる第３ブロックと、前記削除ブロックとを統合して統合ブロックを生成するステップと、
前記第２ブロックの複製をＲｅｐｌｉｃａとして格納している前記第１スレーブ装置に、Ｒｅｐｌｉｃａとして前記統合ブロックの複製を再配置するステップと、
前記第３ブロックをＯｗｎｅｒとして格納している第４スレーブ装置に、Ｏｗｎｅｒとして前記統合ブロックを再配置するステップと、
前記第２ブロックをＯｗｎｅｒとして格納している前記第３スレーブ装置に前記第２ブロックを削除させるステップと
を備える
データ配置・計算方法。
【請求項１２】
請求項１１に記載のデータ配置・計算方法であって、
前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップは、
前記削除ブロックの大きさが前記第２閾値より大きい場合、前記第２ブロック及び前記第２ブロックの複製から、前記第２レコードを削除するステップ
を更に備える
データ配置・計算方法。
【請求項１３】
請求項１から６の何れか一項に記載のデータ配置・計算システムで使用される
マスタ装置。
【請求項１４】
所定のキーに従って順番に並べられた複数のレコードを有するデータを分割するステップと、
分割された前記データを、接続された複数のスレーブ装置の各々に配置するステップと、
所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを、前記複数のスレーブ装置の各々に割り当てるステップと
を具備し、
前記分割するステップは、
複数のブロックと、前記複数のブロックの複製とを生成するステップ
を備え、
前記配置するステップは、
前記複数のブロックのうちの第１ブロックを、Ｏｗｎｅｒとして前記複数のスレーブ装置のうちの第１スレーブ装置に配置するステップと、
前記所定のキーの順番により前記第１ブロックの次の順番となる第２ブロックの複製を、Ｒｅｐｌｉｃａとして前記第１スレーブ装置に配置するステップと
を備える
データ配置方法。
【請求項１５】
請求項１４に記載のデータ配置方法であって、
前記配置するステップは、
前記第１ブロックをＯｗｎｅｒとして前記第１スレーブ装置に関連付け、前記第２ブロックの複製をＲｅｐｌｉｃａとして前記第１スレーブ装置に関連付けた配置情報を生成するステップ
を更に備え、
前記割り当てるステップは、
前記配置情報を参照して、前記第１ブロックに含まれる複数の第１レコードの順番を定めている前記所定のキーの種類を認識するステップと、
前記所定のキーの種類に相当する複数の第１キーと、前記ジョブとを前記第１スレーブ装置に割り当てるステップと
を備える
データ配置方法。
【請求項１６】
請求項１５に記載のデータ配置方法であって、
新たなレコードを含むデータを受け取る場合、前記複数のスレーブ装置の各々を更新するステップ
を更に具備し、
前記更新するステップは、
前記配置情報を参照して、前記新たなレコードに含まれる前記所定のキーと同じ種類の第２キーに基づいて、前記新たなレコードを前記第２ブロックに挿入して挿入ブロックとするステップと、
前記挿入ブロックの大きさが、第１閾値内であるか否かを判定するステップと、
前記挿入ブロックの大きさが前記第１閾値より大きい場合、前記挿入ブロックを半分の大きさに分割した第４ブロックと第５ブロックとを生成するステップと、
新たな第２スレーブ装置にＯｗｎｅｒとして前記第４ブロックを配置するステップと、
前記第２スレーブ装置にＲｅｐｌｉｃａとして前記第４ブロックの次の順番となる前記第５ブロックの複製を配置するステップと、
前記第２ブロックの複製をＲｅｐｌｉｃａとして格納している前記第１スレーブ装置に、Ｒｅｐｌｉｃａとして前記第４ブロックの複製を再配置するステップと
前記第２ブロックをＯｗｎｅｒとして格納している第３スレーブ装置に、Ｏｗｎｅｒとして前記第５ブロックを再配置するステップと
を備える
データ配置方法。
【請求項１７】
請求項１６に記載のデータ配置方法あって、
前記更新するステップは、
前記挿入ブロックの大きさが前記第１閾値内の場合、前記第２ブロック及び前記第２ブロックの複製に前記新たなレコードを挿入するステップ
を更に備える
データ配置方法。
【請求項１８】
請求項１５乃至１７の何れか一項に記載のデータ配置方法であって、
前記第２ブロックに含まれる第２レコードを削除する要求を受け取る場合、前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップ
を更に具備し、
前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップは、
前記要求を受け取ると、前記配置情報を参照し、前記第２レコードを前記第２ブロックから削除して削除ブロックとするステップと、
前記削除ブロックの大きさが、第２閾値内であるか否かを判定するステップと、
前記削除ブロックの大きさが前記第２閾値内の場合、前記所定のキーの順番により、前記削除ブロックの次の順番となる第３ブロックと、前記削除ブロックとを統合して統合ブロックを生成するステップと、
前記第２ブロックの複製をＲｅｐｌｉｃａとして格納している前記第１スレーブ装置に、Ｒｅｐｌｉｃａとして前記統合ブロックの複製を再配置するステップと、
前記第３ブロックをＯｗｎｅｒとして格納している第４スレーブ装置に、Ｏｗｎｅｒとして前記統合ブロックを再配置するステップと、
前記第２ブロックをＯｗｎｅｒとして格納している前記第３スレーブ装置に前記第２ブロックを削除させるステップと
を備える
データ配置方法。
【請求項１９】
請求項１８に記載のデータ配置方法であって、
前記要求に基づいて前記複数のスレーブ装置の各々を更新するステップは、
前記削除ブロックの大きさが前記第２閾値より大きい場合、前記第２ブロック及び前記第２ブロックの複製から、前記第２レコードを削除するステップ
を更に備える
データ配置方法。
【請求項２０】
請求項１４乃至１９の何れか一項に記載の方法を実現させるためのコンピュータ読み取り可能なプログラムを記録したコンピュータ読み取り可能な
記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はデータ配置・計算システムに関し、特にスライディングウィンドウ計算を実行するデータ配置・計算システムに関する。
【背景技術】
【０００２】
データ配置・計算システムの一例として、大規模なデータを管理するＢｉｇｔａｂｌｅが非特許文献１に記載されている。Ｂｉｇｔａｂｌｅは、テーブルをタブレットに分割し、分割したタブレットを複数のサーバに分散して管理するシステムである。Ｂｉｇｔａｂｌｅは、テーブルをいくらでも大きくできるのと同時に、多数のサーバによって負荷を分散できることを特徴としている。データが適当なサイズに分割され、複数のサーバにまたがって格納されたこのようなシステムでは、並べられたキーにそってスライディングウィンドウ計算を行うことが可能となる。スライディングウィンドウ計算は、時系列データなど、ある順序で並んだ一連のデータに対して、特定の区間に区切って順々に計算を行う計算方法である。例えば、スライディングウィンドウ計算は、株価の移動平均を計算することや、ユーザの時系列の位置情報からユーザが一定期間滞留している場所及び時間を計算することなどに利用される。【０００３】
また、非特許文献１には、ＭａｐＲｅｄｕｃｅという計算モデルのデータ処理が記載されている。ＭａｐＲｅｄｕｃｅは、Ｍａｐ処理とＲｅｄｕｃｅ処理とに分けられる。Ｍａｐ処理は、データを持っているサーバで実行されるフィルタ演算処理である。Ｒｅｄｕｃｅ処理は、Ｍａｐ処理の結果、あるキーに関連付けられたデータセットを集めて、簡約演算を実施する処理である。ＭａｐＲｅｄｕｃｅでスライディングウィンドウ計算を行う場合、Ｍａｐ処理は、各レコードが属するウィンドウをキーとしてレコードを関連付ける。そして、Ｒｅｄｕｃｅ処理は、ウィンドウ毎のキーに関連付けられたレコードに対してスライディングウィンドウ計算を行う。【０００４】
また、高性能コンピューティング分野ではシャドウという最適化手法が知られている（例えば、特許文献１参照）。特許文献１で挙げられているように、ＨＰＦ（Ｈｉｇｈ  Ｐｅｒｆｏｒｍａｎｃｅ  Ｆｏｒｔｒａｎ）の仕様には、ＳＨＡＤＯＷ指示文というものが定義されている。これは、複数のコンピュータにデータを分散させる際、特許文献１の図２のように、シャドウ領域とよばれる領域をオーバラップさせて分割する方法である。つまり、プログラム開発者が明示的にＳＨＡＤＯＷ指示文によりシャドウ領域を指定することによって、コンパイラにその部分だけを重複して分散させることができるようになっている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１２０１５１号公報
【非特許文献】
【０００６】
【非特許文献１】西田圭介著、「Ｇｏｏｇｌｅを支える技術  巨大システムの内側の世界」技術評論社、平成２０年４月２５日、ｐ．９７−９９、１４９−１５２
【発明の概要】
【０００７】
前述したＢｉｇｔａｂｌｅのように、データが適当なサイズに分割され、複数のサーバにまたがって格納されたシステムでは、並べられたキーにそってスライディングウィンドウ計算を行うことが可能である。しかし、このようなシステムでは、ウィンドウサイズの取り方によって、データ分割境界をまたぐようなウィンドウができてしまう問題がある。
【０００８】
また、ＭａｐＲｅｄｕｃｅにおいてもスライディングウィンドウ計算を行うには問題がある。Ｍａｐ処理はデータを持っているサーバで演算が実施されるため、通信コストがかからない。一方、Ｒｅｄｕｃｅ処理は、キーに関連付けられたデータセットを集めてこなければならないため、通信コストが大きくなる。そこで、ＭａｐＲｅｄｕｃｅは、Ｍａｐ処理の後、ローカルにあるデータセットに対してＲｅｄｕｃｅ処理を実行することが可能となっている。しかし、データ分割境界をまたぐようなウィンドウがあると、同一のウィンドウに入るべきデータが複数のサーバに分散されているため、Ｍａｐ処理後にローカルなＲｅｄｕｃｅ処理を実施することはできない。従って、ＭａｐＲｅｄｕｃｅは、データ分割境界をまたぐウィンドウに含まれるレコードがある場合、一旦同一のサーバに集めてから計算する必要があり、スライディングウィンドウ計算の効率を悪くしてしまう。
【０００９】
特許文献１のシャドウ領域を用いた最適化手法は、非常に有効な最適化手法ではあるが、プログラマは事前にシャドウ領域として必要な幅を知っておく必要がある。この方法では、プログラマが試行錯誤で様々なウィンドウ幅を試したい場合、計算を実施する毎にシャドウ領域を設定し、データの再分散をさせなければならない問題がある。更に、そもそもこの方法は、一つのプロセスがデータセットおよび計算機システムを占有することが念頭に置かれているため、同一のデータセットに対して並行して複数のウィンドウ幅をもつ計算を実施することはできない。つまり、この方法を実現するシステムは、計算毎に必要な部分を算出し、その領域だけ計算開始時に複製するように構成されている。このように、この方法には、同じデータセットに対して様々なウィンドウ幅を持つスライディングウィンドウ計算を同時に実行できない問題もある。
【００１０】
本発明の目的は、分散配置されたデータに対してスライディングウィンドウ計算を行う場合、データ分割境界をまたぐようなウィンドウがあっても、効率良くスライディングウィンドウ計算を行うことができるデータ配置・計算システムを提供することにある。
【００１１】
本発明のデータ配置・計算システムは、所定のキーに従って順番に並べられた複数のレコードを有するデータと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブとを有するマスタ装置と、マスタ装置と接続する複数のスレーブ装置とを具備する。マスタ装置は、データを分割し、複数のスレーブ装置の各々に配置するデータ配置部と、ジョブを複数のスレーブ装置の各々に割り当てるジョブ割当部とを備える。データ配置部は、データを分割して、複数のブロックと、複数のブロックの複製とを生成するデータ分割部と、複数のブロックのうちの第１ブロックを、Ｏｗｎｅｒとして複数のスレーブ装置のうちの第１スレーブ装置に配置し、更に、所定のキーの順番により第１ブロックの次の順番となる第２ブロックの複製を、Ｒｅｐｌｉｃａとして第１スレーブ装置に配置する配置部とを含む。第１スレーブ装置は、第１ブロック及び第２ブロックの複製を格納するデータ保持部と、ジョブを受け取り、第１ブロックに対して所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブ実行部とを備える。ジョブ実行部は、所定のウィンドウ幅が第１ブロックと第２ブロックの複製とにまたがる場合、第１ブロックと第２ブロックの複製とを用いてスライディングウィンドウ計算を実行する。
【００１２】
本発明のデータ配置・計算方法は、マスタ装置が所定のキーに従って順番に並べられた複数のレコードを有するデータを分割するステップと、マスタ装置が分割されたデータを接続された複数のスレーブ装置の各々に配置するステップと、マスタ装置が、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを複数のスレーブ装置の各々に割り当てるステップと、複数のスレーブ装置の各々が、割り当てられたジョブに基づいてスライディングウィンドウ計算を実行するステップとを具備する。分割するステップは、データを分割して、複数のブロックと、複数のブロックの複製とを生成するステップを備える。配置するステップは、複数のブロックのうちの第１ブロックを、Ｏｗｎｅｒとして複数のスレーブ装置のうちの第１スレーブ装置に配置するステップと、所定のキーの順番により第１ブロックの次の順番となる第２ブロックの複製を、Ｒｅｐｌｉｃａとして第１スレーブ装置に配置するステップとを備える。実行するステップは、第１スレーブ装置が、ジョブを受け取り、第１ブロックに対して所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するステップを備える。第１スレーブ装置が実行するステップは、所定のウィンドウ幅が第１ブロックと第２ブロックの複製とにまたがる場合、第１ブロックと第２ブロックの複製とを用いてスライディングウィンドウ計算を実行するステップを含む。
【００１３】
本発明のマスタ装置は、所定のキーに従って順番に並べられた複数のレコードを有するデータを分割し、接続された複数のスレーブ装置の各々に配置するデータ配置部と、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを、複数のスレーブ装置の各々に割り当てるジョブ割当部とを具備する。データ配置部は、データを分割して、複数のブロックと、複数のブロックの複製とを生成するデータ分割部と、複数のブロックのうちの第１ブロックを、Ｏｗｎｅｒとして複数のスレーブ装置のうちの第１スレーブ装置に配置し、更に、所定のキーの順番により第１ブロックの次の順番となる第２ブロックの複製を、Ｒｅｐｌｉｃａとして第１スレーブ装置に配置する配置部とを備える。
【００１４】
本発明のデータ配置方法は、所定のキーに従って順番に並べられた複数のレコードを有するデータを分割するステップと、分割されたデータを接続された複数のスレーブ装置の各々に配置するステップと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを、複数のスレーブ装置の各々に割り当てるステップとを具備する。分割するステップは、複数のブロックと、複数のブロックの複製とを生成するステップを備える。配置するステップは、複数のブロックのうちの第１ブロックを、Ｏｗｎｅｒとして複数のスレーブ装置のうちの第１スレーブ装置に配置するステップと、所定のキーの順番により第１ブロックの次の順番となる第２ブロックの複製を、Ｒｅｐｌｉｃａとして第１スレーブ装置に配置するステップとを備える。
【００１５】
本発明の記録媒体は、データ配置方法を実現させるためのコンピュータ読み取り可能なプログラムを記録する。データ配置方法は、所定のキーに従って順番に並べられた複数のレコードを有するデータを分割するステップと、分割されたデータを接続された複数のスレーブ装置の各々に配置するステップと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを、複数のスレーブ装置の各々に割り当てるステップとを具備する。分割するステップは、複数のブロックと、複数のブロックの複製とを生成するステップを備える。配置するステップは、複数のブロックのうちの第１ブロックを、Ｏｗｎｅｒとして複数のスレーブ装置のうちの第１スレーブ装置に配置するステップと、所定のキーの順番により第１ブロックの次の順番となる第２ブロックの複製を、Ｒｅｐｌｉｃａとして第１スレーブ装置に配置するステップとを備える。
【００１６】
本発明のデータ配置・計算システムは、分散配置されたデータに対してスライディングウィンドウ計算を行う場合、データ分割境界をまたぐようなウィンドウがあっても、効率良くスライディングウィンドウ計算を行うことができる。
【図面の簡単な説明】
【００１７】
上記発明の目的、効果、特徴は、添付される図面と連携して実施の形態から、より明らかになる。
【図１】図１は、本発明の第１の実施の形態によるデータ配置・計算システム１０の構成例を示したブロック図である。
【図２】図２は、データ配置・計算システム１０の実施の形態における、マスタ装置１００及びスレーブ装置２００のハードウエア構成例を示すブロック図である。
【図３】図３は、本発明の第１の実施の形態によるデータ配置・計算システム１０の処理動作を示したフローチャートである。
【図４】図４は、ユーザ毎、且つ、時系列に沿ったスライディングウィンドウ計算をするために、ユーザＩＤと時刻とを１つの組にした順で並べたデータである。
【図５】図５は、各ブロックをどのように各スレーブに分散配置したかを示す配置情報の一例である。
【図６】図６は、ジョブの一例である。
【図７】図７は、本発明の第２の実施の形態によるデータ配置・計算システム２０の構成例を示したブロック図である。
【図８】図８は、本発明の第２の実施の形態によるデータ配置・計算システム２０の処理動作を示すフローチャートである。
【図９】図９は、本発明の第２の実施の形態によるデータ配置・計算システム２０の処理動作を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、添付図面を参照して本発明の実施の形態によるデータ配置・計算システム、データ配置・計算方法、マスタ装置、データ配置方法、データ配置プログラム及び記録媒体を説明する。
【００１９】
（第１の実施の形態）
本発明の第１の実施の形態を説明する。図１は、本発明の第１の実施の形態によるデータ配置・計算システム１０の構成を示したブロック図である。図１を参照すると、データ配置・計算システム１０は、マスタ装置１００と、複数のスレーブ装置２００とを具備する。マスタ装置１００は、所定のキーに従って順番に並べられた複数のレコードを有するデータと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブとを有する。複数のスレーブ装置２００の各々は、マスタ装置１００と接続される。
【００２０】
まず、マスタ装置１００について説明する。マスタ装置１００は、データ配置部１１０と、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０と、ジョブ割当部１３０とを備える。
【００２１】
データ配置部１１０は、所定のキーに従って順番に並べられた複数のレコードを有するデータを分割し、複数のスレーブ装置２００の各々に配置する。データ配置部１１０は、データ分割部１１１と、配置部１１２とを含む。
【００２２】
データ分割部１１１は、外部装置（図示略）から、複数のレコードを有するデータを受け取る。データ分割部１１１は、データに含まれる複数のレコードを、各レコードの所定のキーに従って、複数のスレーブ装置２００の各々でスライディングウィンドウ計算させたい順番に並び替えて格納する。例えば、データ分散部１１１は、各スレーブ装置２００で時系列に沿って複数のレコードをスライディングウィンドウ計算させたい場合、複数のレコードを、時間を示すキーの順番に並べて格納する。データ分割部１１１は、複数のレコードに含まれる所定のキーの順番を反映させたまま、データを分割して複数のブロックを生成する。このとき、データ分割部１１１は、データを予め設定したサイズで分割してもよいし、予め設定されたレコード数で分割してもよい。その後、データ分割部１１１は、分割した複数のブロックの複製を生成する。データ分割部１１１は、分割した複数のブロックと、複製した複数のブロックとを配置部１１２へ提供する。
【００２３】
配置部１１２は、分割された複数のブロックと、複製された複数のブロックとを受け取る。配置部１１２は、複数のブロックの各々を、Ｏｗｎｅｒとして複数のスレーブ装置２００の各々に配置する。このとき、配置部１１２は、全てのスレーブ装置２００に満遍なく、Ｏｗｎｅｒとしてブロックを配置することが好ましい。尚、Ｏｗｎｅｒとして各スレーブ装置２００に配置された任意のブロックを「Ｏｗｎｅｒブロック」と称する。例えば、配置部１１２は、所定のキーの順番により１番目のブロックを、Ｏｗｎｅｒとして、複数のスレーブ装置２００のうちのスレーブ装置２００ａに配置する。
【００２４】
また、配置部１１２は、所定のキーの順番により、Ｏｗｎｅｒブロックの次の順番となるブロックの複製を、Ｒｅｐｌｉｃａとして各スレーブ装置２００に配置する。尚、Ｒｅｐｌｉｃａとして各スレーブ装置２００に配置されたブロックを、「Ｒｅｐｌｉｃａブロック」と称する。例えば、配置部１１２は、所定のキーの順番により１番目のブロックの次の順番となる２番目のブロックの複製を、Ｒｅｐｌｉｃａとしてスレーブ装置２００ａに配置する。
【００２５】
更に、配置部１１２は、各ブロックをＯｗｎｅｒとして各スレーブ装置２００に関連付け、各ブロックの複製をＲｅｐｌｉｃａとして各スレーブ装置２００に関連付けた配置情報を生成する。例えば、配置部１１２は、１番目のブロックとスレーブ装置２００ａとを関連付け、２番目のブロックの複製とスレーブ装置２００ａとを関連付けた配置情報を生成する。配置部１１２は、生成した配置情報をＯｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０へ提供する。
【００２６】
Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０は、配置部１１２から受け取る配置情報を格納する。
【００２７】
ジョブ割当部１３０は、外部装置（図示略）から、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを受け取る。そして、ジョブ割当部１３０は、受け取ったジョブを、複数のスレーブ装置２００の各々に割り当てる。詳細には、ジョブ割当部１３０は、ジョブを受け取ると、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０の配置情報を参照する。ジョブ割当部１３０は、Ｏｗｎｅｒブロックに含まれる複数のレコードの順番を決めている所定のキーの種類を認識する。そして、ジョブ割当部１３０は、Ｏｗｎｅｒブロックに含まれる複数のレコードから、順番を決めている所定のキーの種類に相当するキーを各レコードから抽出する。ジョブ割当部１３０は、抽出した複数のキーと、ジョブとを、Ｏｗｎｅｒブロックが配置されたスレーブ装置２００に割り当てる。例えば、ジョブ割当部１３０は、配置情報を参照して、Ｏｗｎｅｒブロックである１番目のブロックに含まれる複数のレコードの順番を定めている所定のキーの種類として、時間を認識する。ジョブ割当部１３０は、第１番目のブロックから時間に相当する複数の時間キーを抽出する。ジョブ割当部１３０は、Ｏｗｎｅｒとして第１番目のブロックが配置されたスレーブ装置２００ａに、ジョブと、抽出した複数の時間キーとを割り当てる。尚、ジョブ割当の具体例については後述する。
【００２８】
次に、複数のスレーブ装置２００について説明する。各スレーブ装置２００は、データ保持部２１０と、ジョブ実行部２２０とを備える。
【００２９】
データ保持部２１０は、データ配置部１１０からＯｗｎｅｒブロックと、Ｒｅｐｌｉｃａブロックとを受け取り、格納する。例えば、スレーブ装置２００ａのデータ保持部２１０は、１番目のブロックをＯｗｎｅｒとして格納し、２番目のブロックの複製をＲｅｐｌｉｃａとして格納する。
【００３０】
ジョブ実行部２２０は、ジョブ割当部１３０からジョブと、Ｏｗｎｅｒブロックに含まれる複数のレコードの順番を決定している複数のキーとを受け取る。そして、ジョブ実行部２２０は、データ保持部２１０に格納されているＯｗｎｅｒブロックに対して、ジョブで設定された所定のウィンドウ幅毎にスライディングウィンドウ計算を実行する。このとき、ジョブ実行部２２０は、順番を決定している複数のキーを、ジョブの所定のウィンドウ幅の開始キーとしてスライディングウィンドウ計算を実行する。そして、ジョブ実行部２２０は、ジョブの所定のウィンドウ幅がＯｗｎｅｒブロックとＲｅｐｌｉｃａブロックとにまたがる場合、Ｏｗｎｅｒブロックだけでなく、Ｒｅｐｌｉｃａブロックを用いてスライディングウィンドウ計算を実行する。例えば、スレーブ装置２００ａのジョブ実行部２２０は、ジョブ割当部１３０から、ジョブと、抽出した複数の時間キーとを受け取る。ジョブ実行部２２０は、複数の時間キーをウィンドウ幅の開始キーとして、１番目のブロックに対してスライディングウィンドウ計算を実行する。そして、ウィンドウ幅が２番目のブロックの複製にまたがる場合、スレーブ装置２００ａのジョブ実行部２２０は、１番目のブロックと２番目のブロックの複製とを用いてスライディングウィンドウ計算を実行する。
【００３１】
本発明のデータ配置・計算システム１０は、各スレーブ装置２００にＯｗｎｅｒブロックとＲｅｐｌｉｃａブロックとが配置されているため、ウィンドウ幅がＯｗｎｅｒブロックを超える場合でも、Ｒｅｐｌｉｃａブロックを用いて効率よくスライディングウィンドウ計算を実行させることができる。
【００３２】
本発明の実施の形態によるデータ配置・計算システム１０は、コンピュータを用いて実現可能である。図２は、データ配置・計算システム１０の実施の形態における、マスタ装置１００及びスレーブ装置２００のハードウエア構成例を示すブロック図である。図２を参照すると、本発明のマスタ装置１００及びスレーブ装置２００は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１と、記憶装置２と、入力装置３と、出力装置４と、各装置を接続するバス５とを備えるコンピュータシステムで構成される。
【００３３】
ＣＰＵ１は、記憶装置２に格納されている本発明のデータ配置・計算システム１０に係る演算処理及び制御処理を行う。記憶装置２は、ハードディスクやメモリなど、情報の記録を行う装置である。記憶装置２は、ＣＤ−ＲＯＭやＤＶＤ等のコンピュータ読み取り可能な記憶媒体から読み取られたプログラム、ネットワーク（図示略）を介してダウンロードされたプログラム、入力装置３から入力された信号やプログラム、及びＣＰＵ１の処理結果を格納する。入力装置３は、マウス、キーボード、マイクロフォンなど、ユーザがコマンド及び信号を入力することが出来る装置である。出力装置４は、ディスプレイ、スピーカなど、ユーザに出力結果を認識させる装置である。尚、本発明はハードウエア構成例と示したものに限定されず、各部はハードウエアとソフトウエアとを単独又は組み合わせて実現することが出来る。
【００３４】
図３は、本発明の第１の実施の形態によるデータ配置・計算システム１０の処理動作を示したフローチャートである。図３を参照して、本発明の第１の実施の形態によるデータ配置・計算システム１０の処理動作を説明する。
【００３５】
ステップＡ０１：
データ分割部１１１は、外部装置（図示略）から、複数のレコードを有するデータを受け取る。データ分割部１１１は、データに含まれる複数のレコードを、各レコードの所定のキーに従って、複数のスレーブ装置２００の各々でスライディングウィンドウ計算させたい順番に並び替えて格納する。データ分割部１１１は、複数のレコードに含まれる所定のキーの順番を反映させたまま、データを分割して複数のブロックを生成する。その後、データ分割部１１１は、分割した複数のブロックの複製を生成する。データ分割部１１１は、分割した複数のブロックと、複製した複数のブロックとを配置部１１２へ提供する。
【００３６】
ステップＡ０２：
配置部１１２は、複数のブロックの各々を、Ｏｗｎｅｒとして複数のスレーブ装置２００の各々に配置する。即ち、配置部１１２は、各ブロックについてＯｗｎｅｒを決定する。このとき、配置部１１２は、全てのスレーブ２００に満遍なく、Ｏｗｎｅｒとしてブロックを配置することが好ましい。
【００３７】
ステップＡ０３：
配置部１１２は、Ｏｗｎｅｒブロックの配置先を元に、Ｒｅｐｌｉｃａブロックの配置先を決定する。そして、配置部１１２は、Ｏｗｎｅｒブロックと、Ｒｅｐｌｉｃａブロックと、スレーブ装置２００とを関連付けた配置情報を生成する。詳細には、配置部１１２は、所定のキーの順番により、Ｏｗｎｅｒブロックの次の順番となるブロックの複製を、Ｒｅｐｌｉｃａとして各スレーブ装置２００に配置する。そして、配置部１１２は、各ブロックをＯｗｎｅｒとして各スレーブ装置２００に関連付け、各ブロックの複製をＲｅｐｌｉｃａとして各スレーブ装置２００に関連付けた配置情報を生成する。配置部１１２は、生成した配置情報をＯｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０へ提供する。Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０は、配置部１１２から受け取る配置情報を格納する。
【００３８】
ステップＡ０４：
各スレーブ装置２００のデータ保持部２１０は、マスタ装置１００のデータ配置部１１０からＯｗｎｅｒブロックと、Ｒｅｐｌｉｃａブロックとを受け取り、格納する。
【００３９】
ステップＡ０５：
ジョブ割当部１３０は、外部装置（図示略）から、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブを受け取る。そして、ジョブ割当部１３０は、受け取ったジョブを、複数のスレーブ装置２００の各々に割り当てる。詳細には、ジョブ割当部１３０は、ジョブを受け取ると、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０の配置情報を参照する。ジョブ割当部１３０は、Ｏｗｎｅｒブロックに含まれる複数のレコードの順番を決めている所定のキーの種類を認識する。そして、ジョブ割当部１３０は、Ｏｗｎｅｒブロックに含まれる複数のレコードから、順番を決めている所定のキーの種類に相当するキーを各レコードから抽出する。ジョブ割当部１３０は、抽出した複数のキーと、ジョブとを、Ｏｗｎｅｒブロックが配置されたスレーブ装置２００に割り当てる。
【００４０】
ステップＡ０６：
ジョブ実行部２２０は、割り当てられたジョブを実行する。詳細には、ジョブ実行部２２０は、ジョブ割当部１３０からジョブと、Ｏｗｎｅｒブロックの順番を決定している複数のキーとを受け取る。そして、ジョブ実行部２２０は、データ保持部２１０に格納されているＯｗｎｅｒブロックに対して、ジョブで設定された所定のウィンドウ幅毎にスライディングウィンドウ計算を実行する。このとき、ジョブ実行部２２０は、順番を決定している複数のキーを、ジョブの所定のウィンドウ幅の開始キーとしてスライディングウィンドウ計算を実行する。そして、ジョブ実行部２２０は、ジョブの所定のウィンドウ幅がＯｗｎｅｒブロックとＲｅｐｌｉｃａブロックとにまたがる場合、Ｏｗｎｅｒブロックだけでなく、Ｒｅｐｌｉｃａブロックを用いてスライディングウィンドウ計算を実行する。
【００４１】
本発明の第１の実施の形態によるデータ配置・計算システム１０は、マスタ装置１００が各スレーブ装置２００に、Ｏｗｎｅｒブロックの他に、Ｏｗｎｅｒブロックの次の順番のブロックの複製をＲｅｐｌｉｃａブロックとして配置することができる。そして、マスタ装置１００は、各スレーブ装置２００にＯｗｎｅｒブロックに対するジョブを割り当てることができる。その結果、各スレーブ装置２００は、ジョブに基づいてスライディングウィンドウ計算をする際、ブロックの分割境界をまたぐようなウィンドウがある場合でも、ローカルアクセスのみでスライディングウィンドウ計算を完了することができる。また、本発明の第１の実施の形態のデータ配置・計算システム１０は、各スレーブ装置２００がＯｗｎｅｒブロックと、Ｒｅｐｌｉｃａブロックとを格納しているため、スライディングウィンドウ計算のたびにシャドウ領域を指定する必要がなく、スライディングウィンドウ計算の効率を高めることができる。
【００４２】
ここで、具体例を用いて、本発明のデータ配置・計算システムを説明する。本発明のデータ配置・計算システムは、データの配置やジョブの分割割り当てをするマスターサーバ（マスタ装置１００）と、データの格納及びジョブの実行をする複数台のスレーブサーバ（スレーブ装置２００）とに分けることができる。
【００４３】
まず、データの配置について説明する。マスターサーバはクライアントよりデータの格納要求があると、データをブロックに分割して各スレーブサーバに分散配置する。ブロックへの分割方法は、予め設定したサイズで分割してもよいし、予め設定したレコード数で分割してもよい。このとき、マスターサーバは、各スレーブサーバがスライディングウィンドウ計算する並び順で各レコードをソートした上で、ブロックに分割する。例えば、マスターサーバが時系列に沿って各スレーブサーバにスライディングウィンドウ計算をさせたいのであれば、各レコードを時系列に並べて格納する。図４は、ユーザ毎、且つ、時系列に沿ったスライディングウィンドウ計算をするために、ユーザＩＤと時刻とを１つの組にした順で並べたデータである。
【００４４】
次にマスターサーバは、それぞれのブロックをスレーブサーバのどこかにＯｗｎｅｒとして分散配置する。分散配置の方法としては、例えばラウンドロビンに各スレーブサーバに割り当てる方法、ランダムに各スレーブサーバに割り当てる方法、後で述べるＲｅｐｌｉｃａの割り当てを考え、障害発生時のダメージを減らすために隣り合うブロックを別のラックにあるスレーブサーバとなるように割り当てる方法などを挙げることができる。全スレーブサーバに満遍なくＯｗｎｅｒとして分散配置したほうが、後のジョブの実行時の負荷分散になる。
【００４５】
Ｒｅｐｌｉｃａの分散配置について説明する。マスターサーバはＲｅｐｌｉｃａとしてブロックを割り当てる際、そのブロックの一つ前のブロックがＯｗｎｅｒとして割り当てられたスレーブサーバへと割り当てる。例えば、ブロック１が、スレーブＸにＯｗｎｅｒとして配置されているとする。このとき、ブロック２は、ブロック１の一つ後ろ隣のブロックとする。言い換えると、ブロック１はブロック２の一つ前のブロックである。そこで、ブロック２の複製を、スレーブＸにＲｅｐｌｉｃａとして配置する。
【００４６】
図５は、各ブロックをどのように各スレーブサーバに分散配置したかを示す配置情報の一例である。この例では、配置情報は、ブロックＩＤ、開始キー、終了キー、Ｏｗｎｅｒ、Ｒｅｐｌｉｃａの項目を有している。ブロックＩＤは、各ブロックを一意に識別するためのものである。開始キー、終了キーは、各ブロックが保持している先頭および末尾のレコードのキーである。Ｏｗｎｅｒは、そのブロックをＯｗｎｅｒとして保持しているスレーブサーバのＩＤである。Ｒｅｐｌｉｃａは、そのブロックをＲｅｐｌｉｃａとして保持しているスレーブサーバのＩＤである。尚、配置情報は、各ブロックがどの範囲のレコードを保持し、どのスレーブサーバによってＯｗｎｅｒもしくはＲｅｐｌｉｃａとして保持されているかを表現できるものであれば、これ以外の形式で記録してもよい。また、各ブロックは、複数のスレーブサーバにＯｗｎｅｒブロックおよびＲｅｐｌｉｃａブロックとして割り当てられていてもよい。複数割り当てることで障害発生時のデータ再配置のコストおよび復旧時間の短縮が実現できる。
【００４７】
ジョブの分割について説明する。図６は、ジョブの一例である。ここでは、図４に示すユーザ毎、且つ、１０秒毎の位置（Ｘ，Ｙ）をあらわすレコードを有するデータに対して、１分ごとに値ＸとＹの平均をとっていくスライディングウィンドウ計算するジョブを例に説明する。尚、図４のデータは、１０件のレコード毎に分散配置されているとする。図６の１行目の「ｓｃａｎ＿ｂｙ＿ｗｉｎｄｏｗ」関数は、ウィンドウの開始点と終了点となるキーをマッチさせるパターンを取り出すことを表す。ここでは、「”：００”」で終わるキーから開始し、開始キーの最後の「”：００”」から「“：５０”」に変わったキーまでをウィンドウとして取り出す。そして、取り出したウィンドウに対して、１行目から４行目までのｄｏからｅｎｄまでのコードで、平均の位置を求め（２行目）、その結果を発行する（３行目）。例えば、図４において、「Ｕｓｒ１−００：００：００」から「Ｕｓｒ１−００：００：５０」や、「Ｕｓｒ１−００：０１：００」から「Ｕｓｒ−１−００：０１：５０」などがそれぞれウィンドウとして取り出されることになる。
【００４８】
ジョブの分割は次のようにして行う。マスターサーバは、図５の配置情報を参照して、Ｏｗｎｅｒとしてブロックを持っているスレーブサーバに対して、実行すべきジョブと、開始キーとして読み込むべき範囲（複数のキー）を渡す。例えば、スレーブサーバ「１」は、「Ｕｓｒ１−００：００：００」から「Ｕｓｒ１−００：０１：３０」までの範囲のレコードをもつブロックをＯｗｎｅｒとして保持している。そこで、マスターサーバは、スレーブサーバ「１」に、開始キーとして読み込むべき範囲として、「Ｕｓｒ１−００：００：００」から「Ｕｓｒ１−００：０１：３０」までの範囲の複数のキーを割り当てる。即ち、それらのキーの範囲を実行するジョブを割り当てる。スレーブサーバ「１」は、Ｏｗｎｅｒとして持っているブロックの先頭から、ウィンドウの開始キーとして、「”：００”」で終わるキーをもつレコードを探す。すると「Ｕｓｒ１−００：００：００」に関連付けられたレコードがマッチする。次に、スレーブサーバ「１」は、ウィンドウの終了キーとして「”：５０”」で終わるキーを探し、「Ｕｓｒ１−００：００：５０」がマッチすることを認識する。そこで、スレーブサーバ「１」は、「Ｕｓｒ１−００：００：００」から「Ｕｓｒ１−００：００：５０」までの範囲のレコードを１つのウィンドウとして平均の位置を計算し、その結果を発行する。同様に、スレーブサーバ「１」は、次のウィンドウの開始キーと終了キーを探し、「Ｕｓｒ１−００：０１：００」から「Ｕｓｒ１−００：０１：５０」までの範囲のウィンドウに対して計算を実行する。このとき、スレーブサーバ「１」は、「Ｕｓｒ１−００：０１：４０」と「Ｕｓｒ１−００：０１：５０」のキーを持つレコードを、Ｏｗｎｅｒとして持っていないが、Ｒｅｐｌｉｃａとしてローカルに持つようにデータが配置されているので、ローカルアクセスのみでスライディングウィンドウ計算が実現できる。さらに、スレーブサーバ「１」は、次のウィンドウの開始キーを探すが、与えられた範囲内（Ｕｓｒ１−００：００：００からＵｓｒ１−００：０１：３０までの範囲）では見つからないことから、ジョブを終了する。このようにして各スレーブサーバには、Ｏｗｎｅｒとして持っているブロックの開始キーから終了キーまでの範囲内に関するジョブが割り当てられることになる。
【００４９】
（第２の実施の形態）
本発明の第２の実施の形態を説明する。図７は、本発明の第２の実施の形態によるデータ配置・計算システム２０の構成を示したブロック図である。本発明の第２の実施の形態のデータ配置・計算システム２０は、第１の実施の形態で分散配置されたデータに対して、データの挿入及び削除ができる機能を追加したものである。尚、本発明の第２の実施の形態において、第１の実施の形態と同様の構成には同じ符号を用いて説明を省略する。図７を参照すると、データ配置・計算システム２０は、マスタ装置３００と、複数のスレーブ装置２００とを具備する。マスタ装置３００は、所定のキーに従って順番に並べられた複数のレコードを有するデータと、所定のウィンドウ幅毎にスライディングウィンドウ計算を実行するジョブとを有する。複数のスレーブ装置２００の各々は、マスタ装置３００と接続される。
【００５０】
マスタ装置３００について説明する。マスタ装置３００は、データ配置部１１０と、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０と、ジョブ割当部１３０と、データ再配置部１４０とを備える。
【００５１】
データ再配置部１４０は、第１の実施の形態と同様の動作によって各スレーブ装置２００にデータが分散配置された後に動作する。データ再配置部１４０は、新たなレコードを含むデータを外部装置（図示略）から受け取る場合、複数のスレーブ装置２００の各々を更新する。また、データ配置部１４０は、データに含まれる所定のレコードを削除する要求を外部装置（図示略）から受け取る場合、削除要求に基づいて複数のスレーブ装置２００の各々を更新する。データ再配置部１４０は、データ挿入部１４１と、データ削除部１４２と、判定部１４３と、再配置部１４４とを備える。
【００５２】
データ挿入部１４１は、新たなレコードを含むデータを受け取ると、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０の配置情報を参照する。データ挿入部１４１は、新たなレコードに含まれる前述した所定のキーと同じ種類のキーに基づいて、新たなレコードを対応するブロックに挿入する。尚、新たなレコードが挿入されたブロックを「挿入ブロック」と称する。例えば、データ挿入部１４１は、配置情報を参照し、新たなレコードに含まれる所定のキーと同じ種類のキーに基づいて、新たなレコードを２番目のブロックに挿入して、挿入ブロックとする。
【００５３】
データ削除部１４２は、ブロックに含まれるレコードを削除する要求を受け取ると、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０の配置情報を参照し、そのレコードをブロックから削除する。尚、レコードが削除されたブロックを「削除ブロック」と証する。例えば、削除対象のレコードが２番目のブロックに含まれるとする。データ削除部１４２は、削除対象のレコードに含まれる所定のキーに基づいて２番目のブロックを抽出し、２番目のブロックからそのレコードを削除して削除ブロックとする。
【００５４】
判定部１４３は、挿入ブロックの大きさが、閾値内であるか否か（あるサイズより大きいか否か）を判定する。また、判定部１４３は、削除ブロックの大きさが、閾値内であるか否か（あるサイズより小さいか否か）を判定する。
【００５５】
再配置部１４４の説明をする。まず、データ挿入部１４１が新たなレコードを含むデータを受け取る場合を説明する。再配置部１４４は、挿入ブロックの大きさが閾値より大きい場合、挿入ブロックを半分の大きさに分割して、ブロックＦとブロックＲとを生成する。尚、挿入ブロックの前半分がブロックＦであり、後半分がブロックＲである。再配置部１４４は、スレーブ装置２００のひとつに、ＯｗｎｅｒとしてブロックＦを配置し、ＲｅｐｌｉｃａとしてブロックＲの複製を配置する。
【００５６】
次に、再配置部１４４は、新たなレコードが挿入されるブロックの複製をＲｅｐｌｉｃａとして格納しているスレーブ装置２００に、ＲｅｐｌｉｃａとしてブロックＦの複製を再配置する。更に、再配置部１４４は、新たなレコードが挿入されるブロックをＯｗｎｅｒとして格納しているスレーブ装置２００に、ＯｗｎｅｒとしてブロックＲを再配置する。再配置部１４４は、再配置後の配置情報を、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０に提供し、配置情報を更新する。
【００５７】
例えば、スレーブ装置２００ａにＯｗｎｅｒとして１番目のブロックが配置され、Ｒｅｐｌｉｃａとして２番目のブロックの複製が配置され、スレーブ装置２００ｂ（図示略）にＯｗｎｅｒとして２番目のブロックが配置され、Ｒｅｐｌｉｃａとして３番目のブロックの複製が配置されているとする。再配置部１４４は、２番目のブロックに新たなレコードが挿入された挿入ブロックの大きさが閾値より大きい場合、挿入ブロックをブロックＦとブロックＲとに分割する。再配置部１４４は、新たなスレーブ装置２００ｃ（図示略）に、ＯｗｎｅｒとしてブロックＦを配置し、ＲｅｐｌｉｃａとしてブロックＲの複製を配置する。再配置部１４４は、スレーブ装置２００ａにＲｅｐｌｉｃａとしてブロックＦの複製を再配置する。更に、再配置部１４４は、スレーブ装置２００ｂにＯｗｎｅｒとしてブロックＲを再配置する。尚、再配置部１４４は再配置するとき、スレーブ装置２００ａにＲｅｐｌｉｃａとして配置されている２番目のブロックの複製を削除させ、スレーブ装置２００ｂにＯｗｎｅｒとして配置されている２番目のブロックを削除させる。
【００５８】
一方、再配置部１４４は、挿入ブロックの大きさが閾値内の場合、新たなレコードの挿入対象となるブロック及びブロックの複製に、新たなレコードを挿入する。例えば、再配置部１４４は、スレーブ装置２００ａのＲｅｐｌｉｃａとして配置されている２番目のブロックの複製に、新たなレコードを挿入する。また、再配置部１４４は、スレーブ装置２００ｂのＯｗｎｅｒとして配置されている２番目のブロックに、新たなレコードを挿入する。
【００５９】
次に、データ削除部１４２がブロックに含まれるレコードを削除する要求を受け取る場合を説明する。再配置部１４４は、削除ブロックの大きさが閾値内の場合、所定のキーの順番により、削除ブロックの次の順番となるブロックと、削除ブロックとを統合して統合ブロックを生成する。再配置部１４４は、レコードが削除されるブロックの複製をＲｅｐｌｉｃａとして格納しているスレーブ装置２００に、Ｒｅｐｌｉｃａとして統合ブロックの複製を再配置する。また、再配置部１４４は、削除ブロックの次の順番となるブロックをＯｗｎｅｒとして格納しているスレーブ装置２００に、Ｏｗｎｅｒとして統合ブロックを再配置する。更に、再配置部１４４は、レコードが削除されるブロックをＯｗｎｅｒとして格納しているスレーブ装置２００を解放する（再配置部１４４は当該スレーブ装置２００に割り当てられているＯｗｎｅｒブロックとＲｅｐｌｉｃａブロックとを削除させる）。再配置部１４４は、再配置後の配置情報を、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０に提供し、配置情報を更新する。
【００６０】
例えば、スレーブ装置２００ａにＯｗｎｅｒとして１番目のブロックが配置され、Ｒｅｐｌｉｃａとして２番目のブロックの複製が配置され、スレーブ装置２００ｂ（図示略）にＯｗｎｅｒとして２番目のブロックが配置され、Ｒｅｐｌｉｃａとして３番目のブロックの複製が配置され、スレーブ装置２００ｄ（図示略）にＯｗｎｅｒとして３番目のブロックが配置されているとする。再配置部１４４は、２番目のブロックからレコードが削除された削除ブロックの大きさが閾値より小さい場合、削除ブロックと３番目のブロックとを統合して統合ブロックを生成する。再配置部１４４は、スレーブ装置２００ａにＲｅｐｌｉｃａとして統合ブロックの複製を再配置する。また、再配置部１４４は、スレーブ装置２００ｄにＯｗｎｅｒとして統合ブロックを再配置する。更に、再配置部１４４は、２番目のブロックをＯｗｎｅｒとして格納しているスレーブ装置２００ｂを解放する（再配置部１４４はスレーブ装置２００ｂに割り当てられているＯｗｎｅｒブロックとＲｅｐｌｉｃａブロックとを削除させる）。尚、再配置部１４４は再配置するとき、スレーブ装置２００ａにＲｅｐｌｉｃａとして配置されている２番目のブロックの複製を削除させ、スレーブ装置２００ｄにＯｗｎｅｒとして配置されている３番目のブロックを削除させる。
【００６１】
一方、再配置部１４４は、削除ブロックの大きさが閾値より大きい場合、レコードの削除対象となるブロック及びブロックの複製から、その対象となるレコードを削除する。例えば、再配置部１４４は、スレーブ装置２００ａのＲｅｐｌｉｃａとして配置されている２番目のブロックの複製から、その対象となるレコードを削除する。また、再配置部１４４は、スレーブ装置２００ｂのＯｗｎｅｒとして配置されている２番目のブロックから、その対象となるレコードを削除する。
【００６２】
図８は、本発明の第２の実施の形態によるデータ配置・計算システム２０の処理動作を示すフローチャートである。図８を参照して、データ配置・計算システム２０のデータ挿入処理を説明する。ここでは、データ配置・計算システム２０は、第１の実施の形態と同様の処理によって、各スレーブ装置２００にデータを既に分散配置させているものとする。
【００６３】
ステップＢ０１：
データ挿入部１４１は、新たなレコードを含むデータを受け取ると、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０の配置情報を参照する。データ挿入部１４１は、新たなレコードに含まれる前述した所定のキーと同じ種類のキーに基づいて、新たなレコードを対応するブロックに挿入し、挿入ブロックとする。
【００６４】
ステップＢ０２：
判定部１４３は、挿入ブロックの大きさが閾値内であるか否かを判定する。
【００６５】
ステップＢ０３：
ステップＢ０２において、挿入ブロックの大きさが閾値より大きい場合（ＹＥＳ）、再配置部１４４は挿入ブロックを半分の大きさに分割して、ブロックＦとブロックＲとを生成する。尚、挿入ブロックの前半分がブロックＦであり、後ろ半分がブロックＲである。
【００６６】
ステップＢ０４：
再配置部１４４は、新たなスレーブ装置２００に、Ｏｗｎｅｒとして前半分のブロックＦを配置し、Ｒｅｐｌｉｃａとして後半分のブロックＲの複製を配置する。
【００６７】
ステップＢ０５：
再配置部１４４は、Ｒｅｐｌｉｃａブロックを再配置する。つまり、再配置部１４４は、新たなレコードが挿入されるブロックの複製をＲｅｐｌｉｃａとして格納しているスレーブ装置２００に、ＲｅｐｌｉｃａとしてブロックＦの複製を再配置する。尚、再配置部１４４は再配置するとき、スレーブ装置２００にＲｅｐｌｉｃａとして配置されているブロックの複製を削除させる。
【００６８】
ステップＢ０６：
再配置部１４４は、Ｏｗｎｅｒブロックを再配置する。つまり、再配置部１４４は、新たなレコードが挿入されるブロックをＯｗｎｅｒとして格納しているスレーブ装置２００に、ＯｗｎｅｒとしてブロックＲを再配置する。尚、再配置部１４４は再配置するとき、スレーブ装置２００にＯｗｎｅｒとして配置されているブロックを削除させる。
【００６９】
ステップＢ０７：
再配置部１４４は、再配置後の配置情報を、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０に提供し、配置情報を更新する。
【００７０】
ステップＢ０８：
一方、ステップＢ０２において、挿入ブロックの大きさが閾値内の場合（ＮＯ）、再配置部１４４は、新たなレコードの挿入対象となるブロック及びブロックの複製に、新たなレコードを挿入する。
【００７１】
図９は、本発明の第２の実施の形態によるデータ配置・計算システム２０の処理動作を示すフローチャートである。図９を参照して、データ配置・計算システム２０のデータ削除処理を説明する。ここでも、データ配置・計算システム２０は、第１の実施の形態と同様の処理によって、各スレーブ装置２００にデータを既に分散配置させているものとする。
【００７２】
ステップＣ０１：
データ削除部１４２は、ブロックに含まれるレコードを削除する要求を受け取ると、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０の配置情報を参照し、そのレコードをブロックから削除し、削除ブロックとする。
【００７３】
ステップＣ０２：
判定部１４３は、削除ブロックの大きさが閾値内であるか否かを判定する。
【００７４】
ステップＣ０３：
ステップＣ０２において、削除ブロックの大きさが閾値内の場合（ＹＥＳ）、再配置部１４４は、所定のキーの順番により、削除ブロックの次の順番となるブロックと、削除ブロックとを統合して統合ブロックを生成する。
【００７５】
ステップＣ０４：
再配置部１４４は、Ｒｅｐｌｉｃａブロックを再配置する。つまり、再配置部１４４は、レコードが削除されるブロックの複製をＲｅｐｌｉｃａとして格納しているスレーブ装置２００に、Ｒｅｐｌｉｃａとして統合ブロックの複製を再配置する。尚、再配置部１４４は再配置するとき、スレーブ装置２００にＲｅｐｌｉｃａとして配置されているブロックの複製を削除させる。
【００７６】
ステップＣ０５：
再配置部１４４は、Ｏｗｎｅｒブロックを再配置する。つまり、再配置部１４４は、削除ブロックの次の順番となるブロックをＯｗｎｅｒとして格納しているスレーブ装置２００に、Ｏｗｎｅｒとして統合ブロックを再配置する。尚、再配置部１４４は再配置するとき、スレーブ装置２００にＯｗｎｅｒとして配置されているブロックを削除させる。
【００７７】
ステップＣ０６：
再配置部１４４は、レコードが削除されるブロックをＯｗｎｅｒとして格納しているスレーブ装置２００を解放する。
【００７８】
ステップＣ０７：
再配置部１４４は、再配置後の配置情報を、Ｏｗｎｅｒ／Ｒｅｐｌｉｃａ管理部１２０に提供し、配置情報を更新する。
【００７９】
ステップＣ０８：
一方、ステップＣ０２において、削除ブロックの大きさが閾値より大きい場合（ＮＯ）、再配置部１４４は、レコードの削除対象となるブロック及びブロックの複製から、そのレコードを削除する。
【００８０】
本発明の第２の実施の形態によるデータ配置・計算システム２０は、第１の実施の形態と同様に、ウィンドウ幅がＯｗｎｅｒブロックを超える場合でも、Ｒｅｐｌｉｃａブロックを用いて効率よくスライディングウィンドウ計算を実行させることができる。しかも、本発明の第２の実施の形態によるデータ配置・計算システム２０は、データが各スレーブ装置２００に配置された後にデータの挿入及び削除を行う場合でも、各スレーブ装置２００にデータの挿入及び削除が反映されたＯｗｎｅｒブロックとＲｅｐｌｉｃａブロックとを再配置させることができる。
【００８１】
以上、実施形態（及び実施例）を参照して本願発明を説明したが、本願発明は上記実施形態（及び実施例）に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【００８２】
この出願は、２００９年１２月７日に出願された日本出願特願２００９−２７７５２１を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【図１】
2011070910.tif 000003
【図２】
2011070910.tif 000004
【図３】
2011070910.tif 000005
【図４】
2011070910.tif 000006
【図５】
2011070910.tif 000007
【図６】
2011070910.tif 000008
【図７】
2011070910.tif 000009
【図８】
2011070910.tif 000010
【図９】
2011070910.tif 000011
【国際調査報告】
2011070910.tif 000012
2011070910.tif 000013
2011070910.tif 000014
2011070910.tif 000015