(57)【要約】      （修正有）【課題】アトミック性を有しながら、トランザクションキーの値が異なっている複数のＫＶデータを、効率よく処理することが可能なトランザクション処理装置等を提供する。【解決手段】トランザクション処理装置３０１は、キーの値と該キーの値によって識別されるデータとによって構成される組を複数含むグループを複数含んでいるセットに応じて記憶内容を更新する第１コミット処理を要求する第１コミット情報に基づき、該セットに関する排他制御を開始する排他制御部３０２と、該排他制御が開始された後に該複数のグループの各々に応じて該記憶装置に格納されている記憶内容を更新する第２コミット処理を要求する第２コミット情報を、該グループを処理可能な情報処理装置に対して出力する更新部３０３とを有する。排他制御部３０２は、該情報処理装置が該第２コミット情報に応じて実行する処理が終了した場合に、該セットに関する該排他制御を終了する。【選択図】図１５
2017162084.tif 000002
【特許請求の範囲】
【請求項１】
キーの値と、前記キーの値によって識別されるデータとによって構成される組を複数含むグループを、複数含んでいるセットに応じて、記憶装置に格納されている記憶内容を更新する第１コミット処理を要求する第１コミット情報に基づき、前記セットに関する排他制御を開始する排他制御手段と、
前記排他制御が開始された後に、前記複数のグループの各々に応じて前記記憶装置に格納されている記憶内容を更新する第２コミット処理を要求する第２コミット情報を、前記グループを処理可能な情報処理装置に対して出力する更新手段と、
を備え、
前記排他制御手段は、前記情報処理装置が前記第２コミット情報に応じて実行する処理が終了した場合に、前記セットに関する前記排他制御を終了する
トランザクション処理装置。
【請求項２】
前記複数のグループを識別可能な識別子と、前記複数のグループのうちの少なくとも１つの前記組とが関連付けされた前記セットを作成し、作成した前記セットに関する前記第１コミット情報を前記排他制御手段に対して出力するセット作成手段
をさらに備える請求項１に記載のトランザクション処理装置。
【請求項３】
前記グループは、前記組と、前記組が構成されたタイミングを表すタイムスタンプとが関連付けされた情報を含み、
前記更新手段は、前記タイムスタンプに基づき、前記組に応じて前記記憶装置に格納されている記憶内容を更新するか否かを決定し、更新することを決定した場合には、前記記憶内容を更新する
請求項２に記載のトランザクション処理装置。
【請求項４】
前記更新手段は、前記タイムスタンプが、前回の前記第２コミット情報に関する前記グループに含まれている前記組に関連付けされた前記タイムスタンプと同じである場合に更新することを決定し、古い場合に更新しないことを決定する
請求項３に記載のトランザクション処理装置。
【請求項５】
前記セットを格納可能な記憶手段をさらに備え、
前記更新手段は、前記複数のグループの各々に関する前記第２コミット情報に応じた前記第２コミット処理が、いずれも成功した場合に、前記セット作成手段が作成した前記セットを、前記記憶手段に格納する
請求項３、または、請求項４に記載のトランザクション処理装置。
【請求項６】
前記セット作成手段は、前記複数のグループの各々と前記識別子とが関連付けされた情報に、さらに、前記識別子が関連付けされた前記セットを作成し、
前記更新手段は、前記タイムスタンプが、前回の前記第２コミット情報に関する前記グループに含まれている前記タイムスタンプよりも古く、さらに、前記セットにおける前記複数のグループの各々に関連付けされた前記識別子を表す前記セットが格納されている場合に、更新しないことを決定する
請求項５に記載のトランザクション処理装置。
【請求項７】
前記セット作成手段は、前記組と、前記組に関する前記タイムスタンプとが関連付けされた情報を含む前記グループを作成する
請求項３または請求項４に記載のトランザクション処理装置。
【請求項８】
キーの値と、前記キーの値によって識別されるデータとによって構成される組を複数含むグループを、複数含んでいるセットに応じて、記憶装置に格納されている記憶内容を更新する第１コミット処理を要求する第１コミット情報に基づき、前記セットに関する排他制御を開始し、
前記排他制御が開始された後に、前記複数のグループの各々に応じて前記記憶装置に格納されている記憶内容を更新する第２コミット処理を要求する第２コミット情報を、前記グループを処理可能な情報処理装置に対して出力し、
前記情報処理装置が前記第２コミット情報に応じて実行する処理が終了した場合に、前記セットに関する前記排他制御を終了する
トランザクション処理方法。
【請求項９】
キーの値と、前記キーの値によって識別されるデータとによって構成される組を複数含むグループを、複数含んでいるセットに応じて、記憶装置に格納されている記憶内容を更新する第１コミット処理を要求する第１コミット情報に基づき、前記セットに関する排他制御を開始する排他制御機能と、
前記排他制御が開始された後に、前記複数のグループの各々に応じて前記記憶装置に格納されている記憶内容を更新する第２コミット処理を要求する第２コミット情報を、前記グループを処理可能な情報処理装置に対して出力する更新機能と、
をコンピュータに実現させ、
前記排他制御機能においては、前記情報処理装置が前記第２コミット情報に応じて実行する処理が終了した場合に、前記セットに関する前記排他制御を終了する
トランザクション処理プログラム。
【請求項１０】
前記複数のグループを識別可能な識別子と、前記複数のグループのうちの少なくとも１つの前記組とが関連付けされた前記セットを作成し、作成した前記セットに関する前記第１コミット情報が前記排他制御機能に対して出力されるセット作成機能
をさらに備える請求項９に記載のトランザクション処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、トランザクションを処理するトランザクション処理装置等に関する。
【背景技術】
【０００２】
多量のデータを処理するデータベースマネージメントシステム（以下、ＤＢＭＳ）の一例として、高いスケーラビリティを有する分散キーバリューストア（Ｋｅｙ＿Ｖａｌｕｅ＿Ｓｔｏｒｅ、ＫＶＳ）を挙げることができる。キーバリューストアにおいては、データ（バリュー、値、Ｖａｌｕｅ）と、該データを検索する場合における識別子（キー、Ｋｅｙ）とが関連付けされたデータ（ＫＶデータ、セット、レコード）が管理されている。以降、説明の便宜上、キーと、バリューとが関連付けされた情報を、「レコード」と表す。
【０００３】
キーバリューストアにおいては、１セットのＫＶ（Ｋｅｙ＿Ｖａｌｕｅ）データを更新する更新処理について、不可分な操作（アトミック性を有する操作）がサポートされている。しかし、キーバリューストアにおいては、複数セットのＫＶデータを更新する更新処理について、不可分な操作（アトミック性を有する操作）がサポートされていない。
【０００４】
特許文献１は、整合性を保持する対象である複数のレコードに関するログを更新するトランザクション処理装置を開示している。該トランザクション処理装置は、該レコードを、代表キーを付された代表ログと、それ以外の従属ログとに分類する。該トランザクション処理装置は、従属ログに対して、代表ログとの整合性を保持する対象であることを表す整合情報を付加し、各レコードに対する更新情報を代表ログに格納する。該トランザクション処理装置は、代表ログに含まれている更新情報を、各ログに反映する。
【０００５】
特許文献２は、複数のレコードに共通している値をユニークなキーとして設定し、設定したキーごとに論理的なグループを作成するトランザクション処理装置を開示している。該トランザクション処理装置は、作成したグループに属しているレコードに関するログを同一の記憶領域に格納する。
【０００６】
特許文献３は、複数セットのＫＶデータを、１つのＷＡＬ情報（先行書込みログ、Ｗｒｉｔｅ＿Ａｈｅａｄ＿Ｌｏｇ）と呼ばれるグループにまとめ、グループにまとめられたＷＡＬ情報を更新する処理を、アトミック性を有しながら、トランザクションとして実行するトランザクションシステムを開示している。該トランザクションシステムは、ＫＶデータの形式に従い記述されたＫＶデータをキーバリューストアに格納する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−２３８０６１号公報
【特許文献２】特開２０１２−２３４５０９号公報
【特許文献３】特開２０１５−１９１３０７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかし、たとえば、特許文献２、または、特許文献３に開示されたトランザクション処理装置は、アトミック性を有しながら、トランザクションキーの値が異なっている複数のＫＶデータを更新することができない。また、特許文献１に開示されたトランザクション処理装置は、代表ログに格納された更新情報を各ログに反映するので、代表ログを処理する計算負荷が大きくなってしまい、係る更新情報をログに効率的に反映することができない。
【０００９】
そこで、本発明の主たる目的は、アトミック性を有しながら、トランザクションキーの値が異なっている複数のＫＶデータを、効率よく処理することが可能なトランザクション処理装置等を提供することである。
【課題を解決するための手段】
【００１０】
前述の目的を達成するために、本発明の一態様において、トランザクション処理装置は、
キーの値と、前記キーの値によって識別されるデータとによって構成される組を複数含むグループを、複数含んでいるセットに応じて、記憶装置に格納されている記憶内容を更新する第１コミット処理を要求する第１コミット情報に基づき、前記セットに関する排他制御を開始する排他制御手段と、
前記排他制御が開始された後に、前記複数のグループの各々に応じて前記記憶装置に格納されている記憶内容を更新する第２コミット処理を要求する第２コミット情報を、前記グループを処理可能な情報処理装置に対して出力する更新手段と、
を備え、
前記排他制御手段は、前記情報処理装置が前記第２コミット情報に応じて実行する処理が終了した場合に、前記セットに関する前記排他制御を終了する。
【００１１】
また、本発明の他の見地として、トランザクション処理方法は、
キーの値と、前記キーの値によって識別されるデータとによって構成される組を複数含むグループを、複数含んでいるセットに応じて、記憶装置に格納されている記憶内容を更新する第１コミット処理を要求する第１コミット情報に基づき、前記セットに関する排他制御を開始し、
前記排他制御が開始された後に、前記複数のグループの各々に応じて前記記憶装置に格納されている記憶内容を更新する第２コミット処理を要求する第２コミット情報を、前記グループを処理可能な情報処理装置に対して出力し、
前記情報処理装置が前記第２コミット情報に応じて実行する処理が終了した場合に、前記セットに関する前記排他制御を終了する。
【００１２】
また、本発明の他の見地として、トランザクション処理プログラムは、
キーの値と、前記キーの値によって識別されるデータとによって構成される組を複数含むグループを、複数含んでいるセットに応じて、記憶装置に格納されている記憶内容を更新する第１コミット処理を要求する第１コミット情報に基づき、前記セットに関する排他制御を開始する排他制御機能と、
前記排他制御が開始された後に、前記複数のグループの各々に応じて前記記憶装置に格納されている記憶内容を更新する第２コミット処理を要求する第２コミット情報を、前記グループを処理可能な情報処理装置に対して出力する更新機能と、
をコンピュータに実現させ、
前記排他制御機能においては、前記情報処理装置が前記第２コミット情報に応じて実行する処理が終了した場合に、前記セットに関する前記排他制御を終了する。
【００１３】
さらに、同目的は、係るプログラムを記録するコンピュータが読み取り可能な記録媒体によっても実現される。
【発明の効果】
【００１４】
本発明に係るトランザクション処理装置等によれば、アトミック性を有しながら、トランザクションキーの値が異なっている複数のＫＶデータを効率よく処理することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の第１の実施形態に係るトランザクション処理装置が有する構成を示すブロック図である。
【図２】第１の実施形態に係るクエリ処理部が有する構成を示すブロック図である。
【図３】第１の実施形態に係るトランザクション処理部が有する構成を示すブロック図である。
【図４】第１の実施形態に係るトランザクション処理装置における処理の流れを示すシーケンス図である。
【図５】テーブル情報の一例を概念的に表す図である。
【図６】図５に例示されたテーブル情報に基づき作成されたＫＶデータの一例を概念的に表す図である。
【図７】ＷＡＬ情報が有するデータ構造の一例を概念的に表す図である。
【図８】ＣＷＡＬ情報が有するデータ構造の一例を概念的に表す図である。
【図９】本発明の第２の実施形態に係るトランザクション処理装置が有する構成を示すブロック図である。
【図１０】第２の実施形態に係るトランザクション処理装置における処理の流れを示すシーケンス図（１／５）である。
【図１１】第２の実施形態に係るトランザクション処理装置における処理の流れを示すシーケンス図（２／５）である。
【図１２】第２の実施形態に係るトランザクション処理装置における処理の流れを示すシーケンス図（３／５）である。
【図１３】第２の実施形態に係るトランザクション処理装置における処理の流れを示すシーケンス図（４／５）である。
【図１４】第２の実施形態に係るトランザクション処理装置における処理の流れを示すシーケンス図（５／５）である。
【図１５】本発明の第３の実施形態に係るトランザクション処理装置が有する構成を示すブロック図である。
【図１６】本発明の各実施形態に係るトランザクション処理装置を実現可能な計算処理装置のハードウェア構成例を、概略的に示すブロック図である。
【発明を実施するための形態】
【００１６】
次に、本発明を実施する実施形態について図面を参照しながら詳細に説明する。
【００１７】
＜第１の実施形態＞
図１を参照しながら、第１の実施形態に係るトランザクション処理装置１０１が有する構成について説明する。図１は、本発明の第１の実施形態に係るトランザクション処理装置１０１が有する構成を示すブロック図である。
【００１８】
第１の実施形態に係るトランザクション処理装置１０１は、大別して、クエリ処理部１０２と、トランザクション処理部１０３とを有する。
【００１９】
トランザクション処理装置１０１は、複数のトランザクション処理部（トランザクション処理部１０４、トランザクション処理部１０５等）を有してもよい。複数のトランザクション処理部は、図３を参照しながら説明するトランザクション処理部１０３と同様の機能を有する。トランザクション処理装置１０１は、複数のクエリ処理部１０２を有してもよい。
【００２０】
トランザクション処理装置１０１は、情報処理装置２０１、及び、分散キーバリューストア部（以降、「分散ＫＶＳ部２０２」と表す）に通信接続可能である。
【００２１】
本願の各実施形態においては、説明の便宜上、トランザクション処理装置１０１として説明するが、クエリ処理部１０２、１台以上のトランザクション処理装置が通信ネットワークを介して通信接続可能なトランザクション処理システムであってもよい。
【００２２】
以降、説明の便宜上、ＫＶ（キーバリュー）データは、キーを表す値と、該キーによって識別されるデータ（情報）とが関連付けされた情報を表すとする。
【００２３】
クエリ処理部１０２は、たとえば、アプリケーションプログラム（以降、「アプリケーション」と表す）等に従い処理を実行している情報処理装置２０１が送信したクエリを受信し、受信したクエリに関する処理を実行する。クエリ処理部１０２は、分散ＫＶＳ部２０２に格納されているＫＶデータを取得する処理、ＫＶデータを作成する処理等を実行する。
【００２４】
トランザクション処理部１０３は、クエリ処理部１０２によって作成されたＫＶデータを分散ＫＶＳ部２０２にコミットする処理（以降、「コミット処理」と表す）等を実行する。図３を参照しながら後述するように、コミット処理は、トランザクション処理部１０３におけるＫＶデータ記憶部１２２にＫＶデータ等のデータを格納する処理を表す。図３を参照しながら後述するように、トランザクション処理部１０３は、さらに、ＫＶデータ記憶部１２２にＫＶデータを分散ＫＶＳ部２０２にデータを格納することによって、分散ＫＶＳ部２０２に格納されている記憶内容を更新（または、格納）する。
【００２５】
尚、クエリ処理部１０２が有する構成については、図２を参照しながら後述する。トランザクション処理部１０３が有する構成については、図３を参照しながら後述する。
【００２６】
まず、ＫＶデータの基であるテーブル情報について図５を参照しながら説明する。次に、図６を参照しながら、該テーブル情報に基づき作成されたＫＶデータについて説明する。図５は、テーブル情報の一例を概念的に表す図である。図６は、図５に例示されたテーブル情報に基づき作成されたＫＶデータの一例を概念的に表す図である。
【００２７】
テーブル情報においては、複数の項目が関連付けされている。図５を参照すると、テーブル情報においては、たとえば、商品識別子（以降、識別子を「ＩＤ」と表す）、商品名、商品分類、在庫、及び、金額等のフィールドが関連付けされている。該テーブル情報においては、たとえば、商品ＩＤ「ｉ１」と、商品名「商品Ａ」と、商品分類「ＰＣ」（すなわち、「Ｐｅｒｓｏｎａｌ＿Ｃｏｍｐｕｔｅｒ」、「ＰＣ」）と、在庫「１０」と、金額「１２００００」とが関連付けされている。これは、「商品Ａ」を表す商品に関して、商品ＩＤが「ｉ１」であり、商品Ａが商品分類「ＰＣ」に含まれており、商品Ａの在庫が１０台であり、商品Ａの単価が１２万円であることを表す。
【００２８】
図６を参照すると、ＫＶデータ（レコード、組）においては、キー（ｋｅｙ）を表す値と、該キーによって識別されるバリュー（Ｖａｌｕｅ、データ）を表す情報とが関連付けされたレコード（組、エンティティ）を含む。たとえば、図６に例示されたＫＶデータは、キー「ｉ２」と、バリュー「｛ｉ２、商品Ｂ、ＰＣ、３、１０００００｝」とが関連付けされたレコードを含む。これは、キー「ｉ２」を用いて、キー「ｉ２」に関連付けされた値が「｛ｉ２、商品Ｂ、ＰＣ、３、１０００００｝」であることを表す。たとえば、当該レコードは、図５に例示されたテーブル情報において、商品ＩＤ「ｉ２」に関連付けされた商品名、商品分類、在庫、及び、金額を表す。
【００２９】
次に、第１の実施形態に係るトランザクション処理装置１０１において処理されるＷＡＬ（先行書き込みログ、Ｗｒｉｔｅ＿Ａｈｅａｄ＿Ｌｏｇ）情報、及び、ＣＷＡＬ（Ｃｏｍｐｒｅｈｅｎｓｉｖｅ＿Ｗｒｉｔｅ＿Ａｈｅａｄ＿Ｌｏｇ）情報について説明する。尚、ＷＡＬは、変更内容をデータベース等の記憶装置（記憶部、たとえば、図３におけるＫＶデータ記憶部１２２等）に格納する処理を表す。ＷＡＬ情報は、記憶装置に格納されるデータそのものを表す。
【００３０】
図７を参照しながら、ＷＡＬ情報について詳細に説明する。図７は、ＷＡＬ情報が有するデータ構造の一例を概念的に表す図である。
【００３１】
以降の説明においては、説明の便宜上、ＷＡＬ情報を「グループ」と表すこともある。また、以降の説明においては、適宜、ＷＡＬ情報にグループを併記することによって、「ＷＡＬ情報（グループ）」と記述することもある。
【００３２】
ＷＡＬ情報（グループ）は、複数のＫＶデータと、該ＫＶデータが作成されたタイミングを表すタイムスタンプと、該ＫＶデータにおけるバリューに共通して含まれているデータとが関連付けされた情報である。説明の便宜上、バリューに共通して含まれているデータを「トランザクションキー」と表す。言い換えれば、ＷＡＬ情報は、トランザクションキーの値と、該トランザクションキーを含むＫＶデータと、該ＫＶデータに関するタイムスタンプとが関連付けされた情報である。トランザクションキーがＫＶデータに関するキーの一例であり、タイムスタンプ、キー、及び、バリューがＫＶデータに関するバリューの一例であるので、ＷＡＬ情報は、ＫＶデータの一例である。
【００３３】
図７に例示されたＷＡＬ情報において、トランザクションキー「ＰＣ」と、キー「ｉ２」及びバリュー「｛ｉ２、商品Ｂ、・・・｝」が関連付けされたＫＶデータと、キー「ｉ１」及びバリュー「｛ｉ１、商品Ａ、・・・｝」が関連付けされたＫＶデータ等の複数のＫＶデータとが関連付けされている。これは、ＷＡＬ情報が、トランザクションキー「ＰＣ」に、キー「ｉ２」及びバリュー「｛ｉ２、商品Ｂ、・・・｝」が関連付けされたＫＶデータと、キー「ｉ１」及びバリュー「｛ｉ１、商品Ａ、・・・｝」が関連付けされたＫＶデータとを含んでいることを表す。
【００３４】
図７に例示されたＷＡＬ情報において、さらに、キー「ｉ２」及びバリュー「｛ｉ２、商品Ｂ、・・・｝」が関連付けされたＫＶデータに、該ＫＶデータが作成されたタイミングを表すタイムスタンプ「２」が関連付けされている。これは、キー「ｉ２」及びバリュー「｛ｉ２、商品Ｂ、・・・｝が関連付けされたＫＶデータが作成されたタイミングが「２」であることを表す。
【００３５】
尚、図７に例示されたＷＡＬ情報は、図５に例示されたテーブル情報のみに基づき作成されているが、異なる複数のテーブル情報に基づき作成されていてもよい。また、ＷＡＬ情報において、トランザクションキーに関連付けされたバリューは、必ずしも、同一の種類である必要はない。ＷＡＬ情報においては、タイムスタンプが時系列順（古い順、または、新しい順）に、該タイムスタンプに関連付けされたＫＶデータ（組）が並べられていてもよい。ＷＡＬ情報は、複数のＫＶデータが論理的に関連付けされていてもよい。また、ＷＡＬ情報は、たとえば、トランザクション処理装置１０３におけるＫＶデータ記憶部１２２に格納される場合に従うデータ構造を概念的に表している。
【００３６】
次に、図８を参照しながら、ＣＷＡＬ情報（セット）について詳細に説明する。図８は、ＣＷＡＬ情報が有するデータ構造の一例を概念的に表す図である。
【００３７】
以降の説明においては、説明の便宜上、ＣＷＡＬ情報を「セット」と表すこともある。また、以降の説明においては、適宜、ＣＷＡＬ情報にセットを併記することによって、「ＣＷＡＬ情報（セット）」と記述することもある。
【００３８】
ＣＷＡＬ情報は、少なくとも１つのグループ（ＷＡＬ情報）と、該少なくとも１つのグループを識別可能なセットキーとが関連付けされた情報である。セットキーがＫＶデータに関するキーの一例であり、少なくとも１つのグループ（ＷＡＬ情報）がバリューの一例であるので、ＣＷＡＬ情報は、ＫＶデータの一例である。尚、ＣＷＡＬ情報に含まれている各グループ（ＷＡＬ情報）は、該セットキーを含んでいてもよい。この場合に、ＷＡＬ情報は、タイムスタンプ、キー、バリュー、及び、セットキーと、トランザクションキーとが関連付けされたＫＶデータの一例である。
【００３９】
図８に例示されたＣＷＡＬ情報において、セットキー「ｎ１」と、トランザクションキー「ＰＣ」によって識別されるＷＡＬ情報（グループ）、及び、トランザクションキー「タブレット」によって識別されるＷＡＬ情報（グループ）とが関連付けされている。これは、セットキー「ｎ１」によって、上述した２つのグループが関連付けされていることを表す。また、トランザクションキー「ＰＣ」によって識別されるＷＡＬ情報（グループ）は、セットキー「ｎ１」を含んでいる。これは、ＷＡＬ情報に含まれているセットキーを参照することによって、該ＷＡＬ情報を含むＣＷＡＬ情報を特定することが可能であることを表す。
【００４０】
ＣＷＡＬ情報は、少なくとも１つのＷＡＬ情報が論理的に関連付けされていてもよい。また、ＷＡＬ情報は、少なくとも１つのＫＶデータが論理的に関連付けされていてもよい。また、ＣＷＡＬ情報は、たとえば、トランザクション処理装置１０３におけるＫＶデータ記憶部１２２に格納される場合に従うデータ構造を概念的に表している。ＣＷＡＬ情報は、必ずしも、あるトランザクションキーに関連付けされたＷＡＬ情報において、あるキー（たとえば、「ｉ１」）に関連付けされたバリューを、すべてのタイムスタンプ（この例では、「１」、「２」）に関して含む必要はない。ＣＷＡＬ情報は、最新のタイムスタンプに関連付けされたＫＶデータのみを含んでいてもよい。
【００４１】
以降においては、説明の便宜上、図７に例示されたＷＡＬ情報、及び、図８に例示されたＣＷＡＬ情報を参照しながら、トランザクション処理装置１０１について説明するとする。また、以降においては、ＷＡＬ情報に関して、図面の番号を追記しながら簡易的に例示（たとえば、「ＷＡＬ情報（図７に例示）」）するが、これは、少なくとも１つのＫＶデータを含むＷＡＬ情報であればよいことを表す。たとえば、「ＷＡＬ情報（図７に例示）」は、タイムスタンプ「３」に関連付けされたＫＶデータ、及び、トランザクションキー「ＰＣ」のみを含むＷＡＬ情報（すなわち、図７における１行目）を表す。同様に、ＣＷＡＬ情報に関して、図面の番号を追記しながら簡易的に例示（たとえば、「ＣＷＡＬ情報（図８に例示）」）するが、これは、少なくとも１つのＷＡＬ情報を含むＣＷＡＬ情報であればよいことを表す。たとえば、「ＣＷＡＬ情報（図８に例示）」は、タイムスタンプ「３」に関連付けされたＫＶデータ、セットキー「ｎ１」、及び、トランザクションキー「ＰＣ」のみを含むＣＷＡＬ情報（すなわち、図８における１行目）を表す。
【００４２】
次に、図２を参照しながら、クエリ処理部１０２が有する構成について説明する。図２は、第１の実施形態に係るクエリ処理部１０２が有する構成を示すブロック図である。
【００４３】
クエリ処理部１０２は、クエリ解析部１１１と、ＫＶデータ作成部１１２と、ＷＡＬ情報作成部１１３と、ＣＷＡＬ情報作成部１１４と、ＫＶデータ取得部１１５とを有する。
【００４４】
まず、クエリ処理部１０２における各部において実行される処理の概略を説明し、トランザクション処理装置１０１における処理の流れについては、図４を参照しながら後述する。
【００４５】
クエリ解析部１１１は、受信したクエリに関して実行する処理を特定する。たとえば、クエリは、「商品ＡのＰＣの在庫を９台に更新し、商品Ｃが表すスマートフォンの在庫を４台に更新する」というクエリである。ＫＶデータ作成部１１２と、ＷＡＬ情報作成部１１３と、ＣＷＡＬ情報作成部１１４と、ＫＶデータ取得部１１５とは、クエリ解析部１１１が特定した処理に基づき、処理を実行する。
【００４６】
ＷＡＬ情報作成部１１３は、少なくとも１つのＫＶデータを含むグループを作成する基準を表すグループカタログ情報に従い、ＫＶデータがグループとして分類されたＷＡＬ情報（図７に例示）を作成する。グループカタログ情報は、少なくとも１つのテーブル情報に含まれているＫＶデータに関して、該ＫＶデータに含まれているフィールド（トランザクションキー）における値が同じであるＫＶデータを、該フィールドをキーとしてＷＡＬ情報を作成する情報を表す。たとえば、グループカタログ情報は、図５に例示されたテーブル情報において、フィールド「商品分類」の値が「ＰＣ」であるＫＶデータを含むグループを作成することを表す。したがって、ＷＡＬ情報作成部１１３は、トランザクションキーの値に基づき、トランザクションキーの値が同じであるＫＶデータを含む情報を作成し、該トランザクションキーの値と、作成した情報とが関連付けされたＷＡＬ情報（図７に例示）を作成する。
【００４７】
たとえば、図５に例示されたテーブル情報を参照すると、商品分類「ＰＣ」に関連付けされた商品ＩＤは、商品ＩＤ「ｉ１」、及び、商品ＩＤ「ｉ２」である。したがって、グループカタログ情報が、「商品分類」なるトランザクションキーに関する値に応じてグループを作成することを表す場合に、ＷＡＬ情報作成部１１３は、トランザクションキーに関する値が同じである、商品ＩＤ「ｉ１」を含むＫＶデータ、または、商品ＩＤ「ｉ２」を含むＫＶデータのうち、少なくともいずれかを含むデータセット（ＷＡＬ情報）を作成する。
【００４８】
ＣＷＡＬ情報作成部１１４は、セットカタログ情報に従い、少なくとも１つのＷＡＬ情報（図７に例示）を含むＣＷＡＬ情報（図８に例示）を作成する。この場合に、セットカタログ情報は、少なくとも１つのＷＡＬ情報を１つのデータセットとして作成する情報を表す。たとえば、セットカタログ情報は、トランザクションキーの値が「ＰＣ」であるＷＡＬ情報と、トランザクションキーの値が「スマートフォン」であるＷＡＬ情報とを１つのＣＷＡＬ情報（図８に例示）として作成する情報を表す。この場合に、ＣＷＡＬ情報作成部１１４は、当該２つのＷＡＬ情報を含む１つのデータセットを作成し、作成したデータセットを一意に識別可能なセットキーと、作成したデータセットとが関連付けされたＣＷＡＬ情報（図８に例示）を作成する。言い換えれば、ＣＷＡＬ情報作成部１１４は、セットキーと、作成したデータセットとが関連付けされたＫＶデータを作成する。
【００４９】
図３を参照しながら、トランザクション処理部１０３が有する構成について説明する。図３は、第１の実施形態に係るトランザクション処理部１０３が有する構成を示すブロック図である。
【００５０】
トランザクション処理部１０３は、排他制御部１２１と、ＫＶデータ記憶部１２２と、ＷＡＬ情報更新部１２３と、ＫＶデータ判定部１２４と、ＫＶデータ参照部１２５とを有する。
【００５１】
トランザクション処理部１０３における各部において実行される処理の概略を説明し、トランザクション処理装置１０１における処理の流れについては、図４を参照しながら後述する。
【００５２】
トランザクション処理部１０３は、トランザクションにおいて、コミット処理と、該コミット処理において実行する排他制御等の処理を実行する。また、図７、及び、図８を参照しながら説明したように、ＷＡＬ情報、及び、ＣＷＡＬ情報が、ＫＶデータ（図６に例示）の一例であるので、トランザクション処理部１０３は、分散キーバリューストアを用いても容易に実現することができる。
【００５３】
排他制御部１２１は、コミット処理を実行する場合に排他制御を実行する。
【００５４】
ＫＶデータ記憶部１２２は、ＷＡＬ情報、及び、ＣＷＡＬ情報を記憶することができる。
【００５５】
ＫＶデータ参照部１２５は、ＫＶデータ記憶部１２２に格納されているＷＡＬ情報（または、ＣＷＡＬ情報）を読み取り、読み取った情報をＫＶデータ判定部１２４に対して出力する。
【００５６】
次に、図４を参照しながら、本発明の第１の実施形態に係るトランザクション処理装置１０１における処理について詳細に説明する。図４は、第１の実施形態に係るトランザクション処理装置１０１における処理の流れを示すシーケンス図である。
【００５７】
説明の便宜上、以降に示す各実施形態においては、異なるトランザクション処理部であっても、トランザクション処理部が有する各部を表す参照番号として、図３に示された参照番号を用いて表すとする。同様に、以降に示す各実施形態においては、異なるクエリ処理部であっても、クエリ処理部が有する各部を表す参照番号として、図２に示された参照番号を用いて表すとする。トランザクションは、ＫＶデータ記憶部１２２に格納されている複数のグループ（ＷＡＬ情報）を１回のトランザクションにて更新する処理であるとする。複数のグループは、ＷＡＬ情報Ａと、ＷＡＬ情報Ｂとを含むとする。ＷＡＬ情報Ａは、たとえば、図６に例示されたＫＶデータのうち、バリューに「ＰＣ」が含まれている２つのＫＶデータを含んでいる。ＷＡＬ情報Ｂは、たとえば、図６に例示されたＫＶデータのうち、バリューに「スマートフォン」が含まれている２つのＫＶデータを含んでいる。説明の便宜上、ＷＡＬ情報Ａは、ＫＶデータＡを含むとする。ＷＡＬ情報Ｂは、ＫＶデータＢを含むとする。トランザクション処理部１０３は、ＣＷＡＬ情報を管理しているとする。トランザクション処理部１０４は、ＫＶデータＡを管理しているとする。トランザクション処理部１０５は、ＫＶデータＢを管理しているとする。
【００５８】
情報処理装置２０１は、クエリ処理部１０２に対して、ＫＶデータＡに含まれている情報、及び、ＫＶデータＢに含まれている情報を共に更新するクエリを送信する。
【００５９】
クエリ処理部１０２においてクエリ解析部１１１は、該クエリを受信し、受信したクエリに応じた処理を特定する。たとえば、クエリ解析部１１１は、受信したクエリに基づき、ＫＶデータＡと、ＫＶデータＢとを１回のトランザクションにて更新する処理を特定する。すなわち、クエリ解析部１１１は、セットカタログ情報、及び、グループカタログ情報に基づき、ＣＷＡＬ情報を１回のトランザクションにて更新する処理を特定する。
【００６０】
クエリ処理部１０２において、ＫＶデータ取得部１１５は、ＫＶデータＡと、該ＫＶデータＡが作成されたタイミングを表すタイムスタンプとを要求するリクエストを処理するトランザクション処理部を、たとえば、コンシステントハッシング法に従い、選択する。この場合に、ＫＶデータ取得部１１５は、トランザクション処理部１０４を選択する。ＫＶデータ取得部１１５は、該リクエストをトランザクション処理部１０４に対して出力する（ステップＣ１）。
【００６１】
トランザクション処理部１０４において、ＫＶデータ参照部１２５は、クエリ処理部１０２が出力したリクエストを入力し（ステップＥ１）、受信したリクエストに応じて、該ＫＶデータＡがＫＶデータ記憶部１２２に格納されているか否かを判定する。ＫＶデータ参照部１２５は、ＫＶデータＡがＫＶデータ記憶部１２２に格納されていた場合に、ＫＶデータＡと、ＫＶデータＡが作成されたタイミングを表すタイムスタンプとをクエリ処理部１０２に対して出力する（ステップＥ２）。ＫＶデータ参照部１２５は、ＫＶデータＡが格納されていなかった場合に、ＫＶデータＡが格納されていないことを表す情報をクエリ処理部１０２に対して出力する。
【００６２】
クエリ処理部１０２において、ＫＶデータ取得部１１５は、トランザクション処理部１０４が出力したＫＶデータＡ、及び、タイムスタンプ、または、ＫＶデータＡが格納されていないことを表す情報を入力する（ステップＣ２）。ＫＶデータ取得部１１５は、ＫＶデータＡが格納されていないことを表す情報を入力した場合に、ＫＶデータＡを要求するリクエストを分散ＫＶＳ部２０２に送信する。この場合に、分散ＫＶＳ部２０２は、クエリ処理部１０２が送信したリクエストを受信し、受信したリクエストに応じて、ＫＶデータＡをクエリ処理部１０２に送信する。クエリ処理部１０２において、ＫＶデータ取得部１１５は、分散ＫＶＳ部２０２が送信したＫＶデータＡを入力する。クエリ処理部１０２がステップＣ２にて入力するＫＶデータＡは、上述した仮定において更新処理以前のデータである。上述した仮定によれば、トランザクション処理部１０４がＫＶデータＡを分散ＫＶＳ部２０２に格納する（コミットする）ので、最新のＫＶデータＡは、トランザクション処理部１０４に格納されているか（ステップＥ２にて処理される）、トランザクション処理部１０４に格納されていない場合には、分散ＫＶＳ部２０２に格納されている。
【００６３】
クエリ処理部１０２において、ＫＶデータ取得部１１５は、入力したＫＶデータＡ（すなわち、更新前のＫＶデータＡ）を、ＫＶデータ作成部１１２に対して出力し、入力したタイムスタンプをＷＡＬ情報作成部１１３に対して出力する。
【００６４】
ここで、ＷＡＬ情報（図７に例示）を作成する処理、及び、該ＷＡＬ情報に関するコミット処理について説明する。
【００６５】
クエリ処理部１０２において、ＫＶデータ作成部１１２は、ＫＶデータ取得部１１５が出力したＫＶデータＡを入力し、受信したクエリに従い、ＫＶデータＡに含まれている値が更新されたＫＶデータＡを作成する。ＫＶデータ取得部１１５は、作成したＫＶデータＡをＷＡＬ情報作成部１１３に対して出力する。
【００６６】
ＷＡＬ情報作成部１１３は、ＫＶデータ作成部１１２が作成したＫＶデータＡと、ＫＶデータ取得部１１５が出力したタイムスタンプとを入力する。ＷＡＬ情報作成部１１３は、入力したＫＶデータＡと、入力したタイムスタンプとを含むＷＡＬ情報Ａを作成する。言い換えれば、ＷＡＬ情報作成部１１３は、入力したＫＶデータＡに、当該タイムスタンプが付与されたＷＡＬ情報Ａを作成する。ＷＡＬ情報作成部１１３は、たとえば、コンシステントハッシング法に従い、ＷＡＬ情報Ａを送信するトランザクション処理部（たとえば、トランザクション処理部１０４）を選択し、作成したＷＡＬ情報Ａをトランザクション処理部１０４に対して出力する。さらに、ＷＡＬ情報作成部１１３は、作成したＷＡＬ情報ＡをＣＷＡＬ情報作成部１１４に対して出力する。
【００６７】
トランザクション処理部１０４は、クエリ処理部１０２が出力したＷＡＬ情報Ａを入力し、入力したＷＡＬ情報Ａを、ＫＶデータ記憶部１２２に格納する処理を表すコミット処理を実行する。コミット処理において、トランザクション処理部１０４は、入力したＷＡＬ情報Ａに関する処理を実行するトランザクション処理部（説明の便宜上、トランザクション処理部Ａとする）を、たとえば、コンシステントハッシング法に従い選択する。トランザクション処理部１０４は、ＷＡＬ情報Ａをトランザクション処理部Ａに対して出力する。
【００６８】
トランザクション処理部Ａは、トランザクション処理部１０４が出力したＷＡＬ情報Ａを入力し、入力したＷＡＬ情報Ａに含まれているタイムスタンプに基づき、楽観的排他制御を実行する。より具体的に、トランザクション処理部Ａにおいて、排他制御部１２１は、入力したＷＡＬ情報Ａに含まれているタイムスタンプ（「第１タイムスタンプ」と表す）と、ＫＶデータ記憶部１２２に格納されているＷＡＬ情報Ａに含まれているタイムスタンプ（「第２タイムスタンプ」と表す）とを比較する。トランザクション処理部Ａにおいて、排他制御部１２１は、第２タイムスタンプと第１タイムスタンプとが同じタイミングである場合に、ＷＡＬ情報ＡをＫＶデータ記憶部１２２に格納し、その後、コミット処理が成功したことを表す情報をトランザクション処理部１０４に対して出力する。トランザクション処理部Ａにおいて、排他制御部１２１は、第２タイムスタンプが第１タイムスタンプより後である場合に、コミット処理が失敗したことを表す情報をトランザクション処理部１０４に対して出力する。以降、コミット処理の結果（コミット処理が成功したか、コミット処理が失敗したか）を表す情報を「コミット応答情報」と表す。
【００６９】
トランザクション処理部Ａにおいて、ＷＡＬ情報更新部１２３は、入力したＷＡＬ情報ＡをＫＶデータ記憶部１２２に格納する処理に非同期的に、ＫＶデータ記憶部１２２に含まれているＷＡＬ情報Ａを読み取り、読み取ったＷＡＬ情報Ａに基づき、分散ＫＶＳ部２０２に格納されているＫＶデータＡを更新する。ＷＡＬ情報更新部１２３は、該ＷＡＬ情報Ａに関して、ＫＶデータ記憶部１２２に格納されているＷＡＬ情報Ａを削除する。
【００７０】
より詳細に、トランザクション処理部ＡにおけるＷＡＬ情報に基づき、分散ＫＶＳ部２０２に格納されている情報を更新する処理について説明する。
【００７１】
ＷＡＬ情報更新部１２３は、ＫＶデータ記憶部１２２に格納されているタイムスタンプの値が古いタイムスタンプに関連付けされたＷＡＬ情報から順に、ある値のタイムスタンプに関連付けされたＷＡＬ情報を読み取る。ＷＡＬ情報更新部１２３は、読み取ったＷＡＬ情報を、ＫＶデータ判定部１２４に対して出力する。
【００７２】
ＫＶデータ判定部１２４は、ＷＡＬ情報更新部１２３が出力したＷＡＬ情報を入力し、入力したＷＡＬ情報ごとに、有効なＫＶデータであるか否かを判定する。この場合に、有効なＫＶデータは、図８を参照しながら説明したような、セットキーを含まないＷＡＬ情報であるか、または、「セットキーを含むＷＡＬ情報であって、かつ、該セットキーが表すＣＷＡＬ情報が、いずれかのトランザクション処理部におけるＫＶデータ記憶部１２２に格納されているＷＡＬ情報」に含まれているＫＶデータである。ＫＶデータ判定部１２４は、たとえば、セットキーが表すＣＷＡＬ情報に関する処理を実行するトランザクション処理部にＣＷＡＬ情報が格納されているか否かを、該トランザクション処理部に問い合わせ、該問い合わせに対するリプライに基づき、有効なＫＶデータであるか否かを判定する。
【００７３】
ＷＡＬ情報更新部１２３は、ＫＶデータが追加されたＷＡＬ情報を分散ＫＶＳ部２０２に反映するコミット処理（説明の便宜上、分散ＫＶＳ部２０２に反映する処理を「第２コミット処理」と表す）を実行する。ＷＡＬ情報更新部１２３は、たとえば、ＷＡＬ情報に関する第２コミット処理が成功した場合に、該ＷＡＬ情報をＫＶデータ記憶部１２２から消去する。
【００７４】
また、ＣＷＡＬ情報に含まれているＫＶデータに関しては、別のトランザクション処理部に格納されているので、該ＫＶデータに基づき分散ＫＶＳ部２０２を更新する第２コミット処理を実行する必要はない。しかし、ＫＶデータが有効であるか否かが判定される場合に該ＣＷＡＬ情報は参照される。このため、ＷＡＬ情報更新部１２３は、第２コミット処理に対して非同期に、ＣＷＡＬ情報に含まれているＫＶデータが、異なるトランザクション処理部におけるＫＶデータ記憶部１２２に格納されていないことを確認した後にＣＷＡＬ情報を消去してもよい。
【００７５】
図４を参照しながら、ステップＣ３以降の処理について説明する。
【００７６】
ＫＶデータＢに関しても、ＫＶデータＡに関して実行された処理と同様の処理が実行されることによって（ステップＣ３、ステップＣ４、ステップＦ１、及び、ステップＦ２）、ＷＡＬ情報Ｂが作成される。ＷＡＬ情報作成部１１３は、たとえば、コンシステントハッシング法に従い、ＷＡＬ情報Ｂを送信するトランザクション処理部（たとえば、トランザクション処理部１０５）を選択し、作成したＷＡＬ情報Ｂをトランザクション処理部１０５に対して出力し、作成したＷＡＬ情報ＢをＣＷＡＬ情報作成部１１４に対して出力する。
【００７７】
クエリ処理部１０２において、ＣＷＡＬ情報作成部１１４は、ＷＡＬ情報作成部１１３が出力したＷＡＬ情報Ａ、及び、ＷＡＬ情報作成部１１３が出力したＷＡＬ情報Ｂを入力する。ＣＷＡＬ情報作成部１１４は、ＣＷＡＬ情報に含められるＷＡＬ情報を表すセットカタログ情報に基づき、ＷＡＬ情報Ａ、及び、ＷＡＬ情報Ｂを含む情報と、該情報を識別可能なセットキーとが関連付けされたＣＷＡＬ情報（図８に例示）を作成する（ステップＣ５）。ＣＷＡＬ情報作成部１１４は、該ＣＷＡＬ情報における各ＷＡＬ情報（この例では、ＷＡＬ情報Ａ、及び、ＷＡＬ情報Ｂ）と、該セットキーとが関連付けされたＣＷＡＬ情報を作成してもよい。
【００７８】
尚、ＣＷＡＬ情報を作成する例を参照しながら、本実施形態に係るクエリ処理部１０２における処理について説明したが、受信したＷＡＬ情報（図７に例示）が１つである場合には、必ずしも、クエリ処理部１０２は、ＣＷＡＬ情報（図８に例示）を作成する必要はない。この場合に、クエリ処理部１０２は、受信したクエリに従い、受信したＷＡＬ情報を更新する処理を実行する。
【００７９】
クエリ処理部１０２において、ＣＷＡＬ情報作成部１１４は、たとえば、コンシステントハッシング法に従い、作成したＣＷＡＬ情報（図８に例示）を処理する処理先を表すトランザクション処理部（上述した仮定に従えば、「トランザクション処理部１０３」）を選択する。ＣＷＡＬ情報作成部１１４は、選択したトランザクション処理部１０３に対して、トランザクション処理部１０３におけるＫＶデータ記憶部１２２に格納されている記憶内容を作成したＣＷＡＬ情報に従って更新するコミット処理を表すコミット情報を出力する（ステップＣ６）。
【００８０】
トランザクション処理部１０３は、ＣＷＡＬ情報に関するコミット情報を入力する（ステップＤ１）。トランザクション処理部１０３において、排他制御部１２１は、受信したＣＷＡＬ情報（図８に例示）をＫＶデータ記憶部１２２に格納するコミット処理に関する排他制御を開始する。より具体的に、トランザクション処理部１０３において、排他制御部１２１は、入力した情報がＣＷＡＬ情報（図８に例示）であるのか、または、入力した情報がＷＡＬ情報（図７に例示）であるのかを判定する。たとえば、排他制御部１２１は、入力した情報に、ＷＡＬ情報（図７に例示）に関連付けされたセットキーが含まれているか否かを判定することによって、入力した情報がＣＷＡＬ情報であるのか、または、ＷＡＬ情報であるのかを判定する。
【００８１】
トランザクション処理部１０３において、入力した情報がＷＡＬ情報であると判定された場合に、上述したＷＡＬ情報に関するコミット処理と同様の処理が実行される。
【００８２】
トランザクション処理部１０３において、入力した情報がＣＷＡＬ情報であると判定された場合に、ＫＶデータ参照部１２５は、入力したＣＷＡＬ情報に含まれている各ＷＡＬ情報（たとえば、ＷＡＬ情報Ａ、及び、ＷＡＬ情報Ｂ）を読み取る。トランザクション処理部１０３において、ＫＶデータ参照部１２５は、たとえば、コンシステントハッシング法に従い、読み取った各ＷＡＬ情報を処理するトランザクション処理部を選択する。
【００８３】
説明の便宜上、ＷＡＬ情報Ａを処理するトランザクション処理部は、トランザクション処理部１０４であり、ＷＡＬ情報Ｂを処理するトランザクション処理部は、トランザクション処理部１０５であるとする。
【００８４】
トランザクション処理部１０３において、ＫＶデータ参照部１２５は、各ＷＡＬ情報に関して、該ＷＡＬ情報に関するコミット処理を要求するコミット情報を、当該ＷＡＬ情報に関して選択されたトランザクション処理部に対して出力する。
【００８５】
たとえば、トランザクション処理部１０３において、ＫＶデータ参照部１２５は、ＷＡＬ情報Ａに関するコミット処理を要求するコミット情報を、トランザクション処理部１０４に対して出力する（ステップＤ２）。トランザクション処理部１０４は、トランザクション処理部１０３が出力したコミット情報を入力し（ステップＥ３）、入力したコミット情報に基づき、上述したＷＡＬ情報に関するコミット処理と同様の処理を実行する。その後、トランザクション処理部１０３は、該コミット処理を実行した結果を表すコミット応答情報をトランザクション処理部１０３に対して出力する（ステップＥ４）。トランザクション処理部１０３において、ＫＶデータ参照部１２５は、ＷＡＬ情報Ｂに関しても、上述した処理と同様の処理を実行する（ステップＤ４、ステップＦ３、ステップＦ４、及び、ステップＤ５）。
【００８６】
トランザクション処理部１０３において、ＷＡＬ情報更新部１２３は、ＣＷＡＬ情報に含まれている各ＷＡＬ情報に関して、コミット処理が成功したことをコミット応答情報が表す場合に、ＣＷＡＬ情報をＫＶデータ記憶部１２２に格納する。その後、ＷＡＬ情報更新部１２３は、ＣＷＡＬ情報に関するコミット処理が成功したことを表すコミット応答情報を、クエリ処理部１０２に対して出力する（ステップＤ６）。
【００８７】
トランザクション処理部１０３において、ＷＡＬ情報更新部１２３は、ＣＷＡＬ情報に含まれているＷＡＬ情報のうち、いずれかのＷＡＬ情報に関して、コミット処理の成功していないことをコミット情報が表す場合に、入力したＣＷＡＬ情報を消去する。たとえば、ＷＡＬ情報更新部１２３は、ＷＡＬ情報Ａと、ＷＡＬ情報Ｂとを含むＣＷＡＬ情報をＫＶデータ記憶部１２２に格納しない。トランザクション処理部１０３において、ＷＡＬ情報更新部１２３は、ＣＷＡＬ情報に関するコミット処理が失敗したことを表すコミット応答情報を、クエリ処理部１０２に対して出力する（ステップＤ６）。
【００８８】
トランザクション処理部１０３において、排他制御部１２１は、ステップＣ７の後に、該ＣＷＡＬ情報に関する排他制御を終了する。
【００８９】
クエリ処理部１０２は、トランザクション処理部１０３が送信したコミット応答情報を入力する（ステップＣ７）。
【００９０】
次に、トランザクション処理部１０４がＷＡＬ情報Ａに関するコミット処理を成功し、トランザクション処理部１０５がＷＡＬ情報Ｂに関するコミット処理を失敗した場合に実行される処理について説明する。
【００９１】
上述したように仮定した場合に、トランザクション処理部１０４においては、ＷＡＬ情報Ａに関するコミット処理が成功したので、ＫＶデータ記憶部１２２には、ＷＡＬ情報が格納されている。この場合に、トランザクション処理部１０４において、ＫＶデータ判定部１２４は、ＫＶデータ記憶部１２２に格納されているＷＡＬ情報Ａが、ＣＷＡＬ情報（図８に例示）を表すセットキーを含んでいるか否かを判定する。ＷＡＬ情報がＣＷＡＬ情報を表すセットキー値を含んでいる場合に、ＫＶデータ判定部１２４は、該セットキーを読み取り、当該セットキーが表すＣＷＡＬ情報を処理するトランザクション処理部（この場合に、トランザクション処理部１０３）を、たとえば、コンシステントハッシング法に従い選択する。トランザクション処理部１０４において、ＫＶデータ判定部１２４は、トランザクション処理部１０３におけるＫＶデータ記憶部１２２に当該ＣＷＡＬ情報が格納されているか否かを、トランザクション処理部１０３に問い合わせる。トランザクション処理部１０３におけるＫＶデータ記憶部１２２に該ＣＷＡＬ情報が格納されている場合に、トランザクション処理部１０４において、ＫＶデータ判定部１２４は、該ＣＷＡＬ情報に関するトランザクションが成功したと判定する。トランザクション処理部１０３におけるＫＶデータ記憶部１２２に該ＣＷＡＬ情報が格納されていない場合に、トランザクション処理部１０４において、ＫＶデータ判定部１２４は、該ＣＷＡＬ情報に関するトランザクションに関する処理が失敗したと判定する。
【００９２】
ステップＤ６に関して説明したように、トランザクション処理部１０３において、ＣＷＡＬ情報に含まれている各ＷＡＬ情報に関するコミット処理がいずれも成功した場合に、ＣＷＡＬ情報は、ＫＶデータ記憶部１２２に格納される。また、ＣＷＡＬ情報に含まれている各ＷＡＬ情報に関するコミット処理のうち、いずれかが失敗した場合に、ＣＷＡＬ情報は、ＫＶデータ記憶部１２２に格納されない。
【００９３】
トランザクション処理装置１０１において、ＣＷＡＬ情報に関するトランザクションに関する処理が成功したのか否かに応じて、第２の実施形態において説明するような処理が実行されてもよい。
【００９４】
次に、第１の実施形態に係るトランザクション処理装置１０１に関する効果について説明する。
【００９５】
第１の実施形態に係るトランザクション処理装置１０１によれば、トランザクションキーの値が異なっている複数のＫＶデータを、アトミック性を有しながら、効率よく処理することができる。この理由は、ＣＷＡＬ情報（セット）に基づき記憶装置に格納されている記憶内容を更新する場合に、該ＣＷＡＬ情報に関する排他制御を開始し、該排他制御を実行している期間中に、該ＣＷＡＬ情報に関するコミット処理（第１コミット情報に応じた処理）が実行されるからである。より詳細に説明すると、トランザクション処理装置１０１は、ＣＷＡＬ情報に関するコミット処理を実行する場合に、該ＣＷＡＬ情報に関する排他制御を開始する。トランザクション処理装置１０１は、該排他制御を実行している期間中に、該ＣＷＡＬ情報に含まれているＷＡＬ情報（グループ）に関するコミット処理を要求する第２コミット情報を、該ＷＡＬ情報を処理可能な情報処理装置に対して出力する。さらに、トランザクション処理装置１０１によれば、複数のＫＶデータに関する処理が、１台のトランザクション処理部に集中することがないので、トランザクションキーの値が異なっている複数のＫＶデータであっても効率よく処理することができる。言い換えれば、該１台のトランザクション処理部における計算負荷が、他のトランザクション処理部と比べて大きくなる可能性が少ないので、第１の実施形態に係るトランザクション処理装置１０１によれば、トランザクションキーの値が異なっている複数のＫＶデータであっても、処理することができる。
【００９６】
トランザクション処理装置１０１は、ＷＡＬ情報に関するコミット処理がいずれも完了した場合に、該ＣＷＡＬ情報に関する排他制御を終了する。したがって、本実施形態に係るトランザクション処理装置１０１によれば、ＣＷＡＬ情報に関するコミット処理を、該ＣＷＡＬ情報に関する排他制御中に実行するので、アトミック性を有しながら、トランザクションキーの値が異なっている複数のＫＶデータを、効率よく処理することができる。
【００９７】
また、クエリ処理部１０２がＣＷＡＬ情報を作成することによって、さらに、ＣＷＡＬ情報（セット）に関する処理を容易に実現することができる。この理由は、トランザクション処理装置１０１によって作成されるＣＷＡＬ情報（セット）が、該ＣＷＡＬ情報を識別可能な識別子と、該ＣＷＡＬ情報に含まれているＷＡＬ情報（グループ）とが関連付けされた組であるので、キーバリューストアにおける処理と同様の処理を実行することができるからである。したがって、本実施形態に係るトランザクション処理装置１０１によれば、キーバリューストアにおける処理と同様の処理を実行することによって、ＣＷＡＬ情報に関する処理を容易に実現することができる。
【００９８】
また、トランザクション処理部１０３がＣＷＡＬ情報に関するコミット処理を成功した場合のみに、ＫＶデータ記憶部１２２に該ＣＷＡＬ情報を格納することによって、容易にＣＷＡＬ情報に関するコミット処理が成功したのか否かを判定することができる。この理由は、ＣＷＡＬ情報（セット）がトランザクション処理部に格納されているか否かに基づき、該ＣＷＡＬ情報（セット）に関するコミット処理が成功したのか否かを判定することができるからである。
【００９９】
さらに、本実施形態に係るトランザクション処理装置１０１によれば、キーバリューストアにおける処理と同様の処理を実行することによって、ＷＡＬ情報、及び、ＣＷＡＬ情報に関する処理を容易に実現することができる。この理由は、トランザクション処理装置１０１によって作成されるＷＡＬ情報（または、ＣＷＡＬ情報）が、キーバリューストアに関するデータ構造と同様のデータ構造を有しているからである。
【０１００】
＜第２の実施形態＞
次に、上述した第１の実施形態を基本とする本発明の第２の実施形態について説明する。
【０１０１】
図９を参照しながら、第２の実施形態に係るトランザクション処理装置１５１が有する構成について説明する。図９は、本発明の第２の実施形態に係るトランザクション処理装置１５１が有する構成を示すブロック図である。
【０１０２】
第２の実施形態に係るトランザクション処理装置１５１は、クエリ処理部１５２と、クエリ処理部１５３と、トランザクション処理部１５４と、トランザクション処理部１５５と、トランザクション処理部１５６と、トランザクション処理部１５７と、トランザクション処理部１５８とを有する。
【０１０３】
トランザクション処理部１５４と、トランザクション処理部１５５と、トランザクション処理部１５６と、トランザクション処理部１５７と、トランザクション処理部１５８とは、図３を参照しながら説明したトランザクション処理部１０３と同様の機能を有する。クエリ処理部１５２と、クエリ処理部１５３と、図２を参照しながら説明したクエリ処理部１０２と同様の機能を有する。トランザクション処理装置１５１における各部は、後述するような機能を、さらに有する。
【０１０４】
トランザクション処理装置１５１は、情報処理装置２０１、及び、分散ＫＶＳ部２０２に通信接続可能である。
【０１０５】
次に、図１０、乃至、図１４を参照しながら、第２の実施形態に係るトランザクション処理装置１５１における処理について説明する。図１０、乃至、図１４は、いずれも、第２の実施形態に係るトランザクション処理装置１５１における処理の流れを示すシーケンス図である。
【０１０６】
以降の説明においては、説明を簡便にする目的のため、トランザクション処理部、及び、クエリ処理部における各部の処理に関する記載は、必要がない限り省略するとする。トランザクション処理部における各部の処理は、トランザクション処理部が実行するとして記載する。クエリ処理部における各部の処理は、クエリ処理部が実行するとして記載する。
【０１０７】
説明の便宜上、ＷＡＬ情報Ａは、ＫＶデータＡを含むとする。ＷＡＬ情報Ｂは、ＫＶデータＢを含むとする。ＷＡＬ情報Ｃは、ＫＶデータＣを含むとする。第１ＣＷＡＬ情報は、ＷＡＬ情報Ａと、ＷＡＬ情報Ｂとを含むとする。第２ＣＷＡＬ情報は、ＷＡＬ情報Ｂと、ＷＡＬ情報Ｃとを含むとする。
【０１０８】
クエリ処理部１５２は、第１ＣＷＡＬ情報を更新する第１トランザクションを受信したとする。クエリ処理部１５３は、第２ＣＷＡＬ情報を更新する第２トランザクションを受信したとする。
【０１０９】
トランザクション処理部１５４は、第１ＣＷＡＬ情報を更新するコミット処理を実行するとする。トランザクション処理部１５５は、第２ＣＷＡＬ情報を更新するコミット処理を実行するとする。トランザクション処理部１５４が第１トランザクションにて作成された第１ＣＷＡＬ情報に関する排他制御を実行している間に、トランザクション処理部１５５が、第２トランザクションにて作成された第２ＣＷＡＬ情報に関するコミット処理を成功したとする。
【０１１０】
トランザクション処理部１５６は、ＫＶデータＡ、及び、ＷＡＬ情報Ａを更新するコミット処理を実行するとする。トランザクション処理部１５７は、ＫＶデータＢ、及び、ＷＡＬ情報Ｂを更新するコミット処理を実行するとする。トランザクション処理部１５８は、ＫＶデータＣ、及び、ＷＡＬ情報Ｃを更新するコミット処理を実行するとする。
【０１１１】
図４におけるステップＣ１、ステップＥ１、ステップＥ２、及び、ステップＣ２と同様の処理が実行されることによって、クエリ処理部１５２は、ＫＶデータＡ、及び、ＫＶデータＡに関するタイムスタンプを入力する（ステップＡ１、ステップＸ１、ステップＸ２、及び、ステップＡ２）。図４におけるステップＣ３、ステップＦ１、ステップＦ２、及び、ステップＣ４と同様の処理が実行されることによって、クエリ処理部１５２は、ＫＶデータＢ、及び、ＫＶデータＢに関するタイムスタンプを入力する（ステップＡ３、ステップＡ４、ステップＹ１、及び、ステップＹ２）。
【０１１２】
クエリ処理部１５２は、図４におけるステップＣ５と同様の処理を実行することによって、ＫＶデータＡを含むＷＡＬ情報Ａと、ＫＶデータＢを含むＷＡＬ情報Ｂと、ＷＡＬ情報Ａ、及び、ＷＡＬ情報Ｂを含む第１ＣＷＡＬ情報を作成する（ステップＡ５）。クエリ処理部１５２は、図４におけるステップＣ６と同様の処理を実行することによって、第１ＣＷＡＬ情報に関するコミット情報を、トランザクション処理部１５４に対して出力する（ステップＡ６）。
【０１１３】
トランザクション処理部１５４は、図４におけるステップＤ１と同様の処理を実行することによって、第１ＣＷＡＬ情報に関するコミット情報を入力する（ステップＰ１）。トランザクション処理部１５４は、図４におけるステップＤ２と同様の処理を実行することによって、第１ＣＷＡＬ情報に含まれているＷＡＬ情報Ａに関するコミット情報を、トランザクション処理部１５６に対して出力する（ステップＰ２）。
【０１１４】
トランザクション処理部１５６は、図４におけるステップＥ３と同様の処理を実行することによって、第１ＣＷＡＬ情報に含まれているＷＡＬ情報Ａに関するコミット情報を入力する（ステップＸ３）。トランザクション処理部１５６は、図４におけるステップＥ４と同様の処理を実行することによって、第１ＣＷＡＬ情報に含まれているＷＡＬ情報Ａに関するコミット応答情報を、トランザクション処理部１５４に対して出力する（ステップＸ４）。
【０１１５】
次に、図４におけるステップＣ１、ステップＥ１、ステップＥ２、及び、ステップＣ２と同様の処理が実行されることによって、クエリ処理部１５３は、ＫＶデータＢ、及び、ＫＶデータＢに関するタイムスタンプを入力する（ステップＢ１、ステップＹ３、ステップＹ４、及び、ステップＢ２）。図４におけるステップＣ３、ステップＦ１、ステップＦ２、及び、ステップＣ４と同様の処理が実行されることによって、クエリ処理部１５３は、ＫＶデータＣ、及び、ＫＶデータＣに関するタイムスタンプを入力する（ステップＢ３、ステップＢ４、ステップＺ１、及び、ステップＺ２）。
【０１１６】
クエリ処理部１５３は、図４におけるステップＣ５と同様の処理を実行することによって、ＫＶデータＢを含むＷＡＬ情報Ｂと、ＫＶデータＣを含むＷＡＬ情報Ｃと、ＷＡＬ情報Ｂ、及び、ＷＡＬ情報Ｃを含む第２ＣＷＡＬ情報を作成する（ステップＢ５）。クエリ処理部１５３は、図４におけるステップＣ６と同様の処理を実行することによって、第２ＣＷＡＬ情報に関するコミット情報を、トランザクション処理部１５５に対して出力する（ステップＢ６）。
【０１１７】
トランザクション処理部１５５は、図４におけるステップＤ１と同様の処理を実行することによって、第２ＣＷＡＬ情報に関するコミット情報を入力する（ステップＱ１）。トランザクション処理部１５５は、図４におけるステップＤ２と同様の処理を実行することによって、第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット情報を、トランザクション処理部１５７に対して出力する（ステップＱ２）。
【０１１８】
トランザクション処理部１５７は、図４におけるステップＥ３と同様の処理を実行することによって、第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット情報を入力する（ステップＹ５）。したがって、トランザクション処理部１５７は、第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット情報を、第１ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット情報よりも先に入力する。
【０１１９】
トランザクション処理部１５５は、図４におけるステップＤ４と同様の処理を実行することによって、第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｃに関するコミット情報を、トランザクション処理部１５８に対して出力する（ステップＱ３）。
【０１２０】
トランザクション処理部１５８は、図４におけるステップＥ３と同様の処理を実行することによって、第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｃに関するコミット情報を入力する（ステップＺ３）。
【０１２１】
トランザクション処理部１５７は、図４におけるステップＥ４と同様の処理を実行することによって、第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット応答情報を、トランザクション処理部１５５に対して出力する（ステップＹ６）。
【０１２２】
トランザクション処理部１５５は、図４におけるステップＤ３と同様の処理を実行することによって、第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット応答情報を入力する（ステップＱ４）。
【０１２３】
トランザクション処理部１５８は、図４におけるステップＦ４と同様の処理を実行することによって、第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｃに関するコミット応答情報を、トランザクション処理部１５５に対して出力する（ステップＺ４）。
【０１２４】
トランザクション処理部１５５は、図４におけるステップＤ５と同様の処理を実行することによって、第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット応答情報を入力する（ステップＱ５）。ステップＱ４、及び、ステップＱ５にて、第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂ、及び、ＷＡＬ情報Ｃに関するコミット処理が完了したので、トランザクション処理部１５５は、図４におけるステップＤ６と同様の処理を実行することによって、第２ＣＷＡＬ情報に関するコミット応答情報を、クエリ処理部１５３に対して出力する（ステップＱ６）。
【０１２５】
クエリ処理部１５３は、図４におけるステップＣ７と同様の処理を実行することによって、第２ＣＷＡＬ情報に関するコミット応答情報を入力する（ステップＢ７）。
【０１２６】
図１１を参照すると、トランザクション処理部１５４は、図４におけるステップＤ４と同様の処理を実行することによって、第１ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット情報を、トランザクション処理部１５７に対して出力する（ステップＰ３）。トランザクション処理部１５４は、図４におけるステップＤ４と同様の処理を実行することによって、第１ＣＷＡＬ情報に含まれているＷＡＬ情報Ａに関するコミット応答情報を入力する（ステップＰ４）。
【０１２７】
トランザクション処理部１５７は、図４におけるステップＥ３と同様の処理を実行することによって、第１ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット情報を入力する（ステップＹ７）。
【０１２８】
トランザクション処理部１５７は、入力したＷＡＬ情報Ｂに関するコミット情報に含まれているタイムスタンプに基づき、楽観的排他制御を実行する。より具体的に、トランザクション処理部１５７において、排他制御部１２１は、入力したＷＡＬ情報Ｂに含まれているタイムスタンプ（「第３タイムスタンプ」と表す）と、ＫＶデータ記憶部１２２に格納されているＷＡＬ情報Ｂに含まれているタイムスタンプ（「第４タイムスタンプ」と表す）とを比較する。トランザクション処理部１５７において、排他制御部１２１は、第４タイムスタンプと第３タイムスタンプとが同じタイミングである場合に、ＷＡＬ情報ＢをＫＶデータ記憶部１２２に格納し、その後、コミット処理が成功したことを表すコミット応答情報をトランザクション処理部１５４に対して出力する。
【０１２９】
トランザクション処理部１５７において、排他制御部１２１は、第４タイムスタンプが第３タイムスタンプより後である場合に、ＫＶデータ記憶部１２２に格納されているＷＡＬ情報Ｂにおけるセットキー（この場合に、図８に例示されているように、第２ＣＷＡＬ情報を表すセットキーを含む）を読み取る。トランザクション処理部１５７は、たとえば、コンシステントハッシング法に従い、読み取ったセットキーが表す第２ＣＷＡＬ情報を処理する処理先（この場合に、トランザクション処理部１５５）を選択する。その後、トランザクション処理部１５７は、第２ＣＷＡＬ情報がトランザクション処理部１５５におけるＫＶデータ記憶部１２２に格納されているのか否かを問い合わせるリクエストを、トランザクション処理部１５５に出力する（ステップＹ８）。
【０１３０】
トランザクション処理部１５５は、トランザクション処理部１５７が送信したリクエストを入力する（ステップＱ７）。トランザクション処理部１５５は、トランザクション処理部１５５におけるＫＶデータ記憶部１２２に格納されているのか否かを表すリプライを作成し、作成したリプライをトランザクション処理部１５７に対して出力する（ステップＱ８）。この例において、第２ＣＷＡＬ情報がトランザクション処理部１５５におけるＫＶデータ記憶部１２２に格納されているので、トランザクション処理部１５５は、ＫＶデータ記憶部１２２に格納されていることを表すリプライをトランザクション処理部１５７に対して出力する（ステップＱ８）。
【０１３１】
トランザクション処理部１５７は、トランザクション処理部１５５が出力したリプライを入力する（ステップＹ９）。トランザクション処理部１５７は、第２ＣＷＡＬ情報がトランザクション処理部１５５に格納されていることを、入力したリプライが表す場合に、該第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット処理が有効であると判定する。この場合に、トランザクション処理部１５７は、入力したＷＡＬ情報Ｂに関するコミット処理が失敗したことを表すコミット応答情報を、トランザクション処理部１５４に対して出力する（ステップＹ１０）。上述した例においては、第２ＣＷＡＬ情報がトランザクション処理部１５５におけるＫＶデータ記憶部１２２に格納されているので、トランザクション処理部１５７は、入力したＷＡＬ情報Ｂに関するコミット処理が失敗したことを表すコミット応答情報を、トランザクション処理部１５４に対して出力する。
【０１３２】
トランザクション処理部１５７は、第２ＣＷＡＬ情報がトランザクション処理部１５５に格納されていないことを、入力したリプライが表す場合に、該第２ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット処理が無効であると判定する。この場合に、トランザクション処理部１５７は、上述したような楽観的排他制御をＷＡＬ情報Ｂに関して実行する。該楽観的排他制御によって、入力したＷＡＬ情報ＢがＫＶデータ記憶部１２２に格納可能であれば、トランザクション処理部１５７は、入力したＷＡＬ情報Ｂを自装置におけるＫＶデータ記憶部１２２に格納する。その後、トランザクション処理部１５７は、ＷＡＬ情報Ｂに関するコミット処理が成功したことを表すコミット応答情報をトランザクション処理部１５４に対して出力する（ステップＹ１０）。
【０１３３】
トランザクション処理部１５４は、図４におけるステップＤ５と同様の処理を実行することによって、第１ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関するコミット応答情報を入力する（ステップＰ５）。ステップＰ４、及び、ステップＰ５にて、第１ＣＷＡＬ情報に含まれているＷＡＬ情報Ａ、及び、ＷＡＬ情報Ｂに関するコミット処理が完了したので、トランザクション処理部１５４は、図４におけるステップＤ６と同様の処理を実行することによって、第１ＣＷＡＬ情報に関するコミット応答情報を、クエリ処理部１５２に対して出力する（ステップＰ６）。上述した例においては、第１ＣＷＡＬ情報に含まれているＷＡＬ情報Ｂに関する処理が失敗しているので、トランザクション処理部１５４は、入力した第１ＣＷＡＬ情報を、ＫＶデータ記憶部１２２に格納しない。トランザクション処理部１５４は、入力した第１ＣＷＡＬ情報に関するコミット処理が失敗したことを表すコミット応答情報を、クエリ処理部１５２に対して出力する。
【０１３４】
クエリ処理部１５２は、図４におけるステップＣ７と同様の処理を実行することによって、第１ＣＷＡＬ情報に関するコミット応答情報を入力する（ステップＡ７）。
【０１３５】
次に、第２の実施形態に係るトランザクション処理装置１５１に関する効果について説明する。
【０１３６】
本実施形態に係るトランザクション処理装置１５１によれば、アトミック性を有しながら、トランザクションキーの値が異なっている複数のＫＶデータを、効率よく処理することができる。この理由は、第２の実施形態に係るトランザクション処理装置１５１が有する構成は、第１の実施形態に係るトランザクション処理装置１０１が有する構成を含むからである。
【０１３７】
さらに、本実施形態に係るトランザクション処理装置１５１によれば、さらに効率的にＣＷＡＬ情報（セット）に関する処理を実行することができる。この理由は、トランザクション処理装置１５１が、受信したＷＡＬ情報に含まれている組に関連付けされたタイミングに関する条件、及び、該ＷＡＬ情報を含むＣＷＡＬ情報に関するコミット処理が成功したのか否かに関する条件に基づき、ＫＶデータ記憶部１２２を更新するのか否かを決定するからである。言い換えれば、トランザクション処理装置１５１は、タイミングに関する条件によれば、更新しないと判定される場合であっても、ＣＷＡＬ情報に関するコミット処理に関する成否に基づきコミット処理を実行することがあるからである。
【０１３８】
＜第３の実施形態＞
図１５を参照しながら、第３の実施形態に係るトランザクション処理装置３０１が有する構成について説明する。図１５は、本発明の第３の実施形態に係るトランザクション処理装置３０１が有する構成を示すブロック図である。
【０１３９】
第３の実施形態に係るトランザクション処理装置３０１は、排他制御部３０２と、更新部３０３とを有する。
【０１４０】
トランザクション処理装置３０１は、トランザクション処理装置２０３に通信接続可能である。トランザクション処理装置２０３は、少なくとも、ＷＡＬ情報に関するコミット処理を実行することができる情報処理装置である。たとえば、トランザクション処理装置２０３は、図１に示されたトランザクション処理装置１０１が有している機能と同様の機能を有していてもよいし、トランザクション処理装置１０１における各トランザクション処理部が有している機能と同様の機能を有していてもよい。または、トランザクション処理装置２０３は、図９に示されたトランザクション処理装置１５１が有している機能と同様の機能を有していてもよいし、トランザクション処理装置１５１における各トランザクション処理部が有している機能と同様の機能を有していてもよい。
【０１４１】
排他制御部３０２は、図８に例示されているようなＣＷＡＬ情報（セット）に応じて記憶装置（たとえば、上述した分散ＫＶＳ部２０２等）を更新するコミット処理を要求する第１コミット情報を受信する。
【０１４２】
図８を参照しながら説明したように、ＣＷＡＬ情報（セット）は、少なくとも１つのＷＡＬ情報（グループ）を含む。図７を参照しながら説明したように、ＷＡＬ情報（グループ）は、キーと、該キーによって識別されるデータとが関連付けされたＫＶデータ（組）を複数個含む。ＣＷＡＬ情報（セット）は、トランザクションキーが異なる少なくとも２つのＷＡＬ情報を含んでいる。
【０１４３】
排他制御部３０２は、該第１コミット情報を受信するのに応じて、該ＣＷＡＬ情報に関する排他制御を開始する。
【０１４４】
次に、更新部３０３は、該ＣＷＡＬ情報（セット）に含まれている各ＷＡＬ情報に関して、記憶装置（必ずしも、本実施形態において上述した記憶装置と同じである必要はない）に格納されている記憶内容を更新するコミット処理を要求する第２コミット情報を、該ＷＡＬ情報を処理するトランザクション処理装置２０３に対して出力する。
【０１４５】
トランザクション処理装置２０３は、更新部３０３が出力した第２コミット情報を入力し、受信した第２コミット情報に応じた処理を実行する。その後、トランザクション処理装置２０３は、第２コミット情報が成功したのか、または、失敗したのかを表すコミット応答情報を、トランザクション処理装置３０１に対して出力する。
【０１４６】
更新部３０３は、トランザクション処理装置２０３が出力したコミット応答情報を入力する。各ＷＡＬ情報に関してコミット処理が成功した場合に、更新部３０３は、ＣＷＡＬ情報が成功したことを表すコミット応答情報を出力する。ＣＷＡＬ情報に含まれているいずれかのＷＡＬ情報に関してコミット処理が失敗した場合に、更新部３０３は、ＣＷＡＬ情報が失敗したことを表すコミット応答情報を出力する。
【０１４７】
その後、排他制御部３０２は、該ＣＷＡＬ情報に関する排他制御を終了する。
【０１４８】
トランザクション処理装置３０１は、たとえば、図１に示されたトランザクション処理装置１０１、または、図９に示されたトランザクション処理装置１５１が有する機能と同様の機能によって実現することができる。たとえば、排他制御部３０２、及び、更新部３０３は、図３に示されたトランザクション処理部１０３における各部が有する機能と同様の機能によって実現することができる。
【０１４９】
次に、第３の実施形態に係るトランザクション処理装置３０１に関する効果について説明する。
【０１５０】
第３の実施形態に係るトランザクション処理装置３０１によれば、アトミック性を有しながら、効率よく、トランザクションキーの値が異なっている複数のＫＶデータを処理することができる。この理由は、ＣＷＡＬ情報（セット）に基づき記憶装置に格納されている記憶内容を更新する場合に、該ＣＷＡＬ情報に関する排他制御を開始し、該排他制御を実行している期間中に、該ＣＷＡＬ情報に関するコミット処理（第１コミット情報に応じた処理）が実行されるからである。より詳細に説明すると、トランザクション処理装置３０１は、ＣＷＡＬ情報に関するコミット処理を実行する場合に、該ＣＷＡＬ情報に関する排他制御を開始する。トランザクション処理装置３０１は、該排他制御を実行している期間中に、該ＣＷＡＬ情報に含まれているＷＡＬ情報（グループ）に関するコミット処理を要求する第２コミット情報を、該ＷＡＬ情報を処理可能なトランザクション処理装置２０３に対して出力する。
【０１５１】
トランザクション処理装置３０１は、ＷＡＬ情報に関するコミット処理がいずれも完了した場合に、該ＣＷＡＬ情報に関する排他制御を終了する。したがって、本実施形態に係るトランザクション処理装置３０１によれば、ＣＷＡＬ情報に関するコミット処理を、該ＣＷＡＬ情報に関する排他制御中に実行するので、アトミック性を有しながら、トランザクションキーの値が異なっている複数のＫＶデータを処理することができる。
【０１５２】
さらに、トランザクション処理装置３０１によれば、複数のＫＶデータに関する処理が、１台のトランザクション処理部に集中することがないので、トランザクションキーの値が異なっている複数のＫＶデータであっても効率よく処理することができる。言い換えれば、該１台のトランザクション処理部における計算負荷が、他のトランザクション処理部と比べて大きくなる可能性が少ないので、第１の実施形態に係るトランザクション処理装置１０１によれば、トランザクションキーの値が異なっている複数のＫＶデータであっても、効率よく処理することができる。
【０１５３】
（ハードウェア構成例）
上述した本発明の各実施形態におけるトランザクション処理装置を、１つの計算処理装置（情報処理装置、コンピュータ）を用いて実現するハードウェア資源の構成例について説明する。但し、係るトランザクション処理装置は、物理的または機能的に少なくとも２つの計算処理装置を用いて実現してもよい。また、係るトランザクション処理装置は、専用の装置として実現してもよい。
【０１５４】
図１６は、第１の実施形態乃至第３の実施形態に係るトランザクション処理装置を実現可能な計算処理装置のハードウェア構成例を概略的に示す図である。計算処理装置２０は、中央処理演算装置（Ｃｅｎｔｒａｌ＿Ｐｒｏｃｅｓｓｉｎｇ＿Ｕｎｉｔ、以降「ＣＰＵ」と表す）２１、メモリ２２、ディスク２３、不揮発性記録媒体２４、通信インターフェース（以降、「通信ＩＦ」と表す）２７、及び、ディスプレー２８を有する。計算処理装置２０は、入力装置２５、出力装置２６に接続可能であってもよい。計算処理装置２０は、通信ＩＦ２７を介して、他の計算処理装置、及び、通信装置と情報を送受信することができる。
【０１５５】
不揮発性記録媒体２４は、コンピュータが読み取り可能な、たとえば、コンパクトディスク（Ｃｏｍｐａｃｔ＿Ｄｉｓｃ）、デジタルバーサタイルディスク（Ｄｉｇｉｔａｌ＿Ｖｅｒｓａｔｉｌｅ＿Ｄｉｓｃ）である。また、不揮発性記録媒体２４は、ユニバーサルシリアルバスメモリ（ＵＳＢメモリ）、ソリッドステートドライブ（ＳｏｌＩＤ＿Ｓｔａｔｅ＿Ｄｒｉｖｅ）等であってもよい。不揮発性記録媒体２４は、電源を供給しなくても係るプログラムを保持し、持ち運びを可能にする。不揮発性記録媒体２４は、上述した媒体に限定されない。また、不揮発性記録媒体２４の代わりに、通信ＩＦ２７、及び、通信ネットワークを介して係るプログラムを持ち運びしてもよい。
【０１５６】
すなわち、ＣＰＵ２１は、ディスク２３に記憶されているソフトウェア・プログラム（コンピュータ・プログラム：以下、単に「プログラム」と称する）を、実行する際にメモリ２２にコピーし、演算処理を実行する。ＣＰＵ２１は、プログラム実行に必要なデータをメモリ２２から読み取る。表示が必要な場合には、ＣＰＵ２１は、ディスプレー２８に出力結果を表示する。外部への出力が必要な場合には、ＣＰＵ２１は、出力装置２６に出力結果を出力する。外部からプログラムを入力する場合、ＣＰＵ２１は、入力装置２５からプログラムを読み取る。ＣＰＵ２１は、上述した図１、図２、図３、図９、または、図１５に示す各部が表す機能（処理）に対応するところのメモリ２２にあるトランザクション処理プログラム（図４、または、図１０、乃至、図１４）を解釈し実行する。ＣＰＵ２１は、上述した本発明の各実施形態において説明した処理を順次実行する。
【０１５７】
すなわち、このような場合、本発明は、係るトランザクション処理プログラムによっても成し得ると捉えることができる。さらに、係るトランザクション処理プログラムが記録されたコンピュータが読み取り可能な不揮発性の記録媒体によっても、本発明は成し得ると捉えることができる。
【０１５８】
以上、上述した実施形態を模範的な例として本発明を説明した。しかし、本発明は、上述した実施形態には限定されない。すなわち、本発明は、本発明のスコープ内において、当業者が理解し得る様々な態様を適用することができる。
【符号の説明】
【０１５９】
１０１    トランザクション処理装置
１０２    クエリ処理部
１０３    トランザクション処理部
１０４    トランザクション処理部
１０５    トランザクション処理部
２０１    情報処理装置
２０２    分散ＫＶＳ部
１１１    クエリ解析部
１１２    ＫＶデータ作成部
１１３    ＷＡＬ情報作成部
１１４    ＣＷＡＬ情報作成部
１１５    ＫＶデータ取得部
１２１    排他制御部
１２２    ＫＶデータ記憶部
１２３    ＷＡＬ情報更新部
１２４    ＫＶデータ判定部
１２５    ＫＶデータ参照部
１５１    トランザクション処理装置
１５２    クエリ処理部
１５３    クエリ処理部
１５４    トランザクション処理部
１５５    トランザクション処理部
１５６    トランザクション処理部
１５７    トランザクション処理部
１５８    トランザクション処理部
３０１    トランザクション処理装置
３０２    排他制御部
３０３    更新部
２０３    トランザクション処理装置
２０    計算処理装置
２１    ＣＰＵ
２２    メモリ
２３    ディスク
２４    不揮発性記録媒体
２５    入力装置
２６    出力装置
２７    通信ＩＦ
２８    ディスプレー
【図１】
2017162084.tif 000003
【図２】
2017162084.tif 000004
【図３】
2017162084.tif 000005
【図４】
2017162084.tif 000006
【図５】
2017162084.tif 000007
【図６】
2017162084.tif 000008
【図７】
2017162084.tif 000009
【図８】
2017162084.tif 000010
【図９】
2017162084.tif 000011
【図１０】
2017162084.tif 000012
【図１１】
2017162084.tif 000013
【図１２】
2017162084.tif 000014
【図１３】
2017162084.tif 000015
【図１４】
2017162084.tif 000016
【図１５】
2017162084.tif 000017
【図１６】
2017162084.tif 000018