JP2014215894A - 端末装置、情報処理方法及び情報処理プログラム - Google Patents
端末装置、情報処理方法及び情報処理プログラム Download PDFInfo
- Publication number
- JP2014215894A JP2014215894A JP2013094157A JP2013094157A JP2014215894A JP 2014215894 A JP2014215894 A JP 2014215894A JP 2013094157 A JP2013094157 A JP 2013094157A JP 2013094157 A JP2013094157 A JP 2013094157A JP 2014215894 A JP2014215894 A JP 2014215894A
- Authority
- JP
- Japan
- Prior art keywords
- data
- transaction
- unit
- processing unit
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/14—Error detection or correction of the data by redundancy in operation
- G06F11/1402—Saving, restoring, recovering or retrying
- G06F11/1474—Saving, restoring, recovering or retrying in transactions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
Abstract
【課題】トランザクションの同時実行効率を向上させる。【解決手段】実施形態の端末装置は、記憶部と、管理部と、操作記録部と、第1検知部及び第2検知部の少なくともいずれかと、を有する。管理部は、記憶部が記憶するデータエレメント及びデータコンテナに対して個別にデータを操作するトランザクションを実行する処理部の生成及び削除を行う。操作記録部は、処理部によるトランザクションの実行中に操作情報を記録する。第1検知部及び第2検知部は、競合の有無を検知する。また、第1検知部は、処理部によるトランザクションの実行状態時に競合を検知する。また、第2検知部は、処理部によるトランザクションのコミット準備状態時に競合を検知する。また、処理部は、第1検知部及び第2検知部の少なくともいずれかが競合を検知した場合、トランザクションを中止する。【選択図】図1
Description
本発明の実施形態は、端末装置、情報処理方法及び情報処理プログラムに関する。
従来、関連情報の高速な探索を目的とするデータベースとして、例えばグラフデータベースが知られている。例えば、ソーシャルグラフなどの大規模なデータグラフでは、書込みトランザクションの同時実行効率を向上させることが望まれている。
Neo Technology, "Neo4j Reference Manual Chapter.12 Transaction Management",[online],[平成25年4月12日検索]、インターネット<URL:http://docs.neo4j.org/chunked/stable/transactions.html>
しかしながら、従来の方法では、ソーシャルグラフなど、多数のエッジを持ったノード(ハブノード)が多数存在する場合に、ハブノードへの書込み競合が発生しやすく、書込みトランザクションの同時実行効率を向上させることが困難であるという問題があった。本発明の実施形態が解決しようとする課題は、書込みトランザクションの同時実行効率を向上させることができる端末装置、情報処理方法及び情報処理プログラムを提供することである。
実施形態の端末装置は、記憶部と、管理部と、操作記録部と、第1検知部及び第2検知部の少なくともいずれかと、を有する。記憶部は、データコンテナを保持するデータエレメントを記憶する。管理部は、記憶部が記憶するデータエレメント及びデータコンテナに対して個別にデータを操作するトランザクションを実行する処理部の生成及び削除を行う。操作記録部は、処理部によるトランザクションの実行中に、操作対象となるデータに対する操作内容、及びトランザクションを識別する識別情報、を含む操作情報を記録する。第1検知部及び第2検知部は、データの一貫性を損なう原因となり得る競合の有無を検知する。また、第1検知部は、処理部によるトランザクションの実行状態時に、データエレメントに対する操作とデータコンテナに対する操作との間の競合を検知する。また、第2検知部は、処理部によるトランザクションのコミット準備状態時に、操作情報に基づいて、データエレメントに対する操作とデータコンテナに対する操作との間の競合を検知する。また、処理部は、第1検知部及び第2検知部の少なくともいずれかが競合を検知した場合、トランザクションを中止する。
以下に添付図面を参照して、実施形態にかかる端末装置について説明する。
(実施形態)
図1は、実施形態にかかる端末装置1の構成を例示するブロック図である。端末装置1は、例えば、汎用のコンピュータなどによって実現される。即ち、端末装置1は、CPU、記憶装置及び通信インターフェイスなどを備えたコンピュータとしての機能を有する。また、端末装置1は、サーバ装置として実現されてもよいし、PC(Personal Computer)、デジタルテレビ、ハードディスクレコーダ、スレートPC又はスマートフォン等のデジタル機器として実現されてもよい。
図1は、実施形態にかかる端末装置1の構成を例示するブロック図である。端末装置1は、例えば、汎用のコンピュータなどによって実現される。即ち、端末装置1は、CPU、記憶装置及び通信インターフェイスなどを備えたコンピュータとしての機能を有する。また、端末装置1は、サーバ装置として実現されてもよいし、PC(Personal Computer)、デジタルテレビ、ハードディスクレコーダ、スレートPC又はスマートフォン等のデジタル機器として実現されてもよい。
図1に示すように、端末装置1は、記憶部10、管理部12、第1検知部14、操作記録部16及び第2検知部18を有する。記憶部10は、例えば単一又は複数のHDD(Hard Disk Drive)などによって構成される。また、記憶部10は、他の不揮発性の補助記憶装置(SSD、フラッシュメモリ、MRAM等)であってもよいし、主記憶装置であってもよい。管理部12、第1検知部14、操作記録部16及び第2検知部18は、ハードウェア回路、又はCPUで実行するソフトウェアのいずれであってもよい。
記憶部10は、複数のデータエレメントを記憶する。図2は、複数のデータエレメント(エレメント)がそれぞれデータコンテナを有している構成を示す図である。データエレメント3は、それぞれデータコンテナ30を有する。データコンテナ30は、複数のデータ300の追加・更新・削除・取得(検索)を提供するデータ管理機構であり、例えば、B-Tree、Hash、List、SkipList等の様々な実現形態を採り得る。
例えば、データエレメント3は、グラフデータベースのノード又はエッジなどである。データコンテナ30は、属性(例えば図3におけるname,ageなど)を含む。データ300は、数値や名称などの値である。
管理部(トランザクション管理部)12(図1)は、後述する処理部(トランザクション処理部)20の生成及び削除などを行い、処理部20の管理を行う。管理部12は、処理部20を生成する場合に、処理部20を一意に識別する識別情報(トランザクションID)を付与する。また、管理部12は、少なくとも処理部20が生存する期間中には、付与したトランザクションIDと当該処理部20への参照情報とを対にして保持する。また、管理部12は、後述する第1検知部14及び第2検知部18からのトランザクションIDをキーとした問い合わせに対し、該当トランザクションの状態や処理完了時間を返す。
処理部20は、記憶部10に格納されているデータエレメント3及びデータコンテナ30内のデータ300(以降、「データコンテナ30内のデータ300」をコンテナデータ300と記すことがある)に対する複数の操作(トランザクション)を、一貫性を保って実行する。
トランザクションでは、例えば、数値データA=100、B=100が記憶部10に格納されており、「AからBへ10渡す」という処理を行う場合、A−10とB+10の2種類の処理を、両方実行するか(A=90、B=110)、両方実行しないか(A=100、B=100)のいずれかであることを保証する。
このために、処理部20は、実行状態、コミット準備状態、コミット完了状態及びアボート状態の4つのいずれかの状態をとる。
実行状態は、データエレメント3やコンテナデータ300に対する操作を行っている状態である。処理部20は、管理部12によって生成された時点で実行状態にある。実行状態では、一連の操作はコミットされておらず(確定されておらず)、ロールバックされ得る。処理部20は、実行状態において、実際に操作してよいか否かを、後述する第1検知部14の検知結果などに応じて判断する。
コミット準備状態は、一連の操作を終え、操作完了時間を取得した状態である。処理部20は、コミット準備状態において、実際にコミットしてよいか否かを、後述する第2検知部18の検知結果などに応じて判断する。
コミット完了状態は、コミット可能な場合に、一連の操作を確定した状態である。処理部20は、コミット完了状態において、後述する操作記録部16が記録した操作情報4に含まれるトランザクションIDを、アトミックに操作完了時間に置き換える。さらに、処理部20は、一連の操作のログを不揮発な記憶領域に書き込み、コミットデータの永続性を担保する処理を行ってもよい。最後に、処理部20は、処理を終了する。
アボート状態は、コミットできない場合に、実行した操作をキャンセルした状態である。例えば、処理部20は、書き込みの競合が起こった場合、及び上位のアプリケーションなどからキャンセルが実行された場合などに、実行した操作をキャンセルする。処理部20は、アボート状態において、後述する操作記録部16が記録した操作情報4を全て消去し(ロールバックし)、処理を終了する。また、処理部20は、4つの状態を示す状態情報を保持する。
第1検知部14は、実行状態において、データエレメント3に対する操作と、データコンテナ30内のデータ300に対する操作との間の競合(競合の有無)を検出する。第1検知部14が検知する競合は、データの一貫性を損なう原因となり得る競合である。
操作記録部16は、実行状態において、後述する操作情報4を操作箇所に記録する。また、操作記録部16は、処理部20内に操作箇所を示す操作箇所情報を記録する。操作箇所情報は、操作情報4を参照するためのポインタであり、例えば更新前データ(旧データ)へのポインタである。
第2検知部18は、コミット準備状態において、データエレメント3に対する操作と、データコンテナ30内のデータ300に対する操作との間の競合(競合の有無)を検出する。第2検知部18が検知する競合は、データの一貫性を損なう原因となり得る競合である。
次に、操作記録部16が記録する操作情報4について詳述する。図3は、操作情報4の構造、及び操作情報4の記録場所を模式的に示す図である。図3に示すように、操作情報4は、第1領域40、第2領域42、第3領域44及び第4領域46を有する。なお、データ(操作内容:値)は、第3領域44に書込まれるものとする。また、データが更新される場合は、新たな操作情報4の第3領域44にデータが書き込まれるものとする(追記型)。追記によって旧データとなった操作情報4は、参照されなくなった段階で、回収・削除してもよい。
第1領域40は、例えばデータを第3領域44に書き込むトランザクションの完了時に、操作記録部16が完了時間(登録時間)を書き込む領域である。ただし、第1領域40は、トランザクションが実行されて完了するまでの間には、実行されているトランザクションを識別する識別情報(トランザクションID)が書き込まれる。
第2領域42は、第3領域44に書き込まれたデータを更新するトランザクションの完了時に、操作記録部16が更新時間を書き込む領域である。ただし、第2領域42は、データを更新するトランザクションが完了するまでは、他の値が書き込まれる。例えば、第3領域44に書き込まれたデータを更新するトランザクションが実行されていない場合、第2領域42には、第3領域44に書き込まれたデータが有効である旨を示す値(例えば”0”)が書き込まれる。また、第3領域44に書き込まれたデータを更新するトランザクションが実行されて完了するまでの間には、実行されているトランザクションを識別する識別情報(トランザクションID)が書き込まれる。
第3領域44は、上述したように、操作されるデータ(値)を操作記録部16が書き込む領域である。
第4領域46は、次データ(次に更新されるデータ)へのポインタを操作記録部16が書き込む領域である。なお、第4領域46は、次データがない場合には、次データが無いことを示す情報、例えば、”NULL”が書き込まれるものとする。
操作情報4は、データエレメント3及びデータコンテナ30、並びに旧データ及び最新データのいずれにおいても同じ構造となっている。図3においては、データエレメント3に対して上位コンテナが設けられている場合が示されている。
例えば、操作記録部16は、データエレメント3を追加する場合、データエレメント3が属する上位コンテナの新規データエントリポイントの開始時間にトランザクションIDを記録し、データに新規データエレメント3を記録する。ここで、操作記録部16は、第2領域42には未更新(有効)を示す情報(例えば”0”)を書き込み、第4領域46には次データがないことを示す情報(例えば”NULL”)を初期値として書き込む。
また、操作記録部16は、コンテナデータ300を追加する場合、コンテナデータ300が属するデータコンテナ30の新規データエントリポイントの開始時間にトランザクションIDを記録し、データに新規コンテナデータを記録する。ここで、操作記録部16は、第2領域42には未更新(有効)を示す情報(例えば”0”)を書き込み、第4領域46には次データがないことを示す情報(例えば”NULL”)を初期値として書き込む。
また、操作記録部16は、データエレメント3を更新する場合、旧(更新対象)データエレメントの第2領域42にトランザクションIDを記録し、旧(更新対象)データエレメントの第4領域46に更新データエレメントのアドレスを記録する。そして、操作記録部16は、更新データエレメントの第1領域40にトランザクションIDを記録し、更新データエレメントの第3領域44に更新データエレメントを記録する。
また、操作記録部16は、コンテナデータ300を更新する場合、旧(更新対象)コンテナデータの第2領域42にトランザクションIDを記録し、旧(更新対象)コンテナデータの第4領域46に更新コンテナデータのアドレスを記録する。そして、操作記録部16は、更新コンテナデータの第1領域40にトランザクションIDを記録し、更新コンテナデータの第3領域44に更新コンテナデータを記録する。
また、操作記録部16は、データエレメント3を削除する場合、旧(削除対象)データエレメントの第2領域42にトランザクションIDを記録する。
また、操作記録部16は、コンテナデータ300を削除する場合、旧(更新対象)コンテナデータの第2領域42にトランザクションIDを記録する。
なお、上記のトランザクションIDは、コミット完了状態になると、操作完了時間にアトミックに置き換えられる。一方、アボート状態になると、トランザクションIDは初期値(“0”等)にアトミックに戻される。ここで、トランザクションIDが初期値であるものは、操作情報4ではなく、更新対象となり得る最新データエレメント、又は最新コンテナデータであるとする。また、操作情報4は、追加・更新・削除の操作種別を残す領域を設けられてもよいし、削除フラグを立てる領域が設けられてもよい。
図4は、データの書き込み及び更新のトランザクションが実行された場合の操作情報4におけるデータの変遷を例示する図である。図4において、Tx(1)は、データの書き込み(生成)を行うトランザクションであり、Tx(2)は、データの更新を行うトランザクションである。
Tx(1)が実行されると、第1領域40にトランザクションID=1、第2領域42にデータの有効を示す値”0”、第3領域44にデータ(ageの書き込まれる値20)、第4領域46に次データがないことを示す”NULL”がそれぞれ書き込まれる(状態1:S1)。つまり、S1は、Tx(1)の実行状態を示している。
Tx(1)のコミット完了時間は、1:00であったとする。Tx(1)がコミット完了となると、第1領域40には、Tx(1)のコミット完了時間(1:00)が書き込まれる(状態2:S2)。つまり、S2は、Tx(1)のコミット完了状態を示している。
Tx(2)が実行されると、第2領域42にトランザクションID=2が書き込まれ、第4領域46に次データへのポイントが書き込まれ、新たな操作情報4に対する書込みが行われる。新たな操作情報4は、第1領域40にトランザクションID=2、第2領域42にデータの有効を示す値”0”、第3領域44にデータ(ageの更新される値21)、第4領域46に次データがないことを示す”NULL”がそれぞれ書き込まれる(状態3:S3)。つまり、S3は、Tx(2)の実行状態を示している。
Tx(2)のコミット完了時間は、2:00であったとする。Tx(2)がコミット完了となると、第3領域44にデータ(20)が書き込まれた操作情報4の第2領域42に、データ(20)の更新時間が書き込まれる。また、第3領域44にデータ(21)が書き込まれた新たな操作情報4の第1領域40には、Tx(2)のコミット完了時間(2:00)が書き込まれる(状態4:S4)。つまり、S4は、Tx(2)のコミット完了状態を示している。
従って、ageの値20は、1:00〜2:00まで有効であったこととなる。また、Tx(2)がアボートとなった場合には、Tx(2)において行われた処理が取り消される。
次に、端末装置1の動作について説明する。図5は、トランザクションの実行状態における端末装置1の動作を示すアクティビティ図である。まず、処理部20は、トランザクションの操作開始時間を取得する(S100)。
次に、処理部20は、トランザクションの操作対象を取得する(S102)。ここで、処理部20は、旧データをスキップし、最新データを取得するために、S100の処理で取得した操作開始時間を用いる。
具体的には、処理部20は、データの操作開始時間が登録時間(図3参照)と更新時間の間であれば、当該トランザクションにおける最新データとみなして取得する。また、処理部20は、データの操作開始時間が登録時間よりも小さければ(早い時間であれば)、当該トランザクションにとっては未来に生成されたデータとみなし、存在しないものとして扱う。また、処理部20は、データの操作開始時間が更新時間よりも大きければ(遅い時間であれば)、当該トランザクションにとっては過去に削除されたデータとみなし、存在しないものとして扱う。このとき、処理部20は、操作情報4の第4領域46を参照し、次のデータが存在する場合には、次のデータを参照し、同様に、登録時間と更新時間を参照して、当該トランザクションにおける最新データであるか否かの判定を行う。なお、処理部20は、第2領域42に他のトランザクションIDが含まれている場合には、後述するS118〜S120と同等の判定処理を行う。すなわち、処理部20は、該当トランザクションの状態に応じて、データを取得するか否かを判定する。具体的には、アボート状態の場合には、処理部20は、当該データを最新データとみなして取得する。実行状態の場合には、処理部20は、データの一貫性を損なう原因となり得る競合が有るとみなしてアボートする。コミット完了状態の場合には、処理部20は、更新された(削除された)データとみなし、次データのチェックへ移行する。コミット準備状態の場合には、投機的実行を許すか否かによって処理部20の挙動が変わる。投機的実行を許す場合は、処理部20は、コミット完了状態の場合と同様、次データのチェックへ移行する。一方、投機的実行を許さない場合には、処理部20は、競合が有るとみなしてアボートする。
処理部20は、操作対象がない場合にはコミット準備状態へ遷移させる(S104)。また、処理部20は、操作対象がある場合には、第1検知部14に競合の有無を検知させる。
第1検知部14は、操作対象の種別(データエレメント3、又はデータコンテナ30内のデータ300:コンテナデータ300のいずれか)を判定する(S106)。第1検知部14は、操作対象がコンテナデータ300である場合、上位のデータエレメント3の操作情報4の有無を確認する(S108)。また、第1検知部14は、操作対象がデータエレメント3である場合、下位の(属する)コンテナデータ300の操作情報4の有無を確認する(S110)。ここでいう操作情報4の有無は、より詳しくは、データの一貫性を損なう原因となり得る競合の可能性のある操作情報4の有無のことである。つまり、第1検知部14は、当該操作情報4の第2領域42がトランザクションIDを有するか、又は操作開始時間よりも後の操作完了時間を有するかによって判断する。
第1検知部14は、データエレメント3又はコンテナデータ300の操作情報4が有る場合、S108又はS110の処理で確認した操作情報4の第2領域42がトランザクションIDか操作完了時間かを判定する(S112)。また、第1検知部14は、データエレメント3又はコンテナデータ300の操作情報4がない場合、操作記録部16に操作情報4を記録させる通知を行う。
第1検知部14は、操作情報4の第2領域42が操作完了時間(すなわち、S100で取得した操作開始時間よりも後の操作完了時間)である場合には、他のトランザクションの処理がエレメントの削除であるか否かを判定し(S122)、該当しなければ、操作記録部16に操作情報4を記録させる通知を行い、該当すれば(エレメントの削除である場合には)、データの一貫性を損なう原因となり得る競合が有ることを検知し、その旨を処理部20に対して通知する(S114)。処理部20は、第1検知部14から競合が有る旨の通知を受けると、トランザクションをアボート状態へ遷移させる(S116)。
また、第1検知部14は、操作情報4の第2領域42がトランザクションIDである場合には、他のトランザクションの状態を管理部12に問い合わせることによって確認する(S118)。
第1検知部14は、他のトランザクションが実行状態である場合にも、データの一貫性を損なう原因となり得る競合が有ることを検知し、その旨を処理部20に対して通知する(S114)。また、第1検知部14は、他のトランザクションがコミット準備状態である場合には、投機的実行を許すか否かを判定する(S120)。また、第1検知部14は、他のトランザクションがアボート状態である場合には、操作記録部16に操作情報4を記録させる通知を行う。第1検知部14は、他のトランザクションがコミット完了状態である場合(完了状態に遷移しているが、まだトランザクションIDから更新時間への変更が完了していない場合)は、S112において、操作完了時間であった場合と、同様の処理を行う。すなわち、第1検知部14は、他のトランザクションの処理がエレメントの削除であるか否かを判定し(S122)、該当しなければ、操作記録部16に操作情報4を記録させる通知を行い、該当すれば(エレメントの削除である場合には)、データの一貫性を損なう原因となり得る競合が有ることを検知し、その旨を処理部20に対して通知する(S114)。
第1検知部14は、投機的実行を不許可とする場合にも、データの一貫性を損なう原因となり得る競合が有ることを検知し、その旨を処理部20に対して通知する(S114)。また、第1検知部14は、投機的実行を許可する場合には、他のトランザクションの処理がエレメントの削除であるか否かを判定する(S122)。
第1検知部14は、他のトランザクションの処理がエレメントの削除である場合にも、データの一貫性を損なう原因となり得る競合が有ることを検知し、その旨を処理部20に対して通知する(S114)。また、第1検知部14は、他のトランザクションの処理がエレメントの削除でない場合には、操作記録部16に操作情報4を記録させる通知を行う。
操作記録部16は、第1検知部14からの通知に応じて、操作情報4を操作箇所に記録する(S124)。また、操作記録部16は、操作箇所を処理部20内に記録し(S126)、処理部20に新たな操作対象を取得させる(S102)。
なお、操作記録部16は、具体的には、次のような処理を行う。まず、操作記録部16が行う操作は、基本的には、”追加”、”更新”又は”削除”のいずれかである。ただし、操作記録部16は、更新無しの操作を行うものであってもよい。
例えば、記憶部10が記憶するデータがグラフ構造データである場合、操作記録部16は、ノード・エッジのレベルでは追加・削除を行い、ノード・エッジに属するコンテナデータ(プロパティ情報やノードが保持するエッジ情報)のレベルでは追加・更新・削除を行う。
また、操作記録部16は、”追加”の操作として、生成のみを行ってもよいし、生成と追記(append)を行ってもよい。
図6は、トランザクションのコミット準備状態における端末装置1の動作を示すアクティビティ図である。まず、処理部20は、トランザクションの操作完了時間を取得する(S200)。ここで、処理部20は、トランザクションがコミット準備状態に遷移した時間を操作完了時間とみなす。
次に、処理部20は、操作記録部16が記録した操作情報4の場所を示す操作箇所情報を取得する(S202)。
処理部20は、操作箇所がない場合にはコミット完了状態へ遷移させる(S204)。また、処理部20は、操作箇所がある場合には、第2検知部18に競合の有無を検知させる。
第2検知部18は、操作対象の種別(データエレメント3、又はデータコンテナ30内のデータ300:コンテナデータ300のいずれか)を判定する(S206)。
第2検知部18は、操作対象がコンテナデータ300である場合、上位のデータエレメント3の操作情報4の有無を確認する(S208)。また、第2検知部18は、操作対象がデータエレメント3である場合、下位の(属する)コンテナデータ300の操作情報4の有無を確認する(S210)。
第2検知部18は、データエレメント3又はコンテナデータ300の操作情報4が有る場合、S208又はS210の処理で確認した操作情報4の第2領域42がトランザクションIDか操作完了時間かを判定する(S212)。また、第2検知部18は、データエレメント3又はコンテナデータ300の操作情報4がない場合、処理部20が新たな操作箇所情報を取得するように通知を行う。
第2検知部18は、操作情報4の第2領域42が操作完了時間である場合には、他のトランザクションの処理がエレメントの削除であるか否かを判定し(S228)、該当しなければ、処理部20が新たな操作箇所情報を取得するように通知を行い、該当すれば(エレメントの削除である場合には)、データの一貫性を損なう原因となり得る競合が有ることを検知し、その旨を処理部20に対して通知する(S214)。処理部20は、第2検知部18から競合が有る旨の通知を受けると、トランザクションをアボート状態へ遷移させる(S216)。
また、第2検知部18は、操作情報4の第2領域42がトランザクションIDである場合には、他のトランザクションの状態を管理部12に問い合わせることによって確認する(S218)。
第2検知部18は、他のトランザクションがコミット準備状態である場合には、投機的実行を許すか否かを判定する(S220)。また、第2検知部18は、他のトランザクションがアボート状態又は実行状態である場合には、処理部20が新たな操作箇所情報を取得するように通知を行う。一方、第2検知部18は、他のトランザクションがコミット完了状態である場合(完了状態に遷移しているが、まだトランザクションIDから更新時間への変更が完了していない場合)は、S212において、操作完了時間であった場合と、同様の処理を行う。すなわち、第2検知部18は、他のトランザクションの処理がエレメントの削除であるか否かを判定し(S228)、該当しなければ、処理部20が新たな操作箇所情報を取得するように通知を行い、該当すれば(エレメントの削除である場合には)、データの一貫性を損なう原因となり得る競合が有ることを検知し、その旨を処理部20に対して通知する(S214)。
第2検知部18は、投機的実行を不許可とする場合にも、データの一貫性を損なう原因となり得る競合が有ることを検知し、その旨を処理部20に対して通知する(S214)。また、第2検知部18は、投機的実行を許可する場合には、他のトランザクションの操作完了時間を確認する(S222)。
第2検知部18は、自トランザクションの完了時間(自完了時間)が他のトランザクションの完了時間(他完了時間)よりも大きい(遅い)場合には、他のトランザクションの処理がエレメントの削除であるか否かを判定する(S224)。また、第2検知部18は、自完了時間が他完了時間よりも小さい(早い)場合には、処理部20が新たな操作箇所情報を取得するように通知を行う。また、第2検知部18は、自完了時間と他完了時間とが同じ場合には、データの一貫性を損なう原因となり得る競合が有ることを検知し、その旨を処理部20に対して通知する(S214)。ただし、処理部20は、自完了時間と他完了時間とが同じにならないように構成されていてもよい。
第2検知部18は、他のトランザクションの処理がエレメントの削除であると判定した場合には、処理部20がトランザクションをアボート状態へ遷移させるように通知を行う(S216)。また、第2検知部18は、他のトランザクションの処理がエレメントの削除でないと判定した場合には、処理部20が他のトランザクションのコミット完了を待機するように通知を行う(S226)。
処理部20は、アボートの指示を受信した場合には、トランザクションをアボート状態へ遷移させる(S216)。また、処理部20は、コミット完了の旨を受信した場合には、新たな操作箇所情報を取得する(S202)。
次に、端末装置1が複数のトランザクションを実行する場合の具体例について説明する。図7は、端末装置1が複数のトランザクションを実行する場合の具体例を模式的に示す図である。図7においては、3本のトランザクションTx(A)、Tx(B)、Tx(C)が以下の処理を行う。
Tx(A)は、age=20を、age=21へ更新するトランザクションである。Tx(B)は、location=Osakaを、location=Tokyoへ変更するトランザクションである。Tx(C)は、データコンテナ30を有するデータエレメント3自体を削除するトランザクションである。
Tx(A)とTx(B)とは競合しない。Tx(A)とTx(C)、Tx(B)とTx(C)は、それぞれ競合し得る。
ここで、Tx(A)とTx(C)に着目する。また、図8は、図7に示したTx(A)とTx(C)を実施形態にかかる端末装置1が実行した場合(実施例)の動作と、比較例の動作とを示す図である。Tx(A)の次にTx(C)が実行される場合は以下のような動作となる。
実施例において、Tx(A)が実行状態でTx(C)がデータエレメント3の削除を実行する場合、Tx(C)はアボートする。Tx(A)がコミット準備状態でTx(C)がデータエレメント3の削除を実行し、かつ、Tx(C)が投機的実行を行わない場合、Tx(C)はアボートする。
また、Tx(A)がコミット準備状態でTx(C)がデータエレメント3の削除を実行し、かつ、Tx(C)が投機的実行を行う場合、Tx(C)は削除を実行する。Tx(C)は、コミット準備状態に遷移すると、Tx(A)がコミット完了状態に遷移するのを待って、コミット完了状態に遷移する。一方、Tx(A)がアボートした場合、Tx(C)は、これを受けて同様にアボートする。
Tx(A)がコミット完了状態でTx(C)がデータエレメント3の削除を実行する場合、Tx(C)は削除を実行する。
なお、Tx(C)の次にTx(A)が実行される場合、上記の動作は、Tx(A)とTx(C)とを入れ替えた(読み替えた)動作となる。
このように、実施形態によれば、データコンテナ30が同時実行制御可能な条件下では、Tx(A)とTx(B)は互いに干渉せず、かつ、Tx(A)とTx(B)が属する上位のデータエレメントが変更される場合においても、処理の一貫性は保たれる。
これに対し、比較例では、Tx(C)が削除を実行するためには、Tx(A)のコミット完了まで待つ必要がある。つまり、実施例は、比較例に対して複数のトランザクションを早くコミット完了状態にするアドバンテージがある。
(適用例)
図9は、図2に示したデータエレメントとデータコンテナをグラフ構造データに適用した場合の構成を例示する図である。図9において、データエレメントはノードエレメント(V1,V2,V3,V4)とエッジエレメント(図示しない属性コンテナを有する)である。例えば、ノードV2(Vertex3a)は、データコンテナが属性コンテナ30a、内向きエッジコンテナ30b及び外向きエッジコンテナ30cで構成される。属性コンテナ30aは、属性名及び値によって構成される属性情報を格納するデータコンテナである。内向きエッジコンテナ30bは、内向きエッジを格納するデータコンテナである。外向きエッジコンテナ30cは、外向きエッジを格納するデータコンテナである。
図9は、図2に示したデータエレメントとデータコンテナをグラフ構造データに適用した場合の構成を例示する図である。図9において、データエレメントはノードエレメント(V1,V2,V3,V4)とエッジエレメント(図示しない属性コンテナを有する)である。例えば、ノードV2(Vertex3a)は、データコンテナが属性コンテナ30a、内向きエッジコンテナ30b及び外向きエッジコンテナ30cで構成される。属性コンテナ30aは、属性名及び値によって構成される属性情報を格納するデータコンテナである。内向きエッジコンテナ30bは、内向きエッジを格納するデータコンテナである。外向きエッジコンテナ30cは、外向きエッジを格納するデータコンテナである。
図9に示したグラフ構造データでは、本実施形態で述べたコンテナデータ粒度での同時実行制御に加えて、、データコンテナ(属性コンテナ30a、内向きエッジコンテナ30b、外向きエッジコンテナ30c)の粒度で同時実行制御を行うバリエーションも、一実施形態として想定できる。この場合、具体的には、属性に対する操作と、エッジに対する操作を、それぞれ別のトランザクションが担う場合、互いに干渉せずに同時実行させることが可能となり、実行の並列度を高めることができる。
このように、端末装置1は、同時実行制御の単位をデータコンテナ内のデータに対する個別操作の粒度まで細分化することによって同時実行効率を高めた上で、第1検知部14及び第2検知部18の少なくともいずれかが、上位のデータエレメントへの変更操作との競合を検知することができるので、操作の一貫性を担保することができる。
本実施形態の端末装置1で実行される情報処理プログラムは、インストール可能な形式又は実行可能な形式のファイルでCD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
また、本実施形態の端末装置1で実行される情報処理プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。
また、本発明のいくつかの実施形態を複数の組み合わせによって説明したが、これらの実施形態は例として提示したものであり、発明の範囲を限定することは意図していない。これら新規の実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
1 端末装置
10 記憶部
12 管理部
14 第1検知部
16 操作記録部
18 第2検知部
20 処理部
3 データエレメント
30 データコンテナ
300 データ(コンテナデータ)
4 操作情報
40 第1領域
42 第2領域
44 第3領域
46 第4領域
10 記憶部
12 管理部
14 第1検知部
16 操作記録部
18 第2検知部
20 処理部
3 データエレメント
30 データコンテナ
300 データ(コンテナデータ)
4 操作情報
40 第1領域
42 第2領域
44 第3領域
46 第4領域
Claims (6)
- データコンテナを保持するデータエレメントを記憶する記憶部と、
前記記憶部が記憶するデータエレメント及びデータコンテナに対して個別にデータを操作するトランザクションを実行する処理部の生成及び削除を行う管理部と、
前記処理部によるトランザクションの実行中に、操作対象となるデータに対する操作内容、及びトランザクションを識別する識別情報、を含む操作情報を記録する操作記録部と、
データの一貫性を損なう原因となり得る競合の有無を検知する第1検知部及び第2検知部の少なくともいずれかと、
を有し、
前記第1検知部は、
前記処理部によるトランザクションの実行状態時に、データエレメントに対する操作とデータコンテナに対する操作との間の競合を検知し、
前記第2検知部は、
前記処理部によるトランザクションのコミット準備状態時に、前記操作情報に基づいて、データエレメントに対する操作とデータコンテナに対する操作との間の競合を検知し、
前記処理部は、
前記第1検知部及び前記第2検知部の少なくともいずれかが競合を検知した場合、トランザクションを中止する
端末装置。 - 前記記憶部が記憶するデータエレメントは、
ノードを示すノードエレメント、又はエッジを示すエッジエレメントとして表現されるグラフエレメントであり、
前記ノードエレメントは、
少なくともノードに接続されているエッジ情報を格納するデータコンテナを有する
請求項1に記載の端末装置。 - 前記ノードエレメントは、
外向きエッジを格納するデータコンテナ、及び内向きエッジを格納するデータコンテナの少なくともいずれかを有する
請求項2に記載の端末装置。 - 前記ノードエレメント及び前記エッジエレメントは、
それぞれ属性情報を格納するデータコンテナを有し、
前記属性情報は、
属性名及び値によって構成されている
請求項2又は3に記載の端末装置。 - データコンテナを保持するデータエレメントを記憶する記憶部を有する端末装置にデータを記憶させる情報処理方法であって、
前記記憶部が記憶するデータエレメント及びデータコンテナに対して個別にデータを操作するトランザクションを実行する処理部の生成又は削除を行い、アクティブなトランザクションを管理する工程と、
前記処理部によるトランザクションの実行中に、操作対象となるデータに対する操作内容、及びトランザクションを識別する識別情報を含む操作情報を記録する工程と、
データの一貫性を損なう原因となり得る競合の有無を検知する第1検知工程及び第2検知工程の少なくともいずれかと、
前記第1検知工程及び前記第2検知工程の少なくともいずれかで競合を検知した場合、トランザクションを中止する工程と、
を含み、
前記第1検知工程では、
前記処理部によるトランザクションの実行状態時に、データエレメントに対する操作とデータコンテナに対する操作との間の競合を検知し、
前記第2検知工程では、
前記処理部によるトランザクションのコミット準備状態時に、前記操作情報に基づいて、データエレメントに対する操作とデータコンテナに対する操作との間の競合を検知する
情報処理方法。 - データコンテナを保持するデータエレメントを記憶する記憶部を有する端末装置にデータを記憶させる情報処理プログラムであって、
前記記憶部が記憶するデータエレメント及びデータコンテナに対して個別にデータを操作するトランザクションを実行する処理部の生成又は削除を行い、アクティブなトランザクションを管理するステップと、
前記処理部によるトランザクションの実行中に、操作対象となるデータに対する操作内容、及びトランザクションを識別する識別情報を含む操作情報を記録するステップと、
データの一貫性を損なう原因となり得る競合の有無を検知する第1検知ステップ及び第2検知ステップの少なくともいずれかと、
前記第1検知ステップ及び前記第2検知ステップの少なくともいずれかで競合を検知した場合、トランザクションを中止するステップと、
をコンピュータに実行させ、
前記第1検知ステップでは、
前記処理部によるトランザクションの実行状態時に、データエレメントに対する操作とデータコンテナに対する操作との間の競合を検知し、
前記第2検知ステップでは、
前記処理部によるトランザクションのコミット準備状態時に、前記操作情報に基づいて、データエレメントに対する操作とデータコンテナに対する操作との間の競合を検知する
ための情報処理プログラム。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013094157A JP2014215894A (ja) | 2013-04-26 | 2013-04-26 | 端末装置、情報処理方法及び情報処理プログラム |
US14/202,253 US20140325271A1 (en) | 2013-04-26 | 2014-03-10 | Terminal device, information processing method, and computer program product |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013094157A JP2014215894A (ja) | 2013-04-26 | 2013-04-26 | 端末装置、情報処理方法及び情報処理プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014215894A true JP2014215894A (ja) | 2014-11-17 |
Family
ID=51790363
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013094157A Pending JP2014215894A (ja) | 2013-04-26 | 2013-04-26 | 端末装置、情報処理方法及び情報処理プログラム |
Country Status (2)
Country | Link |
---|---|
US (1) | US20140325271A1 (ja) |
JP (1) | JP2014215894A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019198824A1 (ja) * | 2018-04-12 | 2019-10-17 | 日本電信電話株式会社 | 制御処理装置、制御処理方法および制御処理プログラム |
JP7438603B2 (ja) | 2020-05-20 | 2024-02-27 | ▲騰▼▲訊▼科技(深▲セン▼)有限公司 | トランザクション処理方法、装置、コンピュータデバイス及びコンピュータプログラム |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5870758A (en) * | 1996-03-11 | 1999-02-09 | Oracle Corporation | Method and apparatus for providing isolation levels in a database system |
US6597366B1 (en) * | 2000-01-14 | 2003-07-22 | International Business Machines Corporation | Transparent general purpose object isolation for multi-tier distributed object environments |
US7689560B2 (en) * | 2000-10-13 | 2010-03-30 | Miosoft Corporation | Persistent data storage techniques |
US7571088B2 (en) * | 2006-03-31 | 2009-08-04 | Microsoft Corporation | Simulation of connected devices |
US7987121B2 (en) * | 2006-06-30 | 2011-07-26 | Sap Ag | Systems and methods for generating an accounting document |
US8332374B2 (en) * | 2007-04-13 | 2012-12-11 | Oracle America, Inc. | Efficient implicit privatization of transactional memory |
US8229945B2 (en) * | 2008-03-20 | 2012-07-24 | Schooner Information Technology, Inc. | Scalable database management software on a cluster of nodes using a shared-distributed flash memory |
US8868506B1 (en) * | 2010-06-17 | 2014-10-21 | Evolphin Software, Inc. | Method and apparatus for digital asset management |
US9323775B2 (en) * | 2010-06-19 | 2016-04-26 | Mapr Technologies, Inc. | Map-reduce ready distributed file system |
US20130275429A1 (en) * | 2012-04-12 | 2013-10-17 | Graham York | System and method for enabling contextual recommendations and collaboration within content |
-
2013
- 2013-04-26 JP JP2013094157A patent/JP2014215894A/ja active Pending
-
2014
- 2014-03-10 US US14/202,253 patent/US20140325271A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2019198824A1 (ja) * | 2018-04-12 | 2019-10-17 | 日本電信電話株式会社 | 制御処理装置、制御処理方法および制御処理プログラム |
JP2019185492A (ja) * | 2018-04-12 | 2019-10-24 | 日本電信電話株式会社 | 制御処理装置、制御処理方法および制御処理プログラム |
JP7438603B2 (ja) | 2020-05-20 | 2024-02-27 | ▲騰▼▲訊▼科技(深▲セン▼)有限公司 | トランザクション処理方法、装置、コンピュータデバイス及びコンピュータプログラム |
US11947524B2 (en) | 2020-05-20 | 2024-04-02 | Tencent Technology (Shenzhen) Company Limited | Transaction processing method and apparatus, computer device, and storage medium |
Also Published As
Publication number | Publication date |
---|---|
US20140325271A1 (en) | 2014-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190026190A1 (en) | Restoring data in a hierarchical storage management system | |
JP5971420B2 (ja) | 状態復元プログラム、装置、及び支援方法 | |
US10891264B2 (en) | Distributed, scalable key-value store | |
US9646030B2 (en) | Computer-readable medium storing program and version control method | |
JP6534402B2 (ja) | データ品質例外を処理するための方法、コンピュータ・プログラム、および例外エンジン | |
US10037388B2 (en) | Fast querying of social network data | |
JP2009505255A5 (ja) | ||
WO2017166815A1 (zh) | 一种用于分布式数据库系统的更新数据的方法及装置 | |
WO2018133762A1 (zh) | 文件合并方法和装置 | |
JP2014215914A (ja) | 端末装置、情報処理方法及び情報処理プログラム | |
JP2017027326A (ja) | ストレージシステムおよびストレージシステム用プログラム | |
US9395977B2 (en) | Locating program code units after software refactoring | |
JPWO2015087509A1 (ja) | 状態保存復元装置、状態保存復元方法、および、プログラム | |
JP2014215894A (ja) | 端末装置、情報処理方法及び情報処理プログラム | |
US20110093688A1 (en) | Configuration management apparatus, configuration management program, and configuration management method | |
JP6225606B2 (ja) | データベース監視装置、データベース監視方法、並びにコンピュータ・プログラム | |
JP2011070257A (ja) | ファイル検索システム | |
JP5976779B2 (ja) | キャッシュメモリ構造および方法 | |
CN110083509B (zh) | 一种日志数据的规整方法及装置 | |
JP6688433B2 (ja) | 計算機システム | |
US10366104B2 (en) | Providing instant and distributed access to a source blob via copy-on-read blobs and link blobs | |
US8161488B2 (en) | System and method for registering a subscription of interest of needed new resource in a store accessible by a plurality of resource creators and pushing the needed resource thereto by the creator based upon the registered subscription | |
WO2019126154A1 (en) | System and method for data storage management | |
JP2013105349A (ja) | 動的リンクライブラリの更新、実行方法 | |
EP2966580A1 (en) | Data re-transfer with site based three point merges using import records |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
RD01 | Notification of change of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7421 Effective date: 20151102 |