(57)【要約】【課題】ＫＶＳに対する表形式データの新規レコードの追加要求におけるトランザクション処理の性能を向上すること。【解決手段】本発明にかかる情報処理装置は、キーとバリューの形式であるペアデータを記憶する外部のペアデータ記憶部に対する特定の属性値を含むレコードの追加要求に応じて、当該レコードから、当該特定の属性値を前記キーかつ当該レコードの少なくとも一部を前記バリューとした変換ログに変換し、当該変換ログをログ記憶部に格納する変換部と、前記変換部とは非同期に、前記特定の属性値を前記キーとした前記ペアデータの最新データに前記変換ログをマージし、更新前ログとして前記ログ記憶部に格納するログ更新部と、前記更新前ログを前記ペアデータとして前記ペアデータ記憶部を更新するペアデータ更新部と、を備える。【選択図】図１
2016149049.tif 000002
【特許請求の範囲】
【請求項１】
キーとバリューの形式であるペアデータを記憶する外部のペアデータ記憶部に対する特定の属性値を含むレコードの追加要求に応じて、当該レコードから、当該特定の属性値を前記キーかつ当該レコードの少なくとも一部を前記バリューとした変換ログに変換し、当該変換ログをログ記憶部に格納する変換部と、
前記変換部とは非同期に、前記特定の属性値を前記キーとした前記ペアデータの最新データに前記変換ログをマージし、更新前ログとして前記ログ記憶部に格納するログ更新部と、
前記更新前ログを前記ペアデータとして前記ペアデータ記憶部を更新するペアデータ更新部と、
を備える情報処理装置。
【請求項２】
前記変換部は、変換済みであることを示す変換済情報を前記バリューに付加したものを前記変換ログとしてログ記憶部に格納し、
前記ログ更新部は、
前記ログ記憶部から、前記特定の属性値を前記キーとし、かつ、前記変換済情報が前記バリューに付加された前記変換ログを取得し、
前記取得した前記変換ログの前記バリューから前記変換済情報を除いた値を前記最新データのバリューにマージして前記更新前ログとして前記ログ記憶部に格納する
請求項１に記載の情報処理装置。
【請求項３】
前記ログ更新部は、
前記ログ記憶部内に、前記特定の属性値を前記キーとした前記更新前ログが存在する場合に、当該更新前ログを前記最新データとして前記変換ログをマージし、当該マージ後の更新前ログにより前記ログ記憶部を更新し、
前記ログ記憶部内に、前記特定の属性値を前記キーとした前記更新前ログが存在しない場合に、前記ペアデータ記憶部から前記特定の属性値を前記キーとした前記ペアデータを前記最新データとして取得し、当該取得した最新データに対して前記変換ログをマージし、当該マージ後の前記更新前ログを前記ログ記憶部に格納する
請求項１又は２に記載の情報処理装置。
【請求項４】
前記変換部は、
前記変換ログを前記ログ記憶部に格納する際に、楽観的排他制御を行い、当該楽観的排他制御の結果を前記追加要求の応答とする
請求項１乃至３のいずれか１項に記載の情報処理装置。
【請求項５】
前記ログ更新部は、
前記マージ後の前記更新前ログを前記ログ記憶部に格納する際に、前記マージ対象の前記変換ログが前記ログ記憶部に格納された以後に前記特定の属性値を前記キーとした前記更新前ログ又は前記変換ログが格納されていない場合に、前記ログ記憶部から当該マージ対象の前記変換ログを削除する
請求項１乃至４のいずれか１項に記載の情報処理装置。
【請求項６】
前記特定の属性値以外の属性値を更新するための更新要求に応じて、前記最新データの前記バリューに対して当該特定の属性値以外の属性値をマージするマージ部をさらに備え、
前記マージ部は、
前記更新要求に応じて、前記ログ記憶部から前記特定の属性値を前記キーとするログを検索し、
前記ログが検索されなかった場合、前記ペアデータ記憶部から前記特定の属性値を前記キーとした前記ペアデータを前記最新データとして取得し、
前記更新前ログが検索されず、前記変換ログが検索された場合、前記ペアデータ記憶部から前記特定の属性値を前記キーとした前記ペアデータを取得し、当該取得したペアデータに当該検索された変換ログをマージして前記最新データとし、
前記更新前ログが前記変換ログより新しいログとして検索された場合、当該検索された更新前ログを前記最新データとし、
前記変換ログが前記更新前ログより新しいログとして検索された場合、当該検索された変換ログと当該検索された更新前ログとをマージして前記最新データとする
請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
前記ペアデータの複数の形式を定義したカタログ記憶部をさらに備え、
前記変換部は、
前記カタログ記憶部を参照し、前記追加要求に基づいて前記形式を判定し、
前記判定した形式に応じて前記変換を行う
請求項１乃至６のいずれか１項に記載の情報処理装置。
【請求項８】
キーとバリューの形式であるペアデータを記憶するペアデータ記憶部と、
特定のキーにおける前記ペアデータの更新前のログである更新前ログを記憶するログ記憶部と、
前記ペアデータ記憶部に対する特定の属性値を含むレコードの追加要求に応じて、当該レコードから、当該特定の属性値を前記キーかつ当該レコードの少なくとも一部を前記バリューとした変換ログに変換し、当該変換ログを前記ログ記憶部に格納する変換部と、
前記変換部とは非同期に、前記特定の属性値を前記キーとした前記ペアデータの最新データに前記変換ログをマージし、前記更新前ログとして前記ログ記憶部を更新するログ更新部と、
前記更新前ログを前記ペアデータとして前記ペアデータ記憶部を更新するペアデータ更新部と、
を備える情報処理システム。
【請求項９】
キーとバリューの形式であるペアデータを記憶する外部のペアデータ記憶部に対する特定の属性値を含むレコードの追加要求を受け付け、
前記追加要求に応じて、前記レコードから、当該特定の属性値を前記キーかつ当該レコードの少なくとも一部を前記バリューとした変換ログに変換し、
前記変換した変換ログをログ記憶部に格納し、
前記変換とは非同期に、前記特定の属性値を前記キーとした前記ペアデータの最新データに前記変換ログをマージし、
前記マージしたデータを更新前ログとして前記ログ記憶部に格納し、
前記更新前ログを前記ペアデータとして前記ペアデータ記憶部を更新する
ペアデータ更新方法。
【請求項１０】
キーとバリューの形式であるペアデータを記憶する外部のペアデータ記憶部に対する特定の属性値を含むレコードの追加要求を受け付ける処理と、
前記追加要求に応じて、前記レコードから、当該特定の属性値を前記キーかつ当該レコードの少なくとも一部を前記バリューとした変換ログに変換する処理と、
前記変換した変換ログをログ記憶部に格納する処理と、
前記変換とは非同期に、前記特定の属性値を前記キーとした前記ペアデータの最新データに前記変換ログをマージする処理と、
前記マージしたデータを更新前ログとして前記ログ記憶部に格納する処理と、
前記更新前ログを前記ペアデータとして前記ペアデータ記憶部を更新する処理と、
をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置、情報処理システム、ペアデータ更新方法及びプログラムに関し、特に、表形式データからＫＶＳ形式への変換を行う情報処理装置、情報処理システム、ペアデータ更新方法及びプログラムに関する。
【背景技術】
【０００２】
近年、スケーラビリティの高いデータ永続化手段としてキーバリューストア（Ｋｅｙ  Ｖａｌｕｅ  Ｓｔｏｒｅ（ＫＶＳ））が広く知られている。ここで、ＫＶＳとは、１レコードをキー（Ｋｅｙ）と値（Ｖａｌｕｅ）のペアの形式（以下、「ＫＶペア」という。）で管理するデータベースである。そのため、既存のＲＤＢ（Ｒｅｌａｔｉｏｎａｌ  ＤａｔａＢａｓｅ）形式（表形式）のレコードをＫＶＳで管理するためには、所定の変換が必要となる。
【０００３】
ここで、特許文献１には、キーと値とのペアで構成されるレコードを管理する環境下でトランザクション処理を実行する場合であっても、簡易な構成で、複数のレコードに対するトランザクション処理を行う技術が開示されている。
【０００４】
また、特許文献２には、論理テーブル（表形式）について参照される属性の組合せを参照履歴として保持し、参照履歴に応じて、バリューとする属性の組合せを決定して、ＫＶＳの格納形式を変更する技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２３８０６１号公報
【特許文献２】特開２０１４−２２８９６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述した特許文献１及び２は、ＫＶＳに対する表形式データの新規レコードの追加要求におけるトランザクション処理に改良の余地がある。その理由は、表形式データの新規レコードの追加要求に対して、トランザクション処理内でログのマージ処理まで実行されているためである。
【０００７】
本発明は、このような問題点を解決するためになされたものであり、ＫＶＳに対する表形式データの新規レコードの追加要求におけるトランザクション処理の性能を向上するための情報処理装置、情報処理システム、ペアデータ更新方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の第１の態様にかかる情報処理装置は、
キーとバリューの形式であるペアデータを記憶する外部のペアデータ記憶部に対する特定の属性値を含むレコードの追加要求に応じて、当該レコードから、当該特定の属性値を前記キーかつ当該レコードの少なくとも一部を前記バリューとした変換ログに変換し、当該変換ログをログ記憶部に格納する変換部と、
前記変換部とは非同期に、前記特定の属性値を前記キーとした前記ペアデータの最新データに前記変換ログをマージし、更新前ログとして前記ログ記憶部に格納するログ更新部と、
前記更新前ログを前記ペアデータとして前記ペアデータ記憶部を更新するペアデータ更新部と、
を備える。
【０００９】
本発明の第２の態様にかかる情報処理システムは、
キーとバリューの形式であるペアデータを記憶するペアデータ記憶部と、
特定のキーにおける前記ペアデータの更新前のログである更新前ログを記憶するログ記憶部と、
前記ペアデータ記憶部に対する特定の属性値を含むレコードの追加要求に応じて、当該レコードから、当該特定の属性値を前記キーかつ当該レコードの少なくとも一部を前記バリューとした変換ログに変換し、当該変換ログを前記ログ記憶部に格納する変換部と、
前記変換部とは非同期に、前記特定の属性値を前記キーとした前記ペアデータの最新データに前記変換ログをマージし、前記更新前ログとして前記ログ記憶部を更新するログ更新部と、
前記更新前ログを前記ペアデータとして前記ペアデータ記憶部を更新するペアデータ更新部と、
を備える。
【００１０】
本発明の第３の態様にかかるペアデータ更新方法は、
キーとバリューの形式であるペアデータを記憶する外部のペアデータ記憶部に対する特定の属性値を含むレコードの追加要求を受け付け、
前記追加要求に応じて、前記レコードから、当該特定の属性値を前記キーかつ当該レコードの少なくとも一部を前記バリューとした変換ログに変換し、
前記変換した変換ログをログ記憶部に格納し、
前記変換とは非同期に、前記特定の属性値を前記キーとした前記ペアデータの最新データに前記変換ログをマージし、
前記マージしたデータを更新前ログとして前記ログ記憶部に格納し、
前記更新前ログを前記ペアデータとして前記ペアデータ記憶部を更新する。
【００１１】
本発明の第４の態様にかかるプログラムは、
キーとバリューの形式であるペアデータを記憶する外部のペアデータ記憶部に対する特定の属性値を含むレコードの追加要求を受け付ける処理と、
前記追加要求に応じて、前記レコードから、当該特定の属性値を前記キーかつ当該レコードの少なくとも一部を前記バリューとした変換ログに変換する処理と、
前記変換した変換ログをログ記憶部に格納する処理と、
前記変換とは非同期に、前記特定の属性値を前記キーとした前記ペアデータの最新データに前記変換ログをマージする処理と、
前記マージしたデータを更新前ログとして前記ログ記憶部に格納する処理と、
前記更新前ログを前記ペアデータとして前記ペアデータ記憶部を更新する処理と、
をコンピュータに実行させる。
【発明の効果】
【００１２】
本発明により、ＫＶＳに対する表形式データの新規レコードの追加要求におけるトランザクション処理の性能を向上するための情報処理装置、情報処理システム、ペアデータ更新方法及びプログラムを提供することができる。
【図面の簡単な説明】
【００１３】
【図１】本発明の実施の形態１にかかる情報処理装置及びシステムの構成を示すブロック図である。
【図２】本発明の実施の形態１にかかる変換処理の流れを示すフローチャートである。
【図３】本発明の実施の形態１にかかる更新処理の流れを示すフローチャートである。
【図４】表形式データの例を示す図である。
【図５】ＦＬＡＴ構造のＫＶペアの例を示す図である。
【図６】ＣＬＵＳＴＥＲ構造のＫＶペアの例を示す図である。
【図７】表形式データの主キーに対する商品分類列のインデックスの例を示す図である。
【図８】表形式データの商品分類列に対する主キーのインデックスの例を示す図である。
【図９】本発明の実施の形態２にかかるトランザクション処理システムの構成を示すブロック図である。
【図１０】挿入対象の新規レコードの例を示す図である。
【図１１】本発明の実施の形態２にかかる論理ログの例を示す図である。
【図１２】本発明の実施の形態２にかかる物理ログの例を示す図である。
【図１３】本発明の実施の形態２にかかるＣＬＵＳＴＥＲ構造に対して新規レコードを挿入する処理の流れを示すフローチャートである。
【図１４】本発明の実施の形態２にかかるＣＬＵＳＴＥＲ構造の場合においてログ記憶部に格納されたログの例を示す図である。
【図１５】本発明の実施の形態２にかかるＦＬＡＴ構造の場合においてログ記憶部に格納されたログの例を示す図である。
【図１６】本発明の実施の形態２にかかるトランザクションキー単位におけるログ記憶部に格納されたログのパターンごとに最新データの所在を整理した図である。
【図１７】本発明の実施の形態２にかかる表形式データの既存レコードに対する更新要求に応じた、ＣＬＵＳＴＥＲ構造のログの更新処理の流れを示すフローチャート（１／２）である。
【図１８】本発明の実施の形態２にかかる表形式データの既存レコードに対する更新要求に応じた、ＣＬＵＳＴＥＲ構造のログの更新処理の流れを示すフローチャート（２／２）である。
【図１９】本発明の実施の形態２にかかるログ記憶部に格納されたログをＫＶＳへ反映する処理（ＫＶＳの更新処理）の流れを示すフローチャート（１／２）である。
【図２０】本発明の実施の形態２にかかるログ記憶部に格納されたログをＫＶＳへ反映する処理（ＫＶＳの更新処理）の流れを示すフローチャート（２／２）である。
【発明を実施するための形態】
【００１４】
以下では、本発明を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１５】
＜実施の形態１＞
図１は、本発明の実施の形態１にかかる情報処理装置１０及び情報処理システム１の構成を示すブロック図である。情報処理システム１は、情報処理装置１０とペアデータ記憶部２０とを備える。ペアデータ記憶部２０は、キーとバリューの形式であるペアデータ２１を記憶する記憶装置である。ペアデータ２１は、例えば、上述したＫＶペアのデータである。また、ペアデータ記憶部２０は、例えば、上述したＫＶＳであっても構わない。さらに、ペアデータ記憶部２０は、複数の記憶装置により構成される分散型のストレージ又はデータベースシステムであっても構わない。
【００１６】
図１のペアデータ記憶部２０は、情報処理装置１０の外部に設置されている。ペアデータ記憶部２０は、情報処理装置１０とネットワーク等の通信回線を介して接続されている。尚、本実施の形態にかかるペアデータ記憶部２０は、情報処理装置１０に内蔵されていても構わない。
【００１７】
情報処理装置１０は、変換部１１と、ログ記憶部１２と、ログ更新部１３と、ペアデータ更新部１４とを備える。変換部１１は、所定のレコードの追加要求３０に応じて、当該レコードから変換ログ１２１に変換し、変換ログ１２１をログ記憶部１２に格納する。ここで、追加要求３０は、ペアデータ記憶部２０に対するレコードの追加を要求する命令である。追加要求３０は、情報処理システム１の外部から入力される。例えば、追加要求３０は、表形式データに対する新規レコードの追加命令（クエリ、例えば、ＳＱＬのinsert文）である。表形式データは、複数の属性が定義され、属性ごとに値を有するデータ構造である。また、レコードは、表形式データにおける一単位のデータであり、上記複数の属性のそれぞれに対応する値の集合である。特に、上記レコードは、特定の属性値を含むデータであるものとする。そして、特定の属性値は、表形式データにおける主キー以外とする。
【００１８】
また、変換部１１は、レコードから変換ログ１２１に変換する際には、特定の属性値をキーとして、かつ、当該レコードの少なくとも一部の属性値をバリューとしたペアデータに変換するものとする。つまり、変換部１１は、表形式データからペアデータ形式のデータに変換する。特に、変換部１１は、表形式データでは主キーではない特定の属性値をペアデータ形式のキーとし、追加対象のレコード全体又は一部をペアデータ形式のバリューとする。
【００１９】
ログ記憶部１２は、特定のキーにおけるペアデータの更新前のログである更新前ログ１２２を記憶する記憶装置である。また、ログ記憶部１２は、変換部１１により変換され格納される変換ログ１２１を記憶する。
【００２０】
ログ更新部１３は、変換部１１とは非同期に、特定の属性値をキーとしたペアデータ２１の最新データに、変換ログ１２１をマージし、更新前ログ１２２としてログ記憶部１２に格納する。尚、最新データは、ペアデータ２１自体である必要はなく、特定の属性値をキーとした更新前ログ１２２が存在する場合（ペアデータ２１に未反映である場合）には、更新前ログ１２２といえる。
【００２１】
ペアデータ更新部１４は、更新前ログ１２２をペアデータ２１としてペアデータ記憶部２０を更新する。尚、ペアデータ更新部１４もログ更新部１３と同様、変換部１１とは非同期であるのは勿論である。
【００２２】
ここで、図２及び図３を用いて本発明の実施の形態１にかかるペアデータ更新方法について説明する。
【００２３】
図２は、本発明の実施の形態１にかかる変換処理の流れを示すフローチャートである。まず、変換部１１は、追加要求３０を受け付ける（Ｓ１１）。次に、変換部１１は、追加要求３０に指定されたレコードから、特定の属性値をキー、かつ、当該レコードの少なくとも一部をバリューとした変換ログ１２１に変換する（Ｓ１２）。そして、変換部１１は、変換ログ１２１をログ記憶部１２に格納する（Ｓ１３）。
【００２４】
図３は、本発明の実施の形態１にかかる更新処理の流れを示すフローチャートである。図３の更新処理は、図２の変換処理とは非同期に実行される。まず、ログ更新部１３は、特定の属性値をキーとしたペアデータの最新データに、変換ログ１２１をマージする（Ｓ２１）。次に、ログ更新部１３は、更新前ログ１２２としてログ記憶部１２を更新する（Ｓ２２）。そして、ペアデータ更新部１４は、更新前ログ１２２をペアデータ２１としてペアデータ記憶部２０を更新する（Ｓ２３）。
【００２５】
このように、表形式データからペアデータ形式への変換を行ってペアデータ記憶部を更新する方式において、本実施の形態では、表形式データの新規レコードの追加要求について、変換部１１により新規レコードの変換を行うだけで、要求元へ応答できる。すなわち、追加要求に対する応答に際しては、変換ログ１２１とキーが（特定の属性値として）共通する既存のペアデータ２１又は更新前ログ１２２の最新データとのマージまでは行わない。そして、ログ更新部１３及びペアデータ更新部１４は、変換部１１とは非同期に実行される。そのため、ＫＶＳに対する表形式データの新規レコードの追加要求におけるトランザクション処理の性能を向上することができる。
【００２６】
＜実施の形態２＞
本実施の形態２は、上述した実施の形態１の具体例である。
【００２７】
（ＫＶペアの構造と課題）
ここで、本実施の形態で対象とするＫＶペアの構造について説明する。本実施の形態では、ユーザが定義する表形式のデータをＫＶペアに変換して分散ＫＶＳに格納する。表形式のデータをＫＶペアに変換する方式は、大きく分けて２種類存在する。１つはＦＬＡＴ構造と呼び、もう１つはＣＬＵＳＴＥＲ構造と呼ぶものとする。
【００２８】
図４は、表形式データの例を示す図である。図４に示すテーブルの主キー（Primary Key(PK)）は、商品ＩＤ列であるとする。図５は、図４の表形式データに対してＦＬＡＴ構造でＫＶペアに変換した場合の例を示す図である。つまり、ＦＬＡＴ構造は、キー値を主キーとし、バリュー値をその主キーのレコード全体とするＫＶペアとなる。
【００２９】
次に、ＣＬＵＳＴＥＲ構造について説明する。表形式のデータをＣＬＵＳＴＥＲ構造で変換するためには、あらかじめＣＬＵＳＴＥＲを構成するためのキー列（クラスタキー列）を定義する必要がある。ここでは、「商品分類列」をクラスタキー列とするものとする。図６は、図４の表形式のデータに対して「商品分類列」をクラスタキー列とするＣＬＵＳＴＥＲ構造でＫＶペアに変換した場合の例を示す図である。つまり、ＣＬＵＳＴＥＲ構造は、キー値をクラスタキー列の値とし、バリュー値をクラスタキー値が同じレコードの集合とするＫＶペアとなる。
【００３０】
次に、ＦＬＡＴ構造とＣＬＵＳＴＥＲ構造の特性について説明する。ＦＬＡＴ構造は、上述の通り、１つのレコードがＫＶペアの１つに対応している。そのため、ＦＬＡＴ構造は、主キーなどのユニークな値を持つ列での検索や更新処理において効率が良い。一方、ＣＬＵＳＴＥＲ構造は、クラスタキー単位での検索や更新処理において効率が良い。
【００３１】
具体的には、図６のＣＬＵＳＴＥＲ構造のデータに対して、商品分類が「パソコン」のデータを検索する場合には、図６に示すＫＶペアのうちキー値が「パソコン」のＫＶペアにアクセスする。つまり、ＣＬＵＳＴＥＲ構造の場合、クラスタキー単位での検索処理においてアクセスするＫＶペアは１つとなる。
【００３２】
一方、ＦＬＡＴ構造の場合、予め図７に示すような、表形式データの主キーに対する商品分類列のインデックスのＫＶペアを作成しておくことになる。そして、図５のＦＬＡＴ構造のデータに対して、同じクエリ（商品分類が「パソコン」のデータを検索するクエリ）を実行する場合には、まず、図７に示すＫＶペアのうちキー値が「パソコン」のＫＶペアに対して１回目のアクセスを行う。その後、図５に示すＫＶペアのうちキー値が「i1」と「i2」の２つのＫＶペアに２回目と３回目のアクセスを行う。つまり、合計で３回、ＫＶペアにアクセスを行うことになる。
【００３３】
しかしながら、主キー（商品ＩＤ）の特定値（例えば、「i2」）で検索する場合、ＦＬＡＴ構造では１回のアクセスにより必要なレコードのデータのみを取得できるが、ＣＬＵＳＴＥＲ構造では、２回のアクセスが必要となり、かつ、不必要なデータまでアクセスされてしまう。
【００３４】
具体的には、まず、ＣＬＵＳＴＥＲ構造の場合、予め図８に示すような、表形式データの商品分類列に対する主キーのインデックスのＫＶペアを作成しておくことになる。そして、図６のＣＬＵＳＴＥＲ構造のデータに対して、商品ＩＤが「i2」のデータを検索するクエリを実行する場合には、まず、図８に示すＫＶペアのうちキー値が「i2」のＫＶペアに対して１回目のアクセスを行う。その後、図６のＫＶペアのうちキー値が「パソコン」のＫＶペアに対して２回目のアクセスを行う。つまり、インデックスにアクセスしてからＣＬＵＳＴＥＲ構造のデータにアクセスしなければならない。またＣＬＵＳＴＥＲ構造の場合は、１つのＫＶペアに複数のレコードデータが含まれるため、クエリの処理に不必要なデータにまでアクセスすることになる。例えば、図６においてキー値が「パソコン」のＫＶペアのバリュー値は、｛i1, ・・・｝と｛i2, ・・・｝の２つであるが、ここでは、｛i1, ・・・｝のデータは不要にもかかわらずアクセスされることになる。
【００３５】
よって、１つのＣＬＵＳＴＥＲ構造のＫＶペアに含まれるレコードが多くなるほど、主キー値やユニークな値など重複度が低いキー値でのクエリの処理は応答性能が悪くなるといえる。このため、主キー値やユニークな値など重複度が低いキー値での検索及び更新処理には、ＦＬＡＴ構造が向いていると言える。また、新規レコードの挿入（ＳＱＬにおけるINSERT文相当）においては、ＦＬＡＴ構造は常に新規のＫＶペアを作成するのに対し、ＣＬＵＳＴＥＲ構造は既存のＫＶペアにアクセスし、更新する処理が入るため、全面的に不利となる。
【００３６】
ここで、上記後半の課題は、言い換えると、表形式データへの新規レコードの挿入に伴い、ＣＬＵＳＴＥＲ構造の既存のＫＶペアが更新される場合における性能の低下するものといえる。その理由は、新規レコードを挿入するトランザクション処理において、挿入対象の新規レコード内の主キー以外の属性値であるクラスタキーをキーとする既存のＫＶペアを取得する処理と、取得したＫＶペアのバリューに新規レコードを追加するＫＶペアの更新処理と、更新後のＫＶペアをＫＶＳへ格納する処理が必要となるためである。尚、この課題は、実施の形態１が解決する課題を具体化したものといえる。そして、本実施の形態２では、当該課題を解決するものである。
【００３７】
（構成の特徴）
本実施の形態２では、上述した実施の形態１の構成に加えて、さらに以下の構成を備えるものである。すなわち、前記変換部は、変換済みであることを示す変換済情報（論理ログ情報）を前記バリューに付加したものを前記変換ログ（論理ログ）としてログ記憶部に格納する。前記ログ更新部は、前記ログ記憶部から、前記特定の属性値を前記キーとし、かつ、前記変換済情報が前記バリューに付加された前記変換ログを取得し、前記取得した前記変換ログの前記バリューから前記変換済情報を除いた値を前記最新データのバリューにマージして前記更新前ログ（物理ログ）として前記ログ記憶部に格納する。これにより、ログ記憶部に複数のログが存在していても、論理ログを容易に識別して特定できる。
【００３８】
また、前記ログ更新部は、前記ログ記憶部内に、前記特定の属性値を前記キーとした前記更新前ログが存在する場合に、当該更新前ログを前記最新データとして前記変換ログをマージし、当該マージ後の更新前ログにより前記ログ記憶部を更新し、前記ログ記憶部内に、前記特定の属性値を前記キーとした前記更新前ログが存在しない場合に、前記ペアデータ記憶部から前記特定の属性値を前記キーとした前記ペアデータを前記最新データとして取得し、当該取得した最新データに対して前記変換ログをマージし、当該マージ後の前記更新前ログを前記ログ記憶部に格納することが望ましい。このように最新データの判定を行うことで、アトミック性をより保証できる。
【００３９】
さらに、前記変換部は、前記変換ログを前記ログ記憶部に格納する際に、楽観的排他制御を行い、当該楽観的排他制御の結果を前記追加要求の応答とすることが望ましい。
【００４０】
また、前記ログ更新部は、前記マージ後の前記更新前ログを前記ログ記憶部に格納する際に、前記マージ対象の前記変換ログが前記ログ記憶部に格納された以後に前記特定の属性値を前記キーとした前記更新前ログ又は前記変換ログが格納されていない場合に、前記ログ記憶部から当該マージ対象の前記変換ログを削除することが望ましい。
【００４１】
また、前記特定の属性値以外の属性値を更新するための更新要求に応じて、前記最新データの前記バリューに対して当該特定の属性値以外の属性値をマージするマージ部をさらに備えるとよい。そして、前記マージ部は、前記更新要求に応じて、前記ログ記憶部から前記特定の属性値を前記キーとするログを検索し、前記ログが検索されなかった場合、前記ペアデータ記憶部から前記特定の属性値を前記キーとした前記ペアデータを前記最新データとして取得し、前記更新前ログが検索されず、前記変換ログが検索された場合、前記ペアデータ記憶部から前記特定の属性値を前記キーとした前記ペアデータを取得し、当該取得したペアデータに当該検索された変換ログをマージして前記最新データとし、前記更新前ログが前記変換ログより新しいログとして検索された場合、当該検索された更新前ログを前記最新データとし、前記変換ログが前記更新前ログより新しいログとして検索された場合、当該検索された変換ログと当該検索された更新前ログとをマージして前記最新データとするとよい。
【００４２】
また、前記ペアデータの複数の形式を定義したカタログ記憶部をさらに備えるとよい。そして、前記変換部は、前記カタログ記憶部を参照し、前記追加要求に基づいて前記形式を判定し、前記判定した形式に応じて前記変換を行うとよい。これにより、例えば、ＦＬＡＴ構造及びＣＬＵＳＴＥＲ構造といった、ＫＶペアの複数の形式をサポートすることができる。
【００４３】
（構成例）
図９は、本発明の実施の形態２にかかるトランザクション処理システム１００の構成を示すブロック図である。トランザクション処理システム１００は、上述した実施の形態１の情報処理システム１の一例である。トランザクション処理システム１００は、クエリ処理部１１０と、システムカタログ１２０と、トランザクション処理部１３０と、ＫＶペアマージ更新部１４０と、分散ＫＶＳ１５０とを備える。尚、クエリ処理部１１０、システムカタログ１２０、トランザクション処理部１３０、及びＫＶペアマージ更新部１４０は、１以上のコンピュータ装置で実現することができる。この場合、これらは、実施の形態１の情報処理装置１０の一例といえる。
【００４４】
クエリ処理部１１０は、変換部１１の一例である。また、クエリ処理部１１０は、上述したマージ部の一例でもある。クエリ処理部１１０は、クライアント２００からのＳＱＬ等のクエリを受け付け、当該クエリを処理する手段である。ここで、クエリには、追加要求３０の一例となるinsert文等も含まれる。クエリ処理部１１０は、クライアント２００から既存のＫＶペアを更新するようなクエリが入力されると、トランザクション処理部１３０又は分散ＫＶＳ１５０から取得された処理対象のＫＶペアを更新したログ（物理ログ又は論理ログ（後述））を生成し、ログをトランザクション処理部１３０に格納し、処理結果をクライアントに返信する。ここで、レコードをＫＶペアに変換する際、クエリ処理部１１０は、変換方式をシステムカタログ１２０から取得する。
【００４５】
ここで、物理ログとは、上述した更新前ログ１２２の一例である。本実施の形態にかかる物理ログは、ＦＬＡＴ構造又はＣＬＵＳＴＥＲ構造のＫＶペアと同じ形式であり、バリューにタイムスタンプを付加する形式でもよい。論理ログとは、上述した変換ログ１２１の一例である。本実施の形態にかかる論理ログは、物理ログのバリューに論理ログであることを示す論理ログ情報を付加した形式である。つまり、論理ログは、論理ログ情報を含むＫＶペアといえる。ここで、論理ログ情報は、変換済みであることを示す変換済情報の一例である。尚、論理ログ情報は、ＫＶペアが論理ログであることを識別できる情報であるならば、どのような形式でも構わない。例えば、フラグ等であっても構わない。また、本実施の形態では、ＣＬＵＳＴＥＲ構造の場合に論理ログを用いる場合を示すが、さらにＦＬＡＴ構造においても用いても構わない。
【００４６】
システムカタログ１２０は、変換形式を保持する記憶装置である。変換形式は、外部の各データベースに存在するテーブルの情報とテーブルの各データを、どのようにＫＶペアに変換するかを定義した情報である。または、変換形式は、クエリに指定されたレコードの所属するテーブルがどのようなＫＶペア構造で定義されているかの情報ともいえる。
【００４７】
トランザクション処理部１３０は、排他制御処理部１３１と、ログ記憶部１３２とを備える。トランザクション処理部１３０は、クエリ処理部１１０で作成されたＫＶペア（ログ）を受け付け、排他制御処理部１３１と、ログ記憶部１３２とを用いて処理する。排他制御処理部１３１は、トランザクションキー値ごとに時系列で管理されたログから、タイムスタンプによる楽観的排他制御によってトランザクションの排他処理を行う。ログ記憶部１３２は、排他制御処理部１３１により排他違反がないと判定されたＫＶペアをログとしてトランザクションキー値ごとに時系列で管理する記憶装置である。ログ記憶部１３２は、上述したログ記憶部１２の一例である。
【００４８】
ＫＶペアマージ更新部１４０は、トランザクション処理部１３０のログ記憶部１３２に保持されているログを、クエリ処理部１１０とは非同期で処理する手段である。ＫＶペアマージ更新部１４０は、クエリ処理部１１０とは非同期で、ログ記憶部１３２からログを取得し、取得したログが全て物理ログであった場合、分散ＫＶＳ１５０に最新の物理ログを反映し、ログ記憶部１３２から取得したログを削除する。取得したログに論理ログが含まれていた場合、ＫＶペアマージ更新部１４０は、論理ログから物理ログを作成し、トランザクション処理部に格納する。排他制御処理部１３１で排他違反がなければＫＶペアマージ更新部１４０は、取得ログをログ記憶部１３２から削除する。そのため、ＫＶペアマージ更新部１４０は、上述したログ更新部１３及びペアデータ更新部１４の一例といえる。
【００４９】
分散ＫＶＳ１５０は、ＦＬＡＴ構造又はＣＬＵＳＴＥＲ構造のＫＶペアを管理するデータベースである。分散ＫＶＳ１５０に格納されるＫＶペアは、キー値のハッシュ値等によりＫＶペアの格納先サーバを分散させ、各サーバに、ほぼ均一に分散配置される。また、１つのＫＶペアの処理（作成、更新、削除、および参照）に関してのみアトミック性を持って実行可能である。そして、複数の利用者が存在する場合でもＣＡＳ（Compare And Swap）機能によりアトミックに実行可能である。
【００５０】
（処理の流れ）
図１３は、本発明の実施の形態２にかかるＣＬＵＳＴＥＲ構造に対して新規レコードを挿入する処理の流れを示すフローチャートである。初めに、ユーザは、変換形式として、表形式のデータ（例えば、図４（以下、「テーブルＡ」とする。））から、クラスタキー列及びトランザクションキー列を商品分類列として定義したＣＬＵＳＴＥＲ構造のＫＶペア（例えば、図６）への変換を定義しているものとする。そして、システムカタログ１２０には、当該変換形式が予め格納されているものとする。また、分散ＫＶＳ１５０には、図６のＫＶペアが格納されているとする。
【００５１】
まず、クエリ処理部１１０は、クライアント２００からテーブルＡに新規レコード（図１０）を挿入するクエリの入力を受け付ける（ステップＳ６０１）。当該クエリは、ＣＬＵＳＴＥＲ構造に対する表形式データへのレコードの追加要求である。次に、クエリ処理部１１０は、システムカタログ１２０からテーブルＡの変換形式を取得する（ステップＳ６０２）。クエリ処理部１１０は、変換形式に基づきテーブルＡがＣＬＵＳＴＥＲ構造又はＦＬＡＴ構造のいずれに変換されるかを判定する（ステップＳ６０３）。ここでは、テーブルＡがＣＬＵＳＴＥＲ構造のＫＶペアに変換されると判定される。
【００５２】
そのため、クエリ処理部１１０は、新規レコードからＣＬＵＳＴＥＲ構造の論理ログを作成する（ステップＳ６１１）。ここで、関連技術の場合、クエリ処理部１１０は、新規レコードを挿入するために既存のＣＬＵＳＴＥＲ構造のＫＶペアを分散ＫＶＳ１５０から取得することとなる。一方、本実施の形態にかかるクエリ処理部１１０は、（ＦＬＡＴ構造と同じく）新規レコードからクラスタキー（商品分類列の値「パソコン」）をキー値とし、１レコード全体をバリューとしたＫＶペアに変換し、さらに論理ログ情報をバリューに付加する（図１１）。そして、クエリ処理部１１０は、作成した論理ログをトランザクション処理部１３０のログ記憶部１３２に格納する（ステップＳ６１２）。
【００５３】
ここで、変換形式にＦＬＡＴ構造が定義されていた場合、ステップＳ６０３においてテーブルＡがＦＬＡＴ構造のＫＶペアに変換されると判定される。そして、クエリ処理部１１０は、新規レコードからＦＬＡＴ構造の物理ログ（図１２）を作成する（ステップＳ６２１）。つまり、このとき、クエリ処理部１１０は、論理ログ情報を付加しない。そして、クエリ処理部１１０は、作成した物理ログをトランザクション処理部１３０のログ記憶部１３２に格納する（ステップＳ６２２）。
【００５４】
ステップＳ６１２又はＳ６２２の後、排他制御処理部１３１は、クエリ処理部１１０からログ記憶部１３２に格納された論理ログ又は物理ログについて、楽観的排他制御によって排他処理を行い、その結果をクエリ処理部１１０に通知する。そして、クエリ処理部１１０は、通知された結果をクライアント２００へ返信する（ステップＳ６０４）。このとき、排他違反のなかったＫＶペア（ログ）は、ログ記憶部１３２で管理されることになる。ログ記憶部１３２は、上述した通り、ログをトランザクションキー値ごとに時系列で管理する。
【００５５】
（トランザクション処理とログの例、排他制御）
ここで、本実施の形態で想定する表形式データに対するトランザクション処理の例と、その際に生成及び格納されるログの例について説明する。まず、トランザクション処理の例として、図４のテーブルＡに対して以下のようなＳＱＬ処理を順に実行し、コミットがすべて成功した場合が挙げられる。
（１）START TRANSACTION
（２）UPDATE テーブルＡ  SET  在庫=在庫-1 WHERE 商品ID=i1
（３）COMMIT
（４）START TRANSACTION
（５）UPDATE テーブルＡ  SET  在庫=在庫-1 WHERE 商品分類=パソコン
（６）COMMIT
（７）START TRANSACTION
（８）INSERT INTO テーブルＡ  VALUES(i6, 商品F, タブレット, 50, 55,000)
（９）COMMIT
（１０）START  TRANSACTION
（１１）INSERT INTO テーブルＡ  VALUES(i7, 商品G, パソコン, 20, 110,000)
（１２）COMMIT
【００５６】
そして、ＣＬＵＳＴＥＲ構造の場合、上記ＳＱＬによってクエリ処理部１１０で生成されたログ（ＫＶペア）は、排他違反がなければ、トランザクションキー値＝商品分類列の値ごとにログ記憶部１３２で管理される。ここで、前提として、上記同様、分散ＫＶＳ１５０には図６のＣＬＵＳＴＥＲ構造のＫＶペアが格納済みであるものとする。図１４は、本発明の実施の形態２にかかるＣＬＵＳＴＥＲ構造の場合においてログ記憶部に格納されたログの例を示す図である。上記（１）〜（３）及び（４）〜（６）により、それぞれ、トランザクションキー＝パソコンのタイムスタンプ”１”及び”２”の物理ログがログ記憶部１３２に格納される。そして、上記（７）〜（９）により、トランザクションキー＝タブレットのタイムスタンプ”１”の論理ログがログ記憶部１３２に格納される。その後、上記（１０）〜（１２）により、トランザクションキー＝パソコンのタイムスタンプ“３”の論理ログがログ記憶部１３２に格納される。
【００５７】
また、分散ＫＶＳ１５０に図５のＦＬＡＴ構造のＫＶペアが格納済みである場合、図１５に示すログ記憶部に格納されたログの例の通りとなる。つまり、上記（１）〜（３）及び（４）〜（６）により、それぞれ、トランザクションキー＝パソコンのタイムスタンプ”１”及び”２”の物理ログがログ記憶部１３２に格納される。そして、上記（７）〜（９）により、トランザクションキー＝タブレットのタイムスタンプ”１”の物理ログがログ記憶部１３２に格納される。その後、上記（１０）〜（１２）により、トランザクションキー＝パソコンのタイムスタンプ“３”の物理ログがログ記憶部１３２に格納される。
【００５８】
また、排他制御処理について説明する。まず、クエリ処理部１１０は、トランザクションの開始時に、更新するレコードの所属するトランザクションキーの最新のタイムスタンプを取得する。例えば、上記（１０）の開始時は、ログ記憶部１３２には、トランザクションキー＝パソコンのタイムスタンプ“２”まで格納されているため、最新のタイムスタンプとして“３”が取得される。そして、クエリ処理部１１０は、取得したタイムスタンプを作成されたログ（ＫＶペア）と共に、トランザクション処理部１３０へ送信する。そして、排他制御処理部１３１は、送信されたログのタイムスタンプから更新対象のＫＶペアに、その間の更新がないかを確認する。つまり、排他制御処理部１３１は、ログ記憶部１３２のトランザクションキー＝パソコンのタイムスタンプに既に“３”が格納されていれば、他の更新があったこととなり、排他違反と判定する。排他違反と判定された場合、排他制御処理部１３１は、その旨をクエリ処理部１１０に送信し、送られてきたログをログ記憶部１３２から削除する。
【００５９】
（表形式データの既存レコードに対する更新要求）
本実施の形態にかかるトランザクション処理システム１００は、表形式データの既存レコードに対する更新要求（ＳＱＬのUPDATE、DELETE文処理相当）があった場合には、ＣＬＵＳＴＥＲ構造の物理ログを生成するものとする。表形式データの既存レコードに対する更新要求では、更新対象のレコードが含まれる最新のＫＶペア（最新データ）を取得する必要がある。最新データの取得先は、ログ記憶部１３２に対象のデータのログがあるか否かに加え、そのログが論理ログか物理ログであるかにより、異なる。図１６は、本発明の実施の形態２にかかるトランザクションキー単位におけるログ記憶部に格納されたログのパターンごとに最新データの所在を整理した図である。
【００６０】
（更新要求に対する処理の流れ）
図１７及び図１８は、本発明の実施の形態２にかかる表形式データの既存レコードに対する更新要求に応じた、ＣＬＵＳＴＥＲ構造のログの更新処理の流れを示すフローチャートである。まず、クエリ処理部１１０は、クライアント２００からテーブルＡの既存レコードに対する更新要求クエリの入力を受け付ける（ステップＳ１００１）。具体的には、クエリ処理部１１０は、テーブルＡの商品分類列が「パソコン」であるレコードに対して、在庫列を「０」に更新するクエリの入力を受け付けたものとする。
【００６１】
次に、クエリ処理部１１０は、システムカタログ１２０からテーブルＡの変換形式を取得する（ステップＳ１００２）。このとき、クエリ処理部１１０は、上述したように、変換形式に基づきテーブルＡがＣＬＵＳＴＥＲ構造に変換されると判定する。
【００６２】
そして、クエリ処理部１１０は、ログ記憶部１３２から、トランザクションキー値が「パソコン」であり、分散ＫＶＳ１５０へ未反映のログを取得する（ステップＳ１００３）。そして、クエリ処理部１１０は、ログ記憶部１３２にキー値が「パソコン」であるログが存在しない場合（ステップＳ１００４でＮＯ、パターン［４］)、分散ＫＶＳ１５０からキー値が「パソコン」であるＫＶペアを取得する（ステップＳ１００６）。この場合、取得したＫＶペアが最新データとなる。
【００６３】
また、ログ記憶部１３２にキー値が「パソコン」であるログが存在する場合（ステップＳ１００４でＹＥＳ)、クエリ処理部１１０は、取得したログに、更新対象（キー値が「パソコン」）となるＫＶペアに対応する物理ログが含まれるか否かを判定する（ステップＳ１００５）。ステップＳ１００５でＮＯの場合、取得したログが論理ログのみである（パターン［２］）といえる。よって、クエリ処理部１１０は、分散ＫＶＳ１５０から更新対象のＫＶペアを取得し、取得したＫＶペアと論理ログとマージして物理ログを生成する（ステップＳ１００８）。この場合、マージ後の物理ログが最新データとなる。尚、マージに際して、クエリ処理部１１０は、論理ログのバリューから論理ログ情報を除いたデータ（レコード相当）を取得したＫＶペアに反映させる。
【００６４】
ステップＳ１００５でＹＥＳの場合、クエリ処理部１１０は、更新対象となるＫＶペアの物理ログが最新であるか否かを判定する（ステップＳ１００７）。ログ記憶部１３２から取得した最新のログが物理ログである場合（ステップＳ１００７でＹＥＳ、パターン［１］）、当該物理ログが最新のデータとなる。
【００６５】
ログ記憶部１３２から取得した最新のログが物理ログでない場合（ステップＳ１００７でＮＯ、パターン［３］）、つまり、取得したログに物理ログが含まれ、かつ、最新のログが論理ログである場合、クエリ処理部１１０は、取得した物理ログのうち最新のログと、取得した論理ログとをマージして、物理ログを生成する（ステップＳ１００９）。この場合、マージ後の物理ログが最新データとなる。尚、マージに際して、クエリ処理部１１０は、論理ログのバリューから論理ログ情報を除いたデータ（レコード相当）を取得した物理ログに反映させる。
【００６６】
ステップＳ１００７でＹＥＳ、Ｓ１００９、Ｓ１００８、又はＳ１００６の後、クエリ処理部１１０は、取得したＫＶペア又はマージした物理ログ（最新データ）に対して、更新要求クエリで要求された内容で更新する（Ｓ１０１０）。具体的には、クエリ処理部１１０は、最新データのバリュー内の各レコードの在庫列が「０」となるように更新する。
【００６７】
その後、クエリ処理部１１０は、更新後の最新データを物理ログとしてトランザクション処理部１３０のログ記憶部１３２に格納する（ステップＳ１０１１）。
【００６８】
尚、上述した最新データの取得方法（ステップＳ１００４〜Ｓ１００９）は、クエリ処理部１１０が、所定のトランザクションキーを指定した参照クエリ（ＳＱＬのSELECT文相当）の入力を受け付けた場合も同様の処理で最新のデータの取得を行い、クライアントに結果を返すものとする。これにより、ＫＶＳに対する表形式データの新規レコードの追加要求におけるトランザクション処理の性能を維持しつつ、最新データを正確に特定することができる。
【００６９】
図１９及び図２０は、本発明の実施の形態２にかかるログ記憶部１３２に格納されたログを分散ＫＶＳ１５０へ反映する処理（ＫＶＳの更新処理）の流れを示すフローチャートである。ここで、分散ＫＶＳ１５０への反映は、ＫＶペアマージ更新部１４０がクエリ処理部１１０とは非同期で行う。
【００７０】
まず、ＫＶペアマージ更新部１４０は、ログ記憶部１３２に格納されたログの内、特定のトランザクションキー値のログを取得する（ステップＳ１１０１）。そして、ＫＶペアマージ更新部１４０は、取得したログに論理ログが含まれているか否かを判定する（ステップＳ１１０２）。
【００７１】
取得したログに論理ログが含まれていない場合、つまり、取得したログが物理ログのみである場合（ステップＳ１１０２でＮＯ）、ＫＶペアマージ更新部１４０は、取得した物理ログを分散ＫＶＳ１５０に反映する（ステップＳ１１２１）。そして、ＫＶペアマージ更新部１４０は、反映が成功した物理ログをログ記憶部１３２から削除する（ステップＳ１１２２）。そして、当該更新処理を終了する。
【００７２】
また、取得したログに論理ログが含まれている場合（ステップＳ１１０２でＹＥＳ）ＫＶペアマージ更新部１４０は、取得したログに物理ログが含まれているか否かを判定する（ステップＳ１１０３）。取得したログに物理ログが含まれていない場合（ステップＳ１１０３でＮＯ）、つまり、取得したログが論理ログのみである場合、ＫＶペアマージ更新部１４０は、論理ログの更新対象となるＫＶペアを分散ＫＶＳ１５０から取得する（ステップＳ１１３１）。
【００７３】
ＫＶペアマージ更新部１４０は、ステップＳ１１３１で取得したＫＶペアと、ログ記憶部１３２から取得済みの論理ログをマージする（ステップＳ１１３２）。ＫＶペアマージ更新部１４０は、マージしたＫＶペアを物理ログとしてトランザクション処理部１３０のログ記憶部１３２に格納する（ステップＳ１１３３）。
【００７４】
このとき、排他制御処理部１３１は、ＫＶペアマージ更新部１４０から格納されるＫＶペアがステップＳ１１０１のログ取得以後、更新がないかを確認する。すなわち、排他制御処理部１３１は、格納対象のＫＶペアとトランザクションキーが共通する他のログのうちタイムスタンプが一致するかそれ以降を示すものがないかを確認する。そして、更新がない場合（Ｓ１１０４でＮＯ）、排他制御処理部１３１は、ログ記憶部１３２に当該ＫＶペアを物理ログとして格納する。そして、ＫＶペアマージ更新部１４０は、ステップＳ１１０１で取得した論理ログをログ記憶部１３２から削除する（ステップＳ１１０５）。そして、当該更新処理を終了する。更新があった場合（Ｓ１１０４でＹＥＳ）、ステップＳ１１０１に戻る。
【００７５】
また、ステップＳ１１０３において、取得したログに物理ログが含まれている場合（ステップＳ１１０３でＹＥＳ）、つまり、取得したログに論理ログ及び物理ログの両方が含まれている場合、ＫＶペアマージ更新部１４０は、ログ記憶部１３２から取得したログのうち、「論理ログの更新対象外の物理ログ」を分散ＫＶＳ１５０に反映する。ここで、ログ記憶部１３２から取得したログには、１つの論理ログと１以上の物理ログが含まれている状況である。さらに、タイムスタンプで最新のログは（ステップＳ１１３１〜Ｓ１１３４の処理があることにより）論理ログであるといえる。よって、上述した「論理ログの更新対象外の物理ログ」とは、取得した物理ログのうち、タイムスタンプが最新以外の物理ログである。そして、ＫＶペアマージ更新部１４０は、反映が成功した物理ログをログ記憶部１３２から削除する（ステップＳ１１１１）。
【００７６】
そして、ＫＶペアマージ更新部１４０は、取得した論理ログと物理ログ（取得した物理ログのうちタイムスタンプが最新のもの）とをマージしたＫＶペアを作成する（ステップＳ１１１２）。マージしたＫＶペアを作成後は、論理ログのみを取得した場合と同じく、ステップＳ１１３３、Ｓ１１３４、Ｓ１１０４を実行する。そして、ステップＳ１１０５の後、当該更新処理を終了する。
【００７７】
以上のことから、本実施の形態により、クエリ処理部１１０におけるＫＶＳに対する表形式データの新規レコードの追加要求に応じたトランザクション処理が、論理ログの生成及び論理ログのログ記憶部への格納という点で、ＦＬＡＴ構造と近い処理となる。そのため、追加要求に対する応答がこれまでと比べて速くなるため、トランザクション処理の性能を向上することができる。
【００７８】
さらに、論理ログと物理ログの両方が混在していても正確に最新データを取得することができ、一貫性を維持して分散ＫＶＳに反映することができる。
【００７９】
また、物理ログを作成するような分散ＫＶＳの関連技術における複数レコードをまとめたＫＶペアに対する新規レコード挿入処理は、既存レコードと新規レコードをマージした物理ログを作成し、非同期で分散ＫＶＳに反映するものであった。これに対して、本発明の実施の形態では、処理内容を記載したログ（論理ログ）を作成し、非同期で複数レコードをまとめたＫＶペア（物理ログ）に変換後、分散ＫＶＳに反映するものである。そのため、追加要求に対する応答性能を向上できる。
【００８０】
（その他の実施形態）
【００８１】
尚、上述した各実施の形態は、特許文献１で示されるような単一のＫＶペアの操作についてアトミック性を保証するＫＶＳに対して、入力レコードの特定の属性値（トランザクションキー）ごとにグループ分けして同じグループごとのトランザクション処理をサポートする手法にも適用できる。但し、本発明の実施の形態は、特許文献１のトランザクション処理をサポートするシステムに限らず、表形式データをＫＶＳ形式に変換してＫＶＳに格納し、ＫＶＳに格納されたＫＶペアに対して処理を行うような様々なシステムに適用が可能であり、有効である。
【００８２】
また、上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、任意の処理を、ＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。
【００８３】
上述の例において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、ＤＶＤ（Digital Versatile Disc）、ＢＤ（Blu-ray（登録商標） Disc）、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【符号の説明】
【００８４】
１  情報処理システム
１０  情報処理装置
１１  変換部
１２  ログ記憶部
１２１  変換ログ
１２２  更新前ログ
１３  ログ更新部
１４  ペアデータ更新部
２０  ペアデータ記憶部
２１  ペアデータ
３０  追加要求
１００  トランザクション処理システム
１１０  クエリ処理部
１２０  システムカタログ
１３０  トランザクション処理部
１３１  排他制御処理部
１３２  ログ記憶部
１４０  ＫＶペアマージ更新部
１５０  分散ＫＶＳ
２００  クライアント
【図１】
2016149049.tif 000003
【図２】
2016149049.tif 000004
【図３】
2016149049.tif 000005
【図４】
2016149049.tif 000006
【図５】
2016149049.tif 000007
【図６】
2016149049.tif 000008
【図７】
2016149049.tif 000009
【図８】
2016149049.tif 000010
【図９】
2016149049.tif 000011
【図１０】
2016149049.tif 000012
【図１１】
2016149049.tif 000013
【図１２】
2016149049.tif 000014
【図１３】
2016149049.tif 000015
【図１４】
2016149049.tif 000016
【図１５】
2016149049.tif 000017
【図１６】
2016149049.tif 000018
【図１７】
2016149049.tif 000019
【図１８】
2016149049.tif 000020
【図１９】
2016149049.tif 000021
【図２０】
2016149049.tif 000022