(57)【要約】      （修正有）【課題】コーディネータに適用されるトランザクション処理方法を提供する。【解決手段】コーディネータは、参加者に通信可能に接続される。コーディネータは、問合せメッセージを各参加者に送信し、応答メッセージに応じて結論を引き出し、結論を実行するとともに参加者に送信する。コーディネータは、応答メッセージの任意の１つが、参加者がトランザクションＩＤを含まずオブジェクトＩＤを含み、参加者内のオブジェクトの変更情報がコーディネータ内のオブジェクトの変更情報と同じであることを示す場合、トランザクションを実行する。また、応答メッセージの任意の１つが、参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、参加者内のオブジェクトの変更情報が、コーディネータ内のオブジェクトの変更情報とは異なることを示す場合、トランザクションをアボートする。【選択図】図２
2018049635.tif 000002
【特許請求の範囲】
【請求項１】
コーディネータに適用されるトランザクション処理方法であって、前記コーディネータは、参加者に通信可能に接続され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記方法は、
前記コーディネータによって、問合せメッセージを各参加者に送信するステップであって、前記問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、および前記オブジェクトの変更情報を運搬し、前記トランザクションＩＤは、前記トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、前記変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、ステップと、
前記コーディネータによって、前記参加者のいずれか一人から前記問合せメッセージに対する応答メッセージを受信するステップと、
前記コーディネータによって、前記応答メッセージに応じて結論を引き出し、前記コーディネータによって、前記結論を実行し、前記結論を前記参加者に送信するステップであって、前記結論は以下を含む、すなわち
操作タイプが作成または修正である前記トランザクションに関し、前記応答メッセージが、前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの前記変更情報と同じであることを示す情報を運搬する場合、前記結論は前記トランザクションを実行することである、ステップと
を含むことを特徴とするトランザクション処理方法。
【請求項２】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項１に記載の方法。
【請求項３】
前記コーディネータおよび前記参加者は、元のコーディネータに通信可能に接続されており、前記元のコーディネータはサブオブジェクトを有しておらず、その前に、前記方法は、
前記元のコーディネータが故障した後に、元の参加者のうちの１つが前記コーディネータとして選択されることをさらに含むことを特徴とする請求項１または２に記載の方法。
【請求項４】
前記元のコーディネータが故障する前に、前記方法は、
前記元のコーディネータによって、操作要求を各参加者に送信するステップであって、前記操作要求は、前記オブジェクトＩＤ、操作タイプ、前記コーディネータ内に記録された前記オブジェクトの前記変更情報、および参加者のリストを運搬し、前記参加者のリストは、すべての前記元の参加者を記録している、ステップと、
前記コーディネータによって、準備コマンドを各参加者に送信するステップであって、前記元の参加者のそれぞれが、参加者のリストを受信し記憶し、前記トランザクションのためのリソースを割り当てるように、前記コマンドは、前記トランザクションＩＤ、前記オブジェクトＩＤ、前記コーディネータ内に記録された前記オブジェクトの前記変更情報、および参加者の前記リストを運搬する、ステップと
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
参加者に通信可能に接続されたトランザクション処理装置であって、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記トランザクション処理装置内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記装置は、
問合せメッセージを各参加者に送信するように構成された問合せモジュールであって、前記問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、および前記オブジェクトの変更情報を運搬し、前記トランザクションＩＤは、前記トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、前記変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、問合せモジュールと、
前記参加者から前記問合せメッセージに対する応答メッセージを受信するように構成された受信モジュールと、
前記応答メッセージに応じて結論を引き出し、前記結論をすべての前記参加者に送信するように構成された判断モジュールであって、前記結論は以下を含む、すなわち
操作タイプが作成または修正である前記トランザクションに関し、前記応答メッセージが、前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの前記変更情報と同じであることを示す情報を運搬する場合、前記結論は前記トランザクションを実行することである、判断モジュールと、
前記判断モジュールの前記結論を実行するように構成された実行モジュールと
を備えることを特徴とするトランザクション処理装置。
【請求項７】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項６に記載のトランザクション処理装置。
【請求項８】
前記コーディネータおよび前記参加者は、元のコーディネータに通信可能に接続されており、前記元のコーディネータはサブオブジェクトを有しておらず、前記受信モジュールは、
各参加者に対する前記元のコーディネータの、前記トランザクションＩＤ、前記オブジェクトＩＤ、前記オブジェクトの前記変更情報、および参加者のリストを受信するようにさらに構成されることを特徴とする請求項６または７に記載のトランザクション処理装置。
【請求項９】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項７または８に記載のトランザクション処理装置。
【請求項１０】
参加者に通信可能に接続されたコーディネータであって、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記コーディネータは、プロセッサ、および前記プロセッサと通信するメモリを備え、前記メモリは、プログラム命令を記憶するように構成され、前記プロセッサは、前記プログラム命令を実行するように構成され、前記プログラム命令は、
問合せメッセージを各参加者に送信することであって、前記問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、および前記オブジェクトの変更情報を運搬し、前記トランザクションＩＤは、前記トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、前記変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、送信することと、
前記参加者のいずれか一人から前記問合せメッセージに対する応答メッセージを受信することと、
前記応答メッセージに応じて結論を引き出し、前記結論を実行し、前記結論を前記参加者に送信することであって、前記結論は以下を含む、すなわち
操作タイプが作成または修正である前記トランザクションに関し、前記応答メッセージが、前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの前記変更情報と同じであることを示す情報を運搬する場合、前記結論は前記トランザクションを実行することである、送信することと
を行うために使用されることを特徴とするコーディネータ。
【請求項１１】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項１０に記載のコーディネータ。
【請求項１２】
前記プログラム命令は、元のコーディネータによって送信された前記トランザクションＩＤ、前記オブジェクトＩＤ、前記オブジェクトの前記変更情報、および参加者のリストを受信するためにさらに使用されることを特徴とする請求項１０または１１に記載のコーディネータ。
【請求項１３】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項１０乃至１２のいずれか一項に記載のコーディネータ。
【請求項１４】
コーディネータに適用されるトランザクション処理方法であって、前記コーディネータは、参加者に通信可能に接続され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記方法は、
前記コーディネータによって、問合せメッセージを各参加者に送信するステップであって、前記問合せメッセージは、トランザクションＩＤおよびオブジェクトＩＤを運搬し、前記トランザクションＩＤは、トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、ステップと、
前記コーディネータによって、前記参加者のいずれか一人から前記問合せメッセージに対する応答メッセージを受信するステップであって、前記応答メッセージは、前記応答メッセージを送信する前記参加者内の前記オブジェクトの変更情報を運搬する、ステップと、
前記コーディネータによって、前記応答メッセージに応じて結論を引き出し、前記コーディネータによって、前記結論を実行し、前記結論を前記参加者に送信するステップであって、前記結論は、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報と同じ場合、前記結論は、前記トランザクションを実行することであること、または、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報とは異なる場合、前記結論は、前記トランザクションをアボートすることであること
の少なくとも一方を含む、ステップと
を含むことを特徴とするトランザクション処理方法。
【請求項１５】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記参加者内の前記オブジェクトの前記変更情報が、前記コーディネータ内の前記オブジェクトの変更情報とは異なることは、特に、
前記参加者内の前記オブジェクトのバージョンが、前記コーディネータ内の前記オブジェクトのバージョンよりも後である、または、
前記参加者内の前記オブジェクトのバージョンが、前記コーディネータ内の前記オブジェクトのバージョンよりも古い
ことを特徴とする請求項１４に記載の方法。
【請求項１７】
前記コーディネータおよび前記参加者は、元のコーディネータに通信可能に接続されており、前記元のコーディネータはサブオブジェクトを有しておらず、その前に、前記方法は、
前記元のコーディネータが故障した後に、元の参加者のうちの１つが前記コーディネータとして選択されることをさらに含むことを特徴とする請求項１４乃至１６のいずれか一項に記載の方法。
【請求項１８】
元のコーディネータが故障する前に、前記方法は、
前記元のコーディネータによって、操作要求を各参加者に送信するステップであって、前記操作要求は、前記オブジェクトＩＤ、操作タイプ、前記コーディネータ内に記録された前記オブジェクトの前記変更情報、および参加者のリストを運搬し、前記参加者のリストは、すべての前記元の参加者を記録している、ステップと、
前記コーディネータによって、準備コマンドを各参加者に送信するステップであって、前記元の参加者のそれぞれが、参加者のリストを受信し記憶し、前記トランザクションのためのリソースを割り当てるように、前記コマンドは、前記トランザクションＩＤ、前記オブジェクトＩＤ、前記コーディネータ内に記録された前記オブジェクトの前記変更情報、および参加者の前記リストを運搬する、ステップと
をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１９】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項１４乃至１８のいずれか一項に記載の方法。
【請求項２０】
参加者に通信可能に接続されたトランザクション処理装置であって、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記トランザクション処理装置内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記装置は、
問合せメッセージを各参加者に送信するように構成された問合せモジュールであって、前記問合せメッセージは、トランザクションＩＤおよびオブジェクトＩＤを運搬し、前記トランザクションＩＤは、前記トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、問合せモジュールと、
前記参加者のいずれか一人から前記問合せメッセージに対する応答メッセージを受信するように構成された受信モジュールであって、前記応答メッセージは、前記応答メッセージを送信する前記参加者内の前記オブジェクトの変更情報を運搬する、受信モジュールと、
前記応答メッセージに応じて結論を引き出し、コーディネータによって前記結論を実行し、前記結論を前記参加者に送信するように構成された判断モジュールであって、前記結論は、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報と同じ場合、前記結論は、前記トランザクションを実行することであること、または、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報とは異なる場合、前記結論は、前記トランザクションをアボートすることであること
の少なくとも一方を含む、判断モジュールと、
前記判断モジュールの前記結論を実行するように構成された実行モジュールと
を備えることを特徴とするトランザクション処理装置。
【請求項２１】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項２０に記載のトランザクション処理装置。
【請求項２２】
前記コーディネータおよび前記参加者は、元のコーディネータに通信可能に接続されており、前記元のコーディネータはサブオブジェクトを有しておらず、前記受信モジュールは、
前記元のコーディネータによって送信された前記トランザクションＩＤ、前記オブジェクトＩＤ、前記オブジェクトの前記変更情報、および参加者のリストを受信するようにさらに構成されることを特徴とする請求項２０または２１に記載のトランザクション処理装置。
【請求項２３】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項２０乃至２２のいずれか一項に記載のトランザクション処理装置。
【請求項２４】
参加者に通信可能に接続されたコーディネータであって、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記コーディネータは、プロセッサ、および前記プロセッサと通信するメモリを備え、前記メモリは、プログラム命令を記憶するように構成され、前記プロセッサは、前記プログラム命令を実行するように構成され、前記プログラム命令は、
問合せメッセージを各参加者に送信することであって、前記問合せメッセージは、トランザクションＩＤおよびオブジェクトＩＤを運搬し、前記トランザクションＩＤは、前記トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、送信することと、
前記参加者のいずれか一人から前記問合せメッセージに対する応答メッセージを受信することであって、前記応答メッセージは、前記応答メッセージを送信する前記参加者内の前記オブジェクトの変更情報を運搬する、受信することと、
前記応答メッセージに応じて結論を引き出し、前記結論を実行し、前記結論を前記参加者に送信することであって、前記結論は、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報と同じ場合、前記結論は、前記トランザクションを実行することであること、または、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報とは異なる場合、前記結論は、前記トランザクションをアボートすることであること
の少なくとも一方を含む、送信することと
を行うために使用されることを特徴とするコーディネータ。
【請求項２５】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項２５に記載のコーディネータ。
【請求項２６】
前記プログラム命令は、元のコーディネータによって送信された前記トランザクションＩＤ、前記オブジェクトＩＤ、前記オブジェクトの前記変更情報、および参加者のリストを受信するためにさらに使用されることを特徴とする請求項２５に記載のコーディネータ。
【請求項２７】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項２５に記載のコーディネータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報技術の分野に関し、詳細にはトランザクション処理方法および装置に関する。
【背景技術】
【０００２】
本出願は、参照により本明細書に組み込まれている、２０１３年１０月２９日に中国特許庁に出願された「ＴＲＡＮＳＡＣＴＩＯＮ  ＰＲＯＣＥＳＳＩＮＧ  ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ」と題される中国特許出願第ＰＣＴ／ＣＮ２０１３／０８６１６９号の優先権を主張するものである。
【０００３】
オブジェクトベースのストレージシステム（Ｏｂｊｅｃｔ−Ｂａｓｅｄ  Ｓｔｏｒａｇｅ  Ｓｙｓｔｅｍ）は、分散されたストレージシステムであり、複数のオブジェクトベースのストレージデバイスＯＳＤ（Ｏｂｊｅｃｔ−ｂａｓｅｄ  Ｓｔｏｒａｇｅ  Ｄｅｖｉｃｅｓ）によって形成される。ＯＳＤはネットワークを介して相互接続され、また、ＯＳＤはオブジェクトベースのストレージシステムにおいてノードと呼ばれることがある。オブジェクトベースのストレージシステムにおいて、オブジェクト（Ｏｂｊｅｃｔ）は、最も基本的な記憶されるコンテンツ単位であり、オブジェクトは、データ、およびデータの属性情報を含む。データは、オブジェクトに記憶されたコンテンツを指し、たとえば、ビデオファイルまたは音楽ファイルなどであり、データの属性情報は、たとえば、ファイルのサイズまたはバージョン情報などである。
【０００４】
記憶されたオブジェクトの信頼性のために、一般に、１つのオブジェクトがいくつかの異なるＯＳＤに記憶される。このようにすると、ＯＳＤの一部が故障していても、オブジェクトの読み取り操作および書き込み操作が影響を受けず、それによりデータ信頼性を向上させる。多くのコピーによってバックアップされた後に同じオブジェクトが異なるノードに記憶される必要があるため、すなわち、オブジェクトが複数のＯＳＤノードにわたって記憶されるので、これらのデータのバックアップはコピーとも呼ばれることがある。オブジェクトベースのストレージの整合性要求を保証するために、オブジェクトに対する書き込み操作がトランザクションによって保証される必要がある。トランザクションは、データ変更のための操作のグループとして理解され得る。操作のグループにおいて、データは、すべての操作が成功しない限り変更されない。これは、異なるＯＳＤにおける同じオブジェクトのコピーが同じであることを保証し、それにより、コピーの一部が変更されるがその他のコピーが変更されないことを回避する。
【０００５】
トランザクションは、一連の操作のセットであり、これらの操作は、しばしば、複数のノードに分散されたデータが整合性のある状態から別の整合性のある状態に変換されるように、複数のノードによって並列に実行され（分散されたオブジェクトベースのストレージシステムでは、これは、複数のノードにおける同じオブジェクトが同じバージョン番号を有することを意味する）、一連の操作を構成する操作のすべてが実行されるかまたはすべてが実行されず、それにより、ノードにおけるデータ状態の整合性を維持する。非ストレージ分野において、同様にトランザクションが必要とされる状況が存在する。
【０００６】
既存の２相コミットメントプロトコル（Ｔｗｏ−ｐｈａｓｅ  Ｃｏｍｍｉｔｍｅｎｔ  Ｐｒｏｔｏｃｏｌ、２ＰＣ）は、分散されたトランザクションコミットメントの原子性を保証することができる。２ＰＣプロトコルは、分散されたトランザクションのＯＳＤをコーディネータ（Ｃｏｏｒｄｉｎａｔｏｒ）として任命し、すべての他のＯＳＤを参加者（Ｐａｒｔｉｃｉｐａｎｔｓ）として任命する。コーディネータのみが、トランザクションをコミットするまたは取り消す決定権を有し、トランザクションをコミットするまたは取り消す結論を出した後に、コーディネータは結論を参加者に送信する。結論がトランザクションをコミットすることである場合、コミット（Commit）メッセージが送信され、結論がトランザクションをアボートすることである場合、アボート（Abort）メッセージが送信される。各参加者は、コーディネータの結論を受信し、結論に従って参加者のローカルデータベースにおいて操作を実行し、参加者はまた、サブトランザクションを取り消すまたはコミットする意図を、コーディネータに提案することもある。
【０００７】
参加者がコーディネータの結論を待っているときに、コーディネータが故障している場合、参加者はコーディネータの結論を長時間待つことになる。待機期間中に、各参加者のトランザクションが完了されることができず、占有されたリソースが解放されることができず、結果としてブロッキングをもたらす。ブロッキングを回避するために、従来技術は、参加者が他の参加者のトランザクション状態を問い合わせて、参加者がトランザクションを実行する必要があるかどうかを確認する、状態確認技術を提案している。しかしながら、この方法では、参加者間の相互作用プロセスが過剰であり、結果としてシステム性能の低下をもたらす。
【０００８】
コーディネータが故障していない場合でも、参加者の情報を読み取ることによってトランザクション結論を如何に引き出すかも解決されるべき問題である。
【発明の概要】
【０００９】
本発明は、トランザクション処理方法を提供し、この方法は、参加者の情報を読み取ることによってトランザクション結論を引き出すことができる。
【００１０】
第１の態様によれば、本発明の実施形態は、コーディネータに適用されるトランザクション処理方法であって、コーディネータは、参加者に通信可能に接続され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、サブオブジェクトのうちの１つは、コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、方法は、コーディネータによって、問合せメッセージを各参加者に送信するステップであって、問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、およびオブジェクトの変更情報を運搬し、トランザクションＩＤは、トランザクションを識別するために使用され、オブジェクトＩＤは、オブジェクトを識別するために使用され、変更情報は、オブジェクトのコンテンツに対応し、異なる変更情報を有するオブジェクトのコンテンツは異なっている、ステップと、コーディネータによって、各参加者から問合せメッセージに対する応答メッセージを受信するステップと、コーディネータによって、応答メッセージに応じて結論を引き出し、コーディネータによって、結論を実行し、結論をすべての参加者に送信するステップであって、結論は、応答メッセージの任意の１つが第１の情報を運搬している場合、結論は、トランザクションを実行することであり、第１の情報は、参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、参加者内のオブジェクトの変更情報が、コーディネータ内のオブジェクトの変更情報と同じであることを示すこと、または、応答メッセージの任意の１つが第２の情報を運搬している場合、結論は、トランザクションをアボートすることであり、第２の情報は、参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、参加者内のオブジェクトの変更情報が、コーディネータ内のオブジェクトの変更情報とは異なることを示すことの少なくとも一方を含む、ステップとを含むことを特徴とするトランザクション処理方法を提供する。
【００１１】
第１の態様の第１の実装様式では、結論は、すべての応答メッセージが第３の情報を運搬している場合、結論は、トランザクションを実行することであり、第３の情報は、参加者がトランザクションＩＤを含むことを示すことと、応答メッセージの任意の１つが第４の情報を運搬している場合、結論は、トランザクションを実行することであり、第４の情報は、参加者がトランザクションＩＤを含まず、参加者がオブジェクトＩＤを含まないことを示すこととの少なくとも一方をさらに含む。
【００１２】
第２の態様によれば、本発明の実施形態は、参加者に通信可能に接続されたトランザクション処理装置であって、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、サブオブジェクトのうちの１つは、トランザクション処理装置内にあり、その他のサブオブジェクトは、異なる参加者内にあり、装置は、問合せメッセージを各参加者に送信するように構成された問合せモジュールであって、問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、およびオブジェクトの変更情報を運搬し、トランザクションＩＤは、トランザクションを識別するために使用され、オブジェクトＩＤは、オブジェクトを識別するために使用され、変更情報は、オブジェクトのコンテンツに対応し、異なる変更情報を有するオブジェクトのコンテンツは異なっている、問合せモジュールと、各参加者から問合せメッセージに対する応答メッセージを受信するように構成された受信モジュールと、応答メッセージに応じて結論を引き出し、結論をすべての参加者に送信するように構成された判断モジュールであって、結論は、応答メッセージの任意の１つが第１の情報を運搬している場合、結論は、トランザクションを実行することであり、第１の情報は、参加者が、トランザクションＩＤを含みオブジェクトＩＤを含み、参加者内のオブジェクトの変更情報が、コーディネータ内のオブジェクトの変更情報と同じであることを示すこと、または、応答メッセージの任意の１つが第２の情報を運搬している場合、結論は、トランザクションをアボートすることであり、第２の情報は、参加者が、トランザクションＩＤを含みオブジェクトＩＤを含み、参加者内のオブジェクトの変更情報が、コーディネータ内のオブジェクトの変更情報とは異なることを示すことの少なくとも一方を含む、判断モジュールと、判断モジュールの結論を実行するように構成された実行モジュールとを備えることを特徴とするトランザクション処理装置を提供する。
【００１３】
第２の態様の第１の実装様式では、結論は、すべての応答メッセージが第３の情報を運搬している場合、結論は、トランザクションを実行することであり、第３の情報は、参加者がトランザクションＩＤを含むことを示すことと、応答メッセージの任意の１つが第４の情報を運搬している場合、結論は、トランザクションを実行することであり、第４の情報は、参加者がトランザクションＩＤを含まず、参加者がオブジェクトＩＤを含まないことを示すこととの少なくとも一方をさらに含む。
【００１４】
第３の態様によれば、本発明の実施形態は、コーディネータに適用されるトランザクション処理方法であって、コーディネータは、参加者に通信可能に接続され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、サブオブジェクトのうちの１つは、コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、方法は、コーディネータによって、問合せメッセージを各参加者に送信するステップであって、問合せメッセージは、トランザクションＩＤおよびオブジェクトＩＤを運搬し、トランザクションＩＤは、トランザクションを識別するために使用され、オブジェクトＩＤは、オブジェクトを識別するために使用され、変更情報は、オブジェクトのコンテンツに対応し、異なる変更情報を有するオブジェクトのコンテンツは異なっている、ステップと、コーディネータによって、各参加者から問合せメッセージに対する応答メッセージを受信するステップであって、応答メッセージは、第５の情報を運搬し、第５の情報は、参加者が、トランザクションＩＤを含まないがオブジェクトＩＤを含むことを示し、第５の情報は、応答メッセージを送信する参加者内のオブジェクトの変更情報をさらに運搬する、ステップと、コーディネータによって、応答メッセージに応じて結論を引き出し、コーディネータによって、結論を実行し、結論をすべての参加者に送信するステップであって、結論は、参加者内のオブジェクトの変更情報がコーディネータ内のオブジェクトの変更情報と同じ場合、結論は、トランザクションを実行することであること、または、参加者内のオブジェクトの変更情報がコーディネータ内のオブジェクトの変更情報とは異なる場合、結論は、トランザクションをアボートすることであることの少なくとも一方を含む、ステップと、を含むことを特徴とするトランザクション処理方法を提供する。
【００１５】
第３の態様の第１の実装様式では、結論は、すべての応答メッセージが第３の情報を運搬している場合、結論は、トランザクションを実行することであり、第３の情報は、参加者がトランザクションＩＤを含むことを示すことと、応答メッセージの任意の１つが第４の情報を運搬している場合、結論は、トランザクションを実行することであり、第４の情報は、参加者がトランザクションＩＤを含まず、参加者がオブジェクトＩＤを含まないことを示すこととの少なくとも一方をさらに含む。
【００１６】
第４の態様によれば、本発明の実施形態は、参加者に通信可能に接続されたトランザクション処理装置であって、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、サブオブジェクトのうちの１つは、トランザクション処理装置内にあり、その他のサブオブジェクトは、異なる参加者内にあり、装置は、問合せメッセージを各参加者に送信するように構成された問合せモジュールであって、問合せメッセージは、トランザクションＩＤおよびオブジェクトＩＤを運搬し、トランザクションＩＤは、トランザクションを識別するために使用され、オブジェクトＩＤは、オブジェクトを識別するために使用される、問合せモジュールと、各参加者から問合せメッセージに対する応答メッセージを受信するように構成された受信モジュールであって、応答メッセージは、参加者がトランザクションＩＤを含まないがオブジェクトＩＤを含むことを示す第５の情報を運搬し、第５の情報は、応答メッセージを送信する参加者内のオブジェクトの変更情報をさらに運搬する、受信モジュールと、応答メッセージに応じて結論を引き出し、コーディネータによって結論を実行し、結論をすべての参加者に送信するように構成された判断モジュールであって、変更情報は、オブジェクトのコンテンツに対応し、異なる変更情報を有するオブジェクトのコンテンツは異なっており、結論は、参加者内のオブジェクトの変更情報がコーディネータ内のオブジェクトの変更情報と同じ場合、結論は、トランザクションを実行することであること、または、参加者内のオブジェクトの変更情報がコーディネータ内のオブジェクトの変更情報とは異なる場合、結論は、トランザクションをアボートすることであることの少なくとも一方を含む、判断モジュールと、判断モジュールの結論を実行するように構成された実行モジュールとを備えることを特徴とするトランザクション処理装置を提供する。
【００１７】
第４の態様の第１の実装様式では、結論は、すべての応答メッセージが第３の情報を運搬している場合、結論は、トランザクションを実行することであり、第３の情報は、参加者がトランザクションＩＤを含むことを示すことと、応答メッセージの任意の１つが第４の情報を運搬している場合、結論は、トランザクションを実行することであり、第４の情報は、参加者がトランザクションＩＤを含まず、参加者がオブジェクトＩＤを含まないことを示すこととの少なくとも一方をさらに含む。
【００１８】
上記の態様の実装様式において、オブジェクトの変更情報は、オブジェクトのバージョン番号であってよい。
【００１９】
本発明の実施形態によって提供される方法によれば、参加者におけるオブジェクトの変更情報を検出することにより、トランザクション結論が引き出され、それにより、トランザクション処理の効率を向上させることが可能である。
【図面の簡単な説明】
【００２０】
本発明または従来技術において技術的解決策をより明確に説明するために、実施形態または従来技術を説明するために必要とされる添付図面を以下で簡潔に紹介する。以下の説明において添付図面は本発明のいくつかの実施形態を示すに過ぎず、これらの添付図面からさらに他の図面が導き出されてもよい。
【図１】本発明の実施形態によるトランザクション処理方法のフローチャートである。
【図２】本発明の実施形態によるトランザクション処理方法のフローチャートである。
【図３】本発明の実施形態によるトランザクション処理装置の概略図である。
【図４】本発明の実施形態によるトランザクション処理方法のフローチャートである。
【図５】本発明の実施形態によるコーディネータの概略構造図である。
【発明を実施するための形態】
【００２１】
以下では、本発明の実施形態において添付図面を参照して本発明の技術的解決策を説明する。明らかに、説明される実施形態は、本発明の実施形態の全部でなく一部に過ぎない。本発明の実施形態に基づいて得られるすべての他の実施形態が、本発明の保護範囲内に入るものとする。
【００２２】
トランザクションは、一連の操作のセットである。トランザクションは複数の操作を含むことができるが、含まれるすべての操作は分割できず、操作のすべてが実行されるかまたは全く実行されないかのいずれかである。Ｎ＋Ｍ個のノード上の操作が、トランザクションとして機能し得る。１または複数のノードに対する操作が行われる場合、同じタイプの操作が他のノードに対しても実行される必要がある。
【００２３】
トランザクションは、コーディネータと参加者によって一緒に実行される。コーディネータは、決定を行うことによって結論を生成し、参加者は、コーディネータの結論を実行し、参加者はまた、コーディネータのための決定の基礎を提供することもできる。
【００２４】
２相コミットメントプロトコルでは、システムは、一般に２タイプのノードを含み、すなわち、一方のタイプは、コーディネータ（Ｃｏｏｒｄｉｎａｔｏｒ）であり、一般に１つのトランザクションにおいて１つのコーディネータが存在し、他方のタイプは、参加者（Ｐａｒｔｉｃｉｐａｎｔｓ）であり、複数の参加者が存在し得る。各ノードは、先書きログ（Ｗｒｉｔｅ−ａｈｅａｄ  Ｌｏｇ）を記録し、先書きログを永続的に記憶することができ、ノードが故障している場合でも、ログが失われない。トランザクションネゴシエーションのための実行可能な方法のステップは、以下のようになる。（１）コーディネータは、操作要求を各参加者に送信し、操作要求は、トランザクションを実行することに同意するまたは同意しないことが可能である。操作要求は、参加者とネゴシエートするために使用され、参加者によって実行される必要はない。（２）コーディネータからの操作要求を受信した後、参加者は、応答メッセージを返し、応答メッセージは、コーディネータの操作要求に参加者が同意するかどうかを運搬する。たとえば、応答メッセージは、コーディネータの操作要求に同意する、またはコーディネータの操作要求を拒否することが可能であり、参加者は、コーディネータの決定を待つために待機段階（waiting phase）に入る。（３）コーディネータは、各参加者の応答メッセージを要約して決定を行い結論を引き出し、結論を各参加者に送信する。（４）結論を受信した後、各参加者は、結論を実行し、トランザクションによって占有されたリソースを解放する。
【００２５】
トランザクションネゴシエーションおよび処理の上記プロセスにおいて、例外が発生することがある。たとえば、ステップ（４）で、コーディネータが故障して、したがって参加者の一部に送信される結論が成功裏に送信されないことがあり、または参加者が故障して、結論を受信しない、または別の理由により、参加者の一部が結論を受信しない。参加者の一部が結論を受信しないこれらの事例は、一般的にコーディネータ障害と呼ばれる。コーディネータ障害は、参加者の一部がトランザクションの結論を実行し、その他の参加者がトランザクションの結論を実行しないようにする。結論を受信しないこれらの参加者は、常に待機段階またはいわゆる準備された（Ｐｒｅｐａｒｅｄ）状態に留まり、トランザクションによって占有されたリソースは時間内に解放されることができない。この現象はブロッキングと呼ばれる。
【００２６】
従来技術では、ブロッキングを回避するために、コーディネータの決定結論を受信した後、参加者は、トランザクションによって占有されたリソースを解放しない。前述のステップ（４）は、（５）および（６）に置き換えられ、すなわち、（５）結論を実行した後、参加者は、受信された結論をログ様式で記録する必要があり、メッセージを他の参加者に送信して、参加者が結論を受信したことを他の参加者に通知し、（６）特定の参加者がすべての他の参加者から結論を受信した後、例外が発生していないことが証明され、したがって、トランザクションによって占有されたリソースが解放されることができ、操作ログが再び記録される。
【００２７】
従来技術はブロッキングの問題をある程度解決することができるが、例外が発生するときにシステムブロッキングを回避するために、例外が発生するかどうかに関わらず、ステップ（５）および（６）におけるネゴシエーションおよびログの記録などの操作が、トランザクションの実行ごとに実行され、それによりシステムリソースを消費する。
【００２８】
理解を促進するために、本発明の実施形態では、例として、ストレージシステム、特に分散されたオブジェクトベースのストレージシステムが使用される。しかしながら、本発明は、分散されたストレージに限定されず、トランザクションが必要とされる別の技術分野にも適用可能である。ストレージ分野では、トランザクションは、データを書き込むこと、データを削除すること、またはデータを修正することであり得る。オブジェクトは、データの要素などトランザクション操作の対象である。データは、ファイル名、シリアル番号、パス、論理アドレス、または物理アドレスとして識別され得る。たとえば、「作成（create）」のトランザクションは、新しいデータを対象データに書き込むことができ、「削除（delete）」のトランザクションは、対象データを削除することができる。
【００２９】
オブジェクトベースのストレージは、分散されたストレージのタイプであることに留意されたい。本発明の実施形態は、オブジェクトベースのストレージまたは他の分散されたストレージに適用されてよく、本発明の実施形態におけるオブジェクトは、本発明の実施形態をオブジェクトベースのストレージの分野に限定することは意図されていない。分散されたストレージにおいて、記憶されたデータは、オブジェクトと呼ばれ、たとえば、特定のタイプまたは特定のタイプの一部のファイル、テキスト、画像、データストリーム、およびコンピュータコードなどである。本発明の実施形態では、オブジェクトは、トランザクションによって操作され得るデータである。本発明の実施形態では、データは、複数のサブデータブロックに分割されてよく、各サブブロックは、１つのストレージノードに記憶される。ストレージノードは、物理的に分離される、または論理的に分離されることが可能である。たとえば、ストレージノードは、たとえば、ストレージクラスタ、ストレージサーバ、ハードディスク、ハードディスクパーティション、またはフォルダであり得る。
【００３０】
本発明の実施形態では、オブジェクトのバージョン番号は、オブジェクトが変化したかどうかを識別することができ、オブジェクトのバージョン番号は、オブジェクトを形成する各サブオブジェクトで使用される。たとえば、オブジェクトが作成または修正された後、オブジェクトは新しいバージョン番号を有し、オブジェクトのサブオブジェクトのバージョン番号は対応して更新される。バージョン番号は、オブジェクトにおけるサブオブジェクトの整合性を識別することができる。
【００３１】
別の実施形態では、バージョン番号の他に、オブジェクトが変化したかどうかを識別するために、他の情報、たとえば、オブジェクトの名前、オブジェクトによって占有されたストレージスペースのサイズ、オブジェクトの属性が使用されてよい。オブジェクトのコンテンツが変化したかどうかを記録することができる情報が、一般的にオブジェクトの変更情報と呼ばれる。変更情報は、オブジェクトのコンテンツに対応し、異なる変更情報を有するオブジェクトのコンテンツは異なっている。任意のサブオブジェクトが変化することは、オブジェクトのコンテンツ全体が変化することに相当し、対応してオブジェクトの変化情報全体が更新される必要がある。本発明の実施形態では、説明を容易にするため、オブジェクトのバージョン番号が、オブジェクトの変更情報を導入する例として使用される。
【００３２】
データファイルオブジェクトは、同じ長さを有するＮ個のサービスデータブロックに分割され、欠けた部分は０で充填され得る。Ｎ個のデータブロックは、Ｍ個のチェックデータブロックを生成するように符号化され計算され、Ｎ＋Ｍ個のデータブロックがＮ＋Ｍ個の異なるノードに記憶され、ここで、ＮおよびＭは両方とも自然数である。データの任意のＭ個の部分が故障している場合、残りのＮ個の部分のデータが、故障データを計算するために使用されてよく、このデータ回復技術は、消失符号（Ｅｒａｓｕｒｅ  Ｃｏｄｅ、ＥＣ）と呼ばれることがある。Ｎ＋Ｍ個のデータブロックのセットは、オブジェクトと呼ばれることがあり、Ｎ＋Ｍ個のデータブロックの任意の１つが、サブオブジェクトと呼ばれる。
【００３３】
これらのＮ＋Ｍ個のサブオブジェクトは相関し、サブオブジェクトの任意の１つが更新された場合、すべての残りのサブオブジェクトも更新される必要があり、それによりサブオブジェクトの整合性を維持する。Ｎ＋Ｍ個のサブオブジェクトの整合性は、トランザクションによって保証されることができる。オブジェクトがＮ個のサブオブジェクトに分割される前に、オブジェクトにバージョン番号が割り当てられ、オブジェクトのバージョン番号は、オブジェクトにより生成されるＮ＋Ｍ個のサブオブジェクト内に記録される。したがって、整合性は、オブジェクトのバージョン番号を使用して識別される。Ｎ＋Ｍ個のサブオブジェクトが整合性のある場合、それらは、同じバージョン番号を有し、ノードの一部におけるデータのバージョン番号が他のノードにおけるデータのそれらとは異なる場合、それは、データが整合性のないことを意味する。
【００３４】
異なるバージョン番号は多くの理由でもたらされる可能性があり、たとえば、ノードが期間にわたって故障し、故障期間中、ノードがサブオブジェクトの書き込みのいくつかの操作を抜かした場合、故障したノードにおけるサブオブジェクトは、書き込み操作が実行されたノードにおけるサブオブジェクトと整合性がなく、バージョン番号が異なる。分散されたストレージシステムからクライアントがこれらのサブオブジェクトを読み取ると、これらの整合性のないサブオブジェクトが発見されることができる。整合性のあるバージョンを有するＮ個のサブオブジェクトが使用されて、Ｎ個のサブオブジェクトと整合性のあるサブオブジェクトを回復するようにエラーチェック様式に従って整合性のないサブオブジェクトを回復することができる。
【００３５】
本発明の実施形態によって提供される方法によれば、元のコーディネータが故障しているとき、新しいコーディネータが参加者から再選択される。新しいコーディネータが、他の参加者のオブジェクトの変更情報を検出することによって、トランザクション結論を引き出すことができる。しかしながら、従来技術では、コーディネータが故障しているときにブロッキングに対処するために、コーディネータが故障しているかどうかに関わらず、トランザクション結論を引き出すために同じ手順が採用される。この手順は、トランザクションが故障していないときに本出願で採用されるトランザクション処理技術よりも複雑である。したがって、本出願は全体的効率性がより高く、（たとえば、コーディネータが故障しているときの）例外処理機構が提供され、それにより、例外が発生しないときのトランザクション処理の手順を単純化する。
【００３６】
本出願の解決策は、元のコーディネータが故障していない場合であっても、トランザクション結論がネゴシエーションによって引き出されることができる新しいネゴシエーション機構も提供する。
【００３７】
実施形態１
本発明の実施形態は、コーディネータに適用されるトランザクション処理方法であって、コーディネータは、参加者に通信可能に接続され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、サブオブジェクトのうちの１つは、コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、方法は、コーディネータによって、問合せメッセージを各参加者に送信するステップであって、問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、およびオブジェクトのバージョン番号を運搬し、トランザクションＩＤは、トランザクションを識別するために使用され、オブジェクトＩＤは、オブジェクトを識別するために使用される、ステップと、コーディネータによって、各参加者から問合せメッセージに対する応答メッセージを受信するステップと、コーディネータによって、応答メッセージに応じて結論を引き出し、コーディネータによって、結論を実行し、結論をすべての参加者に送信するステップとを含むトランザクション処理方法を提供する。
【００３８】
結論は、応答メッセージの任意の１つが第１の情報を運搬している場合、結論は、トランザクションを実行することであり、第１の情報は、参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、参加者内のオブジェクトのバージョン番号が、コーディネータ内のオブジェクトのバージョン番号と同じであることを示すこと、または、応答メッセージの任意の１つが第２の情報を運搬している場合、結論は、トランザクションをアボートすることであり、第２の情報は、参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、参加者内のオブジェクトのバージョン番号が、コーディネータ内のオブジェクトのバージョン番号とは異なることを示すことの少なくとも一方を含む。
【００３９】
結論は、すべての応答メッセージが第３の情報を運搬している場合、結論は、トランザクションを実行することであり、第３の情報は、参加者がトランザクションＩＤを含むことを示すことと、応答メッセージの任意の１つが第４の情報を運搬している場合、結論は、トランザクションを実行することであり、第４の情報は、参加者がトランザクションＩＤを含まず、参加者がオブジェクトＩＤを含まないことを示すこととの少なくとも一方をさらに含む。
【００４０】
コーディネータは、第１の情報および第２の情報が存在するかどうかを同時に検出し、検出結果に応じて結論を引き出す機能を有することができる。あるいは、コーディネータは、第１の情報、第２の情報、第３の情報、および第４の情報が存在するかどうかを同時に検出し、検出結果に応じて結論を引き出す機能を有することができる。あるいは、コーディネータは、第１の情報、第２の情報、第３の情報、および第４の情報のうちの任意の１つが存在するかどうかのみを検出し、検出結果に応じて結論を引き出す機能を有することができる。
【００４１】
本発明の実施形態によるトランザクション実行方法の実施形態の特定の実装ステップを示す図１を参照する。方法は、コーディネータおよび複数の参加者により形成されたトランザクション処理システムに適用され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成される。コーディネータは、サブオブジェクトを記憶しないことがあり、コーディネータは、トランザクションに対する調整を行い、サブオブジェクトは、別個に異なる参加者内にある。たとえば、参加者はＯＳＤであってよい。トランザクション実行は、以下のステップを含むことができる。
【００４２】
ステップ１１：コーディネータは、操作要求を各参加者に送信し、操作要求は、トランザクションＩＤ、操作タイプ、およびコーディネータ内に記録されたオブジェクトバージョン番号Ｖｅｒｓｉｏｎ＿Ｔを運搬している。トランザクションの操作タイプがデータを書き込むことである場合、操作要求は、書き込まれるべきデータを運搬することもできる。
【００４３】
操作要求は、オブジェクトを操作することに対して準備するように参加者に指示することができる。トランザクションＩＤは、トランザクションを識別し、識別されたトランザクションは、トランザクションによって操作されるオブジェクトに関連する。
【００４４】
たとえば、書き込み（Ｗｒｉｔｅ）コマンドがＮ＋Ｍ個の参加者に送信され、書き込みコマンドは、トランザクションＩＤ、操作タイプ、およびコーディネータ内に記録されたオブジェクトバージョン番号Ｖｅｒｓｉｏｎ＿Ｔを運搬しており、操作タイプは、たとえば、書き込みまたは削除である。操作タイプが書き込みであるとき、書き込みコマンドは、各サブオブジェクト内に書き込まれるように準備された書き込まれるべきデータを運搬することもできる。
【００４５】
ステップ１２：コーディネータは、準備（Ｐｒｅｐａｒｅ）コマンドを各参加者に送信し、準備コマンドは、トランザクションＩＤ、オブジェクトＩＤ、コーディネータ内に記録されたオブジェクトバージョン番号、および参加者のリストを運搬している。
【００４６】
オブジェクトＩＤは、トランザクションＩＤで識別されたトランザクションによって操作されるオブジェクトのＩＤであり、オブジェクトバージョン番号は、オブジェクトＩＤで識別されたオブジェクトのバージョン番号であり、参加者のリストは、すべての参加者を記録する。
【００４７】
ステップ１３：準備（Ｐｒｅｐａｒｅ）コマンドをコーディネータから受信した後、参加者は、参加者のリストを記憶し、トランザクションのためのリソースを割り当てる。リソースを割り当てた後、参加者は、準備完了（Ｐｒｅｐａｒｅｄ）メッセージをコーディネータに送信し、参加者は、準備された段階に入る。別の実施形態では、参加者がトランザクションＩＤを発見しない場合、または参加者がトランザクションを実行する条件を満たさない場合、参加者は、コーディネータに通知するためにメッセージを送信する。
【００４８】
ステップ１４：コーディネータは、決定を行い、決定から引き出された結論を各参加者に送信する。たとえば、すべての参加者が準備完了メッセージをフィードバックすると、決定結論は、トランザクションを実行することであり、結論は、各参加者に送信される。結論がトランザクションを実行することであるとき、結論は、コミットメッセージを使用することにより示され得る。別の場合、結論は、トランザクションをアボートすることであり得る。
【００４９】
ステップ１５：決定者の結論を受信している参加者は結論を実行する。その場合、参加者は、トランザクションによって占有されたリソースを解放する。
【００５０】
従来技術における無ブロッキングトランザクション処理方法は、ステップ１１からステップ１４でそれとは異なる。たとえば、ステップ（１）において、このトランザクションのオブジェクトＩＤ、操作タイプ、およびバージョン番号Ｖｅｒｓｉｏｎ＿Ｔのいずれも送信されない。
【００５１】
本発明の実施形態によれば、ノード間の情報交換が減少され、記録される必要があるログが軽減される。従来技術と比較されると、より少ないシステムリソースが占有され、トランザクションを処理する時間がより短い。
【００５２】
以下では、コーディネータ障害は、例外が発生したときのトランザクション処理実施形態を導入するための例として使用される。コーディネータが故障した後、新しいコーディネータが参加者から選択されるが、よって、障害コーディネータと新しく選択されたコーディネータとを区別するために、特に指定されない限り、ステップ２１からステップ２９および別の関連する実施形態において、故障したコーディネータは、元のコーディネータと呼ばれ、元のコーディネータは、障害の前に正常に動作することが可能であり、新しく選択されたコーディネータは、コーディネータと呼ばれることに留意されたい。すなわち、ステップ１１からステップ１５におけるコーディネータは、ステップ２１からステップ２９ならびにステップ３７およびステップ３８では、元のコーディネータと呼ばれる。
【００５３】
実施形態２
本発明の実施形態では、コーディネータが故障したとき、データ整合性は、参加者の間でトランザクション状態および現在のバージョン番号を問い合わせることによって保証される。本発明の実施形態では、バージョンの更新によって、バージョン番号は、昇順ルールを採用してもよく、または降順ルールを採用してもよい。別の実施形態では、バージョン番号が一意である限り、文字または他の非数値がバージョン番号として使用されてよく、参加者およびコーディネータは、バージョンの更新によるバージョン番号の変更ルールについて同意する。導入を容易にするために、バージョン番号の値がバージョンの更新により増大することが例として以下で使用される。書き込みの各操作はオブジェクトバージョンの増大につながり、新しいバージョンのコンテンツが、古いバージョンのコンテンツの代わりとなる。新しいバージョンのサブオブジェクト、およびその古いバージョンのサブオブジェクトが、同じＯＳＤに書き込まれることができ、古いバージョンのサブオブジェクトが上書きされる。トランザクション操作は、オブジェクトのすべてのサブオブジェクトに対して操作されることができ、これらのサブオブジェクトは、異なるＯＳＤに分散される。ＯＳＤは、コントローラおよびストレージ媒体を含むことができ、コントローラは、管理のために構成され、ストレージ媒体は、データを記憶するために構成され、たとえば、ハードディスク（Ｈａｒｄ  Ｄｉｓｋ）、ソリッドステートディスク（ＳＳＤ）、磁気テープ（Ｍａｇｎｅｔｉｃ  Ｔａｐ）などである。ＯＳＤは、ストレージサーバまたはパーソナルコンピュータであってもよい。
【００５４】
ステップ２１：分散されたストレージシステムにおける元のコーディネータが故障した後、参加者から新しいコーディネータを選択する。ステップ２１は、ステップ１３またはステップ１４の後に行われ、たとえば、ステップ１４が行われた後、予め設定された時間内に参加者がコーディネータから結論を受信しない場合に、ステップ２１が行われる。ステップ２１は、任意選択のステップである。
【００５５】
新しいコーディネータは選択によって生成されることができ、多くの具体的な選択方法があってよく、たとえば、参加者がコーディネータとして直接任命されてもよく、または最小数を有する参加者がコーディネータとして選択されてもよく、または最良の性能を有する参加者がコーディネータとして選択されてもよい。選択されたコーディネータはサブオブジェクトを記憶し、したがって、コーディネータが参加者の機能の一部を有することに留意されたい。特に指定されない限り、以降のステップで言及されるコーディネータは、新しく選択されたコーディネータを指す。
【００５６】
本発明の実施形態では、参加者が参加者のリストを記憶し、参加者のリストに記録された参加者から、コーディネータとして参加者が選択され得る。参加者のリストは、ＯＳＤを記録し、そこにオブジェクトのすべてのサブオブジェクトが配置されている。このステップで、新しいコーディネータはＮ＋Ｍ個の参加者から選択される。
【００５７】
本発明の実施形態では、コーディネータ障害は、コーディネータにより送信された結論を参加者が受信しないことを示す一般参照の類である。たとえば、それが、コーディネータが正常に動作できないこと、コーディネータと参加者との間の通信が中断されること、または参加者が故障していることを指す可能性がある。障害理由は、ソフトウェア障害またはハードウェア障害であり得る。別の実施形態では、物理障害またはソフトウェア障害が発生することがないが、管理者命令が使用されて、新しいコーディネータを選択する。
【００５８】
ステップ２２：コーディネータは、問合せメッセージをシステム内の参加者に送信し、問合せメッセージは、問い合わされる必要があるトランザクションの、トランザクションＩＤ、オブジェクトＩＤ、オブジェクトの対象バージョン番号Ｖｅｒｓｉｏｎ＿Ｔを記録している。
【００５９】
トランザクションＩＤは、このトランザクションの操作を識別するために使用される。異なるトランザクションは、異なるトランザクションＩＤを有し、同じトランザクションＩＤを有するすべての操作は、同じトランザクションの操作に属する。本発明の実施形態では、これらの操作はＮ＋Ｍ個のＯＳＤによって別個に実行される。オブジェクトＩＤは、トランザクションＩＤによって操作されるオブジェクトを識別するために使用され、たとえば、オブジェクトのファイル名がオブジェクトＩＤとして使用される。オブジェクトの対象バージョン番号は、オブジェクトＩＤによって識別されたオブジェクトの対象バージョン番号である。トランザクション結論が、トランザクションを実行することである場合、参加者およびコーディネータに記憶されたサブオブジェクトのバージョンすべてが対象バージョン番号に変化し、すなわち言い換えれば、オブジェクトのバージョンが対象バージョン番号に変化する。ファイル名以外に、他の様式がオブジェクトＩＤを識別するために使用されてもよい。ストレージシステムは、この識別子を記録するために２キロバイトのデータを使用し得る。問合せメッセージの受信者は、参加者のリスト内でコーディネータを除くすべての参加者である。
【００６０】
問合せメッセージを受信した後、参加者は、それが同じトランザクションＩＤおよび同じオブジェクトＩＤを有するトランザクションを持っているかどうかを検索することができ、参加者が同じトランザクションＩＤおよび同じオブジェクトＩＤを有するトランザクションを持っている場合、参加者はさらに、参加者のサブオブジェクトの現在のバージョン番号が対象バージョン番号と同じであるかどうかを決定し、バージョンの整合性に従ってトランザクション結論を推論する。
【００６１】
対象バージョン番号は、ステップ１１のように元のコーディネータから来ることが可能である。
【００６２】
ステップ２３：問合せメッセージを受信した参加者は、問合せメッセージ内のトランザクションＩＤに基づいて、同じトランザクションがローカルに存在するかどうかを決定する。特定の決定様式では、同じトランザクションＩＤがローカルトランザクションＩＤに存在するかどうかを検索する。はいの場合、ステップ２４が行われ、そうでない場合、ステップ２５が行われる。
【００６３】
ステップ２４：問合せメッセージを受信した参加者は、「同じトランザクションが存在する」情報を運搬している応答メッセージを、コーディネータへ返す。この実施形態では、応答メッセージで運搬される情報は、第３の情報と呼ばれる。
【００６４】
応答メッセージは、参加者がローカルで同じトランザクションＩＤを見つけた後に送信される。参加者がローカルで同じトランザクションＩＤを発見しない場合、応答メッセージは送信されない。応答メッセージは、参加者が問合せメッセージを受信し成功裏に応答することを、判断者に知らせることができる。応答メッセージはまた、参加者が判断結果を知らず判断を待っている段階にあることを、判断者に知らせることもできる。
【００６５】
ステップ２５：問合せメッセージを受信した参加者は、オブジェクトがローカルに存在するかどうかを検索する、すなわち、問合せメッセージ内のオブジェクトＩＤと同じオブジェクトＩＤがすべてのローカルオブジェクトＩＤ中に存在するかどうかを決定する。はいの場合、ステップ２７が行われ、そうでない場合、ステップ２６が行われる。
【００６６】
ステップ２６：問合せメッセージを受信した参加者は、応答メッセージをコーディネータに返して、トランザクションもオブジェクトもローカルに存在しないことをコーディネータに通知し、この情報は、「オブジェクトが存在しない」または「トランザクションもオブジェクトも存在しない」を使用することで示されてよく、この情報は、第４の情報と呼ばれる。
【００６７】
ステップ２７：問合せメッセージを受信した参加者は、オブジェクトＩＤによって識別されたオブジェクトのバージョン番号Ｖｅｒｓｉｏｎ＿Ｃを読み取り、Ｖｅｒｓｉｏｎ＿ＣとＶｅｒｓｉｏｎ＿Ｔを比較し、比較結果を使用することによって問合せメッセージに対する応答メッセージをコーディネータにフィードバックする。
【００６８】
より後のバージョンがより大きいバージョン番号を必要とすることが、例として使用される。（１）Ｖｅｒｓｉｏｎ＿Ｃ＞Ｖｅｒｓｉｏｎ＿Ｔである場合、「参加者内のオブジェクトのバージョン番号が対象バージョン番号よりも後である」情報が、コーディネータに返される情報で運搬され、このメッセージは、以下では略して「バージョンがより後である」メッセージと呼ばれる。（２）Ｖｅｒｓｉｏｎ＿Ｃ＝Ｖｅｒｓｉｏｎ＿Ｔである場合、「参加者内のオブジェクトのバージョン番号が対象バージョン番号と同じである」情報が、コーディネータに返される情報で運搬され、このメッセージは、以下では「バージョンが同じである」によって示される。（３）Ｖｅｒｓｉｏｎ＿Ｃ＜Ｖｅｒｓｉｏｎ＿Ｔである場合、「参加者内のオブジェクトのバージョン番号が対象バージョン番号よりも古い」情報が、コーディネータに返される情報で運搬され、このメッセージは、「バージョンがより古い」によって示され得る。
【００６９】
別の実施形態では、以下のステップにおいて「バージョンがより後である」および「バージョンがより古い」の処理様式が同じであるので、これら２つの場合は、メッセージ「バージョンが異なる」をフィードバックするように組み合わされてよい。すなわち、このステップでは、Ｖｅｒｓｉｏｎ＿ＣとＶｅｒｓｉｏｎ＿Ｔの番号を比較することを必要としなくてよく、バージョンが同じであるかどうか比較することのみを必要とする。返される応答メッセージは、「バージョンが同じ」または「バージョンが異なる」である。
【００７０】
すなわち、このステップで参加者によって送信される応答メッセージは、第１の情報または第２の情報を運搬することができる。第１の情報は、「バージョンが同じ」情報であり、この情報のコンテンツは「Ｅｑｕａｌ」であってもよい。第１の情報は、トランザクションＩＤ決定、オブジェクトＩＤ決定、およびバージョン番号決定の後に、参加者によって取得され得る。第１の情報は、参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、参加者内のオブジェクトのバージョン番号が、対象バージョン番号と同じであることを示すことができる。第２の情報は、「バージョンが異なる」情報であり、この情報のコンテンツは「Ｕｎｅｑｕａｌ」であってもよい。第２の情報は、トランザクションＩＤ決定、オブジェクトＩＤ決定、およびバージョン番号決定の後に、参加者によって取得され得る。第２の情報は、参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、参加者内のオブジェクトのバージョン番号が、対象バージョン番号とは異なることを示すことができる。
【００７１】
ステップ２８：参加者によって送信された、第１の情報、第２の情報、第３の情報、および第４の情報のうちの１つを運搬している応答メッセージを受信した後、コーディネータは、応答メッセージのコンテンツに応じて結論を引き出す。結論は、コーディネータおよび参加者によって実行される必要がある。コーディネータは、結論を実行し、結論をシステム内の参加者に送信し、コーディネータ上でトランザクションによって占有されたリソースを解放する。コーディネータと参加者が共に結論を実行することが、トランザクション整合性を保証することができる。
【００７２】
結論は、トランザクションをアボートすること、またはトランザクションを実行することである。結論がトランザクションをアボートすることである場合、アボートメッセージが送信され、結論がトランザクションを実行することである場合、コミットメッセージが送信される。結論がトランザクションをアボートすることである場合、実行様式は、トランザクションをアボートすることである。結論がトランザクションを実行することである場合、参加者は、参加者内のサブオブジェクトに対してトランザクションの一連の操作を実行する。
【００７３】
いくつかの実施形態では、参加者は、トランザクションＩＤ、オブジェクトＩＤ、およびバージョン番号を別個に決定し、したがって、第１の情報、第２の情報、第３の情報、および第４の情報のうちの任意の１つが送信され得ることに留意されたい。しかしながら、別の実施形態では、参加者は、１つのアイテムのみを検出する、たとえば、第１の情報が存在するかどうかのみを検出し、したがって、コーディネータに返される応答メッセージは、第２の情報、第３の情報、または第４の情報を除く第１の情報であり、これに対応し、コーディネータは、第２の情報、第３の情報、または第４の情報に対するトランザクション結論を生成しない。別の実施形態では、第１の情報と第２の情報も検出され得る。
【００７４】
表１は、コーディネータが、参加者によりフィードバックされた応答メッセージを受信した後に、応答メッセージで運搬された情報に応じてどのように判断して結論を引き出すかを示しており、その結論は、トランザクションをアボートすること、またはトランザクションを実行することである。トランザクションをアボートすることは、アボートコマンドによって示されることができ、トランザクションを実行することは、コミットコマンドによって示されることができる。判断をするとき、コーディネータは、トランザクションの操作タイプも考慮することができ、操作タイプは、作成、修正（modify）、および削除を含むことができ、作成と修正の両方が、書き込み（Ｗｒｉｔｅ）に属する。操作タイプは、元のコーディネータから来ることができ、コーディネータおよび参加者に記憶され、たとえば、それは、ステップ１１でコーディネータおよび参加者に送信される。コーディネータによって参加者へ送信された問合せメッセージは、トランザクションの操作タイプも運搬することができる。
【００７５】
操作タイプが作成または修正であるトランザクションでは、以下のルールのうちの１または複数が使用可能である。（ａ）任意の参加者が、「バージョンが同じ」情報、すなわち第１の情報を返した場合、それは、メッセージを返した参加者がトランザクションを実行したことを示す。結論は、トランザクションが「一緒に進み一緒に戻る」原理に従って、トランザクションを実行することである。（ｂ）任意の参加者が、「バージョンが異なる」情報、すなわち第２の情報を返した場合、それは、参加者がアボートアクションを行ったことを示す。結論は、「一緒に進み一緒に戻る」原理に従って、トランザクションをアボートすることである。（ｃ）すべての参加者が、トランザクションが存在するという情報、すなわち第３の情報を返した場合、それは、コーディネータがトランザクションの決定結果を提供しないことを示す。この場合、すべての参加者が準備された状態にあり、参加者がトランザクションを実行していないが、参加者は、トランザクションを実行することに対して準備していて、トランザクションが正常に実行されることが可能な状態にある。したがって、結論は、トランザクションを実行することである。（ｄ）任意の参加者が、「トランザクションもオブジェクトも存在しない」情報、すなわち第４の情報を返した場合、結論は、トランザクションをアボートすることである。
【００７６】
操作タイプが削除であるトランザクションでは、以下の結論のうちの１または複数が使用可能である。（ａ）任意の参加者が、「バージョンが異なる」情報、すなわち第２の情報を返した場合、それは、参加者がアボートアクションを実行したことを示す。結論は、トランザクションをアボートすることである。（ｂ）すべての参加者が、トランザクションが存在するという情報、すなわち第３の情報を返した場合、それは、参加者が削除操作を実行したこと、およびコーディネータがトランザクションの決定結果を提供しないことを示す。この場合、すべての参加者が準備された状態にあり、参加者がトランザクションを実行していないが、参加者は、トランザクションを実行することに対して準備している。したがって、結論は、トランザクションを実行することである。（ｃ）任意の参加者が、「トランザクションもオブジェクトも存在しない」情報、すなわち第４の情報を返した場合、結論は、トランザクションを実行することである。操作タイプが削除であるとき、参加者は第１の情報をフィードバックしないが、その理由は、バージョンが同じ場合、オブジェクトおよびトランザクションが削除され、参加者は、オブジェクトＩＤまたはトランザクションＩＤを見つけることができず、したがって、実際に返される情報は、トランザクションもオブジェクトも存在しないという情報、すなわち第４の情報であるからである。
【００７７】
操作が異なるときに、ある種の情報に従って同じ結論が引き出される場合があることに留意されたい。この操作情報の場合、操作タイプは決定される必要がないが、応答メッセージで運搬された情報に従って結論が直接引き出される。たとえば、任意の参加者が「バージョンが異なる」情報を運搬する応答メッセージを返す限り、トランザクション結論は、アボートと決定されることができる。アボート結論を引き出すためにトランザクションの操作タイプを知る必要はない。加えて、任意の参加者が「バージョンが同じ」情報を返す場合、操作タイプを決定する必要がなく、コミット結論が引き出されることができる。
【００７８】
コーディネータによって引き出される結論の例として、表１を参照されたい。
【００７９】
【表１】
2018049635.tif 000003
【００８０】
加えて、この実施形態では、問合せメッセージが、３つのタイプのコンテンツ、すなわち、トランザクションＩＤ、オブジェクトＩＤ、および対象バージョン番号を運搬することに留意されたい。決定を複数回行うことなく結論の一部が引き出されることができるので、たとえば、すべての参加者によって返された応答メッセージが「トランザクションが存在する」情報を運搬しているとき、それは、トランザクションを実行する結論を引き出すために十分である。さらに、参加者内にトランザクションＩＤが存在するかどうかを決定する、またはバージョン番号が同じかどうかを決定する必要がない。同様に、任意の参加者によって返された応答メッセージが「トランザクションが存在するがオブジェクトが存在しない」情報を運搬している場合、すべての参加者は、参加者のオブジェクトバージョンがコーディネータによって提供されたオブジェクト対象バージョンと同じかどうかをさらに決定する必要がない。したがって、問合せメッセージを参加者に送信するとき、コーディネータは、トランザクションＩＤのみを送信してもよく、またはトランザクションＩＤおよびオブジェクトＩＤを送信してもよく、またはトランザクションＩＤ、オブジェクトＩＤ、およびオブジェクトの対象バージョン番号を送信してもよい。
【００８１】
加えて、問合せメッセージは、異なる段階で送信され得る。すなわち、最初に、コーディネータはトランザクションＩＤを参加者に送信し、受信された応答メッセージが結論を引き出すために不十分なときに、コーディネータはオブジェクトＩＤを参加者に送信し、オブジェクトＩＤの応答メッセージが結論を引き出すためにやはり不十分なときに、コーディネータは続いてバージョン番号情報を参加者に送信する。これらの送信方法は、問合せメッセージのデータ量を低減することができる。
【００８２】
現在のコーディネータは選択によって生成され、選択の前に、コーディネータは参加者の役割もある。したがって、コーディネータは参加者の責務も有し、参加者によって実行されるべく結論を参加者に送信することの他に、コーディネータは、参加者のように結論を実行する必要もある。この実施形態では、結論がトランザクションを実行することである場合、コーディネータは、トランザクションの一連の操作、たとえば、コーディネータに記憶されたサブオブジェクトに対する削除操作に必要とされる一連の操作またはデータ書き込み操作のための一連の操作を実行する必要がある。実行様式は、ＯＳＤのコントローラが、ストレージ媒体上で操作を行う命令、たとえば、ストレージ媒体上でデータを削除する命令を生成することであり得る。ストレージ媒体上で操作を行う命令が生成された後、ログが記録されることができ、このログはコミットされることができる。操作が完了されると、すなわち、コントローラが操作を完了すると、ログが記録されることができ、このログがクリアされることができる。次いで、トランザクションによって占有されたストレージリソースなどのリソースが解放される。コマンドを実行するプロセスを開始することは、トランザクションをコミットすることと呼ばれることがある。
【００８３】
ステップ２９：コーディネータの結論を受信した後、参加者は結論を実行する。結論が実行された後、トランザクションによって占有されたリソースが解放され得る。コーディネータに関して、ステップ２９は任意選択のステップである。
【００８４】
結論がトランザクションを実行することである場合、参加者は、トランザクションの一連の操作を実行する、たとえば、参加者に記憶されたサブオブジェクトに対する削除操作またはデータ書き込み操作を実行する。具体的には、結論がトランザクションを実行することである場合、実行様式は、ＯＳＤのコントローラが、ストレージ媒体上で操作を行う命令、たとえば、ストレージ媒体上でデータを削除する命令を生成することであり得る。ストレージ媒体上で操作を行う命令が生成された後、ログが記録されることができ、このログはコミットされることができる。トランザクションが完了されると、すなわち、コントローラが操作を完了すると、ログが記録されることができ、このログがクリアされることができる。次いで、トランザクションによって占有されたストレージリソースなどのリソースが解放される。
【００８５】
参加者によって受信される結論は、コミットまたはアボートであり得る。結論を受信した後、参加者は、結論を受信したという確認応答メッセージをコーディネータへ送信する必要がなく、また結論が実行されたという確認応答メッセージを送信しなくてよい。
【００８６】
ステップ２１からステップ２９におけるトランザクション処理方法は独立しており、完結的なトランザクション処理方法である。ステップ２１からステップ２９は、ステップ１３もしくはステップ１４が実行された後に実行されてよく、または別のシナリオに適用されてもよい。たとえば、元のコーディネータが故障していないが、最初から元のコーディネータが存在せず、単にいくつかの参加者により形成されたトランザクション処理システムが、ネゴシエーションによってトランザクション処理を行う。そのような実施形態では、ステップ２１が含まれなくてよい。
【００８７】
実施形態２の方法では、ステップの一部がコーディネータによって実行され、その他のステップが参加者によって実行される。ステップ２３からステップ２８は、全体として３つのタイプの情報、すなわちトランザクションＩＤ，オブジェクトＩＤ、およびバージョン番号の比較に関係し、トランザクション結論が比較結果に応じて引き出されることができる。このプロセスはまた、以下の４つの結論を含むことができる。４つの結論は、並列的であり、相互依存していない。したがって、本発明の実施形態が４つの結論の少なくとも１つを実装するとき、それは完結した解決策である。
【００８８】
（１）応答メッセージの任意の１つが第１の情報を運搬している場合、結論は、トランザクションを実行することであり、第１の情報は、第１の情報を送信した参加者が、受信されたトランザクションＩＤを含まず、受信されたオブジェクトＩＤを含み、オブジェクトの受信された変更情報が、それ自体のオブジェクトの変更情報と同じであることを示す。
【００８９】
（２）応答メッセージの任意の１つが第２の情報を運搬している場合、結論は、トランザクションをアボートすることであり、第２の情報は、第２の情報を送信した参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、オブジェクトの受信された変更情報が、それ自体のオブジェクトの変更情報とは異なることを示す。
【００９０】
（３）参加者によって返されたすべての応答メッセージが第３の情報を運搬している場合、トランザクション結論は、トランザクションを実行することであり、第３の情報は、第３の情報を送信した参加者が、受信されたトランザクションＩＤを含むことを示す。
【００９１】
（４）参加者によって返された応答メッセージのいずれかが第４の情報を運搬している場合、作成または修正の操作に関して、トランザクション結論は、トランザクションの実行をキャンセルすることであり、削除の操作に関して、トランザクション結論は、トランザクションを実行することである。第４の情報は、第４の情報を送信した参加者が、受信されたトランザクションＩＤを含まず、受信されたオブジェクトＩＤを含まないことを示す。
【００９２】
実施形態３
図３に示されるように、本発明の別の実施形態は、実施形態２の方法を適用することができるトランザクション処理装置３１をさらに提供する。トランザクション処理装置３１は、参加者３２に通信可能に接続され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、サブオブジェクトのうちの１つは、トランザクション処理装置内にあり、他のサブオブジェクトは、異なる参加者内にある。トランザクション処理装置３１は、問合せモジュール３１１、受信モジュール３１２、判断モジュール３１３、および実行モジュール３１４を含む。
【００９３】
問合せモジュール３１１は、問合せメッセージを各参加者３２に送信するように構成され、問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、およびオブジェクトのバージョン番号を運搬し、トランザクションＩＤは、トランザクションを識別するために使用され、オブジェクトＩＤは、オブジェクトを識別するために使用される。
【００９４】
受信モジュール３１２は、各参加者から問合せメッセージに対する応答メッセージを受信するように構成される。
【００９５】
判断モジュール３１３は、応答メッセージに応じて結論を引き出し、結論をすべての参加者に送信するように構成され、結論は、下記の少なくとも１つを含む。
【００９６】
（１）応答メッセージの任意の１つが第１の情報を運搬している場合、結論は、トランザクションを実行することであり、第１の情報は、第１の情報を送信した参加者が、受信されたトランザクションＩＤを含まず、受信されたオブジェクトＩＤを含み、オブジェクトの受信されたバージョン番号が、それ自体のオブジェクトのバージョン番号と同じであることを示す。
【００９７】
（２）応答メッセージの任意の１つが第２の情報を運搬している場合、結論は、トランザクションをアボートすることであり、第２の情報は、第２の情報を送信した参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、オブジェクトの受信されたバージョン番号が、それ自体のオブジェクトのバージョン番号とは異なることを示す。
【００９８】
（３）参加者によって返されたすべての応答メッセージが第３の情報を運搬している場合、トランザクション結論は、トランザクションを実行することであり、第３の情報は、第３の情報を送信した参加者が、受信されたトランザクションＩＤを含むことを示す。
【００９９】
（４）参加者によって返された応答メッセージのいずれかが第４の情報を運搬している場合、作成または修正の操作に関して、トランザクション結論は、トランザクションの実行をキャンセルすることであり、削除の操作に関して、トランザクション結論は、トランザクションを実行することである。第４の情報は、第４の情報を送信した参加者が、受信されたトランザクションＩＤを含まず、受信されたオブジェクトＩＤを含まないことを示す。
【０１００】
実行モジュール３１４は、判断モジュール３１３の結論を実行し、結論をすべての参加者３２に送信するように構成される。
【０１０１】
実行モジュール３１４の結論を受信した後、参加者３２は、結論を実行することができる。
【０１０２】
本発明の実施形態では、コーディネータ３１および参加者３２はすべてオブジェクトベースのストレージデバイスＯＳＤであり、トランザクションは、すべてのサブオブジェクトの読み取り、すべてのサブオブジェクトの削除、またはすべてのサブオブジェクトの書き込みである。
【０１０３】
実施形態４
図４に示されるように、トランザクション処理方法の別の実装様式が提供されることに留意されたい。実装様式は、実施形態２に開示された実装様式と同様であるが、次のような違いの１つがある。コーディネータは、Ｖｅｒｓｉｏｎ＿ＣとＶｅｒｓｉｏｎ＿Ｔが同じであるかどうか比較することができる。
【０１０４】
この実装様式では、ステップ２２でコーディネータによって送信された問合せメッセージは、オブジェクトの現在のバージョン番号Ｖｅｒｓｉｏｎ＿Ｔを含むことがなく、したがって、この実施形態では、参加者によって送信された応答メッセージは、第１の情報または第２の情報に代えて第３の情報または第４の情報を運搬することができる。
【０１０５】
これに対応して、ステップ２５で決定された結果がはいの後に、ステップ４７が行われる。問合せメッセージを受信した参加者は、オブジェクトＩＤによって識別されたオブジェクトのバージョン番号Ｖｅｒｓｉｏｎ＿Ｃを読み取り、Ｖｅｒｓｉｏｎ＿Ｃをコーディネータに送信する。参加者は、バージョンが同じであるかどうかの比較を行わず、バージョンが同じであるかどうかに関する応答情報をコーディネータに送信しない。
【０１０６】
ステップ４７で、参加者は、第５の情報を運搬する応答メッセージを送信することができ、第５の情報は、応答メッセージを送信する参加者内のオブジェクトのバージョン番号をさらに含む。第５の情報は、参加者が、トランザクションＩＤを含まないがオブジェクトＩＤを含むことをさらに示すことができる。
【０１０７】
次いで、ステップ４８が以下のように行われる。コーディネータは、応答メッセージで運搬された参加者のオブジェクトバージョンを、コーディネータによって記録された対象バージョン番号と比較し、比較様式は、基本的にステップ２７と同じであるが、違いは、比較を実行するためのエンティティが参加者であることである。比較結果が得られた後、ステップ２８と同じ様式に従って結論が引き出され、結論が実行される。
【０１０８】
コーディネータは、第３の情報、第４の情報、および第５の情報が存在するかどうかを同時に検出し、検出結果に応じて結論を引き出す機能を有することができる。あるいは、コーディネータは、第３の情報、第４の情報、および第５の情報のうちの任意の１つが存在するかどうかのみを検出し、検出結果に応じて結論を引き出す機能を有することができる。結論は、下記の少なくとも１つを含む。
【０１０９】
（１）参加者によって返されたすべての応答メッセージが第３の情報を運搬している場合、トランザクション結論は、トランザクションを実行することであり、第３の情報は、第３の情報を送信した参加者が、受信されたトランザクションＩＤを含むことを示す。
【０１１０】
（２）参加者によって返された応答メッセージのいずれかが第４の情報を運搬している場合、作成または修正の操作に関して、トランザクション結論は、トランザクションの実行をキャンセルすることであり、削除の操作に関して、トランザクション結論は、トランザクションを実行することである。第４の情報は、第４の情報を送信した参加者が、受信されたトランザクションＩＤを含まず、受信されたオブジェクトＩＤを含まないことを示す。
【０１１１】
（３）参加者によって返された応答メッセージのいずれかが第５の情報を運搬している場合、第５の情報に応じて結論が引き出されることができ、結論は、（ｉ）参加者によってコーディネータへ返されたバージョン番号情報が、コーディネータによって記録された対象バージョン番号と同じである場合、結論は、トランザクションを実行することであること、または（ｉｉ）参加者によってコーディネータへ返されたバージョン番号情報が、コーディネータによって記録された対象バージョン番号とは異なる場合、結論は、トランザクションをアボートすることであることの少なくとも一方を含む。第５の情報は、参加者が、受信されたトランザクションＩＤを含まないが受信されたオブジェクトＩＤを含むことを示し、第５の情報は、応答メッセージを送信する参加者内のオブジェクトのバージョン番号をさらに運搬する。
【０１１２】
実施形態５
図３を同じく参照して、本発明の別の実施形態は、実施形態４の方法を適用することができるトランザクション処理装置３１を提供する。トランザクション処理装置３１は、参加者３２に通信可能に接続され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、サブオブジェクトのうちの１つは、トランザクション処理装置内にあり、その他のサブオブジェクトは、異なる参加者内にある。トランザクション処理装置３１は、問合せモジュール３１１、受信モジュール３１２、判断モジュール３１３、および実行モジュール３１３を含む。
【０１１３】
問合せモジュール３１１は、問合せメッセージを各参加者３２に送信するように構成され、問合せメッセージは、トランザクションＩＤおよびオブジェクトＩＤを運搬し、トランザクションＩＤは、トランザクションを識別するために使用され、オブジェクトＩＤは、オブジェクトを識別するために使用される。
【０１１４】
受信モジュール３１２は、各参加者３２から問合せメッセージに対する応答メッセージを受信するように構成され、応答メッセージは、参加者がトランザクションＩＤを含まないがオブジェクトＩＤを含むことを示す第５の情報を運搬し、第５の情報は、応答メッセージを送信する参加者内のオブジェクトのバージョン番号をさらに運搬する。
【０１１５】
判断モジュール３１３は、応答メッセージに応じて結論を引き出し、コーディネータによって結論を実行し、結論をすべての参加者に送信するように構成され、結論は、参加者内のオブジェクトのバージョン番号がコーディネータ内のオブジェクトのバージョン番号と同じ場合、結論は、トランザクションを実行することであること、または、参加者内のオブジェクトのバージョン番号がコーディネータ内のオブジェクトのバージョン番号とは異なる場合、結論は、トランザクションをアボートすることであることの少なくとも一方を含む。
【０１１６】
実行モジュールは、判断モジュールの結論を実行するように構成される。
【０１１７】
実施形態６
図５に示されるように、本発明の別の実施形態は、参加者４２に通信可能に接続されたコーディネータ５１を提供し、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、サブオブジェクトのうちの１つは、コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にある。コーディネータは、プロセッサ（Ｐｒｏｃｅｓｓｏｒ）５１１、およびプロセッサと通信するメモリ５１２を含み、メモリは、プログラムを記憶するように構成され、プロセッサは、プログラムを実行するように構成される。プログラムは、上記の方法のうちの１または複数、たとえば、実施形態１、実施形態２、および実施形態４で説明された方法のうちの１または複数を実行することができる。
【０１１８】
本実施形態におけるプロセッサ５１１によって実行される１つのプログラムは、問合せメッセージを各参加者に送信することであって、問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、およびオブジェクトのバージョン番号を運搬し、トランザクションＩＤは、トランザクションを識別するために使用され、オブジェクトＩＤは、オブジェクトを識別するために使用され、オブジェクトのバージョン番号は、オブジェクトのコンテンツが変化したかどうかを識別するために使用され、異なるバージョン番号を有するオブジェクトのコンテンツは異なっている、送信することと、各参加者から問合せメッセージに対する応答メッセージを受信することと、応答メッセージに応じて結論を引き出し、結論を実行し、結論をすべての参加者に送信することとを行うために使用される。結論は、応答メッセージの任意の１つが第１の情報を運搬している場合、結論は、トランザクションを実行することであり、第１の情報は、参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、参加者内のオブジェクトのバージョン番号が、コーディネータ内のオブジェクトのバージョン番号と同じであることを示すこと、または、応答メッセージの任意の１つが第２の情報を運搬している場合、結論は、トランザクションをアボートすることであり、第２の情報は、参加者が、トランザクションＩＤを含まずオブジェクトＩＤを含み、参加者内のオブジェクトのバージョン番号が、コーディネータ内のオブジェクトのバージョン番号とは異なることを示すことの少なくとも一方を含む。
【０１１９】
本実施形態におけるプロセッサ５１１によって実行される１つのプログラムは、問合せメッセージを各参加者に送信することであって、問合せメッセージは、トランザクションＩＤおよびオブジェクトＩＤを運搬し、トランザクションＩＤは、トランザクションを識別するために使用され、オブジェクトＩＤは、オブジェクトを識別するために使用され、オブジェクトのバージョン番号は、オブジェクトのコンテンツが変化したかどうかを識別するために使用され、異なるバージョン番号を有するオブジェクトのコンテンツは異なっている、送信することと、各参加者から問合せメッセージに対する応答メッセージを受信することであって、応答メッセージは、第５の情報を運搬し、第５の情報は、参加者が、トランザクションＩＤを含まないがオブジェクトＩＤを含むことを示し、第５の情報は、応答メッセージを送信する参加者内のオブジェクトのバージョン番号をさらに運搬する、受信することと、応答メッセージに応じて結論を引き出し、コーディネータによって結論を実行し、結論をすべての参加者に送信することとを行うために使用される。結論は、参加者内のオブジェクトのバージョン番号がコーディネータ内のオブジェクトのバージョン番号と同じ場合、結論は、トランザクションを実行することであること、または、参加者内のオブジェクトのバージョン番号がコーディネータ内のオブジェクトのバージョン番号とは異なる場合、結論は、トランザクションをアボートすることであることの少なくとも一方を含む。
【０１２０】
プロセッサ５１１は、中央処理装置ＣＰＵ、または特定用途向け集積回路ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）、または本発明の実施形態を実装するように構成された１もしくは複数の集積回路であり得る。メモリ５１２は、高速ＲＡＭメモリを含んでよく、または不揮発性メモリ（ｎｏｎ−ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）、たとえば、少なくとも１つのディスクメモリをさらに含んでよい。
【０１２１】
上記の実装様式の説明によれば、本発明は、ソフトウェアに加えて必要な汎用ハードウェアによって実装されることができ、また当然ながらハードウェアによって実装されてもよいが、多くの場合、前者が好ましい実装態様であることが明確に理解され得る。そのような理解に基づいて、本質的に本発明の技術的解決策または従来技術に貢献する部分は、ソフトウェア製品の形態で実装され得る。ソフトウェア製品は、コンピュータのフロッピーディスク、ハードディスク、または光ディスクのような可読ストレージ媒体に記憶され、コンピュータデバイス（パーソナルコンピュータ、サーバ、またはネットワークデバイスなどであり得る）に対して、本発明の実施形態に説明された方法を行うように指示するためのいくつかの命令を含む。
【０１２２】
上記の説明は、本発明の単に特定の実施形態であるが、本発明の保護範囲を限定することは意図されていない。本発明に開示される技術的範囲内で当業者に容易に理解されるあらゆる変形および置換が、本発明の保護範囲内に入るものとする。したがって、本発明の保護範囲は、特許請求の範囲の保護範囲に従うものとする。
【図１】
2018049635.tif 000004
【図２】
2018049635.tif 000005
【図３】
2018049635.tif 000006
【図４】
2018049635.tif 000007
【図５】
2018049635.tif 000008
【手続補正書】
【提出日】平成29年11月9日(2017.11.9)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コーディネータに適用されるトランザクション処理方法であって、前記コーディネータは、参加者に通信可能に接続され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記方法は、
前記コーディネータによって、問合せメッセージを各参加者に送信するステップであって、前記問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、および前記オブジェクトの変更情報を運搬し、前記トランザクションＩＤは、前記トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、前記変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、ステップと、
前記コーディネータによって、前記参加者のいずれか一人から前記問合せメッセージに対する応答メッセージを受信するステップと、
前記コーディネータによって、前記応答メッセージに応じて結論を引き出し、前記コーディネータによって、前記結論を実行し、前記結論を前記参加者に送信するステップであって、前記結論は以下を含む、すなわち
操作タイプが作成または修正である前記トランザクションに関し、前記応答メッセージが、前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの前記変更情報と同じであることを示す情報を運搬する場合、前記結論は前記トランザクションを実行することである、ステップと
を含むことを特徴とするトランザクション処理方法。
【請求項２】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項１に記載の方法。
【請求項３】
前記コーディネータおよび前記参加者は、元のコーディネータに通信可能に接続されており、前記元のコーディネータはサブオブジェクトを有しておらず、その前に、前記方法は、
前記元のコーディネータが故障した後に、元の参加者のうちの１つが前記コーディネータとして選択されることをさらに含むことを特徴とする請求項１または２に記載の方法。
【請求項４】
前記元のコーディネータが故障する前に、前記方法は、
前記元のコーディネータによって、操作要求を各参加者に送信するステップであって、前記操作要求は、前記オブジェクトＩＤ、操作タイプ、前記コーディネータ内に記録された前記オブジェクトの前記変更情報、および参加者のリストを運搬し、前記参加者のリストは、すべての前記元の参加者を記録している、ステップと、
前記コーディネータによって、準備コマンドを各参加者に送信するステップであって、前記元の参加者のそれぞれが、参加者のリストを受信し記憶し、前記トランザクションのためのリソースを割り当てるように、前記コマンドは、前記トランザクションＩＤ、前記オブジェクトＩＤ、前記コーディネータ内に記録された前記オブジェクトの前記変更情報、および参加者の前記リストを運搬する、ステップと
をさらに含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
参加者に通信可能に接続されたトランザクション処理装置であって、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記トランザクション処理装置内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記装置は、
問合せメッセージを各参加者に送信するように構成された問合せモジュールであって、前記問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、および前記オブジェクトの変更情報を運搬し、前記トランザクションＩＤは、前記トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、前記変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、問合せモジュールと、
前記参加者から前記問合せメッセージに対する応答メッセージを受信するように構成された受信モジュールと、
前記応答メッセージに応じて結論を引き出し、前記結論をすべての前記参加者に送信するように構成された判断モジュールであって、前記結論は以下を含む、すなわち
操作タイプが作成または修正である前記トランザクションに関し、前記応答メッセージが、前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの前記変更情報と同じであることを示す情報を運搬する場合、前記結論は前記トランザクションを実行することである、判断モジュールと、
前記判断モジュールの前記結論を実行するように構成された実行モジュールと
を備えることを特徴とするトランザクション処理装置。
【請求項７】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項６に記載のトランザクション処理装置。
【請求項８】
前記コーディネータおよび前記参加者は、元のコーディネータに通信可能に接続されており、前記元のコーディネータはサブオブジェクトを有しておらず、前記受信モジュールは、
各参加者に対する前記元のコーディネータの、前記トランザクションＩＤ、前記オブジェクトＩＤ、前記オブジェクトの前記変更情報、および参加者のリストを受信するようにさらに構成されることを特徴とする請求項６または７に記載のトランザクション処理装置。
【請求項９】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項７または８に記載のトランザクション処理装置。
【請求項１０】
参加者に通信可能に接続されたコーディネータであって、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記コーディネータは、プロセッサ、および前記プロセッサと通信するメモリを備え、前記メモリは、プログラム命令を記憶するように構成され、前記プロセッサは、前記プログラム命令を実行するように構成され、前記プログラム命令は、
問合せメッセージを各参加者に送信することであって、前記問合せメッセージは、トランザクションＩＤ、オブジェクトＩＤ、および前記オブジェクトの変更情報を運搬し、前記トランザクションＩＤは、前記トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、前記変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、送信することと、
前記参加者のいずれか一人から前記問合せメッセージに対する応答メッセージを受信することと、
前記応答メッセージに応じて結論を引き出し、前記結論を実行し、前記結論を前記参加者に送信することであって、前記結論は以下を含む、すなわち
操作タイプが作成または修正である前記トランザクションに関し、前記応答メッセージが、前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの前記変更情報と同じであることを示す情報を運搬する場合、前記結論は前記トランザクションを実行することである、送信することと
を行うために使用されることを特徴とするコーディネータ。
【請求項１１】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項１０に記載のコーディネータ。
【請求項１２】
前記プログラム命令は、元のコーディネータによって送信された前記トランザクションＩＤ、前記オブジェクトＩＤ、前記オブジェクトの前記変更情報、および参加者のリストを受信するためにさらに使用されることを特徴とする請求項１０または１１に記載のコーディネータ。
【請求項１３】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項１０乃至１２のいずれか一項に記載のコーディネータ。
【請求項１４】
コーディネータに適用されるトランザクション処理方法であって、前記コーディネータは、参加者に通信可能に接続され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記方法は、
前記コーディネータによって、問合せメッセージを各参加者に送信するステップであって、前記問合せメッセージは、トランザクションＩＤおよびオブジェクトＩＤを運搬し、前記トランザクションＩＤは、トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、ステップと、
前記コーディネータによって、前記参加者のいずれか一人から前記問合せメッセージに対する応答メッセージを受信するステップであって、前記応答メッセージは、前記応答メッセージを送信する前記参加者内の前記オブジェクトの変更情報を運搬する、ステップと、
前記コーディネータによって、前記応答メッセージに応じて結論を引き出し、前記コーディネータによって、前記結論を実行し、前記結論を前記参加者に送信するステップであって、前記結論は、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報と同じ場合、前記結論は、前記トランザクションを実行することであること、または、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報とは異なる場合、前記結論は、前記トランザクションをアボートすることであること
の少なくとも一方を含む、ステップと
を含むことを特徴とするトランザクション処理方法。
【請求項１５】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記参加者内の前記オブジェクトの前記変更情報が、前記コーディネータ内の前記オブジェクトの変更情報とは異なることは、特に、
前記参加者内の前記オブジェクトのバージョンが、前記コーディネータ内の前記オブジェクトのバージョンよりも後である、または、
前記参加者内の前記オブジェクトのバージョンが、前記コーディネータ内の前記オブジェクトのバージョンよりも古い
ことを特徴とする請求項１４に記載の方法。
【請求項１７】
前記コーディネータおよび前記参加者は、元のコーディネータに通信可能に接続されており、前記元のコーディネータはサブオブジェクトを有しておらず、その前に、前記方法は、
前記元のコーディネータが故障した後に、元の参加者のうちの１つが前記コーディネータとして選択されることをさらに含むことを特徴とする請求項１４乃至１６のいずれか一項に記載の方法。
【請求項１８】
元のコーディネータが故障する前に、前記方法は、
前記元のコーディネータによって、操作要求を各参加者に送信するステップであって、前記操作要求は、前記オブジェクトＩＤ、操作タイプ、前記コーディネータ内に記録された前記オブジェクトの前記変更情報、および参加者のリストを運搬し、前記参加者のリストは、すべての前記元の参加者を記録している、ステップと、
前記コーディネータによって、準備コマンドを各参加者に送信するステップであって、前記元の参加者のそれぞれが、参加者のリストを受信し記憶し、前記トランザクションのためのリソースを割り当てるように、前記コマンドは、前記トランザクションＩＤ、前記オブジェクトＩＤ、前記コーディネータ内に記録された前記オブジェクトの前記変更情報、および参加者の前記リストを運搬する、ステップと
をさらに含むことを特徴とする請求項１４に記載の方法。
【請求項１９】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項１４乃至１８のいずれか一項に記載の方法。
【請求項２０】
参加者に通信可能に接続されたトランザクション処理装置であって、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記トランザクション処理装置内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記装置は、
問合せメッセージを各参加者に送信するように構成された問合せモジュールであって、前記問合せメッセージは、トランザクションＩＤおよびオブジェクトＩＤを運搬し、前記トランザクションＩＤは、前記トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、問合せモジュールと、
前記参加者のいずれか一人から前記問合せメッセージに対する応答メッセージを受信するように構成された受信モジュールであって、前記応答メッセージは、前記応答メッセージを送信する前記参加者内の前記オブジェクトの変更情報を運搬する、受信モジュールと、
前記応答メッセージに応じて結論を引き出し、コーディネータによって前記結論を実行し、前記結論を前記参加者に送信するように構成された判断モジュールであって、前記結論は、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報と同じ場合、前記結論は、前記トランザクションを実行することであること、または、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報とは異なる場合、前記結論は、前記トランザクションをアボートすることであること
の少なくとも一方を含む、判断モジュールと、
前記判断モジュールの前記結論を実行するように構成された実行モジュールと
を備えることを特徴とするトランザクション処理装置。
【請求項２１】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項２０に記載のトランザクション処理装置。
【請求項２２】
前記コーディネータおよび前記参加者は、元のコーディネータに通信可能に接続されており、前記元のコーディネータはサブオブジェクトを有しておらず、前記受信モジュールは、
前記元のコーディネータによって送信された前記トランザクションＩＤ、前記オブジェクトＩＤ、前記オブジェクトの前記変更情報、および参加者のリストを受信するようにさらに構成されることを特徴とする請求項２０または２１に記載のトランザクション処理装置。
【請求項２３】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項２０乃至２２のいずれか一項に記載のトランザクション処理装置。
【請求項２４】
参加者に通信可能に接続されたコーディネータであって、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、前記サブオブジェクトのうちの１つは、前記コーディネータ内にあり、その他のサブオブジェクトは、異なる参加者内にあり、前記コーディネータは、プロセッサ、および前記プロセッサと通信するメモリを備え、前記メモリは、プログラム命令を記憶するように構成され、前記プロセッサは、前記プログラム命令を実行するように構成され、前記プログラム命令は、
問合せメッセージを各参加者に送信することであって、前記問合せメッセージは、トランザクションＩＤおよびオブジェクトＩＤを運搬し、前記トランザクションＩＤは、前記トランザクションを識別するために使用され、前記オブジェクトＩＤは、前記オブジェクトを識別するために使用され、変更情報は、前記オブジェクトのコンテンツに対応し、異なる変更情報を有する前記オブジェクトのコンテンツは異なっている、送信することと、
前記参加者のいずれか一人から前記問合せメッセージに対する応答メッセージを受信することであって、前記応答メッセージは、前記応答メッセージを送信する前記参加者内の前記オブジェクトの変更情報を運搬する、受信することと、
前記応答メッセージに応じて結論を引き出し、前記結論を実行し、前記結論を前記参加者に送信することであって、前記結論は、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報と同じ場合、前記結論は、前記トランザクションを実行することであること、または、
前記参加者内の前記オブジェクトの前記変更情報が前記コーディネータ内の前記オブジェクトの変更情報とは異なる場合、前記結論は、前記トランザクションをアボートすることであること
の少なくとも一方を含む、送信することと
を行うために使用されることを特徴とするコーディネータ。
【請求項２５】
前記コーディネータおよび前記参加者はすべてオブジェクトベースのストレージデバイスＯＳＤであり、前記トランザクションは、すべての前記サブオブジェクトの読み取り、すべての前記サブオブジェクトの削除、またはすべての前記サブオブジェクトの書き込みであることを特徴とする請求項２４に記載のコーディネータ。
【請求項２６】
前記プログラム命令は、元のコーディネータによって送信された前記トランザクションＩＤ、前記オブジェクトＩＤ、前記オブジェクトの前記変更情報、および参加者のリストを受信するためにさらに使用されることを特徴とする請求項２４に記載のコーディネータ。
【請求項２７】
前記オブジェクトの前記変更情報は、前記オブジェクトのバージョン番号であることを特徴とする請求項２４に記載のコーディネータ。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０１１２
【補正方法】変更
【補正の内容】
【０１１２】
実施形態５
図３を同じく参照して、本発明の別の実施形態は、実施形態４の方法を適用することができるトランザクション処理装置３１を提供する。トランザクション処理装置３１は、参加者３２に通信可能に接続され、トランザクションによって操作されるオブジェクトは、複数のサブオブジェクトにより形成され、サブオブジェクトのうちの１つは、トランザクション処理装置内にあり、その他のサブオブジェクトは、異なる参加者内にある。トランザクション処理装置３１は、問合せモジュール３１１、受信モジュール３１２、判断モジュール３１３、および実行モジュール３１４を含む。
【外国語明細書】
2018049635000001.pdf