(57)【要約】【課題】ユビキタス環境において同種のセンサやアクチュエータが増大した場合にも、それらの間で行われるデータ通信やデータの蓄積を可能とするタプル蓄積・検索システムを提供する。【解決手段】タプルの蓄積・検索を行うタプル装置と、タプル装置に対してタプルの書込み要求を行う端末がネットワークを介して接続されたシステムであって、端末が、書込み用タプルについては、タプル分配表キャッシュに含まれるタプル装置アドレスのリストのうち１つのタプル装置アドレスを選択し（S107）、タプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルとを含むタプル書込み要求を送信する（S108）。【選択図】図20
2010198323.tif 000002
【特許請求の範囲】
【請求項１】
１つ以上の情報の組から成り、
検索条件を含む検索条件部と通信内容を含むメッセージボディ部、又は検索対象を含む検索対象部と通信内容を含むメッセージボディ部から構成される書込み用タプルと、
検索条件を含む検索条件部又は検索対象を含む検索対象部のみから構成される読み出し用タプルのどちらかに分類され、
前記検索対象部に含まれる各情報は、
識別情報をもち、
値として数値又は文字列をもち、
前記検索条件部に含まれる各情報は、
検索対象部に含まれる情報を識別する識別情報と、
当該識別情報で識別した検索対象部に含まれる情報の値を規定する数値若しくは文字列又は数値の範囲若しくは文字列の範囲をもつ
タプルについて、
蓄積・検索を行う１つ以上のタプル装置と、
前記タプル装置に対してタプルの書込み要求を行う端末が、
ネットワークを介して接続されたタプル蓄積・検索システムであって、
前記タプル装置は、
書込み用タプルを蓄積する書込み用タプル表と、
読み出し用タプルを蓄積する読み出し用タプル表と、
前記ネットワーク上の装置と通信を行う第１の通信部と、
該第１の通信部が書き込み用タプルのタプル書込み要求を受信した場合は、前記読み出し用タプル表に蓄積した各読み出し用タプルと当該書込み用タプルとの間で、一方に検索条件部、他方に検索対象部が含まれるときに、検索条件部に含まれる各情報が示す検索対象部に含まれる情報が、当該検索条件部に含まれる情報が規定した値に一致又は値の範囲に含まれるか否かを調べるマッチング処理を行い、検索条件部に含まれる全情報の規定を検索対象部に含まれる情報が満たす状態であるマッチ状態となったときに、該第１の通信部を通じて読み出し用タプルの書込み要求元に当該書込み用タプルを送信した後、当該書込み用タプルを書込み用タプル表に蓄積する書込み用タプル書込み処理部と、
該第１の通信部が読み出し用タプルのタプル書き込み要求を受信した場合は、前記書込み用タプル表に蓄積した各書込み用タプルと当該読み出し用タプルの前記マッチング処理を行い、マッチ状態となった書込み用タプルを、該第１の通信部を通じて読み出し用タプルの書込み要求元に送信した後、当該読み出し用タプルを読み出し用タプル表に蓄積する読み出し用タプル書込み処理部と、
を有し、
前記端末は、
前記タプル装置アドレスのリストを含むタプル装置分配表と、
前記ネットワーク上の装置と通信を行う第２の通信部と、
書込み用タプル又は読み出し用タプルの一方については、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち１つのタプル装置アドレスに該第２の通信部を通じてタプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルとを含むタプル書込み要求を送信し、他方については、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち全てのタプル装置アドレスに該第２の通信部を通じてタプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルを含むタプル書込み要求を送信するタプル書込み要求部と
を有する
ことを特徴とするタプル蓄積・検索システム。
【請求項２】
前記端末のタプル書込み要求部が、
検索対象を含む検索対象部と通信内容を含むメッセージボディ部から構成される書込み用タプルについては、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち１つのタプル装置アドレスに当該端末の前記第２の通信部を通じて、タプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルを含むタプル書込み要求を送信し、
検索条件を含む検索条件部のみから構成される読み出し用タプルについては、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち全てのタプル装置アドレスに当該端末の前記第２の通信部を通じて、タプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルを含むタプル書込み要求を送信する
ことを特徴とする請求項１に記載のタプル蓄積・検索システム。
【請求項３】
前記端末のタプル書込み要求部が、
検索対象を含む検索対象部のみから構成される読み出し用タプルについては、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち１つのタプル装置アドレスに当該端末の前記第２の通信部を通じて、タプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルを含むタプル書込み要求を送信し、
検索条件を含む検索条件部と通信内容を含むメッセージボディ部から構成される書込み用タプルについては、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち全てのタプル装置アドレスに当該端末の前記第２の通信部を通じて、タプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルを含むタプル書込み要求を送信する
ことを特徴とする請求項１に記載のタプル蓄積・検索システム。
【請求項４】
さらに、前記ネットワークに接続されていて前記タプルの書込み先を決定するタプル分配装置を備え、
前記タプル装置が、当該タプル装置起動時に、前記タプル分配装置に当該タプル装置の前記第１の通信部を通じて、タプル装置追加要求を示すメッセージ種別情報と当該タプル装置の通信アドレスを含むタプル装置追加要求を送信する負荷監視／分散処理部を有し、
前記端末のタプル書込要求部が、前記タプル書込み要求を当該端末の前記第２の通信部を通じて送信する前に、該第２の通信部を通じて前記タプル分配装置に分配先問合せを示すメッセージ種別情報を含む分配先問合せを送信し、前記タプル分配装置から受信した分配先問合せ回答内容で当該端末の前記タプル装置分配表を更新し、
前記タプル分配装置が、
タプル装置アドレスのリストを含むタプル装置分配表と、
前記ネットワーク上の装置と通信を行う第３の通信部と、
前記端末から当該タプル分配装置の前記第３の通信部を通じて受信した前記分配先問合せに応じ、該分配先問合せへの回答として、前記分配先問合せ回答を示すメッセージ種別情報と、当該タプル分配装置の前記タプル装置分配表に記載されたタプル装置アドレスのリストを含む分配先問合せ回答を、該第３の通信部を通じて前記端末に送信する分配先問合せ処理部と、
前記タプル装置から当該タプル分配装置の前記第３の通信部を通じて受信したタプル装置追加要求に応じ、当該タプル分配装置の前記タプル装置分配表に含まれるタプル装置アドレスのリストに、当該タプル装置を追加するタプル装置負荷平準化部と
を有する
ことを特徴とする請求項１から３のいずれか１項に記載のタプル蓄積・検索システム。
【請求項５】
前記タプル装置が、
前記タプル分配装置から当該タプル装置の前記第１の通信部を通じて受信した負荷情報要求に応じ、当該タプル装置にかかる記憶負荷を記憶負荷情報として計測した結果に基づき、回答として該第１の通信部を通じて負荷情報を示すメッセージ種別情報と当該記憶負荷情報を含む負荷情報を負荷情報要求元の前記タプル分配装置に送信する負荷監視/分散処理部を有し、
前記端末において、
前記タプル装置分配表が、前記タプル装置アドレスのリストに加え、各前記タプル装置の書込み可能フラグを含み、
前記タプル書込み要求が、前記タプル書込み要求を示すメッセージ種別情報と書込むタプルの種別を表すタプル種別情報と書込むタプルに加え、前記書込みフラグを含み、
前記タプル書込み要求部が、
前記書込み用タプル又は前記読み出し用タプルについて、当該端末の前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち１つのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信する際、前記書込み可能フラグがオフのタプル装置アドレスは送信先に選ばず、また、前記書込み可能フラグがオフのタプル装置アドレスに対しては前記書込みフラグをオンとして該タプル書込み要求を送信し、また、
前記書込み用タプル又は前記読み出し用タプルについて、当該端末の前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち全てのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信する際、前記書込み可能フラグがオフのタプル装置アドレスに対しては前記書込みフラグをオフとして該タプル書込み要求を送信し、前記書込み可能フラグがオンのタプル装置アドレスに対しては前記書込みフラグをオンとして該タプル書込み要求を送信し、
前記タプル分配装置の前記タプル装置分配表が、前記タプル装置アドレスのリストに加え、各前記タプル装置の書込み可能フラグを含み、
前記タプル分配装置が、
前記タプル装置アドレスとその記憶負荷情報を含むタプル装置負荷表と、
前記タプル装置分配表に含まれるタプル装置アドレスのリストに対し、定期的に当該タプル分配装置の前記第３の通信部を通じて、負荷情報要求を示すメッセージ種別情報を含む負荷情報要求を送信し、各前記タプル装置から回答として受信した記憶負荷情報を含む負荷情報を前記タプル装置負荷表の該当する行に上書きもしくは新しい行として追記するタプル装置負荷監視部と
を有し、
前記タプル分配装置において、
前記分配先問合せ処理部が、前記端末から当該タプル分配装置の前記第３の通信部を通じて受信した分配先問合せに応じ、分配先問合せへの回答として、分配先問合せ回答を示すメッセージ種別情報と、当該タプル分配装置の前記タプル装置分配表に記載されたタプル装置アドレスのリストと各タプル装置の書込み可能フラグを含む分配先問合せ回答を、該第３の通信部を通じて前記端末に送信し、
前記タプル装置負荷平準部が、
前記タプル装置から当該タプル分配装置の前記第３の通信部を通じて受信したタプル装置追加要求に応じ、当該タプル分配装置の前記タプル装置分配表に含まれるタプル装置アドレスのリストに、当該タプル装置のアドレスを、書込み可能フラグをオンに設定して追加し、
定期的に前記タプル装置負荷表を参照し、各前記タプル装置の記憶負荷が過剰であるか否かを判定し、過剰と判定したタプル装置については、当該タプル分配装置の前記タプル装置分配表の当該タプル装置に対応する書込み可能フラグをオフに設定する
ことを特徴とする請求項４に記載のタプル蓄積・検索システム。
【請求項６】
前記端末の前記タプル装置分配表が、前記タプルが含む１つ以上の情報に含まれる１つ以上の情報又はそれをもとに算出される情報であり、数値又は文字列である分散キーの範囲と、各範囲に対応するタプル装置アドレスのリストを含み、
前記端末の前記タプル書込み要求部が、
前記書込み用タプル又は前記読み出し用タプルの一方について、当該タプルから分散キーを抽出又は算出し、当該端末の前記タプル装置分配表から当該分散キーを含む分散キー範囲に対応するタプル装置アドレスのリストを読み出し、当該タプル装置アドレスのリストのうち1つのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信し、
前記書込み用タプル又は読み出し用タプルの他方について、当該タプルから分散キーを抽出又は算出し、当該端末の前記タプル装置分配表から当該分散キーを含む分散キー範囲に対応するタプル装置アドレスのリストを読み出し、当該タプル装置アドレスのリストのうち全てのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信し、
かつ、当該端末の前記第２の通信部を通じて前記タプル分配装置に分配先問合せを送信する際には、分配先問合せに当該タプルの分散キーを含ませ、
前記タプル分配装置のタプル装置分配表が、前記分散キーの範囲と、各範囲に対応するタプル装置アドレスのリストを含み、
前記タプル分配装置の前記分配先問合せ処理部が、前記端末から当該タプル分配装置の前記第３の通信部を通じて受信した分配先問合せに応じ、分配先問合せへの回答として、分配先問合せ回答を示すメッセージ種別情報と、分配先問合せに含められた分散キーを含むタプル装置分配表に記載された分散キー範囲に対応するタプル装置アドレスのリストを含む分配先問合せ回答を、当該タプル分配装置の前記第３の通信部を通じて前記端末に送信し、
前記タプル分配装置の前記タプル装置負荷平準部が、
前記タプル装置から当該タプル分配装置の前記第３の通信部を通じて受信したタプル装置追加要求に応じ、
当該タプル分配装置の前記タプル装置分配表に分散キー範囲が１つも記述されていない場合には、分散キーの最小値から最大値までの範囲と、それに対応するタプル装置アドレスとしてタプル装置追加要求元のタプル装置アドレスを追加し、
当該タプル分配装置の前記タプル装置分配表に分散キー範囲が１つ以上登録されている場合には、そのうち１つの分散キー範囲と対応するタプル装置アドレスのリストをタプル装置分配表から削除し、削除した分散キー範囲を２つに分割した２つの範囲を、それぞれの範囲に対応するタプル装置アドレスのリストを削除したタプル装置アドレスのリストとして、該タプル装置分配表に加え、さらに追加した２つのタプル装置アドレスのリストの一方に、当該タプル装置追加要求元のタプル装置アドレスを追加し、
定期的に当該タプル分配装置の前記タプル装置負荷表を参照し、各タプル装置の記憶負荷が過剰であるか否かを判定し、過剰と判定したタプル装置については、該タプル装置分配表の当該タプル装置に対応する書込み可能フラグをオフに設定し、これにより当該タプル装置が含まれていた当該タプル分配装置の前記タプル装置分配表内のタプル装置アドレスリストに書込み可能フラグがオンのタプル装置が０個になった場合には、さらに前記タプル装置負荷表を参照し、負荷の低いタプル装置を選出し、前記書込み可能フラグをオフにしたタプル装置のアドレスが含まれている当該タプル分配装置の前記タプル装置分配表内のタプル装置アドレスリストに、前記負荷が低いタプル装置のアドレスを追加する
ことを特徴とする請求項５に記載のタプル蓄積・検索システム。
【請求項７】
前記タプル装置の前記負荷監視／分散処理部が、前記タプル分配装置から当該タプル装置の前記第１の通信部を通じて受信した負荷情報要求に応じ、当該タプル装置にかかる処理負荷を処理負荷情報として計測した結果に基づき、回答として当該タプル装置の前記第１の通信部を通じて、負荷情報を示すメッセージ種別情報と当該処理負荷情報を含む負荷情報を、負荷情報要求元のタプル分配装置に送信し、
前記端末の前記タプル装置分配表が、前記タプルが含む１つ以上の情報に含まれる１つ以上の情報又はそれをもとに算出される情報であり、数値又は文字列である分散キーの範囲と、各範囲に対応するタプル装置アドレスのリストを含み、
前記端末のタプル書込み要求部が、
前記書込み用タプル又は前記読み出し用タプルの一方について、当該タプルから分散キーを抽出又は算出し、当該端末の前記タプル装置分配表から当該分散キーを含む分散キー範囲に対応するタプル装置アドレスのリストを読み出し、当該タプル装置アドレスのリストのうち１つのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信し、
書込み用タプルもしくは読み出し用タプルの他方について、当該タプルから分散キーを抽出又は算出し、当該端末の前記タプル装置分配表から当該分散キーを含む分散キー範囲に対応するタプル装置アドレスのリストを読み出し、当該タプル装置アドレスのリストのうち全てのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信し、
かつ、当該端末の前記第２の通信部を通じて前記タプル分配装置に分配先問合せを送信する際には、前記分配先問合せに当該タプルの分散キーを含ませ、
前記タプル分配装置の前記タプル装置分配表が、前記分散キーの範囲と、各範囲に対応するタプル装置アドレスのリストを含み、
前記タプル分配装置の分配先問合せ処理部が、前記端末から当該タプル分配装置の前記第３の通信部を通じて受信した分配先問合せに応じ、分配先問合せへの回答として、分配先問合せ回答を示すメッセージ種別情報と、分配先問合せに含められた分散キーを含む当該タプル分配装置の前記タプル装置分配表に記載された分散キー範囲に対応するタプル装置アドレスのリストを含む分配先問合せ回答を、当該タプル分配装置の前記第３の通信部を通じて前記端末に送信し、
前記タプル分配装置のタプル装置負荷平準部が、
前記タプル装置から当該タプル分配装置の前記第３の通信部を通じて受信したタプル装置追加要求に応じ、
当該タプル分配装置の前記タプル装置分配表に分散キー範囲が１つも記述されていない場合には、分散キーの最小値から最大値までの範囲と、それに対応するタプル装置アドレスとしてタプル装置追加要求元のタプル装置アドレスを追加し、
当該タプル分配装置の前記タプル装置分配表に分散キー範囲が１つ以上登録されている場合には、そのうち１つの分散キー範囲と対応するタプル装置アドレスのリストをタプル装置分配表から削除し、削除した分散キー範囲を２つに分割した２つの範囲を、それぞれの範囲に対応するタプル装置アドレスのリストを削除したタプル装置アドレスのリストとして、タプル装置分配表に加え、さらに追加した２つのタプル装置アドレスのリストの一方に、当該タプル装置追加要求元のタプル装置アドレスを追加し、
定期的に当該タプル分配装置の前記タプル装置負荷表を参照し、各前記タプル装置の処理負荷が過剰であるか否かを判定し、過剰と判定したタプル装置については、さらに該タプル装置負荷表を参照し、負荷の低いタプル装置を選出し、前記過剰と判定したタプル装置のアドレスが含まれている当該タプル分配装置の前記タプル装置分配表内のタプル装置アドレスリストに、前記負荷の低いタプル装置のアドレスを追加する
ことを特徴とする請求項４〜６記載のいずれか１項に記載のタプル蓄積・検索システム。
【請求項８】
属性と属性値の組み合わせを１又は複数含むタプルの蓄積・検索を行う複数のタプル装置と、前記タプル装置に対してタプルの書込み要求を行う１又は複数の端末とを備え、タプル装置で前記タプルのうちの読み出し用タプルと書込み用タプルがマッチングした場合、当該読み出し用タプルの書込み元に当該書込み用タプルが送信されるシステムにおいて、
前記タプルが、
通信内容を示す属性値からなるメッセージボディ部と検索対象の属性値からなる検索対象部とから構成されるイベント書込み用タプルと、
前記イベント書込み用タプルに対する検索条件の属性値からなる検索条件部から構成されるイベント読み出し用タプルと、
検索対象の属性値からなる検索対象部から構成されるコマンド読み出し用タプルと、
通信内容を示す属性値からなるメッセージボディ部と前記コマンド読み出し用タプルに対する検索条件の属性値からなる検索条件部とから構成されるコマンド書込み用タプルと、
に分類され、
前記タプル装置に対する前記１又は複数の端末のうちのいずれかの端末からのタプルの書込み要求の際、
前記１又は複数の端末のうちのいずれかの端末が、
前記イベント書込み用タプルを前記タプル装置のいずれか１つのみに登録し、
前記イベント読み出し用タプルを前記タプル装置の全てに登録し、
前記コマンド読み出し用タプルを前記タプル装置のいずれか１つのみに登録し、
前記コマンド書込み用タプルを前記タプル装置の全てに登録する
ことを特徴とするタプル蓄積・検索方法。
【請求項９】
属性と属性値の組み合わせを１又は複数含むタプルの蓄積・検索を行う複数のタプル装置と、前記タプル装置に対してタプルの書込み要求を行う１又は複数の端末とを備え、タプル装置で前記タプルのうちの読み出し用タプルと書込み用タプルがマッチングした場合、当該読み出し用タプルの書込み元に当該書込み用タプルが送信されるシステムにおいて用いられるタプル装置であって、
前記タプルが、
通信内容を示す属性値からなるメッセージボディ部と検索対象の属性値からなる検索対象部とから構成されるイベント書込み用タプルと、
前記イベント書込み用タプルに対する検索条件の属性値からなる検索条件部から構成されるイベント読み出し用タプルと、
検索対象の属性値からなる検索対象部から構成されるコマンド読み出し用タプルと、
通信内容を示す属性値からなるメッセージボディ部と前記コマンド読み出し用タプルに対する検索条件の属性値からなる検索条件部とから構成されるコマンド書込み用タプルと、
に分類されるものであり、
前記端末からのタプルの書込み要求に応じて、
前記イベント書込み用タプルを前記タプル装置のいずれか１つのみに登録し、
前記イベント読み出し用タプルを前記タプル装置の全てに登録し、
前記コマンド読み出し用タプルを前記タプル装置のいずれか１つのみに登録し、
前記コマンド書込み用タプルを前記タプル装置の全てに登録する
ことを特徴とするタプル装置。
【請求項１０】
属性と属性値の組み合わせを１又は複数含むタプルの蓄積・検索を行う複数のタプル装置と、前記タプル装置に対してタプルの書込み要求を行う１又は複数の端末とを備え、タプル装置で前記タプルのうちの読み出し用タプルと書込み用タプルがマッチングした場合、当該読み出し用タプルの書込み元に当該書込み用タプルが送信されるシステムにおいて用いられるタプル分配装置であって、
前記タプルが、
通信内容を示す属性値からなるメッセージボディ部と検索対象の属性値からなる検索対象部とから構成されるイベント書込み用タプルと、
前記イベント書込み用タプルに対する検索条件の属性値からなる検索条件部から構成されるイベント読み出し用タプルと、
検索対象の属性値からなる検索対象部から構成されるコマンド読み出し用タプルと、
通信内容を示す属性値からなるメッセージボディ部と前記コマンド読み出し用タプルに対する検索条件の属性値からなる検索条件部とから構成されるコマンド書込み用タプルと、
に分類されるものであって、
前記タプル装置に対する前記端末からのタプルの書込み要求の際、
前記イベント書込み用タプルが前記タプル装置のいずれか１つのみに登録され、
前記イベント読み出し用タプルが前記タプル装置の全てに登録され、
前記コマンド読み出し用タプルが前記タプル装置のいずれか１つのみに登録され、
前記コマンド書込み用タプルが記タプル装置の全てに登録されるものであり、
前記タプルの検索・蓄積に用いる該タプルの内容に基づく分散キーの範囲に対応させて、タプル装置の通信アドレスの管理するためのリストを含むタプル分配表と、
前記タプルの書込み要求に際し、前記端末から書き込み先のタプル装置についての問い合わせを受けた場合に、当該書き込み要求を行うタプルの分散キーに応じて、前記タプル分配表から書込み先のタプル装置の通信アドレスを当該端末に対して回答する分配先問い合わせ処理部と
を備えることを特徴とするタプル分配装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ネットワークにおける共有データの分散管理に係り、ユビキタスネットワークなどのネットワーク内に分散配置されたアプリケーション間で、ネットワークを介してデータを共有する際に用いて好適なタプル蓄積・検索システム、タプル蓄積・検索方法、タプル装置及びタプル分配装置に関する。
【背景技術】
【０００２】
ユビキタスアプリケーションでは、偏在するセンサやアクチュエータなどの各種デバイス群と、センサデータサーバやアクチュエータ制御サーバなど計算機群が、互いにデータをやり取りすることでサービスを提供する。このようなユビキタスアプリケーションは、各々のデバイスと計算機上に配置された各アプリケーションプログラムが並列的に処理を行なう分散プログラムとして開発・運用される。
【０００３】
この際、デバイス群は多種大量に存在し、デバイス自体が随時追加・更改される。また移動体に設置されたデバイスは、その位置や収容されるNW（ネットワーク）が変化し得る。また必ずしも常時通信できるとは限らない。また一方で、新たなサービスの開発とともに、デバイスと通信する計算機も随時追加・変更されうる。
【０００４】
このようなダイナミックに変化しうるユビキタス環境でのアプリケーション開発・運用においては、データをやりとりする相手の通信アドレスや状態（NWへの接続状況や存在そのもの）を意識せずにプログラミング・実行できる環境が必要となる。この環境を実現する方法として、並列プログラミングの概念Linda（非特許文献１参照）で提案されたタプル空間（Tuple Space）の利用が有効である（非特許文献２参照）。
【０００５】
Tuple Spaceは概念上の共有メモリであり、そこにデータ（タプル）を書込み/読み出しすることで、アプリケーションプログラム同士で通信を行なう。たとえて言うならば、掲示板の役目を果たす。送信側アプリケーションプログラム（送信者）はデータを掲示板に書込む。一方、受信側アプリケーションプログラム（受信者）は、必要とするデータの条件を指定して掲示板を検索し、条件にマッチしたデータを読込む。具体的には、送信者の書込み用タプル（Actual;アクチュアル）と受信者の読出し用タプル（Formal;フォーマル）のマッチング処理により通信が発生する。タプルは一般に、ある一定のデータ構造をもつデータであり、通常、1つまたは複数の値もしくは1つまたは複数のAVペア（属性（Attribute）と属性値（Value）のペア）からなる。この掲示板を介した間接通信により、アプリケーションプログラムは、送受信するデータの掲示板（Tuple Space）への読書きだけで、通信相手を意識することなく通信できるようになる。このようにデータ送受信を単純化できるため、環境変化に関係なく、それぞれのアプリケーションプログラムを独立に開発・運用することが可能になる。
【０００６】
ユビキタス環境においては、デバイスや流通するデータの量が膨大となるため、このTuple Spaceの実装には高いスケール性が必要となる。高いスケール性を実現するには、ネットワーク上に分散した多数のサーバ群を使ってTuple Spaceを構築することとなるが、Tuple Spaceは本来集中型のシステムであり、概念的には1つのTuple Spaceに全てのデータが存在するよう機能させる必要があるため、どのように分散制御を行うかが問題とされてきた。
【０００７】
この問題に対し、例えば複数のサーバに、ランダムにタプルを振り分けて処理させるようにすると、確かに負荷分散は可能であるが、書込み用タプルと読み出し用タプル間のマッチング処理に漏れが生じ、ユーザが意図した通りに間接通信を行うことが不可能となる。
そこで非特許文献３では、各タプルにサブジェクトという属性を統一的に含ませ、サブジェクトのAVペアを分散キーとし、DHT（Distributed Hash Table；分散ハッシュテーブル）を用いて分散制御を行うことを提案している。これにより、同じサブジェクトをもつ書込み用タプルと読み出し用タプル間では、必ずマッチング処理が行われることとなる。
【先行技術文献】
【非特許文献】
【０００８】
【非特許文献１】D. Gelernter, "Generative Communication in Linda," ACM Transaction on Programming Language and Systems, Vol. 7, No.1, January
【非特許文献２】増井俊之, 塚田浩二，“全世界プログラミング”情報処理学会2006年夏のプログラミングシンポジウム, September 2006
【非特許文献３】Yi Jiang, Guangtao Xue, Zhaoqing Jia and Jinyuan You, "DTuples: A Distributed Hash Table based Tuple Space Service for Distributed Coordination," Gridand Cooperative Computing, 2006. Fifth International Conference, Oct. 2006 Pages 101-106.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
前記非特許文献３で提案された分散制御方式は、同じ分散キーをもつタプルは同一のサーバに登録されるため、同じ分散キーをもつタプルを単位時間あたりに読み書きできる量、あるいは蓄積できる量は、1台のサーバの処理能力・蓄積能力に制限されてしまうという問題がある。
【００１０】
本発明は、このような事情を考慮し、上記の問題を解決すべくなされたもので、その目的は、同じ分散キーをもつタプルを単位時間あたりに読み書きできる量、あるいは蓄積できる量が、1台のサーバの処理能力・蓄積能力に制限されないようにし、ユビキタス環境において同種のセンサやアクチュエータが増大した場合、あるいは同一のアプリケーションの利用量が増大した場合にも、それらの間で行われるデータ通信やデータの蓄積を可能とするタプル蓄積・検索システム、タプル蓄積・検索方法、タプル装置及びタプル分配装置を提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するため、請求項１記載の発明は、１つ以上の情報の組から成り、検索条件を含む検索条件部と通信内容を含むメッセージボディ部、又は検索対象を含む検索対象部と通信内容を含むメッセージボディ部から構成される書込み用タプルと、検索条件を含む検索条件部又は検索対象を含む検索対象部のみから構成される読み出し用タプルのどちらかに分類され、前記検索対象部に含まれる各情報は、識別情報をもち、値として数値又は文字列をもち、前記検索条件部に含まれる各情報は、検索対象部に含まれる情報を識別する識別情報と、当該識別情報で識別した検索対象部に含まれる情報の値を規定する数値若しくは文字列又は数値の範囲若しくは文字列の範囲をもつタプルについて、蓄積・検索を行う１つ以上のタプル装置と、前記タプル装置に対してタプルの書込み要求を行う端末が、ネットワークを介して接続されたタプル蓄積・検索システムであって、前記タプル装置は、書込み用タプルを蓄積する書込み用タプル表と、読み出し用タプルを蓄積する読み出し用タプル表と、前記ネットワーク上の装置と通信を行う第１の通信部と、該第１の通信部が書き込み用タプルのタプル書込み要求を受信した場合は、前記読み出し用タプル表に蓄積した各読み出し用タプルと当該書込み用タプルとの間で、一方に検索条件部、他方に検索対象部が含まれるときに、検索条件部に含まれる各情報が示す検索対象部に含まれる情報が、当該検索条件部に含まれる情報が規定した値に一致又は値の範囲に含まれるか否かを調べるマッチング処理を行い、検索条件部に含まれる全情報の規定を検索対象部に含まれる情報が満たす状態であるマッチ状態となったときに、該第１の通信部を通じて読み出し用タプルの書込み要求元に当該書込み用タプルを送信した後、当該書込み用タプルを書込み用タプル表に蓄積する書込み用タプル書込み処理部と、該第１の通信部が読み出し用タプルのタプル書き込み要求を受信した場合は、前記書込み用タプル表に蓄積した各書込み用タプルと当該読み出し用タプルの前記マッチング処理を行い、マッチ状態となった書込み用タプルを、該第１の通信部を通じて読み出し用タプルの書込み要求元に送信した後、当該読み出し用タプルを読み出し用タプル表に蓄積する読み出し用タプル書込み処理部と、を有し、前記端末は、前記タプル装置アドレスのリストを含むタプル装置分配表と、前記ネットワーク上の装置と通信を行う第２の通信部と、書込み用タプル又は読み出し用タプルの一方については、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち１つのタプル装置アドレスに該第２の通信部を通じてタプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルとを含むタプル書込み要求を送信し、他方については、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち全てのタプル装置アドレスに該第２の通信部を通じてタプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルを含むタプル書込み要求を送信するタプル書込み要求部とを有することを特徴とするタプル蓄積・検索システムである。
【００１２】
請求項２記載の発明は、前記端末のタプル書込み要求部が、検索対象を含む検索対象部と通信内容を含むメッセージボディ部から構成される書込み用タプルについては、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち１つのタプル装置アドレスに当該端末の前記第２の通信部を通じて、タプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルを含むタプル書込み要求を送信し、検索条件を含む検索条件部のみから構成される読み出し用タプルについては、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち全てのタプル装置アドレスに当該端末の前記第２の通信部を通じて、タプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルを含むタプル書込み要求を送信することを特徴とする。
【００１３】
請求項３記載の発明は、前記端末のタプル書込み要求部が、検索対象を含む検索対象部のみから構成される読み出し用タプルについては、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち１つのタプル装置アドレスに当該端末の前記第２の通信部を通じて、タプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルを含むタプル書込み要求を送信し、検索条件を含む検索条件部と通信内容を含むメッセージボディ部から構成される書込み用タプルについては、前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち全てのタプル装置アドレスに当該端末の前記第２の通信部を通じて、タプル書込み要求を示すメッセージ種別情報と当該タプルの種別を表すタプル種別情報と当該タプルを含むタプル書込み要求を送信することを特徴とする。
【００１４】
請求項４記載の発明は、さらに、前記ネットワークに接続されていて前記タプルの書込み先を決定するタプル分配装置を備え、前記タプル装置が、当該タプル装置起動時に、前記タプル分配装置に当該タプル装置の前記第１の通信部を通じて、タプル装置追加要求を示すメッセージ種別情報と当該タプル装置の通信アドレスを含むタプル装置追加要求を送信する負荷監視／分散処理部を有し、前記端末のタプル書込要求部が、前記タプル書込み要求を当該端末の前記第２の通信部を通じて送信する前に、該第２の通信部を通じて前記タプル分配装置に分配先問合せを示すメッセージ種別情報を含む分配先問合せを送信し、前記タプル分配装置から受信した分配先問合せ回答内容で当該端末の前記タプル装置分配表を更新し、前記タプル分配装置が、タプル装置アドレスのリストを含むタプル装置分配表と、前記ネットワーク上の装置と通信を行う第３の通信部と、前記端末から当該タプル分配装置の前記第３の通信部を通じて受信した前記分配先問合せに応じ、該分配先問合せへの回答として、前記分配先問合せ回答を示すメッセージ種別情報と、当該タプル分配装置の前記タプル装置分配表に記載されたタプル装置アドレスのリストを含む分配先問合せ回答を、該第３の通信部を通じて前記端末に送信する分配先問合せ処理部と、前記タプル装置から当該タプル分配装置の前記第３の通信部を通じて受信したタプル装置追加要求に応じ、当該タプル分配装置の前記タプル装置分配表に含まれるタプル装置アドレスのリストに、当該タプル装置を追加するタプル装置負荷平準化部とを有することを特徴とする。
【００１５】
請求項５記載の発明は、前記タプル装置が、前記タプル分配装置から当該タプル装置の前記第１の通信部を通じて受信した負荷情報要求に応じ、当該タプル装置にかかる記憶負荷を記憶負荷情報として計測した結果に基づき、回答として該第１の通信部を通じて負荷情報を示すメッセージ種別情報と当該記憶負荷情報を含む負荷情報を負荷情報要求元の前記タプル分配装置に送信する負荷監視/分散処理部を有し、前記端末において、前記タプル装置分配表が、前記タプル装置アドレスのリストに加え、各前記タプル装置の書込み可能フラグを含み、前記タプル書込み要求が、前記タプル書込み要求を示すメッセージ種別情報と書込むタプルの種別を表すタプル種別情報と書込むタプルに加え、前記書込みフラグを含み、前記タプル書込み要求部が、前記書込み用タプル又は前記読み出し用タプルについて、当該端末の前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち１つのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信する際、前記書込み可能フラグがオフのタプル装置アドレスは送信先に選ばず、また、前記書込み可能フラグがオフのタプル装置アドレスに対しては前記書込みフラグをオンとして該タプル書込み要求を送信し、また、前記書込み用タプル又は前記読み出し用タプルについて、当該端末の前記タプル装置分配表に含まれるタプル装置アドレスのリストのうち全てのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信する際、前記書込み可能フラグがオフのタプル装置アドレスに対しては前記書込みフラグをオフとして該タプル書込み要求を送信し、前記書込み可能フラグがオンのタプル装置アドレスに対しては前記書込みフラグをオンとして該タプル書込み要求を送信し、前記タプル分配装置の前記タプル装置分配表が、前記タプル装置アドレスのリストに加え、各前記タプル装置の書込み可能フラグを含み、前記タプル分配装置が、前記タプル装置アドレスとその記憶負荷情報を含むタプル装置負荷表と、前記タプル装置分配表に含まれるタプル装置アドレスのリストに対し、定期的に当該タプル分配装置の前記第３の通信部を通じて、負荷情報要求を示すメッセージ種別情報を含む負荷情報要求を送信し、各前記タプル装置から回答として受信した記憶負荷情報を含む負荷情報を前記タプル装置負荷表の該当する行に上書きもしくは新しい行として追記するタプル装置負荷監視部とを有し、前記タプル分配装置において、前記分配先問合せ処理部が、前記端末から当該タプル分配装置の前記第３の通信部を通じて受信した分配先問合せに応じ、分配先問合せへの回答として、分配先問合せ回答を示すメッセージ種別情報と、当該タプル分配装置の前記タプル装置分配表に記載されたタプル装置アドレスのリストと各タプル装置の書込み可能フラグを含む分配先問合せ回答を、該第３の通信部を通じて前記端末に送信し、前記タプル装置負荷平準部が、前記タプル装置から当該タプル分配装置の前記第３の通信部を通じて受信したタプル装置追加要求に応じ、当該タプル分配装置の前記タプル装置分配表に含まれるタプル装置アドレスのリストに、当該タプル装置のアドレスを、書込み可能フラグをオンに設定して追加し��定期的に前記タプル装置負荷表を参照し、各前記タプル装置の記憶負荷が過剰であるか否かを判定し、過剰と判定したタプル装置については、当該タプル分配装置の前記タプル装置分配表の当該タプル装置に対応する書込み可能フラグをオフに設定することを特徴とする。
【００１６】
請求項６記載の発明は、前記端末の前記タプル装置分配表が、前記タプルが含む１つ以上の情報に含まれる１つ以上の情報又はそれをもとに算出される情報であり、数値又は文字列である分散キーの範囲と、各範囲に対応するタプル装置アドレスのリストを含み、前記端末の前記タプル書込み要求部が、前記書込み用タプル又は前記読み出し用タプルの一方について、当該タプルから分散キーを抽出又は算出し、当該端末の前記タプル装置分配表から当該分散キーを含む分散キー範囲に対応するタプル装置アドレスのリストを読み出し、当該タプル装置アドレスのリストのうち1つのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信し、前記書込み用タプル又は読み出し用タプルの他方について、当該タプルから分散キーを抽出又は算出し、当該端末の前記タプル装置分配表から当該分散キーを含む分散キー範囲に対応するタプル装置アドレスのリストを読み出し、当該タプル装置アドレスのリストのうち全てのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信し、かつ、当該端末の前記第２の通信部を通じて前記タプル分配装置に分配先問合せを送信する際には、分配先問合せに当該タプルの分散キーを含ませ、前記タプル分配装置のタプル装置分配表が、前記分散キーの範囲と、各範囲に対応するタプル装置アドレスのリストを含み、前記タプル分配装置の前記分配先問合せ処理部が、前記端末から当該タプル分配装置の前記第３の通信部を通じて受信した分配先問合せに応じ、分配先問合せへの回答として、分配先問合せ回答を示すメッセージ種別情報と、分配先問合せに含められた分散キーを含むタプル装置分配表に記載された分散キー範囲に対応するタプル装置アドレスのリストを含む分配先問合せ回答を、当該タプル分配装置の前記第３の通信部を通じて前記端末に送信し、前記タプル分配装置の前記タプル装置負荷平準部が、前記タプル装置から当該タプル分配装置の前記第３の通信部を通じて受信したタプル装置追加要求に応じ、当該タプル分配装置の前記タプル装置分配表に分散キー範囲が１つも記述されていない場合には、分散キーの最小値から最大値までの範囲と、それに対応するタプル装置アドレスとしてタプル装置追加要求元のタプル装置アドレスを追加し、当該タプル分配装置の前記タプル装置分配表に分散キー範囲が１つ以上登録されている場合には、そのうち１つの分散キー範囲と対応するタプル装置アドレスのリストをタプル装置分配表から削除し、削除した分散キー範囲を２つに分割した２つの範囲を、それぞれの範囲に対応するタプル装置アドレスのリストを削除したタプル装置アドレスのリストとして、該タプル装置分配表に加え、さらに追加した２つのタプル装置アドレスのリストの一方に、当該タプル装置追加要求元のタプル装置アドレスを追加し、定期的に当該タプル分配装置の前記タプル装置負荷表を参照し、各タプル装置の記憶負荷が過剰であるか否かを判定し、過剰と判定したタプル装置については、該タプル装置分配表の当該タプル装置に対応する書込み可能フラグをオフに設定し、これにより当該タプル装置が含まれていた当該タプル分配装置の前記タプル装置分配表内のタプル装置アドレスリストに��込み可能フラグがオンのタプル装置が０個になった場合には、さらに前記タプル装置負荷表を参照し、負荷の低いタプル装置を選出し、前記書込み可能フラグをオフにしたタプル装置のアドレスが含まれている当該タプル分配装置の前記タプル装置分配表内のタプル装置アドレスリストに、前記負荷が低いタプル装置のアドレスを追加することを特徴とする。
【００１７】
請求項７記載の発明は、前記タプル装置の前記負荷監視／分散処理部が、前記タプル分配装置から当該タプル装置の前記第１の通信部を通じて受信した負荷情報要求に応じ、当該タプル装置にかかる処理負荷を処理負荷情報として計測した結果に基づき、回答として当該タプル装置の前記第１の通信部を通じて、負荷情報を示すメッセージ種別情報と当該処理負荷情報を含む負荷情報を、負荷情報要求元のタプル分配装置に送信し、前記端末の前記タプル装置分配表が、前記タプルが含む１つ以上の情報に含まれる１つ以上の情報又はそれをもとに算出される情報であり、数値又は文字列である分散キーの範囲と、各範囲に対応するタプル装置アドレスのリストを含み、前記端末のタプル書込み要求部が、前記書込み用タプル又は前記読み出し用タプルの一方について、当該タプルから分散キーを抽出又は算出し、当該端末の前記タプル装置分配表から当該分散キーを含む分散キー範囲に対応するタプル装置アドレスのリストを読み出し、当該タプル装置アドレスのリストのうち１つのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信し、書込み用タプルもしくは読み出し用タプルの他方について、当該タプルから分散キーを抽出又は算出し、当該端末の前記タプル装置分配表から当該分散キーを含む分散キー範囲に対応するタプル装置アドレスのリストを読み出し、当該タプル装置アドレスのリストのうち全てのタプル装置アドレスに当該端末の前記第２の通信部を通じてタプル書込み要求を送信し、かつ、当該端末の前記第２の通信部を通じて前記タプル分配装置に分配先問合せを送信する際には、前記分配先問合せに当該タプルの分散キーを含ませ、前記タプル分配装置の前記タプル装置分配表が、前記分散キーの範囲と、各範囲に対応するタプル装置アドレスのリストを含み、前記タプル分配装置の分配先問合せ処理部が、前記端末から当該タプル分配装置の前記第３の通信部を通じて受信した分配先問合せに応じ、分配先問合せへの回答として、分配先問合せ回答を示すメッセージ種別情報と、分配先問合せに含められた分散キーを含む当該タプル分配装置の前記タプル装置分配表に記載された分散キー範囲に対応するタプル装置アドレスのリストを含む分配先問合せ回答を、当該タプル分配装置の前記第３の通信部を通じて前記端末に送信し、前記タプル分配装置のタプル装置負荷平準部が、前記タプル装置から当該タプル分配装置の前記第３の通信部を通じて受信したタプル装置追加要求に応じ、当該タプル分配装置の前記タプル装置分配表に分散キー範囲が１つも記述されていない場合には、分散キーの最小値から最大値までの範囲と、それに対応するタプル装置アドレスとしてタプル装置追加要求元のタプル装置アドレスを追加し、当該タプル分配装置の前記タプル装置分配表に分散キー範囲が１つ以上登録されている場合には、そのうち１つの分散キー範囲と対応するタプル装置アドレスのリストをタプル装置分配表から削除し、削除した分散キー範囲を２つに分割した２つの範囲を、それぞれの範囲に対応するタプル装置アドレスのリストを削除したタプル装置アドレスのリストとして、タプル装置分配表に加え、さらに追加した２つのタプル装置アドレスのリストの一方に、当該タプル装置追加要求元のタプル装置アドレスを追加し、定期的に当該タプル分配装置の前記タプル装置負荷表を参照し、各前記タプル装置の処理負荷が過剰であるか否かを判定し、過剰と判定したタプル装置については、さらに該タプル装置負荷表を参照し、負荷の低いタプル装置を選出し、前記過剰と判定したタプル装置のアドレスが含まれている当該タプル分配装置の前記タプル装置分配表内のタプル装置アドレスリストに、前記負荷の低いタプル装置のアドレスを追加する
ことを特徴とする。
【００１８】
請求項８記載の発明は、属性と属性値の組み合わせを１又は複数含むタプルの蓄積・検索を行う複数のタプル装置と、前記タプル装置に対してタプルの書込み要求を行う１又は複数の端末とを備え、タプル装置で前記タプルのうちの読み出し用タプルと書込み用タプルがマッチングした場合、当該読み出し用タプルの書込み元に当該書込み用タプルが送信されるシステムにおいて、前記タプルが、通信内容を示す属性値からなるメッセージボディ部と検索対象の属性値からなる検索対象部とから構成されるイベント書込み用タプルと、前記イベント書込み用タプルに対する検索条件の属性値からなる検索条件部から構成されるイベント読み出し用タプルと、検索対象の属性値からなる検索対象部から構成されるコマンド読み出し用タプルと、通信内容を示す属性値からなるメッセージボディ部と前記コマンド読み出し用タプルに対する検索条件の属性値からなる検索条件部とから構成されるコマンド書込み用タプルと、に分類され、前記タプル装置に対する前記１又は複数の端末のうちのいずれかの端末からのタプルの書込み要求の際、前記１又は複数の端末のうちのいずれかの端末が、前記イベント書込み用タプルを前記タプル装置のいずれか１つのみに登録し、前記イベント読み出し用タプルを前記タプル装置の全てに登録し、前記コマンド読み出し用タプルを前記タプル装置のいずれか１つのみに登録し、前記コマンド書込み用タプルを前記タプル装置の全てに登録することを特徴とするタプル蓄積・検索方法である。
【００１９】
請求項９記載の発明は、属性と属性値の組み合わせを１又は複数含むタプルの蓄積・検索を行う複数のタプル装置と、前記タプル装置に対してタプルの書込み要求を行う１又は複数の端末とを備え、タプル装置で前記タプルのうちの読み出し用タプルと書込み用タプルがマッチングした場合、当該読み出し用タプルの書込み元に当該書込み用タプルが送信されるシステムにおいて用いられるタプル装置であって、前記タプルが、通信内容を示す属性値からなるメッセージボディ部と検索対象の属性値からなる検索対象部とから構成されるイベント書込み用タプルと、前記イベント書込み用タプルに対する検索条件の属性値からなる検索条件部から構成されるイベント読み出し用タプルと、検索対象の属性値からなる検索対象部から構成されるコマンド読み出し用タプルと、通信内容を示す属性値からなるメッセージボディ部と前記コマンド読み出し用タプルに対する検索条件の属性値からなる検索条件部とから構成されるコマンド書込み用タプルと、に分類されるものであり、前記端末からのタプルの書込み要求に応じて、前記イベント書込み用タプルを前記タプル装置のいずれか１つのみに登録し、前記イベント読み出し用タプルを前記タプル装置の全てに登録し、前記コマンド読み出し用タプルを前記タプル装置のいずれか１つのみに登録し、前記コマンド書込み用タプルを前記タプル装置の全てに登録することを特徴とするタプル装置である。
【００２０】
請求項１０記載の発明は、属性と属性値の組み合わせを１又は複数含むタプルの蓄積・検索を行う複数のタプル装置と、前記タプル装置に対してタプルの書込み要求を行う１又は複数の端末とを備え、タプル装置で前記タプルのうちの読み出し用タプルと書込み用タプルがマッチングした場合、当該読み出し用タプルの書込み元に当該書込み用タプルが送信されるシステムにおいて用いられるタプル分配装置であって、前記タプルが、通信内容を示す属性値からなるメッセージボディ部と検索対象の属性値からなる検索対象部とから構成されるイベント書込み用タプルと、前記イベント書込み用タプルに対する検索条件の属性値からなる検索条件部から構成されるイベント読み出し用タプルと、検索対象の属性値からなる検索対象部から構成されるコマンド読み出し用タプルと、通信内容を示す属性値からなるメッセージボディ部と前記コマンド読み出し用タプルに対する検索条件の属性値からなる検索条件部とから構成されるコマンド書込み用タプルと、に分類されるものであって、前記タプル装置に対する前記端末からのタプルの書込み要求の際、前記イベント書込み用タプルが前記タプル装置のいずれか１つのみに登録され、前記イベント読み出し用タプルが前記タプル装置の全てに登録され、前記コマンド読み出し用タプルが前記タプル装置のいずれか１つのみに登録され、前記コマンド書込み用タプルが記タプル装置の全てに登録されるものであり、前記タプルの検索・蓄積に用いる該タプルの内容に基づく分散キーの範囲に対応させて、タプル装置の通信アドレスの管理するためのリストを含むタプル分配表と、前記タプルの書込み要求に際し、前記端末から書き込み先のタプル装置についての問い合わせを受けた場合に、当該書き込み要求を行うタプルの分散キーに応じて、前記タプル分配表から書込み先のタプル装置の通信アドレスを当該端末に対して回答する分配先問い合わせ処理部とを備えることを特徴とするタプル分配装置である。
【発明の効果】
【００２１】
本発明によれば、書込み用タプルあるいは読み出し用タプルの一方を、タプル（属性データと属性値データの対）の蓄積・検索（間接通信）処理を行う複数のタプル装置の全てに対して登録し、他方を、前記複数のタプル装置の１つにのみ登録するようにした。これにより、分散キーによらず、分散処理が行われるため、同一の分散キーをもつ書込み用タプルと読み出し用タプル間のマッチング処理や蓄積処理でも、複数のタプル装置間で分散処理することが可能となる。
【００２２】
特に本発明は、書込み用タプルと読み出し用タプルのうち単位時間あたりの登録量、蓄積量が大きい方を、タプル装置の1つのみに登録することにより、分散処理のオーバーヘッドを抑えることが可能である。
【００２３】
また本発明によれば、検索対象部とメッセージボディ部からなる書込み用タプルをタプル装置の１つのみに、検索条件部のみからなる読み出し用タプルをタプル装置の全てに登録することとした。例えば、ユビキタス環境において、センサデータをメッセージボディ部に、そのメタデータを検索対象部に保持させた書込み用タプルと、読み出したいセンサデータの条件を検索条件部に保持させた読み出し用タプルを用いれば、タプル空間（Tuple Space）によるセンサデータの蓄積・検索を行うことが可能であるが、このとき通常前者のタプルの数に比べて後者のタプルの数ははるかに少なく、本発明により、前者の少ないタプルのみを全タプル装置に登録すればよいため、効率的な分散処理が可能となる。
【００２４】
また本発明によれば、検索対象部のみからなる読み出し用タプルをタプル装置の１つのみに、検索条件部とメッセージボディ部からなる書込み用タプルをタプル装置の全てに登録することとした。例えば、ユビキタス環境において、アクチュエータのメタデータを検索対象部に保持させた読み出し用タプルと、アクチュエータの動作指示を行うコマンドデータをメッセージボディ部に、動作指示を行いたいアクチュエータの条件を検索条件部に保持させた書込み用タプルを用いれば、タプル空間（Tuple Space）によるコマンドデータの蓄積・配布を行うことが可能であるが、このとき通常前者のタプルの数に比べて後者のタプルの数ははるかに少なく、本発明により、前者の少ないタプルのみを全タプル装置に登録すればよいため、効率的な分散処理が可能となる。
【００２５】
また本発明によれば、タプル分配装置を設け、タプル分配装置がタプル装置のリストを一元管理し、タプル空間（Tuple Space）にタプルを書き込む各端末が、当該タプル装置リストを参照し、登録先のタプル装置を選択するようにした。これにより、タプル装置をシステムに追加することができるようになり、流通・蓄積するタプルの量が増大した場合に、各端末の設定情報を変える必要なく、タプル装置を増設することが可能となる。
【００２６】
また本発明によれば、前記タプル分配装置が各タプル装置の記憶負荷を監視し、記憶負荷が過剰となったタプル装置を検出した場合には、タプル装置リストの中の当該タプル装置に書込み可能フラグOFF（オフ）を設定した。また各端末は、それ以降タプルを１つのタプル装置に書き込む際には、書込み可能フラグOFFでないタプル装置から書込み先を１つ選択し、タプルをすべてのタプル装置に書き込む際には、書込み可能フラグOFFのタプル装置には「書込みフラグOFF」として書込み要求を行うこととした。またタプル装置は、「書込みフラグOFF」でタプル書込み要求を受けた場合には、マッチング処理のみは行うが、当該タプルの蓄積は行わないという処理手順とした。これにより、漏れ・重複のないタプル蓄積・検索を維持しつつ、記憶負荷が過剰となったタプル装置に対して、それ以上タプルの蓄積をしないでよいこととなり、記憶負荷がそれ以上増え、タプル蓄積失敗によるタプルの喪失を防ぐことが可能となる。
【００２７】
また本発明によれば、前記タプル分配装置は、タプルから抽出される分散キーの値を範囲分けし、各分散キー範囲を受け持つタプル装置リストを記載したタプル分配表を保持し、前記端末は、当該タプル分配表を参照し、タプルの分散キーに応じて、それを含む分散キー範囲を受け持つタプル装置リストにのみ当該タプルを書き込めばよいこととした。また記憶負荷が過剰となり、書込み可能フラグがOFFになったタプル装置が現れた場合には、当該タプル装置が受け持っていた分散キー範囲を受け持つタプル装置リストに、記憶負荷が小さい他のタプル装置を加えることとした。これにより、タプル書込みを全てのタプル装置に行う必要がなくなり、また記憶負荷が過剰となったタプル装置が出現しても、当該タプル装置が受け持っていた分散キー範囲内の分散キーをもつタプルの蓄積が不可能とならず、別のタプル装置に蓄積することが可能となる。
【００２８】
また本発明によれば、前記タプル分配装置は、各タプル装置の処理負荷を監視し、処理負荷が過剰となったタプル装置を検出した場合には、当該タプル装置が受け持っていた分散キー範囲を受け持つタプル装置リストに、処理負荷が小さい他のタプル装置を加えることとした。これにより、処理負荷が過剰となったタプル装置が出現しても、当該タプル装置が受け持っていた分散キー範囲内の分散キーをもつタプルの蓄積・検索が処理量溢れのため不可能とならず、別のタプル装置にて蓄積・検索することが可能となる。
【図面の簡単な説明】
【００２９】
【図１】本発明による共有データ分散管理システムの一実施の形態としてのタプル蓄積・検索システム1の構成例を示すシステム全体図である。
【図２】図1の実施形態で用いるイベント書込み用タプルの一例を示す図である。
【図３】図1の実施形態で用いるイベント読み出し用タプルの一例を示す図である。
【図４】図1の実施形態で用いるコマンド書込み用タプルの一例を示す図である。
【図５】図1の実施形態で用いるコマンド読み出し用タプルの一例を示す図である。
【図６】図1のタプル装置201の構成例を示すブロック図である。
【図７】図6のイベント書込み用タプル表209の一例を示す図である。
【図８】図6のイベント読み出し用タプル表210の一例を示す図である。
【図９】図6のコマンド書込み用タプル表211の一例を示す図である。
【図１０】図6のコマンド読み出し用タプル表212の一例を示す図である。
【図１１】図6の分配情報更新時刻キャッシュ表213の一例を示す図である。
【図１２】図1のタプル分配装置301の構成例を示すブロック図である。
【図１３】図12のタプル分配表304の一例を示す図である。
【図１４】図12のタプル装置負荷表307の一例を示す図である。
【図１５】図1のタプル分配装置301の構成例を示すブロック図である。
【図１６】図15のタプル分配表405の一例を示す図である。
【図１７】図15のU/I部403によるタプル入力画面403aの一例を示す図である。
【図１８】図1のセンサ端末501の構成例を示すブロック図である。
【図１９】図1のアクチュエータ端末601の構成例を示すブロック図である。
【図２０】図1の実施形態におけるイベント書込み用タプル書き込み処理フローを示すフローチャートである。
【図２１】図1の実施形態におけるイベント読み出し用タプル書き込み処理フローを示すフローチャートである。
【図２２】図1の実施形態におけるコマンド書込み用タプル書き込み処理フローを示すフローチャートである。
【図２３】図1の実施形態におけるコマンド読み出し用タプル書き込み処理フローを示すフローチャートである。
【図２４】図1の実施形態における負荷監視及び負荷分散処理フローを示すフローチャートである。
【図２５】図1の実施形態におけるタプル装置追加処理フローを示すフローチャートである。
【図２６】図1の実施形態におけるタプル装置分配停止処理フローを示すフローチャートである。
【図２７】図1の実施形態における処理負荷分散処理フローを示すフローチャートである。
【図２８】図1の実施形態における記憶負荷分散処理フローを示すフローチャートである。
【図２９】図1の実施形態における負荷分散処理フローを示すフローチャートである。
【図３０】図1の実施形態で用いるタプル装置追加要求メッセージの一例を示す図である。
【図３１】図1の実施形態で用いるタプル書込み要求メッセージの一例を示す図である。
【図３２】図1の実施形態で用いる負荷情報メッセージの一例を示す図である。
【図３３】図1の実施形態で用いる負荷分散要求メッセージの一例を示す図である。
【図３４】図1の実施形態で用いる分配情報時刻キャッシュ更新要求メッセージの一例を示す図である。
【図３５】図1の実施形態で用いる分配停止可能メッセージの一例を示す図である。
【図３６】図1の実施形態で用いる分配先問合せメッセージの一例を示す図である。
【図３７】図1の実施形態で用いる分配先問合せ回答メッセージの一例を示す図である。
【図３８】図1の実施形態で用いるタプルコピー要求メッセージの一例を示す図である。
【図３９】図1の実施形態で用いるタプル送信メッセージの一例を示す図である。
【発明を実施するための形態】
【００３０】
図1は、本発明の一実施形態としてのタプル蓄積・検索システム1を示す概略ブロック図である。タプル蓄積・検索システム1は、ネットワーク101を介して接続されたタプルの蓄積・検索を行う1つ以上のタプル装置201と、タプルの書込み先を決定するタプル分配装置301と、タプル分配装置の指示に従い、タプル装置に対してタプルの書込み要求を行うユーザ端末401/センサ端末501/アクチュエータ端末601とからなる。ユーザ端末401/センサ端末501/アクチュエータ端末601はそれぞれ1つ以上存在してもよい。ネットワーク101は、インターネットなどの公衆網、LAN（Local Area Network）、専用線などの私設網からなる。なお、タプル、タプル空間、及び、タプル空間におけるタプルの分散化の基本的な手法については、背景技術として上述したとおりである。また、ユーザ端末401/センサ端末501/アクチュエータ端末601には、各装置を識別する固有の情報である端末ID（端末識別符号）が各々割り当てられている。また、通信時には、各装置及び各端末に割り当てられた通信アドレス（図1では「12.34.56.78」や「87.65.43.21」として示す。）を宛先としてデータが送受信される。
【００３１】
本実施形態では、センサ端末501から得られたセンサデータなどの通信内容（メッセージボディ部）とそのメタデータ（検索対象部）を保持する「イベント書込み用タプル」と、読み出したいセンサデータの条件（検索条件部）を保持する「イベント読み出し用タプル」と、コマンドデータ（メッセージボディ部）と送信したいアクチュエータ端末601の条件（検索条件部）を保持する「コマンド書込み用タプル」と、アクチュエータ端末601のメタデータ（検索対象部）を保持する「コマンド読み出し用タプル」との4種類のタプルを扱う。各タプルの例を図2〜図5に示す。図に示すように、タプルに含まれる各情報は、属性（名）と属性値から成り、属性を各情報の識別情報として用いる。また検索条件部の属性値は、1つの数値や文字列だけでなく、数値や文字列の範囲をも取り得る。なお、本願においてメタデータとは、検索の対象となるデータを説明するデータであるとしている。
【００３２】
図2はイベント書込み用タプル11の一例を示す図である。図2に示す例では、「センサ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」、「端末ID」及び「メッセージボディ」が属性（あるいは属性名）である。そして、「“温度”」、「“定期取得”」、「“126030”」、「“501018”」、「“2008/11/11 12:34:56”」、「“123456”」及び「“温度＝“23.5℃””」が属性値である。この場合、「メッセージボディ」がメッセージボディ部11b、それ以外の「センサ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」及び「端末ID」が検索対象部11aとなる。図2のイベント書込み用タプル11は、端末ID「“123456”」が割り当てられているセンサ端末501などから、タプル分配装置301によって指示されたタプル装置201へと送られて、蓄積される。
【００３３】
なお、図2〜図5の各タプルにおいて、「センサ種別」は、センサの種別を表す情報であり、センサの検知対象などの情報を示す。「アクチュエータ種別」は、アクチュエータの種別を表す情報であり、アクチュエータの動作対象などの情報を示す。「メッセージタイプ」は、当該タプルのメッセージボディの取得、生成や指示などの処理形態を表す情報であり、センサ端末501において一定時間毎に取得される定期取得や、アクチュエータ端末601において指定した動作を要求する動作要求などの情報を示す。「端末ID」は、センサ端末501、アクチュエータ端末601やユーザ端末401の識別情報となる各端末固有の識別符号を表す。「メッセージボディ」は、当該タプルのデータ本体の情報であり、センサ端末501による検知結果やアクチュエータ端末601による動作内容の情報などを示す。
【００３４】
なお、本実施形態において、各タプルは、１つ以上の情報の組から成り、検索条件を含む検索条件部と通信内容を含むメッセージボディ部又は検索対象を含む検索対象部と通信内容を含むメッセージボディ部から構成される書込み用タプルと、検索条件を含む検索条件部又は検索対象を含む検索対象部のみから構成される読み出し用タプルのどちらかに分類される。そして、検索対象部に含まれる各情報は、識別情報（属性）をもち、値（属性値）として数値又は文字列をもち、検索条件部に含まれる各情報は、検索対象部に含まれる情報を識別する識別情報（属性）と、当該識別情報で識別した検索対象部に含まれる情報の値を規定する数値若しくは文字列又は数値の範囲若しくは文字列の範囲をもっている。
【００３５】
図3はイベント読み出し用タプル12の一例を示す図である。図3に示す例では、「センサ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」及び「端末ID」が属性（あるいは属性名）である。そして、「“温度”」、「“定期取得”」、「“126000〜126060”」、「“501000〜501120”」、「“2008/01/01 00:00:00”〜“2008/12/31 23:59:59”」及び「“00000”〜“99999”」が属性値である。これら各属性が検索条件部12cとなる。図3のイベント読み出し用タプル12は、例えばユーザ端末401において入力された情報に基づいて生成され、タプル分配装置301によって指示されたタプル装置201へと送られて、蓄積される。
【００３６】
図4はコマンド書込み用タプル21の一例を示す図である。図4に示す例では、「アクチュエータ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」、「端末ID」及び「メッセージボディ」が属性（あるいは属性名）である。そして、「“ライト”」、「“動作要求”」、「“126000〜126060”」、「“501000〜501120”」、「“2008/01/01 00:00:00”〜“2008/12/31 23:59:59”」、「“00000”〜“99999”」及び「“動作内容＝“点灯””」が属性値である。この場合、「メッセージボディ」がメッセージボディ部21b、それ以外の「アクチュエータ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」及び「端末ID」が検索条件部21cとなる。図4のコマンド書込み用タプル21は、例えばユーザ端末401において入力された情報に基づいて生成され、タプル分配装置301によって指示されたタプル装置201へと送られて、蓄積される。
【００３７】
図5はコマンド読み出し用タプル22の一例を示す図である。図5に示す例では、「アクチュエータ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」及び「端末ID」が属性（あるいは属性名）である。そして、「“ライト”」、「“動作要求”」、「“126030”」、「“501018”」、「“2008/11/11 12:34:56”」及び「“123456”」が属性値である。これら各属性が検索対象部22aとなる。図5のコマンド読み出し用タプル22は、例えばアクチュエータ端末601において生成され、タプル分配装置301によって指示されたタプル装置201へと送られて、蓄積される。
【００３８】
また本実施形態では、書込み用タプルと、読み出し用タプル双方に必ず含まれる属性として、センサ種別とメッセージタイプ、もしくはアクチュエータ種別とメッセージタイプの2つのAVペアをそれぞれ分散キーとして利用する。特に本実施形態では、これら2つのAVペアを並べた文字列（例えば、「センサ種別＝“温度”」および「メッセージタイプ=“定期取得”」という2つのAVペアであれば「センサ別＝“温度”メッセージタイプ=“定期取得”」という文字列）をハッシュ関数にかけ、ハッシュ値に変換したものを分散キーとする。文字列のままでは分散キーに片寄が生じるような場合であっても、ハッシュ値に変換することによって、分散キーを均一に分散させることができる。例えば文字列のままでは「あ」から始まる分散キーが多いといったことが生じるが、ハッシュ値に変換することにより分散キーが確率的に均等に分散するようになる。
【００３９】
次に、図1に示すタプル装置201の内部構成ついて説明する。図6は、タプル装置201の構成を示すブロック図である。タプル装置201は、通信部202と、イベント書込み用タプル書込み処理部203と、イベント読み出し用タプル書込み処理部204と、コマンド書込み用タプル書込み処理部205と、コマンド読み出し用タプル書込み処理部206と、負荷監視/分散処理部207と、タプル有効期限監視部208と、イベント書込み用タプル表209と、イベント読み出し用タプル表210と、コマンド書込み用タプル表211と、コマンド読み出し用タプル表212と、分配情報更新時刻キャッシュ表213とを備える。各表209〜213の構造はそれぞれ図7〜図11に示す通りである。
【００４０】
図7は、図6のイベント書込み用タプル表209の一例を示す図である。図7のイベント書込み用タプル表209は、図2を参照して説明したイベント書込み用タプル11毎の、「分散キー」、「センサ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」、「端末ID」、「メッセージボディ」及び「有効期限」の各項目のデータを複数組有して構成されている。これらのうち、「センサ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」、「端末ID」及び「メッセージボディ」の各項目は、図2を参照して説明したイベント書込みタプルの各属性に対応している。また、「分散キー」は各タプルを複数のタプル装置201に分散して蓄積する場合に当該タプルの分散の手がかりあるいは検索の手がかりとなる情報である。本実施形態では、上述したように、センサ種別とメッセージタイプ（又はアクチュエータ種別とメッセージタイプの2つ）のAVペアをハッシュ値に変換したものを分散キーとして用いている。「有効期限」は、当該タプルの蓄積期限を示す。
【００４１】
図8は、図6のイベント読み出し用タプル表210の一例を示す図である。図8のイベント読み出し用タプル表210は、図3を参照して説明したイベント読み出し用タプル12毎の、「分散キー」、「センサ種別」、「メッセージタイプ」、「緯度」（の範囲）、「経度」（の範囲）、「時刻」（の範囲）、「端末ID」（の範囲）、「書込み元通信アドレス」及び「有効期限」の各項目のデータを複数組有して構成されている。「センサ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」及び「端末ID」の各項目は、図3を参照して説明したイベント読み出し用タプル12の各属性に対応している。また、この例では、「緯度」の範囲、「経度」の範囲、「時刻」の範囲及び「端末ID」の範囲を、始点と終点の情報で表現されている。「書込み元通信アドレス」は、当該イベント読み出し用タプル12の書込み元の端末（ユーザ端末401）の通信アドレスを示す。
【００４２】
図9は、図6のコマンド書込み用タプル表211の一例を示す図である。図9のコマンド書込み用タプル表211は、図4を参照して説明したコマンド書込み用タプル21毎の、「分散キー」、「アクチュエータ種別」、「メッセージタイプ」、「緯度」（の範囲）、「経度」（の範囲）、「時刻」（の範囲）、「端末ID」（の範囲）、「メッセージボディ」及び「有効期限」の各項目のデータを複数組有して構成されている。「アクチュエータ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」、「端末ID」及び「メッセージボディ」の各項目は、図4を参照して説明したコマンド書込み用タプル21の各属性に対応している。
【００４３】
図10は、図6のコマンド読み出し用タプル表212の一例を示す図である。図10のコマンド読み出し用タプル表212は、図5を参照して説明したコマンド読み出し用タプル22毎の、「分散キー」、「アクチュエータ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」、「端末ID」、「書込み元通信アドレス」及び「有効期限」の各項目のデータを複数組有して構成されている。「アクチュエータ種別」、「メッセージタイプ」、「緯度」、「経度」、「時刻」及び「端末ID」の各項目は、図5を参照して説明したコマンド読み出し用タプル22の各属性に対応している。
【００４４】
図11は、図6の分配情報更新時刻キャッシュ表213の一例を示す図である。図11の分配情報更新時刻キャッシュ表213は、「分散キー」の始点と終点及び「分配情報更新時刻キャッシュ値」の各項目データを、「分散キー」の始点と終点で決まる範囲毎に、テーブル内の複数の行に対応させて、複数組有して構成されている。「分配情報更新時刻キャッシュ値」は、端末401〜601からのタプルの書込み要求に含まれる分配情報更新時刻の値の、「分散キー」毎の最新の値を示す情報である。「分配情報更新時刻キャッシュ値」によって、分散キーの範囲毎に、各タプル表209〜212の更新時刻の最新の値を知ることができる。
【００４５】
なお、図6に示すタプル装置201の各部は、コンピュータ及びその周辺装置からなるハードウェア資源とそのコンピュータ等よって実行されるプログラムとを用いて実現することができる。その場合、図6に示す各部は、ハードウェア資源とプログラムとの組み合わせによって実現される複数の機能を実現するものである。ただし、図6に示す各部は、他の部分と統合したり、あるいは各部をさらに分割したりすることが可能である。なお、後述するタプル分配装置301やユーザ端末401/センサ端末501/アクチュエータ端末601についても同様である。
【００４６】
タプル装置201において、通信部202は、ユーザ端末401/センサ端末501/アクチュエータ端末601からのタプル書込み要求受信と、ユーザ端末401/センサ端末501/アクチュエータ端末601への読み出したタプルの送信（タプル送信メッセージ）と、タプル分配装置301からの負荷情報要求と負荷分散要求と分配情報時刻キャッシュ更新要求と分配停止完了メッセージの受信と、タプル分配装置301へのタプル装置追加要求の送信と、タプル分配装置301への負荷情報メッセージと分配停止可能メッセージの送信と、負荷分散処理時の他のタプル装置201とのタプルコピー要求の送受信とを行う。これらの送受信で用いられるタプル書込み要求メッセージ、タプル送信メッセージ、負荷分散要求メッセージ、分配情報時刻キャッシュ更新要求メッセージ、タプル装置追加要求メッセージ、負荷情報メッセージ、分配停止可能メッセージ、タプルコピー要求メッセージのデータ内容はそれぞれ図31、図39、図33、図34、図30、図32、図35、図38に示す通りである。なお、以降の記述も含め、特に図示しないメッセージについては、メッセージ種別のみを含む。
【００４７】
図31は、タプル書込み要求メッセージのデータ内容（すなわち引数）の一例を示す図である。図31に示すタプル書込み要求メッセージは、「メッセージ種別」、「タプル種別」、「分散キー」、「分配情報更新時刻」、「有効期限」、「書込みフラグ」及び「タプル内容」を含んでいる。「メッセージ種別」は当該メッセージの種類を示す情報である。メッセージの種類によって異なる値が設定される。「タプル種別」は図2〜図5を参照して説明した4種類のタプルのうちでこのメッセージによって書き込みを要求するタプルの種類を示す情報である。「分散キー」と「有効期限」は図7を参照して上述した通りである。「分配情報更新時刻」は、このメッセージによってタプルの書き込み要求を行うことでタプルの分配情報を更新する際の時刻を示す情報である。「書込みフラグ」は、「ON」（オン）又は「OFF」（オフ）の2値を表すフラグであり、タプル分配装置301による監視結果に基づき、当該タプル書込み要求メッセージの送信先のタプル装置201の記憶負荷が過剰となっている場合に「OFF」、そうでない場合に「ON」に設定される。タプル装置201は、「書込みフラグOFF」のタプル書込み要求を受けた場合には、マッチング処理は行うが、当該タプルの蓄積は行わない。「タプル内容」は、書き込みを要求しているタプルの各属性及び各属性値を含んでいる。
【００４８】
センサ端末401、センサ端末501、アクチュエータ端末601の各端末がタプル書込み要求を行う契機は、例えば、ユーザからの要求があった時、端末の起動時、センサがセンシングを行った時など、種々の場合があり得る。
【００４９】
図39は、タプル送信メッセージのデータ内容の一例を示す図である。図39のタプル送信メッセージは、「メッセージ種別」、「タプル種別」、及び「＜タプル＞リスト」を含んでいる。「メッセージ種別」及び「タプル種別」は、上記と同じである。「＜タプル＞リスト」は、複数のタプルの各属性及び各属性値を含んでいる。
【００５０】
図33は、負荷分散要求メッセージのデータ内容の一例を示す図である。図33の負荷分散要求メッセージは、「メッセージ種別」、「分散キー範囲始点」、「分散キー範囲終点」、「HDD書込み停止フラグ」及び「ヘルプタプル装置アドレス」を含んでいる（「HDD」はハードディスクドライブの略。）。「分散キー範囲始点」及び「分散キー範囲終点」は、負荷分散を要求するタプルの分散キーの範囲の始点及び終点を示す。「HDD書込み停止フラグ」は「ON」又は「OFF」の2値を表すフラグであり、当該メッセージの送信元タプル装置201が書き込み不可の場合に「ON」、そうでない場合に「OFF」に設定される。「ヘルプタプル装置アドレス」は、処理負荷又は記憶負荷が過剰となっている当該メッセージの送信元タプル装置201の処理又は記憶の一部又は全部を引き受けさせる他のタプル装置201（ヘルプタプル装置と呼ぶ。）の通信アドレスを示す情報である。「ヘルプタプル装置アドレス」は、図33に示すように指定しないこともできる。処理負荷又は記憶負荷が過剰となっている当該メッセージの送信元タプル装置201を被ヘルプタプル装置と呼ぶ。
【００５１】
図34は、分配情報時刻キャッシュ更新要求メッセージのデータ内容の一例を示す図である。図34の分配情報時刻キャッシュ更新要求メッセージは、「メッセージ種別」、「分散キー範囲始点」、「分散キー範囲終点」及び「分配情報時刻」を含んでいる。「メッセージ種別」、「分散キー範囲始点」及び「分散キー範囲終点」は、上記と同じである。「分配情報時刻」は、分配情報時刻キャッシュ表213内の分配情報更新時刻キャッシュ値（行）の更新・追加するための情報である。
【００５２】
図30は、タプル装置追加要求メッセージのデータ内容の一例を示す図である。図30のタプル装置追加要求メッセージは、「メッセージ種別」、「送信元タプル装置通信アドレス」、「処理容量」及び「記憶容量」を含んでいる。「メッセージ種別」は、上記と同じである。「送信元タプル装置通信アドレス」は、当該メッセージの送信元タプル装置201の通信アドレスを示す情報である。「処理容量」は追加するタプル装置201（すなわち当該メッセージの送信元タプル装置201）の処理容量、「記憶容量」は追加するタプル装置201の記憶容量を示す情報である。
【００５３】
図32は、負荷情報メッセージのデータ内容の一例を示す図である。図32の負荷情報メッセージは、「メッセージ種別」、「送信元タプル装置通信アドレス」、「処理負荷」及び「記憶負荷」を含んでいる。「メッセージ種別」及び「送信元タプル装置通信アドレス」は上記と同じである。「処理負荷」及び「記憶負荷」は当該メッセージの送信元タプル装置201の処理負荷及び記憶負荷を示す情報である。「処理負荷」及び「記憶負荷」は、上記の「処理容量」及び「記憶容量」と同一単位の値を用いて表される。
【００５４】
図35は、分配停止可能メッセージのデータ内容の一例を示す図である。図35の分配停止可能メッセージは、「メッセージ種別」、「分散キー範囲始点」、「分散キー範囲終点」及び「送信元タプル装置通信アドレス」を含んでいる。これらの各要素は、上記と同じである。
【００５５】
図38は、タプルコピー要求メッセージのデータ内容の一例を示す図である。図38のタプルコピー要求メッセージは、「メッセージ種別」、「タプル種別」及び「［＜タプル＞：＜有効期限＞］リスト」を含んでいる。「メッセージ種別」及び「タプル種別」は上記と同じである。「［＜タプル＞：＜有効期限＞］リスト」は、複数のタプルの各属性及び各属性値と各タプルの有効期限の情報とを含んでいる。
【００５６】
図6のタプル装置201において、イベント書込み用タプル書込み処理部203は、センサ端末501から受信したイベント書込み用タプル書込み要求メッセージに応じて、イベント書込み用タプル11の書き込み処理を行う。図20を参照して、このイベント書込み用タプル書込み処理部203の処理について説明する。この図20は、図1のセンサ端末501、タプル分配装置301及びタプル装置201間のネットワーク101を介したイベント書込み用タプル11の書込み処理のフローチャートである。ただし、ここでは、図20におけるイベント書込み用タプル書込み処理部203による処理に関係する部分についてのみ参照し、他の部分は他の構成を説明する際に参照する。
【００５７】
図20に示したように、イベント書込み用タプル書込み処理部203は、センサ端末501からのイベント書込み用タプル書込み要求（このとき用いられるタプル書込み要求メッセージは図31参照）に応じて、まず当該要求に含まれる分散キーについて、分配情報更新時刻キャッシュ表213を参照し（ステップS109）、当該分散キーが該当する行（「分配情報更新時刻キャッシュ表213の始点＜当該分散キー＜終点」が成立する行）に記載された分配情報更新時刻キャッシュ値と、当該要求に含まれる分配情報更新時刻とを比較し（ステップS110、S111）、後者（当該要求に含まれる分配情報更新時刻）の方が古い場合には、当該要求元であるセンサ端末501に対し、「分配情報無効」のエラー情報を返す（ステップS116）。
【００５８】
後者（当該要求に含まれる分配情報更新時刻）の方が新しい場合には、当該行の分配情報更新時刻キャッシュ値を後者の値で上書きする（ステップS112）。また後者（当該要求に含まれる分配情報更新時刻）の方が新しい場合もしくは前者と後者が同じ値である場合には、さらに当該要求に含まれる当該イベント書込み用タプル11を、イベント読み出し用タプル表210に蓄積されたイベント読み出し用タプル群の検索条件と比較し、マッチする（当該イベント書込み用タプル11の検索対象が検索条件に適合する）イベント読み出し用タプル12について、当該イベント読み出し用タプル12の書込み元に当該イベント書込み用タプル11を送信する（ステップS113）（このとき用いられるタプル送信メッセージは図39参照）。その後、イベント書込み用タプル表209に、当該イベント書込み用タプル11と、当該センサ端末501が指定した当該イベント書込み用タプル11の有効期限とを書込む（ステップS114）。そして、タプル書き込み完了通知を書き込み要求元のセンサ端末501へ送信する（ステップS115）。
【００５９】
図6のイベント読み出し用タプル書込み処理部204は、図21に示したように、ユーザ端末401からのイベント読み出し用タプル書込み要求（このとき用いられるタプル書込み要求メッセージは図31参照）に応じて、まず当該要求に含まれる分散キーについて、分配情報更新時刻キャッシュ表213を参照し（ステップS209）、当該分散キーが該当する行（「分配情報更新時刻キャッシュ表213の始点＜当該分散キー＜終点」が成立する行）に記載された分配情報更新時刻キャッシュ値と、当該要求に含まれる分配情報更新時刻とを比較し（ステップS210、S211）、後者（当該要求に含まれる分配情報更新時刻）の方が古い場合には、当該要求元であるユーザ端末401に対し、「分配情報無効」のエラー情報を返す（ステップS216）。
【００６０】
後者の方が新しい場合には、当該行の分配情報更新時刻キャッシュ値を後者の値で上書きし（ステップS212）、また後者の方が新しい場合もしくは前者と後者が同じ値である場合には、さらに当該要求に含まれる当該イベント読み出し用タプル12の検索条件を、イベント書込み用タプル表209に蓄積されたイベント書込み用タプル群と比較し、マッチするイベント書込み用タプル11を当該ユーザ端末401へ送信する（ステップS213）（このとき用いられるタプル送信メッセージは図39参照）。その後、当該ユーザ端末401が指定した書込みフラグがOFFでない場合には、イベント読み出し用タプル表210に、当該イベント読み出し用タプル12と、有効期限と、読み出したイベント書込み用タプル11を当該ユーザ端末401が受信するための通信アドレスとを書込む（ステップS214）。そして、タプル書き込み完了通知を書き込み要求元のユーザ端末401へ送信する（ステップS215）。
【００６１】
図6のコマンド書込み用タプル書込み処理部205は、図22に示したように、ユーザ端末401からのコマンド書込み用タプル書込み要求（このとき用いられるタプル書込み要求メッセージは図31参照）に応じて、まず当該要求に含まれる分散キーについて、分配情報更新時刻キャッシュ表213を参照し（ステップS309）、当該分散キーが該当する行（「表中の分散キー始点＜当該分散キー＜終点」が成立する行）に記載された分配情報更新時刻キャッシュ値と、当該要求に含まれる分配情報更新時刻とを比較し（ステップS310、S311）、後者（当該要求に含まれる分配情報更新時刻）の方が古い場合には、当該要求元であるユーザ端末401に対し、「分配情報無効」のエラー情報を返す（ステップS316）。
【００６２】
後者（当該要求に含まれる分配情報更新時刻）の方が新しい場合には、当該行の分配情報更新時刻キャッシュ値を後者の値で上書きし（ステップS312）、また後者の方が新しい場合もしくは前者と後者が同じ値である場合には、さらに当該要求に含まれる当該コマンド書込み用タプル21の検索条件を、コマンド読み出し用タプル表212に蓄積されたコマンド読み出し用タプル群と比較し、マッチするコマンド読み出し用タプル22について、当該コマンド読み出し用タプル22の書込み元に当該コマンド書込み用タプル21を送信する（ステップS313）。その後、当該ユーザ端末401が指定した書込みフラグがOFFでない場合には、コマンド書込み用タプル表211に、当該書込み用タプルと、有効期限とを書込む（ステップS314）。そして、タプル書き込み完了通知を書き込み要求元のユーザ端末401へ送信する（ステップS315）。
【００６３】
図6のコマンド読み出し用タプル書込み処理部206は、図23に示したように、アクチュエータ端末601からのコマンド読み出し用タプル書込み要求（このとき用いられるタプル書込み要求メッセージは図31参照）に応じて、まず当該要求で指定された分散キーについて、分配情報更新時刻キャッシュ表213を参照し（ステップS409）、当該分散キーが該当する行（「表中の分散キーの始点＜指定された分散キー＜表中の分散キーの終点」が成立する行）に記載された分配情報更新時刻キャッシュ値と、当該要求に含まれる分配情報更新時刻とを比較し（ステップS410、S411）、後者（当該要求に含まれる分配情報更新時刻）の方が古い場合には、当該要求元であるアクチュエータ端末601に対し、「分配情報無効」のエラー情報を返す（ステップS416）。
【００６４】
後者（当該要求に含まれる分配情報更新時刻）の方が新しい場合には、当該行の分配情報更新時刻キャッシュ値を後者の値で上書きし（ステップS412）、また後者の方が新しい場合もしくは前者と後者が同じ値である場合には、さらに当該要求に含まれる当該コマンド読み出し用タプル22を、コマンド書込み用タプル表211に蓄積されたコマンド書込み用タプル群の検索条件と比較し、マッチするコマンド書込み用タプル21を当該アクチュエータ端末601へ送信する（ステップS413）。その後、コマンド読み出し用タプル表212に、当該コマンド読み出し用タプル22と、当該アクチュエータ端末601が指定した当該コマンド読み出し用タプル22の有効期限と、読み出したコマンド書込み用タプル21を当該アクチュエータ端末601が受信するための通信アドレスとを書込む（ステップS414）。そして、タプル書き込み完了通知を書き込み要求元のアクチュエータ端末601へ送信する（ステップS415）
【００６５】
図6の負荷監視/分散処理部207は、図24に示したように、タプル分配装置301からの負荷情報要求に応じて、当該タプル装置201にかかる処理負荷と記憶負荷の大きさを調べ（ステップS504）、タプル分配装置301にその結果を返す（ステップS505）（このとき用いられる負荷情報メッセージは図32参照）。このとき、単位時間あたりのHDDアクセス回数を処理負荷とし、HDD使用量を記憶負荷とする。
【００６６】
ただし、処理負荷の指標はHDDアクセス回数に限るものではなく、単に時間あたりのHDD書込み量や読み出し量、CPU（Central Processing Unit）の平均タスクキーュー長、あるいはそれらの組み合わせでもよい。これらの負荷指標は通常OS（Operating System）の機能を用いて調べることができる。
【００６７】
また図6の負荷監視/分散処理部207は、タプル分配装置301からの負荷分散要求（このとき用いられる負荷情報要求メッセージは図33参照）に応じて、負荷分散処理を行う（図24のステップS511やステップS515、図25のステップS608）。このとき、図29に示したように、負荷分散要求の引数として、「負荷分散を行う分散キー範囲」と「HDD書込み停止フラグ＝ON」と「ヘルプタプル装置の通信アドレス」とが指定された場合（ステップS1001で「YES」、S1002で「YES」の場合）には、まず指定された「負荷分散を行う分散キー範囲」に含まれる分散キーをもつイベント読み出し用タプル表210内のイベント読み出し用タプル12について、指定された「ヘルプタプル装置の通信アドレス」へタプルコピー要求（このとき用いられるタプルコピー要求メッセージは図38参照）を行い（ステップS1003、S1004）、イベント読み出し用タプル表210から削除する（ステップS1005）。次に、指定された「負荷分散を行う分散キー範囲」に含まれる分散キーをもつコマンド書込み用タプル表211内のコマンド書込み用タプル21について、指定された「ヘルプタプル装置の通信アドレス」へタプルコピー要求を行い（ステップS1006、S1007）、コマンド書込み用タプル表211から削除する（ステップS1008）。
【００６８】
他方、負荷分散要求の引数として、「負荷分散を行う分散キー範囲」と「HDD書込み停止フラグ＝OFF」と「ヘルプタプル装置の通信アドレス」が指定された場合（ステップS1001で「NO」の場合）には、まず指定された「負荷分散を行う分散キー範囲」に含まれる分散キーをもつイベント読み出し用タプル表210内のイベント読み出し用タプル12について、指定された「ヘルプタプル装置の通信アドレス」へタプルコピー要求を行う（ステップS1012、S1013）。次に、指定された「負荷分散を行う分散キー範囲」に含まれる分散キーをもつコマンド書込み用タプル表211内のコマンド書込み用タプル21について、指定された「ヘルプタプル装置の通信アドレス」へタプルコピー要求を行う（ステップS1014、S1015）。
【００６９】
他方、負荷分散要求の引数として、「負荷分散を行う分散キー範囲」と「HDD書込み停止フラグ＝ON」のみが指定された場合（ステップS1001で「YES」、S1002で「NO」の場合）には、指定された「負荷分散を行う分散キー範囲」に含まれる分散キーをもつイベント読み出し用タプル表210内のイベント読み出し用タプル12を削除し（ステップS1010）、次に、指定された「負荷分散を行う分散キー範囲」に含まれる分散キーをもつコマンド書込み用タプル表211内のコマンド書込み用タプル21を削除する（ステップS1011）。
【００７０】
なお、ステップS1008、ステップS1011又はステップS1015の処理が終了した場合には、負荷分散要求を行ったタプル分配装置301に対して、負荷分散処理終了通知を送信する（ステップS1009）。
【００７１】
また図6の負荷監視/分散処理部207は、図25に示したように、タプル分配装置301からの分配情報時刻キャッシュ更新要求（ステップS610）（このとき用いられる分配情報時刻キャッシュ更新要求メッセージは図34参照）に応じて、分配情報時刻キャッシュ表213の更新処理を行う。（ステップS611又はステップS612）。このとき、分配情報時刻キャッシュ更新要求の引数として指定された「分配情報の分散キー範囲」に一致する行が分配情報時刻キャッシュ表213内に存在する場合には、その分配情報更新時刻キャッシュ値を指定された「分配情報時刻」で上書きし、存在しない場合には、新しく行を追加し、その分配情報更新時刻キャッシュ値を指定された「分配情報時刻」とする。追加する行の分散キー範囲が、既存の行の分散キー範囲と重複する場合には、既存の行の範囲を書きかえ、重複がないようにする（たとえば追加する行が「始点＝000000、終点＝050000、分配情報更新時刻キャッシュ値＝2008/12/12 11:22:33」であり、既存の行として「始点＝000000、終点＝100000、分配情報更新時刻キャッシュ値＝2008/03/11 12:34:56」がある場合には、分散キーの範囲が重複するため、既存の行を「始点＝050001、終点＝100000、分配情報更新時刻キャッシュ値＝2008/03/11 12:34:56」と書きかえる）。
【００７２】
また図6の負荷監視/分散処理部207は、図29に示したように、他のタプル装置201からのタプルコピー要求に応じて、指定されたイベント読み込み用タプルやコマンド書込み用タプル21を、それぞれイベント読み込み用タプル表210やコマンド書込み用タプル表211に書き込む（ステップS1016、S1017）。すなわち、図29のステップS1004又はS1013で、被ヘルプタプル装置となるタプル装置201からタプルコピー要求メッセージが送信されると、タプルコピー要求メッセージの宛先のヘルプタプル装置となるタプル装置201で、イベント読み出し用タプル表210が更新される（ステップS1016）。また、ステップS1007又はS1015で、被ヘルプタプル装置となるタプル装置201からタプルコピー要求メッセージが送信されると、タプルコピー要求メッセージの宛先のヘルプタプル装置となるタプル装置201で、コマンド書込み用タプル表211が更新される（ステップS1016）。
【００７３】
また図6の負荷監視/分散処理部207は、図25に示したように、タプル装置201の起動時に当該タプル装置201をシステムに組み入れるためにタプル分配装置301にタプル装置追加要求を送信する（ステップS601）（このとき用いられるタプル装置追加要求メッセージは図30参照）。
【００７４】
図6のタプル有効期限監視部208は、定期的に各タプル表209〜212に蓄積されたタプル群の有効期限を確認し、有効期限がその時点での時刻よりも古いタプルを、タプル表から削除する。
【００７５】
またタプル有効期限監視部208は、図26で示したように、定期的に分配情報更新時刻キャッシュ表213の各行に示された各分散キー範囲について、当該分散キー範囲内にある分散キーをもつタプルが各タプル表209〜212内に1つでも存在するか否かを調べ（ステップS701、S702、S703）、存在しない分散キー範囲がある場合には、その分散キー範囲と当該タプル装置201の通信アドレスを引数としてタプル分配装置301に分配停止可能メッセージを送信する（ステップS704）（このとき用いられる分配停止可能メッセージは図35参照）。その後、タプル分配装置301から分配停止完了メッセージを受信した場合には（ステップS708又はS709）、分配情報更新時刻キャッシュ表213から、指定された分散キー範囲に該当する行を削除する（ステップS710、S711）。
【００７６】
図12は、図1のタプル分配装置301の構成を示すブロック図である。タプル分配装置301は、通信部302と、分配先問合せ処理部303と、タプル分配表304と、タプル装置負荷監視部305と、タプル装置負荷平準化部306と、タプル装置負荷表307とを備える。タプル分配表304、タプル装置負荷表307の構造はそれぞれ図13、図14に示す通りである。
【００７７】
図13は、図12のタプル分配表304の一例を示す図である。図13のタプル分配表304は、「分散キー」の範囲（始点及び終点）毎に、「分配先タプル装置通信アドレス：書込み可能フラグ」のリストと「更新時刻」の情報を複数組含んで構成されている。本実施形態において、「分散キー」は、センサー種別又はアクチュエータ種別を示す文字列とメッセージタイプを示す文字列を組み合わせた文字列をハッシュ関数でハッシュ値に変換した値が用いられている。図13に示す例では、「分散キー」が「000000」〜「100000」のタプルが、通信アドレス「12.34.56.78:10010」と「87.65.43.21:10010」の2つのタプル装置201に蓄積されていて、この分散キーの範囲についての更新時刻が「2008/03/11 12:34:56」であることが示されている。通信アドレス「12.34.56.78:10010」のタプル装置201が書き込み不可であり、通信アドレス「87.65.43.21:10010」のタプル装置201が書き込み可能であることが示されている。また、「分散キー」が「100001」〜「200000」のタプルが、通信アドレス「23.45.67.89:10010」と「34.56.78.90:10010」の2つのタプル装置201に蓄積されていて、この分散キーの範囲についての更新時刻が「2008/01/23 11:22:33」であることが示されている。通信アドレス「23.45.67.89:10010」のタプル装置201が書き込み不可であり、通信アドレス「34.56.78.90:10010」のタプル装置201が書き込み可能であることが示されている。
【００７８】
図14は、図12のタプル装置負荷表307の一例を示す図である。図14のタプル装置負荷表307は、「タプル装置通信アドレス」毎に、当該タプル装置201の「処理容量」、「記憶容量」、「処理負荷」、「記憶負荷」及び「前回記憶負荷」の各項目のデータを1又は複数組有して構成されている。「記憶負荷」は最新の記憶負荷の情報、「前回記憶負荷」は1回前の更新時の記憶負荷の情報である。
【００７９】
図12の通信部302は、ユーザ端末401/センサ端末501/アクチュエータ端末601からの分配先問合せ受信と、その回答の送信と、タプル装置201への定期的な負荷情報要求の送信と、必要に応じた負荷分散要求と分配情報時刻キャッシュ更新要求の送信と、タプル装置201からのタプル装置追加要求と分配停止可能メッセージの受信とを行う。分配先問合せメッセージと、分配先問合せ回答メッセージのデータ内容は、それぞれ図36、図37に示す通りである。
【００８０】
図36は、分配先問合せメッセージのデータ内容の一例を示す図である。図36の分配先問合せメッセージは、「メッセージ種別」、「分散キー」及び「送信元端末アドレス」を含んでいる。「分散キー」には、分配先の問い合わせを行うタプルの分散キーの値が設定される。「送信元端末アドレス」には、当該メッセージを送信した問い合わせ元の端末の通信アドレスが設定される。
【００８１】
図37は、分配先問合せ回答メッセージのデータ内容の一例を示す図である。図37の分配先問合せ回答メッセージは、「メッセージ種別」、「分散キー範囲始点」、「分散キー範囲終点」、「分配先タプル装置通信アドレス：書込み可能フラグ  リスト」及び「更新時刻」を含んでいる。「分散キー範囲始点」と「分散キー範囲終点」は問い合わせを行ったタプルの分散キーを含む分散キーの範囲の始点と終点を示す情報である。「分配先タプル装置通信アドレス：書込み可能フラグ  リスト」は、その分散キーの範囲のタプルを蓄積している1又は複数のタプル装置201の通信アドレスと、各タプル装置201の書込み可能フラグの値を示す情報である。「更新時刻」はその分散キーの範囲の蓄積情報の最終の更新時刻を示す情報である。
【００８２】
図12の分配先問合せ処理部303は、図20〜図23に示したように、ユーザ端末401/センサ端末501/アクチュエータ端末601からの分配先問合せ（ステップS104、S204、S304、S404）に応じて、タプル分配表304を参照し、指定された分散キーが該当する行（「表中の分散キーの始点＜指定された分散キー＜表中の分散キーの終点」が成立する行）に記載された分散キー範囲、分配先タプル装置通信アドレスと書込み可能フラグのリストと、更新時刻とを問合せ元に送信する（各図のステップS105、S205、S305、S405）。
【００８３】
図12のタプル装置負荷監視部305は、図24に示したように、周期C毎に（ステップS501）、タプル装置負荷表307に記載されているタプル装置通信アドレスすべてに対して、負荷情報要求を送信し（ステップS502、S503）、その回答として得られた処理負荷情報と記憶負荷情報を、タプル装置負荷表307の該当する行の処理負荷、記憶負荷の列に上書きする（ステップS506）。この際、前もって記憶負荷の列にあった値を前回記憶負荷の列に上書きしておく。周期Cはシステム管理者が設定可能なパラメータであり、例えば3時間と設定する。
【００８４】
図12のタプル装置負荷平準化部306は、図24に示したように、タプル装置負荷監視部305が定期的に行うタプル装置負荷監視（ステップS501〜S506）が終わるたびに、タプル装置負荷表307を参照し（ステップS507）、各タプル装置201の負荷が高くなりすぎているかどうかを調べる（ステップS508、S512）。このとき、処理容量に対する処理負荷の大きさが9割を超える場合には処理負荷が過剰と判断し、また、記憶容量に対する記憶負荷の大きさが9割を超える場合には記憶負荷が過剰と判断する。ただし、判断方法としてはこれに限らず、例えば8割を超えるか否かで判断してもよいし、各種容量から各種負荷を引いた大きさがある値を超えるか否かで判定してもよいし、記憶容量については下記条件（以下、記憶負荷条件と呼ぶ）を満たなくなったか否かで判定してもよい。ただし、記憶容量マージンとは、システム管理者が設定可能なパラメータであり、システムの安定性を上げたい場合には大きく、例えば10GBと設定し、設備コストを下げたい場合には小さく、例えば1GBと設定する。
【００８５】
記憶負荷条件：（記憶容量−記憶負荷）＞（記憶負荷−前回記憶負荷）＋記憶容量マージン
【００８６】
次に、処理負荷が過剰と判断されたタプル装置201（以下、被ヘルプタプル装置と呼ぶ）それぞれについて、まずタプル分配表304を参照し（ステップS509）、当該タプル装置201が書込み可能フラグ＝1で分配先タプル装置として登録されている分散キーの範囲を調べ、その範囲の数をVとし、得られた分散キーの範囲の1つについて、次の処理負荷分散処理を行う（ステップS510）。
【００８７】
図24のステップS510における処理負荷分散処理は、図27に示したように、以下のように行う。
【００８８】
第一に、タプル分配表304から、当該分散キー範囲の分配先タプル装置通信アドレスと書込み可能フラグのリストを取得する（ステップS801）。
【００８９】
第二に、当該リストの中で、被ヘルプタプル装置以外で、書込み可能フラグ＝1（＝ON）のタプル装置201が1つ以上存在する場合には（ステップS802で「YES」の場合には）、それらタプル装置群の記憶容量と記憶負荷と前回記憶負荷と処理容量と処理負荷とをタプル装置負荷表307から取得し（ステップS803）、その中で、前記記憶負荷条件と下記条件（以下、当該条件を処理負荷条件1と呼ぶ）を満たすタプル装置201を選出する（ステップS804）。ただし、処理容量残量とは、処理容量から処理負荷を差し引いた値を意味する。また、処理容量マージンとは、システム管理者が設定可能なパラメータであり、システムの安定性を上げたい場合には大きく、例えば2と設定し、設備コストを下げたい場合には小さく、例えば1と設定する。
【００９０】
処理負荷条件1：処理容量残量＞（被ヘルプタプル装置の処理負荷／V）×処理容量マージン
【００９１】
第三に、第二の手順で選出したタプル装置201が1つ以上存在する場合には（ステップS804で「YES」の場合には）、被ヘルプタプル装置に対し、「当該分散キー範囲」と「HDD書込み停止フラグ＝ON」を引数とした負荷分散要求を送信し（ステップS805）、被ヘルプタプル装置から負荷分散処理終了通知を受け取ったら、タプル分配表304における当該分散キー範囲の行について、被ヘルプタプル装置の書込み可能フラグを0に、更新時刻をその時点の時刻に書きかえる（ステップS806）。さらに、被ヘルプタプル装置に対し、分配情報時刻キャッシュ更新要求を送信し（ステップS807）、当該処理負荷分散処理を終了する。
【００９２】
第四に、第二の手順でタプル装置が1つも選出されなかった場合（ステップS802で「NO」又はステップS804で「NO」の場合）、第一の手順（ステップS801）で取得したリストの中で、被ヘルプタプル装置以外で、書込み可能フラグ＝0（＝OFF）のタプル装置201が1つ以上存在する場合には（ステップS808で「YES」の場合には）、それらタプル装置群の記憶容量と記憶負荷と前回記憶負荷と処理容量と処理負荷をタプル装置負荷表307から取得し（ステップS809）、その中で、前記記憶負荷条件と、下記条件（以下、処理負荷条件2と呼ぶ）を満たすタプル装置を選出する（ステップS810）。
【００９３】
処理負荷条件1：処理容量残量＞（被ヘルプタプル装置の処理負荷／（2×V））×処理容量マージン
【００９４】
第五に、第四の手順で、選出したタプル装置群の中で、最も記憶容量残量が大きいタプル装置をヘルプタプル装置とし（ステップS811）、被ヘルプタプル装置に対し、「当該分散キー範囲」と「HDD書込み停止フラグ＝OFF」と「ヘルプタプル装置の通信アドレス」を引数とした負荷分散要求を送信する（ステップS812）。次に、被ヘルプタプル装置から負荷分散処理終了通知を受け取ったら、タプル分配表304における当該分散キー範囲の行について、ヘルプタプル装置の書込み可能フラグを1に、更新時刻をその時点の時刻に書きかえる（ステップS813）。さらに、被ヘルプタプル装置に対し、分配情報時刻キャッシュ更新要求を送信し（ステップS814）、当該処理負荷分散処理を終了する。ただし、ヘルプタプル装置とは、負荷分散処理によって被ヘルプタプル装置の負荷の一部を担うタプル装置を意味し、記憶容量残量とは、記億容量から記憶負荷を差し引いた値を意味する。
【００９５】
第六に、第四の手順でタプル装置が1つも選出されなかった場合（ステップS808で「NO」又はステップS810で「NO」の場合）、全タプル装置201の記憶容量と記憶負荷と前回記憶負荷と処理容量と処理負荷をタプル装置負荷表307から取得し（ステップS815）、その中で、前記記億負荷条件と、処理負荷条件2を満たすタプル装置201を選出する（ステップS816）。
【００９６】
第七に、第六の手順で選出したタプル装置群の中で、最も記憶容量残量が大きいタプル装置201をヘルプタプル装置とし（ステップS817）、被ヘルプタプル装置に対し、「当該分散キー範囲」と「HDD書込み停止フラグ＝OFF」と「ヘルプタプル装置の通信アドレス」を引数とした負荷分散要求を送信する（ステップS818）。被ヘルプタプル装置から負荷分散処理終了通知を受け取ったら、タプル分配表304における当該分散キー範囲の行について、分配先タプル装置通信アドレスリストにヘルプタプル装置の通信アドレスを書込み可能フラグ1として追加し、更新時刻をその時点の時刻に書きかえる（ステップS819）。さらに、被ヘルプタプル装置に対し、分配情報時刻キャッシュ更新要求を送信し（ステップS820）、当該処理負荷分散処理を終了する。
【００９７】
第八に、第六の手順でタプル装置が1つも選出されなかった場合（ステップS816で「NO」の場合）、システム管理者に「システム処理負荷過剰」の警告を電子メールなどで通知する（ステップS821）。
【００９８】
以上の図27の処理で、図24のステップS510の処理負荷分散処理が行われる。
【００９９】
次に、図12のタプル装置負荷平準化部306は、記憶負荷が過剰と判断されたタプル装置（被ヘルプタプル装置）それぞれについて、まずタプル分配表304を参照し（図24のステップS513）、当該タプル装置201が書込み可能フラグ＝1で分配先タプル装置として登録されている分散キーの範囲を調べ、その範囲の数をVとし、得られた分散キーの範囲のすべてについて、次の記憶負荷分散処理を行う（ステップS514）。
【０１００】
図24のステップS514における記憶負荷分散処理は、図28に示したように、以下のように行う。
【０１０１】
第一に、タプル分配表304から、当該分散キー範囲の分配先タプル装置通信アドレスと書込み可能フラグのリストを取得する（ステップS901）。
【０１０２】
第二に、当該リストの中で、被ヘルプタプル装置以外で、書込み可能フラグ＝1（＝ON）のタプル装置が1つ以上存在する場合には（ステップS902で「YES」）、それらタプル装置群の記憶容量と記憶負荷と前回記憶負荷と処理容量と処理負荷とをタプル装置負荷表307から取得し（ステップS903）、その中で、前記記憶負荷条件と処理負荷条件1を満たすタプル装置を選出する（ステップS904）。
【０１０３】
第三に、第二の手順で選出したタプル装置が1つ以上存在する場合には（ステップS902で「YES」）、被ヘルプタプル装置に対し、「当該分散キー範囲」、と「HDD書込み停止フラグ＝ON」を引数とした負荷分散要求を送信する（ステップS905）。そして、被ヘルプタプル装置から負荷分散処理終了通知を受け取ったら、タプル分配表304における当該分散キー範囲の行について、被ヘルプタプル装置の書込み可能フラグを0に、更新時刻をその時点の時刻に書きかえる（ステップS906）。
【０１０４】
さらに、被ヘルプタプル装置に対し、分配情報時刻キャッシュ更新要求を送信し（ステップS907）、当該処理負荷分散処理を終了する。
【０１０５】
第四に、第二の手順でタプル装置が1つも選出されなかった場合（ステップS902で「NO」又はステップS904で「NO」の場合）、第一の手順で取得したリストの中で、被ヘルプタプル装置以外で、書込み可能フラグ＝0（＝OFF）のタプル装置が1つ以上存在するときには（ステップS908で「YES」のときには）、それらタプル装置群の記憶容量と記憶負荷と処理容量と処理負荷をタプル装置負荷表307から取得し（ステップS909）、その中で、前記記憶負荷条件と、処理負荷条件1を満たすタプル装置201を選出する（ステップS910）。
【０１０６】
第五に、第四の手順で選出したタプル装置群の中で、最も記憶容量残量が大きいタプル装置201をヘルプタプル装置とし（ステップS911）、被ヘルプタプル装置に対し、「当該分散キー範囲」と「HDD書込み停止フラグ＝ON」と「ヘルプタプル装置の通信アドレス」を引数とした負荷分散要求を送信し（ステップS912）、被ヘルプタプル装置から負荷分散処理終了通知を受け取ったら、タプル分配表304における当該分散キー範囲の行について、被ヘルプタプル装置の書込み可能フラグを0に、ヘルプタプル装置の書込み可能フラグを1に、更新時刻をその時点の時刻に書きかえる（ステップS913）。さらに、被ヘルプタプル装置に対し、分配情報時刻キャッシュ更新要求を送信し（ステップS914）、当該処理負荷分散処理を終了する。
【０１０７】
第六に、第四の手順でタプル装置が1つも選出されなかった場合（ステップS908で「NO」又はステップS910で「NO」の場合）、全タプル装置201の記憶容量と記憶負荷と処理容量と処理負荷をタプル装置負荷表307から取得し（ステップS915）、その中で、前記記憶負荷条件と、処理負荷条件1を満たすタプル装置201を選出する（ステップS916）。
【０１０８】
第七に、第六の手順で選出したタプル装置群の中で、最も記憶容量残量が大きいタプル装置をヘルプタプル装置とし（ステップS917）、被ヘルプタプル装置に対し、「当該分散キー範囲」と「HDD書込み停止フラグ＝ON」と「ヘルプタプル装置の通信アドレス」を引数とした負荷分散要求を送信する（ステップS918）。次に、被ヘルプタプル装置から負荷分散処理終了通知を受け取ったら、タプル分配表304における当該分散キー範囲の行について、被ヘルプタプル装置の書込み可能フラグを0とし、分配先タプル装置通信アドレスリストにヘルプタプル装置の通信アドレスを書込み可能フラグ1として追加し、更新時刻をその時点の時刻に書きかえる（ステップS919）。さらに、被ヘルプタプル装置に対し、分配情報時刻キャッシュ更新要求を送信し（ステップS920）、当該処理負荷分散処理を終了する。
【０１０９】
第八に、第六の手順でタプル装置が1つも選出されなかった場合（ステップS916で「NO」の場合）、システム管理者に「システム記憶負荷過剰」の警告を電子メールなどで通知する（ステップS921）。
【０１１０】
また図12のタプル装置負荷平準化部306は、図25に示したように、タプル装置201からのタプル装置追加要求（ステップS601）に応じて、まず指定されたタプル装置201（以下、新タプル装置と呼ぶ）の通信アドレスと、処理容量と、記憶容量とを、タプル装置負荷表307に新たな行として書込み（ステップS602）、次に、タプル装置負荷表307を参照し（ステップS603）、最も処理負荷が高いタプル装置を選出する（ステップS604）。このときの選出方法としては、例えば、処理容量に対する処理負荷の割合を調べ、最も高い割合を示したタプル装置201を選出する方法があるが、負荷過剰の判断方法と同様、それに限るものではない。
【０１１１】
次に、タプル分配表304を参照し（ステップS605）、選出されたタプル装置201が書込み可能フラグ＝1で分配先タプル装置として登録されている分散キーの範囲を調べ、各範囲の中で、最も始点と終点の差が大きいものを選出する（ステップS606）。次に、まず、選出された当該タプル装置201に対し、選出した「当該分散キー範囲」と「HDD書込み停止フラグ＝ON」と「ヘルプタプル装置の通信アドレス」を引数とした負荷分散要求を送信する（ステップS607）。ここで、負荷分散要求を受信した既存のタプル装置201で負荷分散処理が実行される（ステップS608）。そして、タプル装置負荷平準化部306は、当該タプル装置から負荷分散処理終了通知を受け取ったら、次に、タプル分配表304における当該分散キー範囲の行を削除し、始点を当該分散キー範囲の始点、終点を当該分散キー範囲の中央とする行と、始点を当該分散キー範囲の中央、終点を当該分散キー範囲の終点とする行を新たに追加する（ステップS609）。このとき追加する2つの行の分配先タプル装置の通信アドレスと書込み可能フラグのリストと更新時刻には、削除した行に入っていたリストと更新時刻を入れる。ただし、そのうち1行については、さらに、当該タプル装置201の書込み可能フラグを0に書きかえ、分配先タプル装置通信アドレスリストに新タプル装置201の通信アドレスを書込み可能フラグ1として追加し、更新時刻をその時点の時刻に書きかえ、さらに、当該タプル装置201と、新タプル装置201に対し、分配情報時刻キャッシュ更新要求を送信する（ステップS610）。
【０１１２】
また図12のタプル装置負荷平準化部306は、図26に示したように、タプル装置201からの分配停止可能メッセージ（ステップS704）に応じて、タプル分配表304の指定された分散キー範囲に該当する行を参照し（ステップS705）、タプル装置通信アドレスリストに、指定されたタプル装置通信アドレス以外に書込み可能フラグ＝1（＝ON）のものがある場合には（ステップS706で「YES」の場合には）、指定されたタプル装置通信アドレスを削除し、当該行の更新時刻をその時点の時刻に書きかえ（ステップS707）、当該タプル装置201に分配停止完了メッセージを送信する（ステップS708）。他方、タプル装置通信アドレスリストに、指定されたタプル装置通信アドレス以外に書込み可能フラグ＝1（＝ON）のものがない場合には（ステップS706で「NO」の場合には）、当該タプル装置201に分配停止完了メッセージを送信する（ステップS709）。
【０１１３】
図15は、図1のユーザ端末401の構成を示すブロック図である。ユーザ端末401は、通信部402と、U/I（ユーザインタフェース）部403と、タプル書込み処理部404と、タプル分配表キャッシュ405とを備える。タプル分配表キャッシュ405の構造は図16に示す通りである。
【０１１４】
図16は、図15のタプル分配表キャッシュ405の一例を示す図である。図16のタプル分配表キャッシュ405は、「分散キー」、「分配先タプル装置通信アドレス：書込み可能フラグ  リスト」及び「更新時刻」を含んで構成されている。
【０１１５】
図15の通信部402は、タプル装置201へのタプル書込み要求の送信と、タプル装置201からのイベント書込み用タプル11の受信と、タプル分配装置301への分配先問合せの送信とを行う。U/I部403は、ユーザインタフェースを提供し、ユーザがタプル入力画面からイベント読み出し用タプル12と、コマンド書込み用タプル21とを入力することを可能とする。またタプル出力画面に読み出したイベント書込み用タプル11を表示する。タプル入力画面を図17に示す。タプル出力画面には、読みだしたイベント書込み用タプル11のリストをテキスト表示する。ただし、出力方法としてはそれに限るものではなく、イベント書込み用タプル11内の緯度、経度情報を用い、地図上の対応する位置に点をプロットした表示などが考えられる。
【０１１６】
図15のタプル書込み処理部404は、図21、図22に示したように、U/I部403を通してユーザが入力したタプルについて、タプルの書込み処理を行う。なお、図21は、イベント読み出し用タプル12の書き込み処理フロー、図22は、コマンド書き込み用タプルの書き込み処理フローを示している。タプル書込み処理部404は、タプルに含まれるセンサ種別とメッセージタイプ、もしくはアクチュエータ種別とメッセージタイプのAVペアを並べた文字列をハッシュ関数にかけ、分散キーとしてハッシュ値を算出し（ステップS201又はS301）、タプル分配表キャッシュ405を参照する（ステップS202又はS302）。タプル分配表キャッシュ405に、当該タプルの分散キーが該当する行（「表中の分散キーの始点＜指定された分散キー＜表中の分散キーの終点」が成立する行）が存在する場合には（ステップS203で「YES」又はステップS303で「YES」の場合には）、当該行に記載された分配先タプル装置通信アドレスのうち、書込み可能フラグが1（＝ON）のものに対しては、書込みフラグをONとしてタプル書込み要求を送信し、書込み可能フラグが0（＝OFF）のものに対しては、書込みフラグがOFFとしてタプル書込み要求を送信する（ステップS207又はS307、ステップS208又はS308）。ここで、ステップS207又はS307では、タプル分配表キャッシュ405に格納されているすべてのタプル装置201に対応する分配先タプル装置通信アドレスが選択される。そして、ステップS208又はS308では、ステップS207又はS307で選択された複数の分配先タプル装置通信アドレスを持つタプル装置201に対してタプル書込み要求が送信される。
【０１１７】
タプル装置201から「分配情報無効」のエラー情報を受信した場合には（ステップS217で「YES」又はS317で「YES」の場合には）、タプル分配装置301に分配先問合せを行い（ステップS204又はS304）、新たに当該分散キーを含む分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻とを取得する（ステップS205又はS305）。そして、タプル分配表キャッシュ405の当該タプルの分散キーが該当する行を、新しく取得した分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻とで上書きする（ステップS206又はS306）。過去のリストに比べて新たに追加された分配先タプル装置通信アドレスに対し、前記と同様に、書込み可能フラグに応じて書込みフラグを変化させつつタプル書込み要求を送信する（ステップS207、S208又はS307、S308）。
【０１１８】
一方、タプル分配表キャッシュ405を参照し、当該タプルの分散キーが該当する行が存在しない場合には（ステップS203で「NO」又はステップS303で「NO」の場合には）、タプル分配装置301に分配先問合せを行い（ステップS204又はS304）、当該分散キーを含む分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻とを取得する（ステップS205又はS305）。そして、タプル分配表キャッシュ405に、取得した分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻を含む行を追加し（ステップS206又はS306）、当該リストにおいて、書込み可能フラグが1（＝ON）の分配先タプル装置通信アドレスに対しては、書込みフラグをONとしてタプル書込み要求を送信し、書込み可能フラグが0（＝OFF）の分配先タプル装置通信アドレスに対しては、書込みフラグをOFFとしてタプル書込み要求を送信する（ステップS207、S208又はステップS307、S308）。
【０１１９】
図18は、図1のセンサ端末501の構成を示すブロック図である。センサ端末501は、通信部502と、センサ部503と、タプル書込み処理部504と、タプル分配表キャッシュ505とを備える。タプル分配表キャッシュ505の構造は図16に示したタプル分配表キャッシュ405と同じである。
【０１２０】
図18の通信部502は、タプル装置201へのイベント書込み用タプル書込み要求の送信と、タプル分配装置301への分配先問合せの送信とを行う。センサ部503は、センサを備え、温度、湿度、音量、加速度、磁場、高度、緯度、経度などの物理情報をセンサ値として読み取り、図2を参照して説明したイベント書込み用タプル11を作成する。
【０１２１】
タプル書込み処理部504は、図20に示したように、センサ部503が作成したイベント書込み用タプル11について、タプルに含まれるセンサ種別とメッセージタイプのAVペアを並べた文字列をハッシュ関数にかけ、分散キーとしてハッシュ値を算出する（ステップS101）。次に、タプル分配表キャッシュ505を参照し（ステップS102）、当該タプルの分散キーが該当する行（「表中の分散キーの始点＜指定された分散キー＜表中の分散キーの終点」が成立する行）が存在する場合には（ステップS103で「YES」の場合には）、当該行に記載された分配先タプル装置通信アドレスのうち、書込み可能フラグが1（＝ON）のものの1つを選択し（ランダムに決定する）（ステップS107）、ONとした書込みフラグと、センサ端末設置者が予め設定した有効期限を含めたタプル書込み要求をステップS107で選択した1つの分配先タプル装置通信アドレスを持つタプル装置201に対して送信する（ステップS108）。
【０１２２】
タプル装置201から「分配情報無効」のエラー情報を受信した場合には（ステップS117で「YES」の場合には）、タプル分配装置301に分配先問合せを行い（ステップS104）、新たに当該分散キーを含む分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻とを取得し（ステップS105）、タプル分配表キャッシュ505の当該タプルの分散キーが該当する行を、新しく取得した分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻とで上書きする（ステップS106）。そして、新たな分配先タプル装置通信アドレスリストに対し、前記と同様に、書込み可能フラグが1（＝ON）のものの1つにタプル書込み要求を送信する（ステップS107、S108）。
【０１２３】
他方、タプル分配表キャッシュ505を参照し、当該タプルの分散キーが該当する行が存在しない場合には（ステップS103で「NO」の場合には）、タプル分配装置301に分配先問合せを行い（ステップS104）、当該分散キーを含む分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻とを取得し（ステップS105）、タプル分配表キャッシュ505に、取得した分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻を含む行を追加する（ステップS106）。そして、当該リストにおいて、前記と同様に、書込み可能フラグが1（＝ON）の分配先タプル装置通信アドレスの1つにタプル書込み要求を送信する（ステップS107、S108）。
【０１２４】
図19は、図1のアクチュエータ端末601の構成を示すブロック図である。図19のアクチュエータ端末601は、通信部602と、アクチュエータ部603と、タプル書込み処理部604と、タプル分配表キャッシュ605とを備える。タプル分配表キャッシュ605の構造は図16に示したタプル分配表キャッシュ405と同じである。
【０１２５】
通信部602は、タプル装置201へのコマンド読み出し用タプル書込み要求の送信と、タプル装置201からのコマンド書込み用タプル21（図4参照）の受信と、タプル分配装置301への分配先問合せの送信とを行う。アクチュエータ部603は、モーター、ランプ、ディスプレイ、警報器、スピーカーなどのアクチュエータを備え、受信したコマンド書込み用タプル21の内容に応じてアクチュエータを駆動する。
【０１２６】
タプル書込み処理部604は、図23に示したように、起動時に、アクチュエータ端末設置者が予め設定したコマンド読み出し用タプル22（図5参照）について、タプルに含まれるアクチュエータ種別とメッセージタイプのAVペアを並べた文字列をハッシュ関数にかけ、分散キーとしてハッシュ値を算出する（ステップS401）。そして、タプル分配表キャッシュ605を参照し（ステップS402）、当該タプルの分散キーが該当する行（「表中の分散キーの始点＜指定された分散キー＜表中の分散キーの終点」が成立する行）が存在する場合には（ステップS403で「YES」の場合にには）、当該行に記載された分配先タプル装置通信アドレスのうち、書込み可能フラグが1（＝ON）のものの1つ（ランダムに決定する）に書込み先タプル装置を選択し（ステップS407）、ステップS407で選択した1つの分配先タプル装置通信アドレスを持つタプル装置201に対してONとした書込みフラグと、センサ端末設置者が予め設定した有効期限を含めたタプル書込み要求を送信する（ステップS408）。
【０１２７】
タプル装置201から「分配情報無効」のエラー情報を受信した場合には（ステップS417）、タプル分配装置301に分配先問合せを行い（ステップS404）、新たに当該分散キーを含む分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻とを取得し（ステップS405）、タプル分配表キャッシュ605の当該タプルの分散キーが該当する行を、新しく取得した分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻とで上書きする（ステップS406）。次に、新たな分配先タプル装置通信アドレスリストに対し、前記と同様に、書込み可能フラグが1（＝ON）のものの1つにタプル書込み要求を送信する（ステップS407、S408）。
【０１２８】
他方、タプル分配表キャッシュ605を参照し、当該タプルの分散キーが該当する行が存在しない場合には（ステップS403で「NO」の場合には）、タプル分配装置301に分配先問合せを行い（ステップS404）、当該分散キーを含む分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻とを取得し（ステップS405）、タプル分配表キャッシュ605に、取得した分散キー範囲と、分配先タプル装置通信アドレスと書込み可能フラグのリストと、その更新時刻を含む行を追加する（ステップS406）。次に、当該リストにおいて、前記と同様に、書込み可能フラグが1（＝ON）の分配先タプル装置通信アドレスの1つにタプル書込み要求を送信する（ステップS407、S408）。
【０１２９】
上述したように、本発明の実施形態では、書込み用タプルあるいは読み出し用タプルの一方を、タプル（すなわちデータ）の蓄積・検索（すなわち間接通信）処理を行う複数のタプル装置201の全てに対して登録し、他方を、複数のタプル装置201の1つにのみ登録するようにした。これにより、分散キーによらず、分散処理が行われるため、同一の分散キーをもつ書込み用タプルと読み出し用タプル間のマッチング処理や蓄積処理でも、複数のタプル装置201間で分散処理することが可能となる。
【０１３０】
また、属性と属性値の組み合わせを１又は複数含むタプルの蓄積・検索を行う複数のタプル装置201と、タプル装置201に対してタプルの書込み要求を行う１又は複数の端末401〜601とを備え、タプル装置201でタプルのうちの読み出し用タプルと書込み用タプルがマッチングした場合、当該読み出し用タプルの書込み元に当該書込み用タプルが送信されるシステムにおいて、タプルが、通信内容を示す属性値からなるメッセージボディ部11bと検索対象の属性値からなる検索対象部11aとから構成されるイベント書込み用タプル11と、イベント書込み用タプルに対する検索条件の属性値からなる検索条件部12cから構成されるイベント読み出し用タプル12と、検索対象の属性値からなる検索対象部22aから構成されるコマンド読み出し用タプル22と、通信内容を示す属性値からなるメッセージボディ部21bとコマンド読み出し用タプルに対する検索条件の属性値からなる検索条件部21cとから構成されるコマンド書込み用タプル21とに分類されるものであり、端末501、601からのタプルの書込み要求に応じて、イベント書込み用タプル11をタプル装置201のいずれか１つのみに登録し、イベント読み出し用タプル12をタプル装置201の全てに登録し、コマンド読み出し用タプル22をタプル装置201のいずれか１つのみに登録し、コマンド書込み用タプル21をタプル装置201の全てに登録するようにしている。すなわち、書込み用タプルあるいは読み出し用タプルの一方を、タプル（すなわちデータ）の蓄積・検索（すなわち間接通信）処理を行う複数のタプル装置201の全てに対して登録し、他方を、複数のタプル装置201の1つにのみ登録するようにした。これにより、分散キーによらず、分散処理が行われるため、同一の分散キーをもつ書込み用タプルと読み出し用タプル間のマッチング処理や蓄積処理でも、複数のタプル装置201間で分散処理することが可能となる。
【０１３１】
特に本実施形態では、書込み用タプルと読み出し用タプルのうち単位時間あたりの登録量、蓄積量が大きい方を、タプル装置201の1つのみに登録することにより、分散処理のオーバーヘッドを抑えることが可能である。
【０１３２】
また本実施形態によれば、検索対象部とメッセージボディ部からなる書込み用タプルをタプル装置201の1つのみに、検索条件部のみからなる読み出し用タプルをタプル装置201の全てに登録することとした。ユビキタス環境において、センサデータをメッセージボディ部に、そのメタデータを検索対象部に保持させた書込み用タプルと、読み出したいセンサデータの条件を検索条件部に保持させた読み出し用タプルを用いれば、Tuple Spaceによるセンサデータの蓄積・検索を行うことが可能であるが、このとき通常前者のタプル（すなわちメッセージボディ部とそのメタデータを検索対象部に保持させた書込み用タプル）の数に比べて後者のタプル（検索条件部のみからなる読み出し用タプル）の数ははるかに少ない。したがって、本実施形態の構成により、前者の少ないタプルのみを全タプル装置に登録すればよいため、効率的な分散処理が可能となる。
【０１３３】
また本実施形態によれば、検索対象部のみからなる読み出し用タプルをタプル装置の1つのみに、検索条件部とメッセージボディ部からなる書込み用タプルをタプル装置の全てに登録することとした。ユビキタス環境において、アクチュエータのメタデータを検索対象部に保持させた読み出し用タプルと、アクチュエータの動作指示を行うコマンドデータをメッセージボディ部に、動作指示を行いたいアクチュエータの条件を検索条件部に保持させた書込み用タプルを用いれば、Tuple Spaceによるコマンドデータの蓄積・配布を行うことが可能であるが、このとき通常前者のタプル（アクチュエータのメタデータを検索対象部に保持させた読み出し用タプル）の数に比べて後者のタプル（動作指示を行いたいアクチュエータの条件を検索条件部に保持させた書込み用タプル）の数ははるかに少なく、本発明により、前者の少ないタプルのみを全タプル装置に登録すればよいため、効率的な分散処理が可能となる。
【０１３４】
また本実施形態によれば、タプル分配装置301を設け、タプル分配装置301がタプル装置201のタプル分配表304において分配先タプル装置通信アドレスのリストを一元管理し、Tuple Spaceにタプルを書き込む各端末401、501又は601が、当該タプル装置のリストを参照し、登録先のタプル装置201を選択するようにした。これにより、タプル装置201をタプル分配装置301の設定情報を変更することでシステムに追加することができるようになり、流通・蓄積するタプルの量が増大した場合に、各端末の設定情報を変える必要なく、タプル装置201を増設することが可能となる。
【０１３５】
また本実施形態によれば、タプル分配装置301が各タプル装置201の記憶負荷を監視し、記憶負荷が過剰となったタプル装置201を検出した場合には、分配先タプル装置通信アドレス：書込み可能フラグのリストの中の当該タプル装置201に書込み可能フラグOFFを設定するようにした。また各端末401、501又は601は、それ以降タプルを1つのタプル装置201に書き込む際には、書込み可能フラグOFFでないタプル装置201から書込み先を1つ選択し、タプルをすべてのタプル装置201に書き込む際には、書込み可能フラグOFFのタプル装置には「書込みフラグOFF」として書込み要求を行うこととした。またタプル装置201は、「書込みフラグOFF」でタプル書込み要求を受けた場合には、マッチング処理のみは行うが、当該タプルの蓄積は行わないという処理手順とした。これにより、漏れ・重複のないタプル蓄積・検索を維持しつつ、記憶負荷が過剰となったタプル装置に対して、それ以上タプルの蓄積をしないでよいこととなり、記憶負荷がそれ以上増え、タプル蓄積失敗によるタプルの喪失を防ぐことが可能となる。
【０１３６】
また本実施形態によれば、タプル分配装置301は、タプルから抽出される分散キーの値を範囲分けし、各分散キー範囲を受け持つタプル装置201のリストを記載したタプル分配表を保持し、端末401〜601は、当該タプル分配表を参照し、タプルの分散キーに応じて、それを含む分散キー範囲を受け持つタプル装置リストに設定されているタプル装置201に対してのみ当該タプルを書き込めばよいこととした。また記憶負荷が過剰となり、書込み可能フラグがOFFになったタプル装置201が現れた場合には、当該タプル装置201が受け持っていた分散キー範囲を受け持つタプル装置リストに、記憶負荷が小さい他のタプル装置201を加えることとした。これにより、タプル書込みを全てのタプル装置201に行う必要がなくなり、また記憶負荷が過剰となったタプル装置201が出現しても、当該タプル装置201が受け持っていた分散キー範囲内の分散キーをもつタプルの蓄積が不可能とならず、別のタプル装置201に蓄積することが可能となる。
【０１３７】
また本実施形態によれば、タプル分配装置301は、各タプル装置201の処理負荷を監視し、処理負荷が過剰となったタプル装置201を検出した場合には、当該タプル装置201が受け持っていた分散キー範囲を受け持つタプル装置201を含むタプル装置リストに、処理負荷が小さい他のタプル装置201を加えることとした。これにより、処理負荷が過剰となったタプル装置201が出現しても、当該タプル装置201が受け持っていた分散キー範囲内の分散キーをもつタプルの蓄積・検索が処理量溢れのため不可能とならず、別のタプル装置201にて蓄積・検索することが可能となる。
【０１３８】
なお、特許請求の範囲に記載した構成要素と上述した本発明の実施の形態における構成との対応関係は次のとおりである。タプル装置の「書込み用タプルを蓄積する書込み用タプル表」は、図6のイベント書込み用タプル表209、コマンド書込み用タプル表211に対応している。タプル装置の「読み出し用タプルを蓄積する読み出し用タプル表」は、図6のイベント読み出し用タプル表210、コマンド読み出し用タプル表212に対応している。タプル装置の「書込み用タプル書込み処理部」は、図6のイベント書込み用タプル書込み処理部203、コマンド書込み用タプル書込み処理部205に対応している。タプル装置の「読み出し用タプル書込み処理部」は、図6のイベント読み出し用タプル書込み処理部204、コマンド読み出し用タプル書込み処理部206に対応している。端末の「タプル装置分配表」は、図18のタプル分配表キャッシュ505、図18のタプル分配表キャッシュ505、図19のタプル分配表キャッシュ605に対応している。端末の「タプル書込み要求部」は、図15のタプル書込み処理部404、図18のタプル書込み処理部504、図19のタプル書込み処理部604に対応している。タプル書込み要求を示す「メッセージ種別情報」は、図31の「メッセージ種別」に対応している。タプルの種別を表す「タプル種別情報」は、図31の「タプル種別」に対応している。「タプル装置アドレス」は、タプル装置の通信アドレスに対応している。タプル分配装置の「タプル装置アドレスのリストを含むタプル装置分配表」は、図12のタプル分配表304に対応している。タプル分配装置の「通信アドレスの管理するためのリストを含むタプル分配表」は、図12のタプル分配表304に対応している。
【０１３９】
なお、本発明の実施の形態は、上記のものに限られず、例えば、各装置や各端末が有するタプル分配表304、タプル分配表キャッシュ405、505、605などの各表に格納・管理されるデータを、ネットワーク101などを介して接続される1又は複数の他の装置で記憶・更新するようにしたり、分散キーの算出手法や分散キーを用いたタプルの分配手法などに他の手法を用いるようにしたり、するなどの変更を適宜行うことができる。また、上記実施形態の各装置や各端末は、コンピュータ及びその周辺装置とそのコンピュータによって実行されるプログラムとを用いて構成することができ、そのプログラムはコンピュータ読み取り可能な記録媒体や通信回線を介して提供することが可能である。
【符号の説明】
【０１４０】
1  タプル蓄積・検索システム
101  ネットワーク
201  タプル装置
301  タプル分配装置
401  ユーザ端末
501  センサ端末
601  アクチュエータ端末
【図１】
2010198323.tif 000003
【図２】
2010198323.tif 000004
【図３】
2010198323.tif 000005
【図４】
2010198323.tif 000006
【図５】
2010198323.tif 000007
【図６】
2010198323.tif 000008
【図７】
2010198323.tif 000009
【図８】
2010198323.tif 000010
【図９】
2010198323.tif 000011
【図１０】
2010198323.tif 000012
【図１１】
2010198323.tif 000013
【図１２】
2010198323.tif 000014
【図１３】
2010198323.tif 000015
【図１４】
2010198323.tif 000016
【図１５】
2010198323.tif 000017
【図１６】
2010198323.tif 000018
【図１７】
2010198323.tif 000019
【図１８】
2010198323.tif 000020
【図１９】
2010198323.tif 000021
【図２０】
2010198323.tif 000022
【図２１】
2010198323.tif 000023
【図２２】
2010198323.tif 000024
【図２３】
2010198323.tif 000025
【図２４】
2010198323.tif 000026
【図２５】
2010198323.tif 000027
【図２６】
2010198323.tif 000028
【図２７】
2010198323.tif 000029
【図２８】
2010198323.tif 000030
【図２９】
2010198323.tif 000031
【図３０】
2010198323.tif 000032
【図３１】
2010198323.tif 000033
【図３２】
2010198323.tif 000034
【図３３】
2010198323.tif 000035
【図３４】
2010198323.tif 000036
【図３５】
2010198323.tif 000037
【図３６】
2010198323.tif 000038
【図３７】
2010198323.tif 000039
【図３８】
2010198323.tif 000040
【図３９】
2010198323.tif 000041