JP5952960B2 - 計算機システム、計算機システム管理方法及びプログラム - Google Patents
計算機システム、計算機システム管理方法及びプログラム Download PDFInfo
- Publication number
- JP5952960B2 JP5952960B2 JP2015512218A JP2015512218A JP5952960B2 JP 5952960 B2 JP5952960 B2 JP 5952960B2 JP 2015512218 A JP2015512218 A JP 2015512218A JP 2015512218 A JP2015512218 A JP 2015512218A JP 5952960 B2 JP5952960 B2 JP 5952960B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- computer
- sequence number
- control unit
- recovery
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/275—Synchronous replication
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/162—Delete operations
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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
- G06F16/2308—Concurrency control
- G06F16/2336—Pessimistic concurrency control approaches, e.g. locking or multiple versions without time stamps
- G06F16/2343—Locking methods, e.g. distributed locking or locking implementation details
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、複数の計算機から構成される分散データベースに関する。
近年、Webを用いたアプリケーションを実行する計算システムにおいてデータ量が爆発的に増大しており、複数のサーバにデータを分散させることによって、データへのアクセス性能を向上させるシステムが様々知られている。例えば、RDBMS(Relational DataBase Management System)では、データを所定の範囲毎に分割し、分割されたデータを複数のサーバに配置することによって、システム全体のアクセス性能を向上させる方法が知られている。
また、キャッシュサーバ等に用いられるシステムとして、KVS(Key Value Store)等のNoSQL(Not only SQL)データベースが知られている。
KVSでは、データに高速にアクセス可能な揮発性の記憶媒体、例えばメモリに、データを格納する構成(メモリストア)、データ格納の永続性に優れる不揮発性の記録媒体、例えば、SSD(Solid State Disk)やHDD等に、データを格納する構成(ディスクストア)、又は、前述したものを併用する構成等の種々の構成がとられている。
メモリストア及びディスクストアには、データ(バリュー)と、データの識別子(キー)とがペアとなったレコードが複数格納される。
インメモリ型分散KVSでは、複数のサーバからクラスタを構成して、そのクラスタに含まれるサーバのメモリ上に構成されるKVSである。これによって、データアクセスの高速化、及びシステムの可用性が実現される。
分散KVSを構成する各サーバは、所定の管理範囲(例えば、キーレンジ)のデータを格納する。また、分散KVSではデータの信頼性を確保するために、各サーバは他のサーバが管理する管理範囲に含まれるデータの複製データを格納する。
各サーバは、管理範囲に含まれるデータのマスタサーバとして処理を実行する。すなわち、所定のキーを含む読み出し要求に対して、そのキーに対応するデータが含まれる管理範囲を管理するサーバが、キーに対応するデータを読み出すこととなる。また、各サーバは、他のサーバが管理する管理範囲の複製データのスレーブサーバとして稼働する。
以下の説明では、マスタサーバとして管理するデータをマスタデータと記載し、スレーブサーバとして管理するデータをスレーブデータとも記載する。
したがって、分散KVSでは、一つのサーバに障害が発生した場合であっても、当該サーバのマスタデータの複製データを保持する他のサーバが、新たなマスタサーバとして処理を継続することができる。
前述したように分散KVSを構成するサーバには、管理サーバのような特別なサーバが存在しないため単一点障害が存在しない。すなわち、任意のサーバに障害が発生した場合であっても他のサーバが処理を継続できるため、計算機システムが停止することがない。したがって、分散KVSは耐障害性も確保される。
なお、スレーブサーバの数、すなわち、複製データの格納先となるサーバの数は、計算機システムによって任意に設定することができる。以下、一つの管理範囲に対するスレーブサーバの数を多重度とも記載する。
分散KVSを構成する一つのサーバが停止した場合、分散KVSの多重度は一つ減少した状態となる。分散KVSにおける多重度以上のサーバが停止すると、分散KVSを用いた業務を継続できなくなる。そのため、速やかに分散KVSの多重度を回復する必要がある。以下の説明では、分散KVSの多重度を回復させることを「復旧」と記載する。
分散KVSの復旧では、以下のような処理が実行される。
第一に、障害が発生したサーバの代わりとなる新規サーバの起動処理が実行される。
第二に、障害が発生したサーバが保持するデータを新規サーバに書き込むための複製処理が実行される。具体的には、障害が発生したサーバが保持するデータの複製データを保持するサーバが、新規サーバに当該複製データを送信する。このとき、複製元のサーバ及び複製先のサーバは、同一のデータを保持する必要がある。したがって、複製元のサーバが保持するデータが更新された場合、当該更新されたデータを複製先のサーバに書き込む必要がある。
第三に、新規サーバをクラスタに追加するための処理が実行される。
分散KVSを利用するアプリケーションは、銀行口座及びインターネットショッピング等のオンラインシステム上の商取引を行うものが想定される。そのため、アプリケーションが処理を継続できるように、分散KVSを停止させることなく復旧する必要がある。
前述したような、分散KVSの復旧処理については、特許文献1に記載された技術が知られている。
特許文献1には、「(1)稼働中のコピー元計算機のある時点でのメモリの全データのスナップショットを取得し、コピー先計算機へ転送し、該コピー先計算機のメモリへと書込み、(2)(1)の実施中から継続的にコピー元計算機のメモリに対するデータ更新を監視し、検出した更新に関する差分データをコピー先計算機へ転送し、コピー先計算機のメモリへと書込むことを繰り返し、(3)差分データのサイズが1つの送信メッセージに格納できるサイズ以下となると、最後に1回差分データの転送、コピー先計算機のメモリへの書込みを行い、コピー先計算機の処理を該コピー元計算機と同期をとって再開する」ことが記載されている。
しかし、特許文献1に記載の技術では、複製元計算機がスナップショットを取得する必要があり、メモリ使用量が増大する。そのため、分散KVSに割り当てるメモリが不足し、システム全体の性能が低下する可能性がある。
また、スナップショットの送信に伴う通信帯域の使用量(通信量)が増大し、システム全体の通信性能が低下する可能性がある。また、スナップショットを取得した後に、データの更新が発生した場合、複製元計算機は複製先計算機に差分データを送信するため、送信する必要のないデータが送信される問題が発生する。例えば、スナップショットの送信時に、更新処理によって一部のデータが削除されている場合、送信する必要のない差分データを送信するという問題が発生する。
また、複製元計算機と複製先計算機との間で同期を取る場合、ユーザプログラム(アプリケーション)を停止させる必要がある。
本発明は、メモリ使用量及び通信帯域の使用量を抑え、アプリケーションを停止させることなく分散KVSを構成するシステムを復旧させることを目的とする。
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、ネットワークを介して複数の計算機が接続され、前記複数の計算機の各々が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムであって、前記データベースに格納されるデータは、前記データの識別情報、前記データの値、及び前記データベースにおけるイベントの実行順番であるシーケンス番号を含み、前記複数の計算機の各々には、前記データの識別情報に対して分散配置アルゴリズムを適用して決定された管理範囲毎に当該データが分散して配置される。前記複数の計算機の各々は、配置されたデータを管理するデータ管理部と、配置されたデータに対する操作の前記シーケンス番号を決定するデータ制御部と、新たに追加された計算機に、所定の管理範囲に含まれるデータの複製データを送信する復旧制御部と、を有する。前記複数の計算機は、復旧要求を送信する第1の計算機、及び前記復旧要求を受信する第2の計算機を含む。前記第2の計算機は、前記第1の計算機から復旧要求を受信し、前記第2の計算機の状態を復旧状態に遷移させ、前記シーケンス番号に基づいて前記データベースからデータを一つ以上読み出し、第1の複製データとして前記第1の計算機に送信する複製処理を実行する。前記第2の計算機は、前記復旧状態において前記データの更新命令を受信した場合、前記更新命令の前記シーケンス番号を決定し、前記更新命令に基づいて所定のデータを更新し、第2の複製データとして送信する更新処理を実行する。前記第1の計算機又は前記第2の計算機の少なくともいずれか一方が、前記第1の計算機における前記第1の複製データ及び前記第2の複製データの書き込み順番を制御し、前記第1の計算機は、前記書き込み順番に基づいて、前記第1の複製データ及び前記第2の複製データを前記データベースを構成する記憶領域に書き込む書込処理を実行する。
本発明によれば、メモリ使用量及び通信帯域の使用量を抑えた計算機システムの復旧が可能となる。また、業務(アプリケーション)を停止させることなくシステムを復旧することができる。
前述した以外の課題、構成及び効果は、以下の実施形態の説明によって明らかにされる。
まず、本発明の概要について説明する。
図1は、本発明の概要を説明するシーケンス図である。
図1に示す計算機システムは、三つのサーバ100と、一つのクライアント装置200から構成される。三つのサーバ100はクラスタを構成し、当該サーバ100が有する記憶領域上に分散データベースが構築される。本実施例では、分散データベースとして分散KVSを用いるものとする。本実施例の分散KVSには、キー、バリュー、及びシーケンス番号が対応づけられたデータが複数格納される。以下の説明では、分散KVSを構成するサーバ100のクラスタを、単にクラスタと記載する。
ここで、シーケンス番号は、分散KVSのイベントの実行順番を示す値である。本実施例では、「1」から順に各イベントにシーケンス番号が付与される。分散KVSのイベントは、データに対する操作(更新処理)、及び計算機システムの構成変更のことを示す。
また、クラスタに含まれる各サーバ100には、分散配置アルゴリズムに基づいて決定されたキーレンジ毎にデータが配置される。各サーバ100は、キー、バリュー、及びシーケンス番号が対応づけられたデータをデータ管理情報300としてデータストア160(図2参照)に格納する。
ここで、キーレンジは、各データのキーから算出されたハッシュ値の範囲を表す。なお、分散配置アルゴリズムとしては、Consistent Hashing法、Range法及びList法等の種々の方法が用いられる。
各サーバ100は所定のキーレンジに含まれるデータ(マスタデータ)を管理するマスタサーバとして稼動する。また、各サーバ100は、他のサーバ100が管理するキーレンジに含まれるデータの複製データ(スレーブデータ)を保持し、スレーブサーバとして稼動する。
図1では、分散KVSの復旧処理を示す。以下の説明では、障害発生したサーバ100がマスタとして管理するキーレンジを対象キーレンジとも記載する。
サーバ100−1は、現在の対象キーレンジのマスタサーバである。サーバ100−3は、対象キーレンジの新たなマスタサーバとして追加されるサーバである。
サーバ100−1は、データ管理情報300−1に示すような対象キーレンジのマスタデータを格納する。なお、サーバ100−2にも、同一のスレーブデータが格納される。
サーバ100−3は、サーバ100−1に復旧要求を送信する(ステップS101)。サーバ100−1は、当該復旧要求を受信すると、復旧状態に遷移する。
このとき、サーバ100−1は、送信対象のデータの範囲を特定する情報として、マスタデータに含まれるシーケンス番号のうち最も大きいシーケンス番号を記憶する。すなわち、サーバ100−1は、最新のシーケンス番号を記憶する。その後、サーバ100−1は、データ複製処理を開始する。以下の説明では、複製元のサーバ100が、データ複製処理の開始時に記憶するシーケンス番号を複製シーケンス番号とも記載する。
サーバ100−1は、サーバ100−3に、キーが「A」のデータの複製データを送信する(ステップS102)。サーバ100−3は、受信した複製データをデータストア160(図2参照)に格納する。このとき、サーバ100−3が保持するマスタデータはデータ管理情報300−2に示すようになる。
サーバ100−1は、復旧状態時に、クライアント装置200からキー「C」のバリューを「DDD」に更新するための更新命令を受信した場合(ステップS103)、分散合意アルゴリズムに基づいて、サーバ100−2との間で当該更新命令のシーケンス番号を決定する(ステップS104)。このとき、データ複製処理は一時的に停止される。
以下の説明では、複数のサーバ100が分散合意アルゴリズムに基づいて、分散KVSに対する操作の実行順番を決定することを分散合意を行うとも記載する。なお、本実施例では、分散合意アルゴリズムとしてPaxosアルゴリズムを用いる。
サーバ100−1は、サーバ100−2に更新命令の複製を送信し、当該更新命令について分散合意を行う。図1に示す例では、シーケンス番号が「5」まで決定されているため、受信した更新命令のシーケンス番号は「6」に決定される。これによって、サーバ100−2も同様のデータ更新処理を実行する。
サーバ100−1は、更新命令にしたがって、マスタデータを更新する(ステップS105)。具体的には、サーバ100−1は、キー「C」に対応するデータのバリューに「DDD」を格納し、シーケンス番号に「6」を格納する。このとき、マスタデータはデータ管理情報300−3に示すようになる。なお、サーバ100-2は、分散合意を実行することによって生成された分散状態マシンイベント情報500(図5参照)に基づいて、同様にデータを更新する。
サーバ100−1は、サーバ100−3に、更新されたデータの複製データを送信する(ステップS106)。サーバ100−3は、受信した複製データをデータストア160(図2参照)に格納する。このとき、サーバ100−3が保持するマスタデータはデータ管理情報300−4に示すようになる。
サーバ100−1は、データの更新処理が完了した後、データ複製処理を再開する。
サーバ100−1は、サーバ100−3に、キーが「B」のデータの複製データを送信する(ステップS107)。サーバ100−3は、受信した複製データをデータストア160(図2参照)に格納する。このとき、サーバ100−3が保持するマスタデータはデータ管理情報300−5に示すようになる。なお、データ管理情報300−5のデータの順番は、サーバ100−3におけるデータの書き込み順を示す。したがって、サーバ100−3は、データ管理情報300−3と同一形式のマスタデータを保持する。
ここで、複製シーケンス番号以下のシーケンス番号を含むデータが全て送信されたため、サーバ100−1は、データ複製処理を終了する。
本発明では、複製元のサーバ100−1がスナップショットを取得することなく、複製先のサーバ100−3に全てのデータを送信することができる。小さいデータサイズのデータが送信され、また、最新のデータが送信されるため、復旧処理における通信帯域の使用量を抑制できる。また、データの整合性を保つためにシステムを停止させる必要がなく、また、サーバ100−1とサーバ100−3との間で同期をとる必要がない。
したがって、復旧処理時におけるネットワーク負荷を低減し、サービスの継続が可能なシステムの復旧が可能となる。
図2は、本発明の実施例1における計算機システムの構成を示すブロック図である。
計算機システムは、複数のサーバ100、及びクライアント装置200から構成される。各サーバ100間又はサーバ100とクライアント装置200との間は、ネットワーク250を介して互いに接続される。
ネットワーク250は、LAN、WAN及びSAN等の有線及び無線の種々の構成が考えられる。本発明は、サーバ100及びクライアント装置200が通信できるものであればどのようなネットワークであってもよい。なお、ネットワーク250には、複数のネットワーク装置(図示省略)が含まれる。ネットワーク装置は、例えば、スイッチ及びゲートウェイなどが含まれる。
サーバ100は、プロセッサ110、主記憶装置120、補助記憶装置130、及びネットワークインタフェース140を備え、分散KVSを構成するサーバである。サーバ100は、クライアント装置200から送信される要求にしたがって各種処理を実行する。各サーバ100の構成は同一であるものとする。
なお、サーバ100は、キーボード、マウス、タッチパネル等の入力装置、及び、ディスプレイ等の出力装置を備えていてもよい。
プロセッサ110は、主記憶装置120に格納されるプログラムを実行する。プロセッサ110がプログラムを実行することによって、サーバ100が備える機能を実現することができる。以下、プログラムを主語に処理を説明する場合には、プロセッサ110によって、プログラムが実行されていることを示す。
主記憶装置120は、プロセッサ110が実行するプログラム及び当該プログラムの実行に必要な情報を格納する。主記憶装置120は、例えば、メモリ等が考えられる。
本実施例の主記憶装置120上には、データ管理部151、分散状態マシン制御部152、及び復旧制御部153を実現するためのプログラムが格納される。また、主記憶装置120上には、必要な情報として、構成情報170、及び分散合意履歴情報180が格納される。
さらに、主記憶装置120上には、分散KVSを構成するデータベースであるデータストア160が格納される。本実施例のデータストア160には、キー、バリュー、及びシーケンス番号を一組としたデータが格納される。なお、各サーバ100のデータストア160には、マスタデータ及びスレーブデータが格納される。
補助記憶装置130は、各種情報を格納する。補助記憶装置130は、例えば、HDD又はSSD等が考えられる。なお、補助記憶装置130上に分散KVSを構築するディスクストア(図示省略)が構築されてもよい。
ネットワークインタフェース140は、ネットワーク250を介して他の装置と接続するためのインタフェースである。
ここで、主記憶装置120に格納されるプログラム及び情報について説明する。
データ管理部151は、サーバ100が管理するデータに対する各種処理を制御する。データ管理部151は、クライアント装置200から送信された命令を受け付け、当該命令に基づいて、データの読出処理及び書込処理等を制御する。また、データ管理部151は、他のサーバ100へのデータの問い合わせ、クライアント装置200への処理結果の送信等の処理も実行する。
分散状態マシン制御部152は、各サーバ100における分散KVSのデータの整合性を制御する。具体的には、分散状態マシン制御部152は、他のサーバ100の分散状態マシン制御部152と通信することによって、分散KVSに対して入力されたイベントの実行順番であるシーケンス番号を決定する。
ここで、状態マシンとは、「状態」及び「イベント」を用いて対象の振る舞いが表現されるシステムである。状態マシンは、内部に現在の状態を保持し、外部からイベントが入力された場合、予め決定されたルールにしたがって状態を遷移させる。
分散状態マシンは、分散システムにおいて、複数のサーバ上に存在する一つ以上の状態マシンに同一の振る舞いを実行させるための仕組みである(例えば、特許文献2参照)。複数の状態マシンが同一の振る舞いを行うためには、各状態マシンに同一イベントを同一の入力順に入力する必要がある。そこで、イベントを入力する順番を決定するために分散合意アルゴリズムが用いられる。
KVSは、キーに対する更新命令等の操作をイベント、当該操作に対するデータの更新を状態の遷移と仮定した場合、キー毎の状態マシンの集合として扱うことができる。したがって、分散KVSでは、クラスタに含まれる各サーバが同一のデータを保持するための構成として、分散状態マシンを用いることができる。
ただし、キー毎に状態マシンを運用する場合、状態マシンの数が膨大となるため現実的ではない。例えば、全てのキーのデータ量が4バイトである場合、必要となる状態マシンの数は40億個になる。
したがって、一定のキーの集合毎に一つの状態マシンを運用する方が望ましい。すなわち、キーレンジに対して一つの状態マシンを存在するようにすればよい。なお、本実施例では、説明の簡単のために、一つのサーバ100に一つの状態マシンが存在するものとする。この場合、各サーバ100には一つの分散状態マシン制御部152が含まれる。
復旧制御部153は、復旧処理を制御する。複製先のサーバ100の復旧制御部153は、複製元のサーバ100に復旧要求を送信し、複製元から送信されたデータをデータストア160に格納する。複製元のサーバ100の復旧制御部153は、複製先のサーバ100にデータを送信する。
復旧制御部153は、復旧処理に用いる復旧情報154を保持する。復旧情報154の詳細については、図6を用いて後述する。
構成情報170は、データの格納先を示す情報を格納する。すなわち、各キーレンジのマスタサーバ及びスレーブサーバを示す情報が格納される。なお、構成情報170の詳細については、図4を用いて後述する。分散合意履歴情報180は、イベントの合意内容に関する情報を格納する。分散合意履歴情報の詳細については、図5を用いて後述する。
次に、クライアント装置200について説明する。クライアント装置200は、プロセッサ210、主記憶装置220、補助記憶装置230、及びネットワークインタフェース240を備え、サーバ100に対して各種処理の実行を要求する更新命令を送信する。
プロセッサ210は、主記憶装置220に格納されるプログラムを実行する。プロセッサ210がプログラムを実行することによって、クライアント装置200が備える機能を実現することができる。以下、プログラムを主語に処理を説明する場合には、プロセッサ210によって、プログラムが実行されていることを示す。
主記憶装置220は、プロセッサ210が実行するプログラム及び当該プログラムの実行に必要な情報を格納する。主記憶装置220は、例えば、メモリ等が考えられる。
本実施例の主記憶装置220上には、アプリケーション251、及び構成情報管理部252を実現するためのプログラムが格納される。また、主記憶装置220上には、必要な情報として構成情報260が格納される。
補助記憶装置230は、各種情報を格納する。補助記憶装置130は、例えば、HDD又はSSD等が考えられる。
ネットワークインタフェース240は、ネットワーク250を介して他の装置と接続するためのインタフェースである。
ここで、主記憶装置220に格納されるプログラム及び情報について説明する。
アプリケーション251は、サーバ100に対して更新命令を送信する。また、アプリケーション251は、サーバ100から送信されるアクセス要求に対する処理の結果を受信する。
更新命令は、データに対する操作、すなわちデータに対する更新処理の実行を要求するための命令である。本実施例の更新処理には、データの書き込み、データの上書き、及びデータの削除が含まれる。
構成情報管理部252は、データの格納先を管理する構成情報260を管理する。
構成情報260は、データの格納先を示す情報を格納する。構成情報260は、構成情報170と同一のものである。
なお、本実施例では、サーバ100及びクライアント装置200が備える機能を、ソフトウェアを用いて実現しているが、専用のハードウェアを用いて同一の機能を実現してもよい。
図3は、本発明の実施例1におけるデータストア160に格納されるデータの形式を示す説明図である。
本実施形態では、データストア160は、データ管理情報300を格納する。データ管理情報300には、キー、バリュー、及びシーケンス番号から構成されるデータが複数含まれる。以下、キー、バリュー、及びシーケンス番号から構成されるデータをキーバリュー型データとも記載する。
データ管理情報300は、Key301、Value302、及びシーケンス番号303を含む。
Key301は、データを識別するための識別子(キー)を格納する。Value302は、実際のデータ(バリュー)を格納する。シーケンス番号303は、Key301に対する更新処理(イベント)の実行順番を示す値を格納する。
クライアント装置200を操作するユーザは、Key301を指定して分散KVSにデータを保存し、また、Key301を指定して分散KVSから所望のデータを取得することができる。
各サーバ100は、所定のKey301の範囲(キーレンジ)毎にキーバリュー型データを管理する。すなわち、キーレンジ毎にキーバリュー型データが各サーバ100に分散して配置される。サーバ100は、指定された管理範囲400のデータのマスタサーバとして処理を実行することとなる。これによって、大量のデータを並列的かつ高速に処理できる。
なお、データストア160に格納されるデータの形式は、図3に示すものに限定されず、例えば、キーのハッシュ値、バリュー、及びシーケンス番号を対応づけた形式のデータであってもよい。
図4は、本発明の実施例1における構成情報170の一例を示す説明図である。
構成情報170は、各サーバ100の配置されるデータのキーレンジに関する情報を格納する。具体的には、構成情報170は、サーバID401及びキーレンジ402を含む。
サーバID401は、サーバ100を一意に識別するための識別子を格納する。サーバID401には、例えば、サーバ100の識別子、IPアドレス、及びMACアドレス等が格納される。
キーレンジ402は、キーレンジを特定するためのハッシュ値の範囲を格納する。キーレンジ402は、マスタ403及びスレーブ404を含む。マスタ403は、マスタデータのキーレンジを特定するハッシュ値を格納する。スレーブ404は、各サーバ100のスレーブデータのキーレンジを特定するハッシュ値を格納する。
なお、スレーブ404のカラムは、多重度の数だけ存在する。図4に示す例では、多重度が1の分散KVSであることを示す。
図5は、本発明の実施例1における分散合意履歴情報180の一例を示す説明図である。
分散合意履歴情報180は、複数の分散状態マシンイベント情報500を含む。分散状態マシンイベント情報500は、分散KVSにおけるイベントの情報を格納する。具体的には、分散状態マシンイベント情報500は、シーケンス番号501、提案内容502を含む。
シーケンス番号501は、イベントの実行順番を示す値を格納する。提案内容502は、イベントの具体的な内容を格納する。図5に示す提案内容502には、Key504、Value505を含むPut命令503が格納される。
本実施例では、キーレンジ毎に分散合意履歴情報180が存在するものとする。
図6は、本発明の実施例1における復旧情報154の一例を示す説明図である。
復旧情報154は、複製シーケンス番号601、対象キーレンジ602、宛先情報603、及び合流シーケンス番号604を含む。
複製シーケンス番号601は、複製シーケンス番号を格納する。対象キーレンジ602は、対象キーレンジを特定するハッシュ値を格納する。宛先情報603は、複製先のサーバ100を特定するための情報を格納する。宛先情報603には、例えば、サーバ100のIPアドレス、及びポート番号等が格納される。
合流シーケンス番号604は、クラスタに新たなサーバ100を追加するためのイベントの実行順番を示すシーケンス番号を格納する。以下の説明では、クラスタに新たなサーバ100を追加するためのイベントを、メンバ合流イベントとも記載する。
図7は、本発明の概要を説明するシーケンス図である。図7は、図1のステップS107の後に実行される処理を示す。
サーバ100−1は、サーバ100−3に、複製対象の全てのデータを送信した後(ステップS107)、サーバ100−2との間でメンバ合流イベントの分散合意を行う(ステップS108)。これによって、メンバ合流イベントのシーケンス番号が決定される。以下の説明では、メンバ合流イベントのシーケンス番号を合流シーケンス番号とも記載する。
サーバ100−1は、復旧情報154に、決定された合流シーケンス番号を格納する。メンバ合流イベントが実行されるまでは、サーバ100−1が対象キーレンジのマスタサーバとして処理を行う。すなわち、合流シーケンス番号より小さいシーケンス番号が付与された更新命令は、サーバ100−1によって処理される。
図7に示す例では、合流シーケンス番号は「15」に決定されたものとする。
サーバ100−1及びサーバ100−2は、メンバ合流イベントの分散合意が行われた後、当該メンバ合流イベントの実行を開始する。しかし、この時点では、シーケンス番号が「15」でないため、一定期間待ち状態となる。一定期間経過した後、シーケンス番号が合流シーケンス番号より小さい場合、サーバ100−1及びサーバ100−2は、NOOP命令の分散合意を行って、シーケンス番号の値を加算する。
クライアント装置200は、キー「A」のデータを削除するための更新命令をサーバ100−1に送信する(ステップS109)。この時点では、サーバ100−3はクラスタに追加されていないため、更新命令はサーバ100−1に送信される。
サーバ100−1は、更新命令を受信すると、サーバ100−2との間で分散合意を行う(ステップS110)。図7に示す例では、受信した更新命令のシーケンス番号は「7」に決定される。
サーバ100−1は、更新命令にしたがって、マスタデータを更新する(ステップS111)。具体的には、サーバ100−1は、キー「A」のデータを削除する。このとき、マスタデータはデータ管理情報300−6に示すようになる。なお、サーバ100−2は、分散合意を実行することによって生成された分散状態マシンイベント情報500に基づいて、同様にデータを更新する。
サーバ100−1は、サーバ100−3に、データの削除を指示するデータを送信する(ステップS112)。サーバ100−3は、データを削除する。このとき、サーバ100−3が保持するマスタデータはデータ管理情報300−7に示すようになる。
サーバ100−1は、シーケンス番号が「15」になるまでステップS110からステップS112までの処理を実行する。
所定のイベントのシーケンス番号が「14」である場合、次にメンバ合流イベントが発生する。ここで、サーバ100−1は、サーバ100−3に、合流シーケンス番号を含む復旧完了データを送信し(ステップS113)、その後、復旧状態を解除する。
また、サーバ100−1及びサーバ100−2は、メンバ合流イベントを実行する(ステップS114)。
なお、この時点ではサーバ100-3が新たなマスタサーバとなるように構成情報170が更新されている。具体的には、サーバ100−1は、構成情報170にサーバ100−3のエントリを追加し、サーバ100−3をマスタサーバとして設定する。サーバ100−2及びサーバ100−3も同様の処理を実行する。さらに、サーバ100−1は、サーバ100−3及びクライアント装置200に更新された構成情報170を送信する。
当該処理によって、クラスタにサーバ100−3が追加され、また、サーバ100−3が対象キーレンジに含まれるデータに対する更新命令を処理する。
その後、クライアント装置200は、キーが「D」、バリューが「EEE」であるデータを追加するための更新命令をサーバ100−3に送信する(ステップS115)。
サーバ100−3は、サーバ100−1及びサーバ100−2との間で分散合意を行い(ステップS116)、受信した更新命令のシーケンス番号を「16」に決定する。
サーバ100−3は、更新命令にしたがって、マスタデータを更新する(ステップS117)。具体的には、サーバ100−3は、キーが「D」、バリューが「EEE」、シーケンス番号が「16」であるデータを格納する。サーバ100−1及びサーバ100−2は、それぞれ、分散合意の実行時に送信された分散状態マシンイベント情報500に基づいて、同様にデータを更新する。このとき、マスタデータはデータ管理情報300−8に示すようになる。
図8は、本発明の実施例1における複製元のサーバ100が実行する復旧処理を説明するフローチャートである。
サーバ100は、他のサーバ100から復旧要求を受信する(ステップS201)。具体的には、復旧制御部153が、復旧要求を受信する。復旧要求には、対象キーレンジを特定するためのハッシュ値、及び複製先のサーバ100の宛先情報が含まれる。
サーバ100は、受信した復旧要求に基づいて、復旧情報154を生成する(ステップS202)。具体的には、以下のような処理が実行される。
復旧制御部153は、復旧要求に含まれる対象キーレンジのハッシュ値、及び宛先情報を取得する。復旧制御部153は、分散状態マシン制御部152に、複製シーケンス番号の取得要求を出力する。なお、取得要求には、対象キーレンジのハッシュ値が含まれる。
分散状態マシン制御部152は、取得要求に含まれる対象キーレンジのハッシュ値に基づいて、対象キーレンジに対応する分散状態マシンイベント情報500を検索する。さらに、分散状態マシン制御部152は、検索された分散状態マシンイベント情報500のシーケンス番号501を参照し、最も大きいシーケンス番号を取得する。すなわち、最新のシーケンス番号が取得される。
分散状態マシン制御部152は、取得されたシーケンス番号を複製シーケンス番号として復旧制御部153に出力する。
復旧制御部153は、キーレンジのハッシュ値、宛先情報、及び複製シーケンス番号に基づいて、復旧情報154を生成する。その後、復旧制御部153は、復旧状態に遷移する。
なお、この時点では、復旧情報154には合流シーケンス番号604が含まれていない。
以上が、ステップS202の処理の説明である。
次に、サーバ100は、データ複製処理を実行する(ステップS203)。データ複製処理の詳細については、図9を用いて後述する。
複製対象の全てのデータが送信されたと判定された場合、サーバ100は、分散合意アルゴリズムに基づいて、メンバ合流イベントのシーケンス番号、すなわち、合流シーケンス番号を決定する(ステップS204)。具体的には、復旧制御部153が、分散状態マシン制御部152に、メンバ合流イベントの分散合意を指示する。具体的な処理については、図9を用いて後述する。
次に、サーバ100は、決定された合流シーケンス番号を復旧情報154に格納し(ステップS205)、処理を終了する。
なお、合流シーケンス番号と複製シーケンス番号との間の差が大きい場合、頻繁に更新が行われないシステムでは、合流シーケンス番号が付与されたイベントの発生まで、複製先のサーバ100をクラスタに追加することができない。この場合、分散状態マシン制御部152は、ステップS205の処理が実行された後、一定期間、メンバ合流イベントの発生を待つ。一定期間経過後のシーケンス番号が合流シーケンス番号より小さい場合、分散状態マシン制御部152は、所定の回数、NOOP命令の分散合意を行う。
図9は、本発明の実施例1における複製元のサーバ100が実行するデータ複製処理を説明するフローチャートである。データ複製処理は、復旧制御部153が主体となって実行される。
復旧制御部153は、対象キーレンジに含まれるデータの排他ロックを取得する(ステップS301)。これによって、対象キーレンジに対するデータ更新処理が実行されない。そのため、データ複製処理、及びデータ更新処理が同時に発生することを避けることができる。
なお、データ更新処理によって、対象キーレンジの排他ロックが取得されている場合、復旧制御部153は、排他ロックが解放されるまで待ち続ける。
復旧制御部153は、対象キーレンジに含まれるデータの中から複製対象のデータを検索する(ステップS302)。
具体的には、復旧制御部153は、データストア160のデータ管理情報300、及び復旧情報154を参照し、対象キーレンジに含まれるデータの中から、複製シーケンス番号より古いシーケンス番号を含み、かつ、未送信のデータを検索する。本実施例では、復旧制御部153は、送信済みのデータのシーケンス番号より大きく、かつ、複製シーケンス番号以下のシーケンス番号を含むデータを検索する。
復旧制御部153は、検索結果に基づいて、複製対象のデータが存在するか否かを判定する(ステップS303)。すなわち、複製対象の全てのデータを送信したか否かが判定される。
複製対象のデータが存在すると判定された場合、復旧制御部153は、検索されたデータを読み出し、読み出されたデータを複製データとして複製先のサーバ100に送信する(ステップS304)。具体的には、以下のような処理が実行される。
復旧制御部153は、検索されたデータの中から送信するデータを選択する。選択方法としては、シーケンス番号が小さい順にデータを選択する方法、又は、キーの辞書の登録順にデータを選択する方法が考えられる。また、選択されるデータの数は、一つ、又は、二つ以上のいずれであってもよい。本実施例では、選択されるデータの数は一つであるものとする。
なお、データの選択方法、及び選択されるデータの数に関する情報は、復旧制御部153に予め設定されていてもよいし、復旧要求に含まれてもよい。
復旧制御部153は、選択されたデータをデータストア160から読み出し、複製先のサーバ100の復旧制御部153に読み出されたデータを複製データとして送信する。
以上がステップS304の処理の説明である。
次に、復旧制御部153は、対象キーレンジの排他ロックを解放し(ステップS305)、ステップS301に戻る。
ステップS303において、複製対象のデータが存在しないと判定された場合、復旧制御部153は、対象キーレンジの排他ロックを解放する(ステップS306)。その後、復旧制御部153は、分散状態マシン制御部152に、メンバ合流イベントの分散合意の実行を指示し(ステップS307)、処理を終了する。このとき、分散状態マシン制御部152は、以下のような処理を実行する。
分散状態マシン制御部152は、当該指示を受け付けると、分散合意アルゴリズムにしたがって、他のサーバ100の分散状態マシン制御部152と通信を行い、メンバ合流イベントの処理内容を配信し、合流シーケンス番号を決定する。
各サーバ100の分散状態マシン制御部152は、メンバ合流イベントの提案内容502を含む分散状態マシンイベント情報500を分散合意履歴情報180に格納する。
提案内容502には、メンバ合流イベントの処理内容として、構成情報170を更新するための情報、及び合流シーケンス番号を算出するための情報が含まれる。構成情報170を更新するための情報には、対象キーレンジ602及び宛先情報603に対応する情報が含まれる。また、合流シーケンス番号を算出するための情報には、条件式が含まれる。
例えば、メンバ合流イベントに対応する分散状態マシンイベント情報500に付与されるシーケンス番号501に所定の値を加算し、算出された値を合流シーケンス番号として算出する条件式が考えられる。また、当該シーケンス番号501に所定の値を乗算し、算出された値を合流シーケンス番号として算出する条件式が考えられる。なお、本発明は、合流シーケンス番号を算出する条件式に限定されない。
各サーバ100の分散状態マシン制御部152は、メンバ合流イベントの分散合意が行われた後、メンバ合流イベントの提案内容502に基づいて、合流シーケンス番号を算出する。また、各サーバ100の分散状態マシン制御部152は、復旧制御部153に、算出された合流シーケンス番号を出力する。復旧制御部153は、入力された合流シーケンス番号を保持する。
各サーバ100の分散状態マシン制御部152は、一定期間待ち状態となる。各サーバ100の分散状態マシン制御部152は、シーケンス番号が合流シーケンス番号に一致した場合、待ち状態であったメンバ合流イベントを実行する。このとき、分散状態マシン制御部152は、データ管理部151に、構成情報170の更新を指示する。当該指示には、対象キーレンジ602及び宛先情報603に対応する情報が含まれる。
データ管理部151は、構成情報170を参照して、複製元のサーバ100のエントリを検索する。
データ管理部151は、検索されたエントリのマスタ403から対象キーレンジ602が除かれるようにハッシュ値を更新する。また、データ管理部151は、検索されたエントリのスレーブ404に対象キーレンジ602が含まれるようにハッシュ値を更新する。
また、データ管理部151は、構成情報170に新たなエントリを追加し、宛先情報603に基づいて、サーバID401に複製先のサーバ100の識別子を格納する。また、データ管理部151は、当該エントリのマスタ403に対象キーレンジ602のハッシュ値を格納する。さらに、データ管理部151は、当該エントリのスレーブ404に所定のハッシュ値を格納する。
スレーブ404のハッシュ値の決定方法は様々考えられる。例えば、少なくとも一つのサーバ100が、障害が発生したサーバのマスタ403、スレーブ404のハッシュ値を履歴情報として保持しておき、当該履歴情報に基づいてスレーブ404のハッシュ値を決定する方法が考えられる。また、他のサーバ100のエントリのスレーブ404を参照し、分散KVSにおける多重度を満たすようにスレーブ404のハッシュ値を決定する方法が考えられる。なお、本発明は、スレーブ404に格納するハッシュ値の決定方法に限定されない。
以上が、ステップS307の処理の説明である。
図10は、本発明の実施例1における複製元のサーバ100が実行するデータ更新処理を説明するフローチャートである。データ更新処理は、データ管理部151が主体となって実行される。
データ管理部151は、クライアント装置200から更新命令を受信する(ステップS401)。
データ管理部151は、更新命令のシーケンス番号を決定する(ステップS402)。具体的には、以下のような処理が実行される。
データ管理部151は、分散状態マシン制御部152に、更新命令の処理内容とともに、当該更新命令の分散合意を行うように依頼する。
分散状態マシン制御部152は、分散合意アルゴリズムにしたがって、他のサーバ100の分散状態マシン制御部152と通信を行い、更新命令の複製を配信し、当該更新命令のシーケンス番号を決定する。分散状態マシン制御部152は、データ管理部151に、決定されたシーケンス番号を出力する。
以上が、ステップS402の処理の説明である。
次に、データ管理部151は、復旧状態であるか否かを判定する(ステップS403)。具体的には、以下のような処理が実行される。
データ管理部151は、復旧制御部153に復旧情報154の取得要求を送信する。
復旧情報154が存在する場合、復旧制御部153は、当該復旧情報154をデータ管理部151に出力する。復旧情報154が存在しない場合、復旧制御部153は、エラー通知を出力する。
復旧情報154を取得した場合、データ管理部151は、復旧状態であると判定する。一方、エラー通知を取得した場合、データ管理部151は、復旧状態でないと判定する。
以上が、ステップS403の処理の説明である。
復旧状態でないと判定された場合、データ管理部151は、ステップS408に進む。
復旧状態であると判定された場合、データ管理部151は、更新命令における処理対象のデータが対象キーレンジに含まれるか否かを判定する(ステップS404)。
具体的には、データ管理部151は、更新命令に含まれるキーのハッシュ値を算出する。データ管理部151は、算出されたキーのハッシュ値、及び取得された復旧情報154に含まれる対象キーレンジ602に基づいて、算出されたキーのハッシュ値が対象キーレンジに含まれるか否かを判定する。算出されたキーのハッシュ値が対象キーレンジに含まれていると判定された場合、操作対象のデータが対象キーレンジに含まれると判定する。
更新対象のデータが対象キーレンジに含まれないと判定された場合、データ管理部151は、ステップS408に進む。
更新対象のデータが対象キーレンジに含まれると判定された場合、データ管理部151は、復旧状態におけるデータ更新処理を実行し(ステップS405)、その後、判定処理を実行する(ステップS406)。ここで、判定処理は、復旧処理が完了したか否かを判定するための処理である。
復旧状態におけるデータ更新処理の詳細については、図11を用いて後述する。判定処理の詳細については、図12を用いて後述する。
データ管理部151は、処理結果をクライアント装置200に通知し(ステップS407)、処理を終了する。なお、他のサーバ100(スレーブサーバ)も同様にステップS403からステップS408の処理を実行する。当該処理は、マスタサーバの処理とは独立した処理である。
ステップS408では、データ管理部151は、通常のデータ更新処理を実行し、ステップS407に進む。
通常のデータ更新処理では、データを追加する場合、データ管理部151は、排他ロックを取得し、データ管理情報300にキー、バリュー、及びシーケンス番号を対応づけたデータを格納する。なお、通常のデータ更新処理は、公知の技術であるため詳細な説明を省略する。
図11は、本発明の実施例1における復旧状態におけるデータ更新処理を説明するフローチャートである。復旧状態におけるデータ更新処理は、データ管理部151が主体となって実行される。
データ管理部151は、対象キーレンジに含まれるデータの排他ロックを取得する(ステップS501)。これによって、対象キーレンジに対するデータ複製処理が実行されない。そのため、データ複製処理、及びデータ更新処理が同時に発生することを避けることができる。
なお、データ複製処理によって、対象キーレンジの排他ロックが取得されている場合、データ管理部151は、排他ロックが解放されるまで待ち続ける。
データ管理部151は、更新命令に基づいて、データを更新する(ステップS502)。例えば、更新命令がデータの上書き処理に対応する命令である場合、データ管理部151は、更新対象のデータを検索し、検索されたデータのバリュー、及びシーケンス番号に所定の値を上書きする。なお、データの更新方法は公知の技術であるため詳細な説明を省略する。
データ管理部151は、復旧制御部153に、複製データの送信を指示する(ステップS503)。当該指示には、更新されたデータが含まれる。復旧制御部153は、当該指示を受け付けると、復旧情報154を参照し、複製先のサーバ100の復旧制御部153に更新されたデータを複製データとして送信する。
なお、データ管理部151が、複製先のサーバ100の復旧制御部153に、更新されたデータを複製データとして送信してもよい。この場合、データ管理部151は、復旧制御部153から宛先情報を取得する。
データ管理部151は、排他ロックを解放し(ステップS504)、処理を終了する。このとき、データ管理部151は、復旧制御部153に判定処理の実行を指示する。
なお、更新命令に含まれるコマンドによっては、データが更新されない場合も存在する。この場合、データ管理部151は、ステップS502及びステップS503の処理を省略してもよい。
ここで、排他ロック制御について説明する。
データ複製処理、及び、復旧状態におけるデータ更新処理では、それぞれ、排他ロックが取得される。これは、並列に実行される二つの処理によって送信される複製データの順番を制御するためである。すなわち、複製元のサーバ100は、排他ロックを取得することによって、二つの処理が直列的に実行されるように制御する。これによって、分散KVSにおけるデータの整合性を保つことができる。
一方、排他ロックが取得されない場合、通信の遅延等によって、複製元のサーバ100が、データの不整合が発生する順番で複製データを受信する可能性がある。例えば、データの上書き、データの削除の順に処理が実行された場合、通信の遅延によって、複製先のサーバ100がデータの削除、データの上書きの順に複製データを受信する可能性がある。この場合、データの不整合が生じる。
そのため、実施例1では、複製元のサーバ100が、前述したようなデータの不整合を回避するために、排他ロックを用いて二つの処理を直列的に実行することによって、複製データの送信順番を制御する。
なお、本実施例では、排他ロックを用いて二つの処理の実行順番を制御したが、本発明はこれに限定されない。キューイング等、二つの処理を直列的に実行する方法であればどのような方法を用いてもよい。
図12は、本発明の実施例1における判定処理を説明するフローチャートである。判定処理は、復旧制御部153が主体になって実行される。
復旧制御部153は、データ管理部151から判定処理の実行指示を受け付けると処理を開始する。まず、復旧制御部153は、復旧情報154に合流シーケンス番号が格納されているか否かを判定する(ステップS601)。
復旧情報154に合流シーケンス番号が格納されていないと判定された場合、復旧制御部153は、処理を終了する。
復旧情報154に合流シーケンス番号が格納されていると判定された場合、復旧制御部153は、メンバ合流イベントが発生するか否かを判定する(ステップS602)。具体的には、以下のような処理が実行される。
復旧制御部153は、復旧情報154から合流シーケンス番号604を取得する。復旧制御部153は、合流シーケンス番号604から、判定処理の前に実行されたデータ更新処理(ステップS405)における更新命令に付与されたシーケンス番号501を減算する。なお、当該シーケンス番号501は、復旧状態におけるデータ更新処理において実行された更新命令に対応する提案内容502を含む分散状態マシンイベント情報500に付与されたものである。
復旧制御部153は、算出された値が「1」であるか否かを判定する。算出された値が「1」である場合、復旧制御部153はメンバ合流イベントが発生すると判定する。
以上が、ステップS602の処理の説明である。
メンバ合流イベントが発生しないと判定された場合、復旧制御部153は、処理を終了する。
メンバ合流イベントが発生すると判定された場合、復旧制御部153は、複製先のサーバ100の復旧制御部153に復旧完了データを送信する(ステップS603)。復旧完了データには、合流シーケンス番号が含まれる。
復旧制御部153は、復旧情報154を初期化し(ステップS604)、処理を終了する。具体的には、復旧制御部153は、復旧情報154に含まれる全ての情報を削除する。これによって、復旧状態が解除される。
図13は、本発明の実施例1における複製先のサーバ100が実行する復旧処理を説明するフローチャートである。
サーバ100は、復旧処理に必要な情報を設定し(ステップS701)、設定された情報に基づいてサーバ100に復旧要求を送信する(ステップS702)。具体的には、復旧制御部153が、ユーザから設定された情報に基づいて、サーバ100に復旧要求を送信する。
本実施例では、複製元のサーバ100及び複製先のサーバを特定するための情報が設定される。
例えば、ユーザは複製先のサーバ100の宛先情報及び対象キーレンジを設定する。この場合、設定された宛先情報に基づいて、複製元のサーバ100に復旧要求が送信される。
また、ユーザは対象キーレンジを設定する。この場合、複製先のサーバ100は、他のサーバ100から構成情報170を取得し、取得された構成情報170を参照し、対象キーレンジのマスタサーバを検索する。複製先のサーバ100は、検索されたマスタサーバに対応するサーバ100に、復旧要求を送信する。
サーバ100は、他のサーバ100からデータを受信すると(ステップS703)、受信したデータが複製データであるか否かを判定する(ステップS704)。具体的には、復旧制御部153が、受信したデータが複製データであるか否かを判定する。
受信したデータが複製データであると判定された場合、サーバ100は、受信したデータをデータストア160に書き込み(ステップS705)、ステップS703に戻る。具体的には、復旧制御部153がデータストア160に受信したデータを書き込む。なお、復旧制御部153はデータ管理部151にデータストア160へのデータの書き込みを依頼してもよい。
ステップS704において、受信したデータが複製データでない、すなわち、復旧完了データであると判定された場合、サーバ100は、合流シーケンス番号を登録し(ステップS706)、処理を終了する。具体的には、以下のような処理が実行される。
復旧制御部153が、復旧完了データに含まれる合流シーケンス番号を取得し、分散状態マシン制御部152に、取得された合流シーケンス番号を含む登録要求を出力する。
分散状態マシン制御部152は、一時的に合流シーケンス番号を保持する。なお、分散状態マシン制御部152は、メンバ合流イベントが発生した後、当該合流シーケンス番号を削除してもよい。
なお、サーバ100は、複製元のサーバ100から更新された構成情報170を取得する。本発明は、更新された構成情報170の取得方法に限定されない、例えば、以下のような取得方法が考えられる。一つの取得方法としては、複製元のサーバ100が、複製先のサーバ100に、一つの複製データとして更新された構成情報170を送信する。他の取得方法としては、複製元のサーバ100が、更新された構成情報170が含まれる復旧完了データを送信する。
本実施例では、復旧要求には対象キーレンジのハッシュ値が含まれるが、必ずしも必要ではない。例えば、クラスタに含まれる全てのサーバ100が同一のデータを保持する場合、ステップS701において、ユーザは対象キーレンジを指定する必要はない。この場合、サーバ100に格納される全データが複製処理の対象となる。
実施例1によれば、データ更新処理及びデータ複製処理が並列に実行されている場合において、複製元のサーバ及び複製先のサーバのデータの整合性を保った復旧が可能となる。
また、復旧処理においてスナップショットを取得する必要がないため複製元のサーバのメモリ使用量を低減することができる。また、復旧処理では、一つ又は複数の複製データが送信されることによってネットワーク通信量を低減することができる。また、更新されたデータが優先的に送信されるため、同一キーのデータを複数回送信する必要がない。そのため、復旧処理におけるネットワーク通信量を低減することができる。
また、クライアント装置200のアプリケーション251を停止させることなく復旧することができる。
(実施例1の変形例)
ステップS701では、データ複製処理を実行するサーバ100を選択することもできる。具体的には、以下のような処理が実行される。
ステップS701では、データ複製処理を実行するサーバ100を選択することもできる。具体的には、以下のような処理が実行される。
複製先のサーバ100は、ユーザから対象キーレンジを受け付けると、クラスタに含まれるサーバ100から構成情報170を取得する。
複製先のサーバ100は、構成情報170を参照し、対象キーレンジのマスタサーバ及びスレーブサーバの情報をユーザに対して表示する。ユーザは、表示された情報に基づいて、データ複製処理を実行するサーバ100を選択する。
マスタサーバがデータ複製処理を実行するサーバ100として選択された場合、実施例1と同一の処理となる。
スレーブサーバがデータ複製処理を実行するサーバ100として選択された場合、復旧制御部153は、スレーブサーバの識別情報及びデータ複製処理の実行指示を復旧要求に含める。さらに、復旧制御部153は、当該復旧要求をスレーブサーバに送信する。
スレーブサーバは、図8から図12に示す処理を実行する。
これによって、マスタサーバの処理負荷を低減することができる。
実施例1では、複製元のサーバ100は、データ複製処理及びデータ更新処理の開始時に排他ロックを取得することによって、複製先のサーバ100の複製データの受信順番を制御していた。これによって、前述したようなデータの不整合が回避される。
実施例2では、排他ロック制御を用いる代わりに、複製先のサーバ100が二つの処理の実行順番を考慮して複製データをデータストア160に書き込む。
以下、実施例1との差異を中心に実施例2について説明する。
実施例2のシステム構成では、サーバ100が一時的にデータを蓄積するためのバッファを有する。その他の構成は実施例1と同一であるため説明を省略する。また、実施例2では、データストア160に格納される情報が異なる。その他の情報は実施例1と同一である。
図14は、本発明の実施例1におけるデータストア160に格納されるデータの形式を示す説明図である。
実施例2のデータ管理情報300は、新たに削除フラグ304を含む。
削除フラグ304は、データの削除を示す更新処理であるか否かを示す情報を格納する。本実施例では、データの削除を示す更新処理の場合「True」が格納され、データの削除以外の更新処理の場合「False」が格納される。
図15は、本発明の実施例2における複製元のサーバ100が実行するデータ複製処理を説明するフローチャートである。
実施例2では、ステップS301、ステップS305及びステップS306の処理が省略される。その他の処理は実施例1と同一の処理である。
図16は、本発明の実施例2における復旧状態におけるデータ更新処理を説明するフローチャートである。
実施例2では、ステップS501及びステップS504の処理が省略される。
更新命令がデータの削除を指示する命令の場合、ステップS502及びステップS503の処理が異なる。データの追加、及びデータの上書きを指示する更新命令の場合の処理は実施例1の処理と同一である。
ステップS502では、更新命令がデータの削除を指示する命令であった場合、データ管理部151は、更新命令に基づいて、削除対象のデータを検索する。データ管理部151は、検索されたデータの削除フラグ304を「True」に変更する。
ステップS503では、データ管理部151は、復旧制御部153に、複製先のサーバ100への複製データの送信を指示する。当該送信には、削除フラグ304が「True」である複製データが含まれる。その後、データ管理部151は、削除フラグ304が「True」のデータを削除する。
復旧制御部153は、当該指示を受け付けると、復旧情報154を参照し、複製先のサーバ100の復旧制御部153に複製データを送信する。
図17は、本発明の実施例2における複製先のサーバ100が実行する復旧処理を説明するフローチャートである。
ステップS701からステップS704の処理は、実施例1と同一の処理である。
ステップS704において、受信したデータが複製データであると判定された場合、サーバ100は、受信した複製データをバッファに一時的に蓄積する(ステップS801)。具体的には、復旧制御部153が、バッファに受信した複製データを格納する。
サーバ100は、バッファに蓄積されたデータをデータストア160に書き込むか否かを判定する(ステップS802)。
例えば、バッファに蓄積されたデータの容量が所定のしきい値以上である場合に、復旧制御部153は、当該データをデータストア160に書き込む。また、復旧制御部153は、タイマを備え、一定時間経過した場合に、当該データをデータストア160に書き込む。
バッファに蓄積された複製データをデータストア160に書き込まれないと判定された場合、サーバ100は、ステップS703に戻る。
バッファに蓄積された複製データをデータストア160に書き込むと判定された場合、サーバ100は、バッファに蓄積された複製データをデータストア160に書き込み(ステップS803)、その後、ステップS703に戻る。具体的には、以下のような処理が実行される。
復旧制御部153は、バッファに蓄積された複製データに含まれるシーケンス番号を参照し、最も小さいシーケンス番号を含む複製データを選択する。復旧制御部153は、選択された複製データのキーを参照し、バッファ及びデータストア160の中から当該キーと同一のキーを含む複製データを検索する。
復旧制御部153は、検索された複製データの中から最も大きいシーケンス番号を含む複製データを選択し、選択された複製データをデータストア160に書き込む。また、復旧制御部153は、バッファから検索された複製データを削除する。
なお、削除フラグ304が「True」の複製データも一時的にデータストア160に格納される。
復旧制御部153は、バッファにデータが蓄積されているか否かを判定する。バッファにデータが蓄積されていない場合、復旧制御部153は処理を終了する。一方、バッファにデータが蓄積されている場合、復旧制御部153は、同様の処理を繰り返し実行する。
なお、前述した処理では、シーケンス番号の順番に基づいて処理が実行されていたが、キーの辞書の登録順に処理が実行されてもよい。
以上がステップS803の処理の説明である。
ステップS704において、受信したデータが復旧完了データであると判定された場合、サーバ100は、バッファに一時的に蓄積されたデータをデータストア160に書き込み、その後、削除フラグ304に基づいてデータストア160からデータを削除する(ステップS804)。具体的には、以下のような処理が実行される。
まず、復旧制御部153は、バッファに蓄積されたデータをデータストア160に書き込む。データの書込方法は、ステップS803と同一の方法を用いる。その後、復旧制御部153は、データ管理情報300の削除フラグ304を参照し、削除フラグ304に「True」が格納されるデータを検索する。復旧制御部153は、検索されたデータをデータ管理情報300から削除する。
以上がステップS804の処理の説明である。
ステップS706の処理は、実施例1の処理と同一であるため説明を省略する。
実施例2によれば、複製元のサーバ100は排他ロックを取得する必要がないため、排他ロック制御に伴う処理のオーバーヘッドを削減することができる。
以上説明したように、本発明によれば、一つ又は所定数の複製データが送信されるため計算機システムのネットワークの通信量を低減することができる。また、複製元のサーバ100は、復旧処理時にスナップショットを取得する必要がないためメモリの使用量を低減することができる。また、更新されたデータが優先的に送信することによって同一キーのデータの送信を抑制できるため、ネットワークの通信量を低減することができる。
また、複製データの書き込み順を制御することによって、データの整合性を保つことができる。更新処理を停止することなく、複製先のサーバ100にデータを書き込むため、システムを停止させる必要がない。合流シーケンス番号に基づいて複製先のサーバ100がクラスタに追加されるため、システム全体の整合性を保ち、かつ、明示的にシステムの構成を変更することができる。
なお、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体(例えば、非一時的な記憶媒体)に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
さらに、本実施例では、ソフトウェアによる制御を用いた例について説明したが、その一部をハードウェアによって実現することも可能である。
以上、本発明を添付の図面を参照して詳細に説明したが、本発明はこのような具体的構成に限定されるものではなく、添付した請求の範囲の趣旨内における様々な変更及び同等の構成を含むものである。
Claims (14)
- ネットワークを介して複数の計算機が接続され、前記複数の計算機の各々が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムであって、
前記データベースに格納されるデータは、前記データの識別情報、前記データの値、及び前記データベースにおけるイベントの実行順番であるシーケンス番号を含み、
前記複数の計算機の各々には、前記データの識別情報に対して分散配置アルゴリズムを適用して決定された管理範囲毎に当該データが分散して配置され、
前記複数の計算機の各々は、
配置されたデータを管理するデータ管理部と、
配置されたデータに対する操作の前記シーケンス番号を決定するデータ制御部と、
新たに追加された計算機に、所定の管理範囲に含まれるデータの複製データを送信する復旧制御部と、を有し、
前記複数の計算機は、復旧要求を送信する第1の計算機、及び前記復旧要求を受信する第2の計算機を含み、
前記第2の計算機は、
前記第1の計算機から復旧要求を受信し、前記第2の計算機の状態を復旧状態に遷移させ、前記シーケンス番号に基づいて前記データベースからデータを一つ以上読み出し、第1の複製データとして前記第1の計算機に送信する複製処理と、
前記復旧状態において前記データの更新命令を受信した場合、前記更新命令の前記シーケンス番号を決定し、前記更新命令に基づいて所定のデータを更新し、第2の複製データとして送信する更新処理と、を実行し、
前記第1の計算機又は前記第2の計算機の少なくともいずれか一方が、前記第1の計算機における前記第1の複製データ及び前記第2の複製データの書き込み順番を制御し、
前記第1の計算機は、前記書き込み順番に基づいて、前記第1の複製データ及び前記第2の複製データを前記データベースを構成する記憶領域に書き込む書込処理を実行することを特徴とする計算機システム。 - 請求項1に記載の計算機システムであって、
前記複数の計算機の各々は、前記シーケンス番号、及び前記データベースにおけるイベントの内容が対応づけられた履歴情報を保持し、
前記復旧要求は、処理対象の前記管理範囲を示す情報を含み、
前記複製処理では、
前記第2の計算機の復旧制御部が、
前記復旧要求を受信した場合、前記履歴情報に基づいて、最新のシーケンス番号を複製シーケンス番号として保持し、
前記処理対象の管理範囲の排他ロックを取得し、
前記処理対象の管理範囲に含まれるデータの中から、未送信のデータ、かつ、前記複製シーケンス番号より古い前記シーケンス番号を含むデータを一つ以上読み出して、前記第1の複製データとして前記第1の計算機の復旧制御部に送信し、
前記取得された排他ロックを解放し、
前記更新処理では、
前記第2の計算機のデータ管理部が、
前記処理対象の管理範囲の前記排他ロックを取得し、
前記更新命令に基づいて前記所定のデータを更新し、前記第1の複製データの送信指示を前記第2の計算機の復旧制御部に出力し、
前記取得された排他ロックを解放し、
前記第2の計算機の復旧制御部が、前記送信指示に基づいて前記第1の複製データを前記第1の計算機の復旧制御部に送信し、
前記書込処理では、前記第1の計算機の復旧制御部が、受信した順番にしたがって、前記第1の複製データ及び前記第2の複製データを前記データベースを構成する記憶領域に書き込むことを特徴とする計算機システム。 - 請求項1に記載の計算機システムであって、
前記複数の計算機の各々は、
前記シーケンス番号、及び前記データベースにおけるイベントの内容が対応づけられた履歴情報を保持し、
前記第1の複製データ及び前記第2の複製データを一時的に格納する作業記憶領域を有し、
前記復旧要求は、処理対象の前記管理範囲を示す情報を含み、
前記複製処理では、
前記第2の計算機の復旧制御部が、
前記復旧要求を受信した場合、前記履歴情報に基づいて、最新のシーケンス番号を複製シーケンス番号として保持し、
前記処理対象の管理範囲に含まれるデータの中から、未送信のデータ、かつ、前記複製シーケンス番号より古い前記シーケンス番号を含むデータを一つ以上読み出して、前記第1の複製データとして前記第1の計算機の復旧制御部に送信し、
前記更新処理では、
前記第2の計算機のデータ管理部が、前記更新命令に基づいて前記所定のデータを更新し、前記第1の複製データの送信指示を前記第2の計算機の復旧制御部に出力し、
前記第2の計算機の復旧制御部が、前記送信指示に基づいて前記第1の複製データを前記第1の計算機の復旧制御部に送信し、
前記書込処理では、
前記第1の計算機の復旧制御部が、
前記受信した第1の複製データ及び前記受信した第2の複製データを前記作業記憶領域に格納し、
前記データベース及び前記作業記憶領域の中から、同一の前記データの識別情報を含む、前記第1の複製データ及び前記第2の複製データを検索し、
前記検索された第1の複製データに含まれる前記シーケンス番号、及び前記検索された第2の複製データに含まれる前記シーケンス番号を参照して、最新の前記シーケンス番号を含む複製データを選択し、
前記選択された複製データを前記データベースを構成する記憶領域に書き込むことを特徴とする計算機システム。 - 請求項3に記載の計算機システムであって、
前記データベースに格納されるデータは、さらに、削除対象のデータであるか否かを示す削除フラグを含み、
前記更新処理では、前記第2の計算機のデータ管理部が、前記更新命令がデータの削除命令である場合に、前記削除フラグが付与された削除対象のデータを前記第1の複製データとして前記第1の計算機の復旧制御部に送信し、
前記書込処理では、前記第1の計算機のデータ管理部が、前記データベースに書き込まれたデータのうち、前記削除フラグが付与されたデータを、前記データベースを構成する記憶領域から削除すること特徴とする計算機システム。 - 請求項2又は請求項3のいずれか一項に記載の計算機システムであって、
前記複数の計算機の各々は、前記複数の計算機の各々がマスタとして管理する前記管理範囲、及びスレーブとして管理する前記管理範囲を示す構成情報を保持し、
前記複製処理では、
前記第2の計算機の復旧制御部が、前記複製シーケンス番号を含む前記第1の複製データが送信された後、前記複数の計算機に前記第1の計算機を追加するための合流イベントの前記シーケンス番号である合流シーケンス番号の決定を前記第2の計算機のデータ制御部に指示し、
前記第2の計算機のデータ制御部が、
分散合意アルゴリズムに基づいて、前記複数の計算機の各々の前記データ制御部と通信することによって前記合流シーケンス番号を決定し、
前記決定された合流シーケンス番号、及び、前記合流イベントの内容が対応づけられた前記履歴情報を保持し、
前記決定された合流シーケンス番号を前記第2の計算機の復旧制御部に出力し、
前記更新処理では、
前記第2の計算機のデータ管理部が、
前記第1の複製データが送信された後に、当該第1の複製データに含まれる前記シーケンス番号と、前記合流シーケンス番号とを比較して、前記合流イベントが発生するか否かを判定し、
前記合流イベントが発生すると判定された場合、前記第1の計算機の復旧制御部に、前記合流シーケンス番号を送信し、
前記合流イベントでは、前記第1の計算機が前記処理対象の管理範囲のマスタとなるように前記構成情報が更新されることを特徴とする計算機システム。 - 請求項5に記載の計算機システムであって、
前記第1の計算機は、
前記処理対象の管理範囲をマスタとして管理する計算機、又は、前記処理対象の管理範囲をスレーブとして管理する計算機の少なくともいずれか一方の計算機を前記第2の計算機として選択し、
前記選択された第2の計算機に前記復旧要求を送信することを特徴とする計算機システム。 - ネットワークを介して複数の計算機が接続され、前記複数の計算機の各々が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムにおける計算機システム管理方法であって、
前記複数の計算機の各々は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記データベースに格納されるデータは、前記データの識別情報、前記データの値、及び前記データベースにおけるイベントの実行順番であるシーケンス番号を含み、
前記複数の計算機の各々には、前記データの識別情報に対して分散配置アルゴリズムを適用することによって決定された管理範囲毎に当該データが分散して配置され、
前記複数の計算機の各々は、
配置されたデータを管理するデータ管理部と、
配置されたデータに対する操作の前記シーケンス番号を決定するデータ制御部と、
新たに追加された計算機に、所定の管理範囲に含まれるデータの複製データを送信する復旧制御部と、を有し、
前記複数の計算機は、復旧要求を送信する第1の計算機、及び前記復旧要求を受信する第2の計算機を含み、
前記方法は、
前記第2の計算機が、前記第1の計算機から復旧要求を受信し、前記第2の計算機の状態を復旧状態に遷移させ、前記シーケンス番号に基づいて前記データベースからデータを一つ以上読み出し、第1の複製データとして前記第1の計算機に送信する複製処理を実行するステップと、
前記第2の計算機が、前記復旧状態において前記データの更新命令を受信した場合、前記更新命令の前記シーケンス番号を決定し、前記更新命令に基づいて所定のデータを更新し、第2の複製データとして送信する更新処理を実行するステップと、
前記第1の計算機又は前記第2の計算機の少なくともいずれか一方が、前記第1の計算機における前記第1の複製データ及び前記第2の複製データの書き込み順番を制御するステップと、
前記第1の計算機が、前記書き込み順番に基づいて、前記第1の複製データ及び前記第2の複製データを前記データベースを構成する記憶領域に書き込む書込処理を実行するステップと、を含むことを特徴とする計算機システム管理方法。 - 請求項7に記載の計算機システム管理方法であって、
前記複数の計算機の各々は、前記シーケンス番号、及び前記データベースにおけるイベントの内容が対応づけられた履歴情報を保持し、
前記復旧要求は、処理対象の前記管理範囲を示す情報を含み、
前記複製処理は、
前記第2の計算機の復旧制御部が、
前記復旧要求を受信した場合、前記履歴情報に基づいて、最新のシーケンス番号を複製シーケンス番号として保持するステップと、
前記処理対象の管理範囲の排他ロックを取得するステップと、
前記処理対象の管理範囲に含まれるデータの中から、未送信のデータ、かつ、前記複製シーケンス番号より古い前記シーケンス番号を含むデータを一つ以上読み出して、前記第1の複製データとして前記第1の計算機の復旧制御部に送信するステップと、
前記取得された排他ロックを解放するステップと、を含み、
前記更新処理は、
前記第2の計算機のデータ管理部が、
前記処理対象の管理範囲の前記排他ロックを取得するステップと、
前記更新命令に基づいて前記所定のデータを更新し、前記第1の複製データの送信指示を前記第2の計算機の復旧制御部に出力するステップと、
前記取得された排他ロックを解放するステップと、
前記第2の計算機の復旧制御部が、前記送信指示に基づいて前記第1の複製データを前記第1の計算機の復旧制御部に送信するステップと、を含み、
前記書込処理では、前記第1の計算機の復旧制御部が、受信した順番にしたがって、前記第1の複製データ及び前記第2の複製データを前記データベースを構成する記憶領域に書き込むことを特徴とする計算機システム管理方法。 - 請求項7に記載の計算機システム管理方法であって、
前記複数の計算機の各々は、
前記シーケンス番号、及び前記データベースにおけるイベントの内容が対応づけられた履歴情報を保持し、
前記第1の複製データ及び前記第2の複製データを一時的に格納する作業記憶領域を有し、
前記復旧要求は、処理対象の前記管理範囲を示す情報を含み、
前記複製処理は、
前記第2の計算機の復旧制御部が、
前記復旧要求を受信した場合、前記履歴情報に基づいて、最新のシーケンス番号を複製シーケンス番号として保持するステップと、
前記処理対象の管理範囲に含まれるデータの中から、未送信のデータ、かつ、前記複製シーケンス番号より古い前記シーケンス番号を含むデータを一つ以上読み出して、前記第1の複製データとして前記第1の計算機の復旧制御部に送信するステップと、を含み、
前記更新処理は、
前記第2の計算機のデータ管理部が、前記更新命令に基づいて前記所定のデータを更新し、前記第1の複製データの送信指示を前記第2の計算機の復旧制御部に出力するステップと、
前記第2の計算機の復旧制御部が、前記送信指示に基づいて前記第1の複製データを前記第1の計算機の復旧制御部に送信するステップと、を含み、
前記書込処理は、
前記第1の計算機の復旧制御部が、
前記受信した第1の複製データ及び前記受信した第2の複製データを前記作業記憶領域に格納するステップと、
前記データベース及び前記作業記憶領域の中から、同一の前記データの識別情報を含む、前記第1の複製データ及び前記第2の複製データを検索するステップと、
前記検索された第1の複製データに含まれる前記シーケンス番号、及び前記検索された第2の複製データに含まれる前記シーケンス番号を参照して、最新の前記シーケンス番号を含む複製データを選択するステップと、
前記選択された複製データを前記データベースを構成する記憶領域に書き込むステップと、を含むことを特徴とする計算機システム管理方法。 - 請求項9に記載の計算機システム管理方法であって、
前記データベースに格納されるデータは、さらに、削除対象のデータであるか否かを示す削除フラグを含み、
前記更新処理は、前記第2の計算機のデータ管理部が、前記更新命令がデータの削除命令である場合に、前記削除フラグが付与された削除対象のデータを前記第1の複製データとして前記第1の計算機の復旧制御部に送信するステップを含み、
前記書込処理は、前記第1の計算機のデータ管理部が、前記データベースに書き込まれたデータのうち、前記削除フラグが付与されたデータを、前記データベースを構成する記憶領域から削除するステップを含むこと特徴とする計算機システム管理方法。 - 請求項8又は請求項9のいずれか一項に記載の計算機システム管理方法であって、
前記複数の計算機の各々は、前記複数の計算機の各々がマスタとして管理する前記管理範囲、及びスレーブとして管理する前記管理範囲を示す構成情報を保持し、
前記複製処理は、
前記第2の計算機の復旧制御部が、前記複製シーケンス番号を含む前記第1の複製データが送信された後、前記複数の計算機に前記第1の計算機を追加するための合流イベントの前記シーケンス番号である合流シーケンス番号の決定を前記第2の計算機のデータ制御部に指示するステップと、
前記第2の計算機のデータ制御部が、
分散合意アルゴリズムに基づいて、前記複数の計算機の各々の前記データ制御部と通信することによって前記合流シーケンス番号を決定するステップと、
前記決定された合流シーケンス番号、及び、前記合流イベントの内容が対応づけられた前記履歴情報を保持するステップと、
前記決定された合流シーケンス番号を前記第2の計算機の復旧制御部に出力するステップと、を含み、
前記更新処理は、
前記第2の計算機のデータ管理部が、
前記第1の複製データが送信された後に、当該第1の複製データに含まれる前記シーケンス番号と、前記合流シーケンス番号とを比較して、前記合流イベントが発生するか否かを判定するステップと、
前記合流イベントが発生すると判定された場合、前記第1の計算機の復旧制御部に、前記合流シーケンス番号を送信するステップと、を含み、
前記合流イベントでは、前記第1の計算機が前記処理対象の管理範囲のマスタとなるように前記構成情報が更新されることを特徴とする計算機システム管理方法。 - 請求項11に記載の計算機システム管理方法であって、
前記方法は、
前記第1の計算機が、
前記処理対象の管理範囲をマスタとして管理する計算機、又は、前記処理対象の管理範囲をスレーブとして管理する計算機の少なくともいずれか一方の計算機を前記第2の計算機として選択するステップと、
前記選択された第2の計算機に前記復旧要求を送信するステップと、を含むことを特徴とする計算機システム管理方法。 - ネットワークを介して複数の計算機が接続され、前記複数の計算機の各々が有する記憶領域から構成されたデータベースを用いて業務を実行する計算機システムに含まれる前記計算機が実行するプログラムであって、
前記複数の計算機の各々は、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサと接続され、前記ネットワークを介して他の前記計算機と通信するためのネットワークインタフェースとを有し、
前記データベースに格納されるデータは、前記データの識別情報、前記データの値、及び前記データベースにおけるイベントの実行順番であるシーケンス番号を含み、
前記複数の計算機の各々には、前記データの識別情報に対して分散配置アルゴリズムを適用することによって決定された管理範囲毎に当該データが分散して配置され、
前記複数の計算機の各々は、
配置されたデータを管理するデータ管理部と、
配置されたデータに対する操作の前記シーケンス番号を決定するデータ制御部と、
新たに追加された計算機に、所定の管理範囲に含まれるデータの複製データを送信する復旧制御部と、を有し、
前記プログラムは、
他の前記計算機から復旧要求を受信し、前記計算機の状態を復旧状態に遷移し、前記シーケンス番号に基づいて前記データベースに格納される前記データを一つ以上読み出し、第1の複製データとして前記他の計算機に送信する複製処理を実行する手順と、
前記復旧状態において前記データの更新命令を受信した場合、前記更新命令の前記シーケンス番号を決定し、前記更新命令に基づいて所定のデータを更新し、第2の複製データとして送信する更新処理を実行する手順と、
前記他の計算機における前記第1の複製データ及び前記第2の複製データの書き込み順番を制御する手順と、を前記計算機に実行させることを特徴とするプログラム。 - 請求項13に記載のプログラムであって、
前記複数の計算機の各々は、前記シーケンス番号、及び前記データベースにおけるイベントの内容が対応づけられた履歴情報を保持し、
前記復旧要求は、処理対象の前記管理範囲を示す情報を含み、
前記複製処理は、
前記計算機の復旧制御部が、
前記復旧要求を受信した場合、前記履歴情報に基づいて、最新のシーケンス番号を複製シーケンス番号として保持する手順と、
前記処理対象の管理範囲の排他ロックを取得する手順と、
前記処理対象の管理範囲に含まれるデータの中から、未送信のデータ、かつ、前記複製シーケンス番号より古い前記シーケンス番号を含むデータを一つ以上読み出して、前記第1の複製データとして前記他の計算機の復旧制御部に送信する手順と、
前記取得された排他ロックを解放する手順と、を含み、
前記更新処理は、
前記計算機のデータ管理部が、
前記処理対象の管理範囲の前記排他ロックを取得する手順と、
前記更新命令に基づいて前記所定のデータを更新し、前記第1の複製データの送信指示を前記計算機の復旧制御部に出力する手順と、
前記取得された排他ロックを解放する手順と、
前記計算機の復旧制御部が、前記送信指示に基づいて前記第1の複製データを前記他の計算機の復旧制御部に送信する手順と、を含むことを特徴とするプログラム。
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/JP2013/061257 WO2014170952A1 (ja) | 2013-04-16 | 2013-04-16 | 計算機システム、計算機システム管理方法及びプログラム |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP5952960B2 true JP5952960B2 (ja) | 2016-07-13 |
| JPWO2014170952A1 JPWO2014170952A1 (ja) | 2017-02-16 |
Family
ID=51730925
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP2015512218A Active JP5952960B2 (ja) | 2013-04-16 | 2013-04-16 | 計算機システム、計算機システム管理方法及びプログラム |
Country Status (4)
| Country | Link |
|---|---|
| US (1) | US9892183B2 (ja) |
| EP (1) | EP2988220B1 (ja) |
| JP (1) | JP5952960B2 (ja) |
| WO (1) | WO2014170952A1 (ja) |
Families Citing this family (21)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US10333724B2 (en) | 2013-11-25 | 2019-06-25 | Oracle International Corporation | Method and system for low-overhead latency profiling |
| US20150356117A1 (en) * | 2014-06-09 | 2015-12-10 | Oracle International Corporation | Eventual consistency to resolve subscriber sharing relationships in a distributed system |
| US9553998B2 (en) | 2014-06-09 | 2017-01-24 | Oracle International Corporation | Sharing group notification |
| US9910740B1 (en) * | 2014-06-30 | 2018-03-06 | EMC IP Holding Company LLC | Concurrent recovery operation management |
| JPWO2016117322A1 (ja) * | 2015-01-22 | 2017-11-02 | 日本電気株式会社 | 処理要求装置、処理装置、データベースシステム、データベース更新方法およびプログラム |
| US10747777B2 (en) | 2015-03-11 | 2020-08-18 | Hitachi, Ltd. | Computer system and transaction processing management method |
| US10462218B1 (en) * | 2015-07-15 | 2019-10-29 | Google Llc | System and method for sending proposals within a distributed state machine replication system |
| JP2017130705A (ja) * | 2016-01-18 | 2017-07-27 | 日本電気株式会社 | データ管理システム、データ管理方法、及び、データ管理プログラム |
| JP6557197B2 (ja) * | 2016-09-02 | 2019-08-07 | 日本電信電話株式会社 | 分散dbシステム、db装置、および、サービス再開方法 |
| US10896103B2 (en) * | 2016-09-05 | 2021-01-19 | Hitachi, Ltd. | Information processing system |
| US10007695B1 (en) * | 2017-05-22 | 2018-06-26 | Dropbox, Inc. | Replication lag-constrained deletion of data in a large-scale distributed data storage system |
| JP6663534B2 (ja) * | 2017-08-10 | 2020-03-11 | 株式会社日立製作所 | 計算機システムおよびデータ処理方法 |
| US11036677B1 (en) | 2017-12-14 | 2021-06-15 | Pure Storage, Inc. | Replicated data integrity |
| US11275764B2 (en) * | 2018-10-11 | 2022-03-15 | EMC IP Holding Company LLC | Highly resilient synchronous replication with automatic recovery |
| JP6972052B2 (ja) * | 2019-02-28 | 2021-11-24 | 株式会社安川電機 | 通信システム、通信方法、及びプログラム |
| US11290390B2 (en) | 2019-11-20 | 2022-03-29 | Oracle International Corporation | Methods, systems, and computer readable media for lockless communications network resource quota sharing |
| CN111209304B (zh) * | 2019-12-30 | 2023-04-07 | 华为云计算技术有限公司 | 数据处理方法、装置及系统 |
| CN113300863B (zh) * | 2020-02-24 | 2023-06-30 | 北京北斗弘鹏科技有限公司 | 一种无地址信息的网络设备运行管理方法及网络设备 |
| JP7327208B2 (ja) * | 2020-02-27 | 2023-08-16 | 横河電機株式会社 | データ記録装置、データ記録方法、データ記録プログラム、システム、方法、および、プログラム |
| CN113822015B (zh) * | 2020-06-16 | 2025-01-14 | 北京沃东天骏信息技术有限公司 | 序列号生成方法、装置、电子设备及计算机可读介质 |
| JP7047027B2 (ja) * | 2020-07-30 | 2022-04-04 | 株式会社日立製作所 | 計算機システム、構成変更制御装置、および構成変更制御方法 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2012140957A1 (ja) * | 2011-04-13 | 2012-10-18 | 株式会社日立製作所 | 情報記憶システム及びそのデータ複製方法 |
| WO2013046352A1 (ja) * | 2011-09-28 | 2013-04-04 | 株式会社日立製作所 | 計算機システム、データ管理方法及びデータ管理プログラム |
Family Cites Families (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US5261085A (en) | 1989-06-23 | 1993-11-09 | Digital Equipment Corporation | Fault-tolerant system and method for implementing a distributed state machine |
| JP2004259079A (ja) * | 2003-02-27 | 2004-09-16 | Hitachi Ltd | データ処理システム |
| US20060235901A1 (en) * | 2005-04-18 | 2006-10-19 | Chan Wing M | Systems and methods for dynamic burst length transfers |
| JP5094460B2 (ja) | 2008-02-20 | 2012-12-12 | 株式会社日立製作所 | 計算機システム、データ一致化方法およびデータ一致化処理プログラム |
| US9235595B2 (en) * | 2009-10-02 | 2016-01-12 | Symantec Corporation | Storage replication systems and methods |
| JP5454201B2 (ja) * | 2010-02-15 | 2014-03-26 | 富士通株式会社 | データストア切替装置、データストア切替方法およびデータストア切替プログラム |
| KR101656384B1 (ko) * | 2010-06-10 | 2016-09-12 | 삼성전자주식회사 | 불휘발성 메모리 장치의 데이터 기입 방법 |
| US20120284231A1 (en) * | 2011-05-06 | 2012-11-08 | International Business Machines Corporation | Distributed, asynchronous and fault-tolerant storage system |
| US8676951B2 (en) * | 2011-07-27 | 2014-03-18 | Hitachi, Ltd. | Traffic reduction method for distributed key-value store |
| JP5733124B2 (ja) * | 2011-09-12 | 2015-06-10 | 富士通株式会社 | データ管理装置、データ管理システム、データ管理方法、及びプログラム |
| US20140019573A1 (en) * | 2012-07-16 | 2014-01-16 | Compellent Technologies | Source reference replication in a data storage subsystem |
-
2013
- 2013-04-16 EP EP13882090.7A patent/EP2988220B1/en active Active
- 2013-04-16 JP JP2015512218A patent/JP5952960B2/ja active Active
- 2013-04-16 US US14/426,996 patent/US9892183B2/en active Active
- 2013-04-16 WO PCT/JP2013/061257 patent/WO2014170952A1/ja not_active Ceased
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| WO2012140957A1 (ja) * | 2011-04-13 | 2012-10-18 | 株式会社日立製作所 | 情報記憶システム及びそのデータ複製方法 |
| WO2013046352A1 (ja) * | 2011-09-28 | 2013-04-04 | 株式会社日立製作所 | 計算機システム、データ管理方法及びデータ管理プログラム |
Also Published As
| Publication number | Publication date |
|---|---|
| US20150242481A1 (en) | 2015-08-27 |
| EP2988220A1 (en) | 2016-02-24 |
| EP2988220B1 (en) | 2020-09-16 |
| US9892183B2 (en) | 2018-02-13 |
| JPWO2014170952A1 (ja) | 2017-02-16 |
| EP2988220A4 (en) | 2017-01-11 |
| WO2014170952A1 (ja) | 2014-10-23 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP5952960B2 (ja) | 計算機システム、計算機システム管理方法及びプログラム | |
| US9367261B2 (en) | Computer system, data management method and data management program | |
| CN106844399B (zh) | 分布式数据库系统及其自适应方法 | |
| US10853242B2 (en) | Deduplication and garbage collection across logical databases | |
| JP6835968B2 (ja) | スタビングによるコンテンツ記憶の最適化 | |
| CN112099918A (zh) | 容器化环境中的集群的实时迁移 | |
| CN112084258A (zh) | 一种数据同步方法和装置 | |
| JP6196389B2 (ja) | 分散型ディザスタリカバリファイル同期サーバシステム | |
| CN113010496A (zh) | 一种数据迁移方法、装置、设备和存储介质 | |
| US20150347250A1 (en) | Database management system for providing partial re-synchronization and partial re-synchronization method of using the same | |
| US9984139B1 (en) | Publish session framework for datastore operation records | |
| JP5686034B2 (ja) | クラスタシステム、同期制御方法、サーバ装置および同期制御プログラム | |
| JP2022521412A (ja) | 分散システムにおける非同期ストレージ管理 | |
| KR20200057409A (ko) | 라이브 서비스를 위한 분산 파일 시스템 및 데이터 처리 방법 | |
| WO2022151593A1 (zh) | 一种数据恢复方法、装置、设备、介质及程序产品 | |
| CN118051921A (zh) | 本地多租户行表加密 | |
| US20210248108A1 (en) | Asynchronous data synchronization and reconciliation | |
| CN117149097B (zh) | 一种分布式存储系统数据访问控制方法及装置 | |
| JP6007340B2 (ja) | 計算機システム、計算機システム管理方法及びプログラム | |
| KR101748913B1 (ko) | 분산 저장 환경에서 게이트웨이를 선택하기 위한 클러스터 관리 방법 및 데이터 저장 시스템 | |
| KR102084014B1 (ko) | 데이터 타입 기반의 멀티 디바이스 데이터 동기화를 위한 방법 및 시스템 | |
| CN104572754A (zh) | 一种数据库系统、数据库系统访问方法及装置 | |
| JPWO2012059976A1 (ja) | プログラム、ストリームデータ処理方法及びストリームデータ処理計算機 | |
| KR20200013448A (ko) | 데이터 동기화 트래픽을 최소화하기 위한 방법 및 시스템 | |
| JP2025517466A (ja) | オブジェクトメタデータの矛盾解決 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20150219 |
|
| 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: 20160524 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20160610 |
|
| R150 | Certificate of patent or registration of utility model |
Ref document number: 5952960 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |