JP5598089B2 - プログラム、情報処理装置及び情報処理方法 - Google Patents

プログラム、情報処理装置及び情報処理方法 Download PDF

Info

Publication number
JP5598089B2
JP5598089B2 JP2010123138A JP2010123138A JP5598089B2 JP 5598089 B2 JP5598089 B2 JP 5598089B2 JP 2010123138 A JP2010123138 A JP 2010123138A JP 2010123138 A JP2010123138 A JP 2010123138A JP 5598089 B2 JP5598089 B2 JP 5598089B2
Authority
JP
Japan
Prior art keywords
data
content information
reception time
storage unit
executed
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.)
Expired - Fee Related
Application number
JP2010123138A
Other languages
English (en)
Other versions
JP2011248752A (ja
Inventor
敏章 佐伯
裕一 槌本
博道 小橋
美穂 村田
信貴 今村
康男 山根
博樹 馬上
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2010123138A priority Critical patent/JP5598089B2/ja
Priority to US13/117,895 priority patent/US8429136B2/en
Publication of JP2011248752A publication Critical patent/JP2011248752A/ja
Application granted granted Critical
Publication of JP5598089B2 publication Critical patent/JP5598089B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0751Error or fault detection not based on redundancy
    • G06F11/0754Error or fault detection not based on redundancy by exceeding limits
    • G06F11/0757Error or fault detection not based on redundancy by exceeding limits by exceeding a time limit, i.e. time-out, e.g. watchdogs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2053Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
    • G06F11/2094Redundant storage or storage space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/16Error detection or correction of the data by redundancy in hardware
    • G06F11/20Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
    • G06F11/2097Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements maintaining the standby controller/processing unit updated
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/82Solving problems relating to consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2201/00Indexing scheme relating to error detection, to error correction, and to monitoring
    • G06F2201/835Timestamp
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/48Indexing scheme relating to G06F9/48
    • G06F2209/484Precedence

Description

本発明は、分散データストアに関する。大規模分散データストアにおけるデータに対してオペレーションを実行する際に利用することもできる。
ネットワークを介して接続された複数のノードがデータを分散して保持することにより、可用性等の向上を実現するシステムが存在する。このようなシステムは、分散データストア(Distributed Data Store)と呼ばれることがある。
図1は、分散データストアのシステム構成の一例を示したものである。図1を用いて、分散データストアが分散トランザクションを受理した際に行われる処理の一例を説明する。例えばノードBにおける分散フレームワーク12が、オペレーションのデータを含む分散トランザクションの実行要求をクライアント端末等から受信する。ここでは、get(A1)というオペレーション(すなわち、データA1を取得するというオペレーション)のデータを受信したとする。そして、ノードBにおける分散フレームワーク12は、分散ハッシュテーブル(DHT:Distributed Hash Table)等を用いて、オペレーションの実行対象となるデータを保持するノードを特定する。分散トランザクションの実行要求に複数のオペレーションのデータが含まれる場合には、複数のノードが特定されることがあるが、ここではノードAだけが特定されたとする。すると、ノードBの分散フレームワーク12は、オペレーションのデータをノードAの分散フレームワーク11に回送する。一方、ノードAの分散フレームワーク11は、ノードBからオペレーションのデータを受信すると、当該オペレーションを実行する(すなわち、データA1の値を取得する)。さらに、ノードAの分散フレームワーク11は、ノードBにデータA1の値を送信する。そして、ノードBの分散フレームワーク12は、ノードAからデータA1の値を受信すると、クライアント端末に送信する。
このような分散データストアでは、複数のノードのうちのいずれもが分散トランザクションの実行要求を受信する可能性があり、実行要求を受信した時点ではトランザクションのシリアライズ(順序付け)は行わず、タイムスタンプ等を用いて後に解決することが行われる。
そして、このような分散データストアでは、分散トランザクションの実行要求を受信したノード(以下、レセプタと呼ぶ)とオペレーションの実行対象となるデータを保持するノード(以下、コンテナと呼ぶ)が必ずしも一致するわけではない。従って、例えばノード間の通信遅延により、コンテナに特定のオペレーションのデータが到着するタイミングが遅れると、本来実行すべき順序とは異なる順序でオペレーションを実行してしまうことがある。また、複数のノードでデータのレプリカを保持するような分散データストアでは、レプリカ間でデータを同期するタイミングが遅れると、同期が行われる前に、本来は同期の後に実行すべきオペレーションを先に実行してしまうことがある。
そして、オペレーションを実行する順序と本来の正しい実行順序が変わってしまうと、以下のような問題が生じる。例えば、あるデータに対して、1番目のオペレーションとして2を設定し、2番目のオペレーションとして3を加え、3番目のオペレーションとして4をかける必要があるとする。ここで、オペレーションが本来の順序どおりに実行された場合には、実行結果は20になる。しかし、2番目に実行すべきオペレーションと3番目に実行すべきオペレーションが逆になった場合には、実行結果は11になってしまう。すなわち、分散データストアにおけるデータに対して、実行結果が実行順序に依存するオペレーションを実行すると、正しい実行結果が得られないことがある。従って、分散データストアにおけるデータに対しては、実行結果が実行順序に依存しないオペレーション(例えば、即値を設定するオペレーションやデータの値を取得するためのオペレーション)でなければ適用が難しいという問題がある。
なお、上で述べたような分散データストアのように、複数のノードが分散して処理を行うシステムにおいては、CAP定理(CAP Theorem)という定理が成立すると言われている。CAP定理とは、Consistency(データの一貫性)と、Availability(システムの可用性)と、Tolerance to network Partitions(ネットワーク分断への耐性)とを全て同時に実現することはできないという定理である。上で述べたような分散データストアにおいては、「システムの可用性」及び「ネットワーク分断への耐性」は優先して実現すべき性質であるため、「データの一貫性」についての厳密性を緩めた形でシステムが構築されることがある。その結果、ユーザには一時的に更新前のデータが提示されるといった事態が生じてしまうことがあるが、例えば大規模掲示板の書き込み内容やショッピングサイトの商品説明ページなどの場合、一時的にそのような事態が生じても問題はないことが多い。このような、ある時点ではデータの整合が取れていないかもしれないが、最終的に整合が取れていれば良いという考え方は、結果整合性(Eventual Consistency)と呼ばれることがある。
従来、分散データストアに関する技術として、以下のような技術が存在する。具体的には、複数のノードでデータのレプリカを保持し、バックグラウンドでデータへの変更をレプリカに反映させていくことにより、可用性を確保する。データに矛盾(conflict)が生じた場合には、アプリケーション側において、データの読み出し時に矛盾を解消するための処理を行う。
しかし、上で述べたようなオペレーションの実行順序の誤りを分散データストア側において解消し、実行順序に依存性のあるオペレーション等を実行可能にするための技術は存在しない。
G. DeCandia et al., "Dynamo: Amazon's Highly Available Key-value Store", Proc. SOSP 2007
従って、1つの側面では、分散データストアにおいて、実行結果が実行順序に依存するオペレーションを適切に処理するための技術を提供することを目的とする。
本情報処理方法は、定のデータに対して実行すべき第1のオペレーションの内容を表す内容情報及び当該第1のオペレーションの内容情報の受信時刻である第1の受信時刻を取得、特定のデータに対して既に実行したペレーションの内容情報と、当該第2のオペレーションの内容情報の受信時刻とを応付けて格納するデータ格納部から、第1の受信時刻より後の受信時刻に対応付けられている第2のオペレーションの内容情報を特定し取得された第1のオペレーションの内容情報及び特定された第2のオペレーションの内容情報に基づき、第のオペレーション及び第のオペレーションを、受信時刻が早い順に特定のデータに対して実行する処理を含む。
分散データストアにおいて、実行結果が実行順序に依存するオペレーションを適切に処理することができるようになる。
図1は、分散データストアの一例を示す図である。 図2は、第1の実施の形態に係る情報処理装置の機能ブロック図である。 図3は、第1の実施の形態に係る処理フローを示す図である。 図4は、第2の実施の形態に係るシステムの構成図である。 図5は、第2の実施の形態に係るノード装置の機能ブロック図である。 図6は、ローカルデータ格納部に格納されるオペレーション履歴データの一例を示す図である。 図7は、ローカルデータ格納部に格納されるアプリケーション通知リストの一例を示す図である。 図8は、レセプタとなるノードの処理フローを示す図である。 図9は、レセプタとなるノードの処理フローを示す図である。 図10は、コンテナとなるノードの処理フローを示す図である。 図11は、コンテナとなるノードの処理フローを示す図である。 図12は、オペレーション履歴データについて説明するための図である。 図13は、再実行の方法について説明するための図である。 図14は、コンピュータの機能ブロック図である。
[実施の形態1]
第1の実施の形態に係る情報処理装置の機能ブロック図を図2に示す。第1の実施の形態に係る情報処理装置は、取得部1011と、再実行部1013と、データ格納部1015とを有する。取得部1011は、オペレーションのデータ及び当該オペレーションのデータの受信時刻を取得する処理を行う。再実行部1013は、データ格納部1015に格納されているデータを用いて処理を行う。データ格納部1015には、特定のデータに対して既に実行したオペレーションのデータと当該オペレーションのデータの受信時刻とが特定のデータに対応付けて格納されている。なお、図1に示した情報処理装置を複数用いて処理システムが構築される。
次に、図2に示した情報処理装置の処理内容を図3を用いて説明する。まず、取得部1011は、特定のデータに対して実行すべき第1のオペレーションのデータ及び当該第1のオペレーションのデータの受信時刻を取得する(ステップS1001)。取得部1011による処理の結果は、再実行部1013に出力される。そして、再実行部1013は、データ格納部1015において特定のデータに対応付けて格納されている受信時刻のいずれより、第1のオペレーションのデータの受信時刻が後であるか判断する(ステップS1003)。また、再実行部1013は、第1のオペレーションのデータの受信時刻がデータ格納部1015に特定のデータに対応付けて格納されている受信時刻のいずれよりも後ではないと判断された場合、第2のオペレーション及び第1のオペレーションを、受信時刻が早い順に実行する(ステップS1005)。
以上のような処理を実施することにより、第1及び第2のオペレーションの実行結果が実行順序に依存する場合であっても正しい実行結果を得ることができるようになる。
[実施の形態2]
次に、第2の実施の形態について説明する。図4に、第2の実施の形態に係るシステムの構成図を示す。例えばインターネットであるネットワーク1には、ノード装置31乃至33と、ユーザ端末5と、アプリケーション・プログラム71を含むユーザ端末7とが接続されている。ノード装置31乃至33はネットワーク9を介して互いに接続されており、ノード装置31乃至33を含むシステムは、分散データストアを実現する。図4では、ノード装置は3台、ユーザ端末は4台である例を示しているが、数に限定はない。
図5に、ノード装置の機能ブロック図を示す。ノード装置は、通信部301と、ロケータ部302と、データ管理部303と、ローカルデータ格納部304とを含む。
通信部301は、ユーザ端末5から分散トランザクションの実行要求を受信し、当該実行要求に含まれるオペレーションの実行対象となるデータを保持するノード装置に対してオペレーションのデータを回送する処理等を実施する。なお、通信部301は、実行要求に含まれるオペレーションの実行対象となるデータを自ノード装置が保持している場合には、データ管理部303に対してオペレーションのデータを出力する。ロケータ部302は、例えばコンシステント・ハッシング(Consistent Hashing)等によりオペレーションの実行対象となるデータを保持するノードを特定する。データ管理部303は、通信部301から受け取ったオペレーションのデータに基づき、オペレーションを実行する処理等を行う。また、データ管理部303は、ローカルデータ格納部304に格納されているデータを管理する。
図6に、ローカルデータ格納部304に格納されているオペレーション履歴データの一例を示す。図6の例では、各データに対応付けて、当該データに対して既に実行したオペレーションのデータと、当該オペレーションのデータに対して付与されたタイムスタンプが格納されるようになっている。図6の例では、例えばデータAに対しては、タイムスタンプ「t=0」が付与されている「Set(1)」というオペレーションと、タイムスタンプ「t=2」が付与されている「Mul(3)」というオペレーションと、タイムスタンプ「t=3」が付与されている「Add(2)」というオペレーションとが既に実行されたことを示している。
なお、本実施の形態における「実行結果が実行順序に依存するオペレーション」には、更新前の値を用いるオペレーションが含まれる。例えば、更新前の値をxとし、更新後の値をyとした場合、y=11(即値代入)、y=x.Inc()=x+1(インクリメント)、y=x.Add(2)=x+2(加算)、y=x2+2x+3、y=sin(x)等が該当する。その他、デクリメント、減算、乗法及び除法等も該当する。
図7に、ローカルデータ格納部304に格納されているアプリケーション通知リストの一例を示す。図7の例では、データ名の列と、アプリケーションの列とが含まれる。
次に、図8乃至図13を用いて、図4に示したシステムの処理内容について説明する。まず、図8及び図9を用いて、レセプタとなるノード装置において行われる処理について説明する。ここでは、ノード装置32がレセプタとなる場合を例にして説明する。
まず、ノード装置32の通信部301は、実行すべきオペレーションのデータを含む分散トランザクションの実行要求をユーザ端末5から受信し、メインメモリ等の記憶装置に格納する(図8:ステップS1)。
また、ノード装置32の通信部301は、ステップS1において受信した分散トランザクションの実行要求に対しタイムスタンプを付与する(ステップS3)。例えばLamportのアルゴリズム等を用いて、ノード装置31乃至33の間で予め論理クロック(論理時計)の値を交換しておき、その論理クロックの値をタイムスタンプとして付与する。
そして、ノード装置32の通信部301は、分散トランザクションの実行要求に含まれる未処理の1つ分のオペレーションのデータを特定する(ステップS5)。また、ステップS5において、ノード装置32の通信部301は、当該オペレーションのデータをノード装置32のロケータ部302に出力する。
一方、ノード装置32のロケータ部302は、通信部301から受け取ったオペレーションのデータに含まれる、オペレーションの実行対象となるデータを特定するためのデータに対して例えばコンシステント・ハッシング等を行うことにより、当該オペレーションの実行対象となるデータを保持するノード装置(コンテナ)を特定する(ステップS7)。ここでは、ノード装置31がコンテナとして特定されたとする。さらに、ステップS7において、ノード装置32のロケータ部302は、ノード装置31がコンテナとして特定された旨をノード装置32の通信部301に対して通知する。
そして、ノード装置32の通信部301は、ロケータ部302からの通知を受けると、ステップS5において特定されたオペレーションのデータと、ステップS3において付与されたタイムスタンプとを含むオペレーション実行指示をコンテナであるノード装置31に回送する(ステップS9)。なお、もしステップS7においてノード装置32がコンテナとして特定された場合には、通信部301は、ステップS5において特定されたオペレーションのデータと、ステップS3において付与されたタイムスタンプとを含むオペレーション実行指示をノード装置32のデータ管理部303に通知する。
そして、ノード装置32の通信部301は、全てのオペレーションのデータを処理したか判断する(ステップS11)。全てのオペレーションのデータを処理していない場合(ステップS11:Noルート)、次のオペレーションのデータについて処理を実施するため、ステップS5の処理に戻る。一方、全てのオペレーションのデータを処理した場合(ステップS11:Yesルート)、処理は端子Aを介して図9のステップS13に移行する。
図9を用いて、端子A以降の処理について説明する。その後、ノード装置32の通信部301は、オペレーションの実行結果をコンテナから受信する(ステップS13)。なお、ステップS13においては、ノード装置32の通信部301は、ノード装置32のデータ管理部303からオペレーションの実行結果を取得する場合もある。
そして、ノード装置32の通信部301は、ステップS13において受信したオペレーションの実行結果のデータを集約してトランザクションの実行結果のデータを生成し、ユーザ端末5に送信する(ステップ15)。オペレーションの実行結果を集約する方法は、トランザクションの種別毎に異なる。
また、ノード装置32の通信部301は、オペレーションの再実行が行われたデータと当該データのデータ名とアプリケーションの通知リストとを含む再実行発生通知をコンテナから受信する(ステップS17)。そして、ノード装置32の通信部301は、オペレーションの再実行が行われたデータと当該データのデータ名とを、アプリケーション通知リストにより特定されるアプリケーション・プログラム71に通知する(ステップS19)。ステップS19においては、例えば、指定されたIPアドレス及びポート番号を用いてメッセージを送信したり、指定されたWeb API(Application Programming Interface)を呼び出したり、又は指定された関数をデータサービス用ライブラリ経由でコールバックすることにより行う。また、ステップS19においては、データ名だけを通知するようにしてもよい。なお、コンテナにおいてオペレーションの再実行が行われていない場合には、ステップS17及びS19は実施されない。そして処理を終了する。
以上のような処理を実施することにより、分散トランザクションの実行要求を処理することができるようになる。また、オペレーションの再実行が行われたことを知りたい者等は、自身が操作する端末等に搭載されたアプリケーション・プログラムを介して通知を受けることができるようになる。
次に、図10乃至図13を用いて、コンテナとなるノード装置において行われる処理について説明する。ここでは、コンテナがノード装置31であり、レセプタがノード装置32である場合を例にして説明する。
まず、ノード装置31の通信部301は、オペレーションのデータ及びタイムスタンプを含むオペレーション実行指示をレセプタであるノード装置32から受信し(ステップS31)、ノード装置31のデータ管理部303に出力する。
そして、ノード装置31のデータ管理部303は、ステップS31において受信したオペレーションのデータが、ローカルデータ格納部304に格納されているアプリケーション通知リストを更新するためのオペレーションであることを表しているか判断する(ステップS33)。アプリケーション通知リストを更新するためのオペレーションであると判断された場合には(ステップS33:Yesルート)、ノード装置31のデータ管理部303は、ローカルデータ格納部304に格納されているアプリケーション通知リストの更新を行う(ステップS35)。ステップS35においては、例えば、アプリケーション通知リストに含まれるデータに対して変更、削除又は追加等の処理が行われる。また、ノード装置31のデータ管理部303は、更新の結果を通知するためのデータを生成し、ノード装置31の通信部301に出力する。そして、ノード装置31の通信部301は、更新の結果を通知するためのデータをレセプタであるノード装置32に送信する(ステップS37)。そして端子Cを介して処理を終了する。
一方、アプリケーション通知リストを更新するためのオペレーションではないと判断された場合(ステップS33:Noルート)、ノード装置31のデータ管理部303は、ステップS31において受信したオペレーションのデータが、ローカルデータ格納部304に格納されているデータの値を取得するためのオペレーション(例えばGetというオペレーション)であることを表しているかを判断する(ステップS39)。ローカルデータ格納部304に格納されているデータの値を取得するためのオペレーションではないと判断された場合(ステップS39:Noルート)、処理は端子Bを介して図11のステップS51に移行する。
一方、ローカルデータ格納部304に格納されているデータの値を取得するためのオペレーションであると判断された場合(ステップS39:Yesルート)、ノード装置31のデータ管理部303は、ステップS31において受信したタイムスタンプ及びローカルデータ格納部304においてオペレーションの実行対象となるデータに対応付けて格納されているタイムスタンプに従い、既に実行したオペレーションをタイムスタンプが古い順に再度実行し、オペレーションの実行対象となるデータの値を取得する(ステップS41)。また、ノード装置31のデータ管理部303は、ステップS41において取得したデータの値をレセプタであるノード装置32に送信する(ステップS43)。そして、処理は端子Cを介して終了する。
次に、図11を用いてステップS51以降の処理について説明する。ノード装置31のデータ管理部303は、ステップS31において受信したオペレーションのデータ及びタイムスタンプをローカルデータ格納部304に格納されているオペレーション履歴データに追加する(ステップS51)。
ここで、図12及び図13を用いて、オペレーション履歴データにデータを追加する方法について説明する。図12の例は、データAに関するオペレーション履歴データにデータが追加されていく様子を示している。図12の例では、最初の段階では、データAに関するオペレーション履歴データは存在しないが、次の段階において、「Set(7),t=0」というデータが格納され、データAには7が設定されている。さらに次の段階では、「Add(1),t=2」というデータが追加され、データAの値は8になっている。さらに次の段階において、「Mul(2),t=3」というデータが追加され、データAの値は16になっている。そして、最後の段階において、「Sub(3),t=4」というデータが追加され、データAの値は13になっている。図12の例では、3番目の段階から最後の段階までにおいて、新たに追加されたオペレーションに対して付与されているタイムスタンプは、既に履歴として格納されているタイムスタンプのいずれよりも後のものであるため、オペレーションの到着順でそのままオペレーションを実行している。なお、ここでは、tの値が大きいほど後に付与されたタイムスタンプであるとする。
一方、図13は、「t=4」というタイムスタンプが付与されたオペレーションを実行した後に、「t=3」というタイムスタンプが付与されたオペレーションが到着した場合の例である。「t=4」というタイムスタンプが付与された「Mul(3)」というオペレーションを実行した段階では、データAの値は24になっている。ここで、「t=3」というタイムスタンプが付与された「Add(2)」というオペレーションが到着した場合に、そのままこのオペレーションを実行すると、データAの値は26になる。しかし、本来のオペレーションの実行順序は、「t=3」のオペレーションを実行した後に「t=4」のオペレーションを実行するという順序である。
そこで本実施の形態においては、図13で述べた例のように本来先に実行すべきオペレーションが後に到着したような場合には、以下のような対応を行う。すなわち、タイムスタンプにより特定される実行順序どおりに並ぶように、オペレーションのデータ及びタイムスタンプをオペレーション履歴データに追加する。さらに、オペレーション履歴データを用いて、データAに対してオペレーションを再実行する。図13の例では、このような再実行を行うことにより、データAには30という正しい値が設定される。なお、本実施の形態においては、データの値を取得するためのオペレーションのデータは、オペレーション履歴データには追加されない。データの値を取得するためのオペレーションは、データの値には影響を及ぼさないためである。
図11の説明に戻り、ノード装置31のデータ管理部303は、ステップS31において受信したタイムスタンプが、ローカルデータ格納部に304においてオペレーションの実行対象となるデータに対応付けて格納されているタイムスタンプのいずれよりも後のタイムスタンプ(すなわち、最も新しいタイムスタンプ)であるかを判断する(ステップS53)。
ステップS53において最も新しいタイムスタンプであると判断された場合(ステップS53:Yesルート)、ノード装置31のデータ管理部303は、ステップS31において受信したオペレーションのデータに基づきオペレーションを実行する(ステップS55)。そして、オペレーションの実行結果をレセプタであるノード装置32に送信する(ステップS57)。
一方、ステップS53において最も新しいタイムスタンプではないと判断された場合(ステップS53:Noルート)、ノード装置31のデータ管理部303は、ステップS31において受信したタイムスタンプ及びローカルデータ格納部304においてオペレーションの実行対象となるデータに対応付けて格納されているタイムスタンプにより特定される実行順序に従い、既に実行したオペレーションをタイムスタンプが古い順に再度実行し、さらにステップS31において受信したオペレーションのデータに係るオペレーションを実行する(ステップS59)。そして、ノード装置31のデータ管理部303は、再実行が行われたデータと当該データのデータ名及びアプリケーション通知リストを含む再実行発生通知を生成し、レセプタであるノード装置32に送信する(ステップS61)。そして、処理を終了する。
以上のような処理を実施することにより、分散データストアにおいて、データの値を取得するためのオペレーションのみならず、実行結果が実行順序に依存するオペレーションを適切に処理できるようになる。
以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば、上で説明した情報処理装置及びノード装置の機能ブロック図は必ずしも実際のプログラムモジュール構成に対応するものではない。
また、上で説明した各テーブルの構成は一例であって、必ずしも上記のような構成でなければならないわけではない。さらに、処理フローにおいても、処理結果が変わらなければ処理の順番を入れ替えることも可能である。さらに、並列に実行させるようにしても良い。
なお、上で述べた例では、複数のノード装置が稼働するような例を示しているが、例えば単体の装置に複数のプロセスを起動させて上で述べたような処理を実行させるようにしてもよい。
なお、上で述べたノード装置31乃至33は、コンピュータ装置によって実現することもできる。例えば、図14に示すように、メモリ2501とプロセッサ(CPU2503)とハードディスク・ドライブ(HDD)2505と表示装置2509に接続される表示制御部2507とリムーバブル・ディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とを備え、これらがバス2519を介して接続されたコンピュータを用いてもよい。オペレーティング・システム(OS:Operating System)及び本実施例における処理を実施するためのアプリケーション・プログラムは、HDD2505等の記憶部に格納しておき、CPU2503により実行される際にはHDD2505からメモリ2501に読み出して利用することもできる。必要に応じてCPU2503は、表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、必要な動作を行ってもよい。また、処理途中のデータについては、メモリ2501に格納され、必要があればHDD2505に格納してもよい。実施例では、上で述べた処理を実施するためのアプリケーション・プログラムはコンピュータ読み取り可能なリムーバブル・ディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされてもよい。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及び必要なアプリケーション・プログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。なお、図2のデータ格納部1015は、図14におけるメモリ2501やHDD2505等として実現してもよい。図5のローカルデータ格納部304についても同様である。図2の取得部1011及び再実行部1013は、プロセッサ2503及びプログラムの組み合わせ、すなわち、プロセッサ2503がプログラムを実行することにより実現してもよい。より具体的には、プロセッサ2503は、HDD2505又はメモリ2501に記憶されたプログラムに従った動作を行うことで、上で述べたような処理部として機能してもよい。図5の通信部301、ロケータ部302及びデータ管理部303についても同様である。
以上述べた本技術の実施の形態をまとめると以下のようになる。
本情報処理方法は、複数のノード装置を含む処理システムにおける複数のノード装置のうちのいずれかのノード装置により実行される。そして、本情報処理方法は、特定のデータに対して実行すべき第1のオペレーションのデータ(例えば演算内容を表すデータであり、さらに具体的には、例えば加算を表す「Add」というデータ及び加算する値)及び当該第1のオペレーションのデータの受信時刻を取得する取得ステップと、特定のデータに対して既に実行した第2のオペレーションのデータと当該第2のオペレーションのデータの受信時刻とを特定のデータに対応付けて格納するデータ格納部において特定のデータに対応付けて格納されている受信時刻のいずれより、第1のオペレーションのデータの受信時刻が後であるか判断するステップと、第1のオペレーションのデータの受信時刻がデータ格納部に特定のデータに対応付けて格納されている受信時刻のいずれよりも後ではないと判断された場合、第2のオペレーション及び第1のオペレーションを、受信時刻が早い順に実行する再実行ステップとを含む。
このようにすれば、実行結果が実行順序に依存するオペレーションを適切に処理できるようになる。
また、第1のオペレーションのデータの受信時刻がデータ格納部に特定のデータに対応付けて格納されている受信時刻のいずれよりも後であると判断された場合、特定のデータに対して第1のオペレーションを実行するステップをさらに含むようにしてもよい。第1のオペレーションが第2のオペレーションよりも後に実行すべきオペレーションである場合には、第1のオペレーションだけを実行すれば正しい実行結果を得ることができるからである。
また、上で述べたデータ格納部には、特定のデータに対応付けてアプリケーション・プログラムの通知リストがさらに格納されるようにしてもよい。そして、再実行ステップが実行された場合には、データ格納部に特定のデータに対応付けて格納されているアプリケーション・プログラムの通知リストにより特定されるアプリケーション・プログラムに再実行ステップの実行結果を通知するためのデータを生成するステップをさらに含むようにしてもよい。これにより、特定のデータに対してオペレーションの再実行が行われたことを知りたい者等は、自身が操作する端末等に搭載されたアプリケーション・プログラムを介して通知を受けることができるようになる。
また、上で述べた取得ステップが、第1のオペレーションのデータをクライアント端末から受信するステップと、第1のオペレーションのデータの受信時刻を取得するステップとを含むようにしてもよい。これにより、オペレーションのデータをクライアント端末から直接受信するような場合であっても対処可能になる。
また、上で述べた取得ステップが、複数のノード装置のうちの他のノード装置から、第1のオペレーションのデータ及び当該第1のオペレーションのデータの受信時刻を受信するステップを含むようにしてもよい。これにより、オペレーションのデータのレセプタとなるノードとコンテナとなるノードが異なる場合であっても対処可能になる。
なお、上記方法による処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD−ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。
以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。
(付記1)
複数のノード装置を含む処理システムにおける前記複数のノード装置のうちのいずれかのノード装置に実行させるためのプログラムであって、
特定のデータに対して実行すべき第1のオペレーションのデータ及び当該第1のオペレーションのデータの受信時刻を取得する取得ステップと、
前記特定のデータに対して既に実行した第2のオペレーションのデータと当該第2のオペレーションのデータの受信時刻とを前記特定のデータに対応付けて格納するデータ格納部において前記特定のデータに対応付けて格納されている前記受信時刻のいずれより、前記第1のオペレーションのデータの受信時刻が後であるか判断するステップと、
前記第1のオペレーションのデータの受信時刻が前記データ格納部に前記特定のデータに対応付けて格納されている前記受信時刻のいずれよりも後ではないと判断された場合、前記第2のオペレーション及び前記第1のオペレーションを、受信時刻が早い順に実行する再実行ステップと、
を実行させるためのプログラム。
(付記2)
前記第1のオペレーションのデータの受信時刻が前記データ格納部に前記特定のデータに対応付けて格納されている前記受信時刻のいずれよりも後であると判断された場合、前記特定のデータに対して前記第1のオペレーションを実行するステップ
をさらに実行させるための付記1記載のプログラム。
(付記3)
前記データ格納部には、前記特定のデータに対応付けてアプリケーション・プログラムの通知リストがさらに格納されており、
前記再実行ステップが実行された場合には、前記データ格納部に前記特定のデータに対応付けて格納されている前記アプリケーション・プログラムの通知リストにより特定されるアプリケーション・プログラムに前記再実行ステップの実行結果を通知するためのデータを生成するステップ
をさらに実行させるための付記1又は2記載のプログラム。
(付記4)
前記取得ステップが、
前記第1のオペレーションのデータをクライアント端末から受信するステップと、
前記第1のオペレーションのデータの受信時刻を取得するステップと、
を含む付記1乃至3のいずれか1つ記載のプログラム。
(付記5)
前記取得ステップが、
前記複数のノード装置のうちの他のノード装置から、前記第1のオペレーションのデータ及び当該第1のオペレーションのデータの受信時刻を受信するステップ
を含む付記1乃至3のいずれか1つ記載のプログラム。
(付記6)
特定のデータに対して既に実行した第1のオペレーションのデータと当該第1のオペレーションのデータの受信時刻とを前記特定のデータに対応付けて格納するデータ格納部と、
特定のデータに対して実行すべき第2のオペレーションのデータ及び当該第2のオペレーションのデータの受信時刻を取得する取得部と、
前記データ格納部において前記特定のデータに対応付けて格納されている前記受信時刻のいずれより、前記第2のオペレーションのデータの受信時刻が後であるか判断し、前記第2のオペレーションのデータの受信時刻が前記データ格納部に前記特定のデータに対応付けて格納されている前記受信時刻のいずれよりも後ではないと判断された場合、前記第1のオペレーション及び前記第2のオペレーションを、受信時刻が早い順に実行する再実行部と、
を有する情報処理装置。
(付記7)
複数のノード装置を含む処理システムにおける前記複数のノード装置のうちのいずれかのノード装置により実行される情報処理方法であって、
特定のデータに対して実行すべき第1のオペレーションのデータ及び当該第1のオペレーションのデータの受信時刻を取得するステップと、
前記特定のデータに対して既に実行した第2のオペレーションのデータと当該第2のオペレーションのデータの受信時刻とを前記特定のデータに対応付けて格納するデータ格納部において前記特定のデータに対応付けて格納されている前記受信時刻のいずれより、前記第1のオペレーションのデータの受信時刻が後であるか判断するステップと、
前記第1のオペレーションのデータの受信時刻が前記データ格納部に前記特定のデータに対応付けて格納されている前記受信時刻のいずれよりも後ではないと判断された場合、前記第2のオペレーション及び前記第1のオペレーションを、受信時刻が早い順に実行する再実行ステップと、
を含む情報処理方法。
1,9 ネットワーク 31,32,33 ノード装置
5,7 ユーザ端末
301 通信部 302 ロケータ部
303 データ管理部 304 ローカルデータ格納部
1011 取得部 1013 再実行部
1015 データ格納部

Claims (8)

  1. コンピュータに
    特定のデータに対して実行すべき第1のオペレーションの内容を表す内容情報及び当該第1のオペレーションの内容情報の受信時刻である第1の受信時刻を取得
    前記特定のデータに対して既に実行したペレーションの内容情報と、当該ペレーションの内容情報の受信時刻とを応付けて格納するデータ格納部から、前記第1の受信時刻より後の受信時刻に対応付けられている第2のオペレーションの内容情報を特定し
    取得された前記第1のオペレーションの内容情報及び特定された前記第2のオペレーションの内容情報に基づき、前記第のオペレーション及び前記第のオペレーションを、受信時刻が早い順に前記特定のデータに対して実行する
    処理を実行させるログラム。
  2. 前記第1のオペレーションの内容情報の受信時刻が前記データ格納部に納されている前記受信時刻のいずれよりも後である合、前記特定のデータに対して、取得された前記第1のオペレーションの内容情報に基づき前記第1のオペレーションを実行す
    処理をさらに実行させる求項1記載のプログラム。
  3. 前記データ格納部には、プリケーション・プログラムの通知リストがさらに格納されており、
    前記第1のオペレーション及び前記第2のオペレーションを受信時刻が早い順に実行した場合には、前記データ格納部に納されている前記アプリケーション・プログラムの通知リストにより特定されるアプリケーション・プログラムに行結果を通知するためのデータを生成す
    処理をさらに実行させる求項1又は2記載のプログラム。
  4. 前記取得する処理において
    前記第1のオペレーションの内容情報をクライアント端末から受信
    前記第1のオペレーションの内容情報の受信時刻を取得する
    求項1乃至3のいずれか1つ記載のプログラム。
  5. 前記取得する処理において
    前記コンピュータとは異なる他のコンピュータから、前記第1のオペレーションの内容情報及び当該第1のオペレーションの内容情報の受信時刻を受信す
    求項1乃至3のいずれか1つ記載のプログラム。
  6. 前記第2のオペレーションは、前記第1のオペレーションを実行した後の前記特定のデータに対して実行すべきオペレーションである
    請求項1乃至5のいずれか1つ記載のプログラム。
  7. 特定のデータに対して既に実行したペレーションの内容を表す内容情報と、当該ペレーションの内容情報の受信時刻とを応付けて格納するデータ格納部と、
    前記特定のデータに対して実行すべき第のオペレーションの内容情報及び当該第のオペレーションの内容情報の受信時刻である第1の受信時刻を取得する取得部と、
    前記データ格納部から、前記第1の受信時刻より後の受信時刻に対応付けられている第2のオペレーションの内容情報を特定し、取得された前記第1のオペレーションの内容情報及び特定された前記第2のオペレーションの内容情報に基づき、前記第1のオペレーション及び前記第2のオペレーションを、受信時刻が早い順に前記特定のデータに対して実行する再実行部と、
    を有する情報処理装置。
  8. コンピュータが
    特定のデータに対して実行すべき第1のオペレーションの内容を表す内容情報及び当該第1のオペレーションの内容情報の受信時刻である第1の受信時刻を取得
    前記特定のデータに対して既に実行したペレーションの内容情報と、当該ペレーションの内容情報の受信時刻とを応付けて格納するデータ格納部から、前記第1の受信時刻より後の受信時刻に対応付けられている第2のオペレーションの内容情報を特定し
    取得された前記第1のオペレーションの内容情報及び特定された前記第2のオペレーションの内容情報に基づき、前記第のオペレーション及び前記第のオペレーションを、受信時刻が早い順に前記特定のデータに対して実行する
    処理を実行する情報処理方法。
JP2010123138A 2010-05-28 2010-05-28 プログラム、情報処理装置及び情報処理方法 Expired - Fee Related JP5598089B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010123138A JP5598089B2 (ja) 2010-05-28 2010-05-28 プログラム、情報処理装置及び情報処理方法
US13/117,895 US8429136B2 (en) 2010-05-28 2011-05-27 Information processing method and information processing apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010123138A JP5598089B2 (ja) 2010-05-28 2010-05-28 プログラム、情報処理装置及び情報処理方法

Publications (2)

Publication Number Publication Date
JP2011248752A JP2011248752A (ja) 2011-12-08
JP5598089B2 true JP5598089B2 (ja) 2014-10-01

Family

ID=45413905

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010123138A Expired - Fee Related JP5598089B2 (ja) 2010-05-28 2010-05-28 プログラム、情報処理装置及び情報処理方法

Country Status (2)

Country Link
US (1) US8429136B2 (ja)
JP (1) JP5598089B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9571329B2 (en) * 2013-03-11 2017-02-14 International Business Machines Corporation Collective operation management in a parallel computer
US10657121B2 (en) 2014-08-21 2020-05-19 Nec Corporation Information processing device, data processing method, and recording medium

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187213A (ja) 1992-12-17 1994-07-08 Fuji Xerox Co Ltd ファイルアクセス履歴管理方式
US6490567B1 (en) 1997-01-15 2002-12-03 At&T Corp. System and method for distributed content electronic commerce
US6539381B1 (en) * 1999-04-21 2003-03-25 Novell, Inc. System and method for synchronizing database information
US6859821B1 (en) * 1999-07-19 2005-02-22 Groove Networks, Inc. Method and apparatus for prioritizing data change requests and maintaining data consistency in a distributed computer system equipped for activity-based collaboration
JP4189332B2 (ja) * 2004-01-30 2008-12-03 株式会社東芝 データベース管理システム、データベース管理方法、データベース登録要求プログラムおよびデータベース管理プログラム
JP2007241324A (ja) * 2004-08-17 2007-09-20 Nippon Telegr & Teleph Corp <Ntt> 多重化データベースシステム及びその同期化方法、仲介装置、仲介プログラム
KR20060053169A (ko) 2004-10-09 2006-05-19 마이크로소프트 코포레이션 정적 및 동적 데이타 세트들의 인터랙션
US20060080288A1 (en) 2004-10-11 2006-04-13 Microsoft Corporation Interaction of static and dynamic data sets
US7992091B2 (en) * 2006-03-30 2011-08-02 At&T Intellectual Property I, L.P. Message-oriented divergence and convergence of message documents
US8296337B2 (en) * 2006-12-06 2012-10-23 Fusion-Io, Inc. Apparatus, system, and method for managing data from a requesting device with an empty data token directive
US8660988B2 (en) * 2008-01-07 2014-02-25 28Msec Inc. Fine-grained and concurrent access to a virtualized disk in a distributed system

Also Published As

Publication number Publication date
US8429136B2 (en) 2013-04-23
US20120136837A1 (en) 2012-05-31
JP2011248752A (ja) 2011-12-08

Similar Documents

Publication Publication Date Title
US20200184108A1 (en) Container update system
US9971622B2 (en) Technologies for application migration using lightweight virtualization
EP3387528B1 (en) Updating dependent services
US8060892B2 (en) Executing business logic extensions on a client computing system
US10097659B1 (en) High performance geographically distributed data storage, retrieval and update
US20130091376A1 (en) Self-repairing database system
US10411961B2 (en) Image management in cloud environments
WO2019075774A1 (zh) 设备参数配置方法、装置、计算机设备和存储介质
US10606661B2 (en) On-demand provisioning of customized developer environments
CN109245908B (zh) 一种主从集群切换的方法和装置
JP2017123188A (ja) テナント移行にわたるテナント・データのリカバリ
US20150088825A1 (en) Virtual machine storage replication schemes
WO2019109519A1 (zh) 业务规则管理方法、装置、设备及计算机可读存储介质
CN111338834B (zh) 数据存储方法和装置
JP5598089B2 (ja) プログラム、情報処理装置及び情報処理方法
TWI514279B (zh) 伺服器系統與韌體更新方法
CN112804366B (zh) 用于解析域名的方法和装置
US11816177B2 (en) Streaming static web page generation
CN113742376A (zh) 一种同步数据的方法、第一服务器以及同步数据的系统
CN113760469A (zh) 分布式计算的方法和装置
CN113761075A (zh) 切换数据库的方法、装置、设备和计算机可读介质
US10015248B1 (en) Syncronizing changes to stored data among multiple client devices
CN109587224B (zh) 数据处理方法、装置、电子设备及计算机可读介质
US20230409556A1 (en) Techniques for synchronous access to database replicas
US20230246916A1 (en) Service map conversion with preserved historical information

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130403

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140128

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140328

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140715

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140728

R150 Certificate of patent or registration of utility model

Ref document number: 5598089

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees