JP6517753B2 - マスターサーバ、テーブル更新方法、およびプログラム - Google Patents

マスターサーバ、テーブル更新方法、およびプログラム Download PDF

Info

Publication number
JP6517753B2
JP6517753B2 JP2016130557A JP2016130557A JP6517753B2 JP 6517753 B2 JP6517753 B2 JP 6517753B2 JP 2016130557 A JP2016130557 A JP 2016130557A JP 2016130557 A JP2016130557 A JP 2016130557A JP 6517753 B2 JP6517753 B2 JP 6517753B2
Authority
JP
Japan
Prior art keywords
difference information
update difference
update
priority
unit
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
Application number
JP2016130557A
Other languages
English (en)
Other versions
JP2018005508A (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.)
Toshiba Corp
Original Assignee
Toshiba Corp
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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2016130557A priority Critical patent/JP6517753B2/ja
Publication of JP2018005508A publication Critical patent/JP2018005508A/ja
Application granted granted Critical
Publication of JP6517753B2 publication Critical patent/JP6517753B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Retry When Errors Occur (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明の実施形態は、マスターサーバ、テーブル更新方法、およびプログラムに関する。
データベースに格納されたテーブルへのデータの書き込み処理において、レプリケーションと称される処理が行われている。「レプリケーション」とは、クライアントからデータの書込要求を受信した場合、マスターサーバのテーブル(ラベル付けされたデータ書き込み領域あるいはデータ)だけでなく、スレーブサーバのテーブルにもデータの書き込みを行う処理である。
また、マスターサーバのテーブルに対する書き込み性能を向上させるため、非同期レプリケーションが行われている。「非同期レプリケーション」とは、マスターサーバのテーブルへのデータの書き込みが完了した場合、スレーブサーバのテーブルへのデータの書き込み完了を待たずに、クライアントに書き込み完了通知を送信する処理である。
しかしながら、非同期レプリケーションが行われると、スレーブサーバのテーブルへのデータの書き込みに遅延が発生する場合があった。特に、マスターサーバが一時的に大量の書込み要求を受信すると、スレーブサーバのテーブルに対するデータの書き込み遅延が大きくなる。このため、迅速に更新する必要のある優先度の高いテーブルに対する更新処理が、大量の書込要求の影響で遅延する場合があった。
特開2012−64130号公報
本発明が解決しようとする課題は、優先度の高いテーブルに対する更新処理を迅速に行うことができるマスターサーバ、テーブル更新方法、およびプログラムを提供することである。
実施形態のマスターサーバは、記憶部と、テーブル更新部と、スケジュール部と、差分送信部とを持つ。前記記憶部は、テーブルで管理されるデータを記憶する。前記テーブル更新部は、クライアントから受信した書込要求に基づき、前記記憶部におけるテーブルを更新すると共に、前記更新の内容を認識可能な更新差分情報を生成する。前記スケジュール部は、前記テーブル更新部により生成された前記更新差分情報を自装置と並行してデータを記憶するスレーブサーバに送信する順番を、前記テーブルごとに設定される優先度に基づいて制御する。前記差分送信部は、前記スケジュール部によって制御された順番に応じて、前記更新差分情報を前記スレーブサーバに送信する。
実施形態に係るストレージシステム10の全体構成を示す図。 実施形態に係るマスターサーバ100およびスレーブサーバ200の動作を示す図。 実施形態に係る記憶部150に格納されている設定情報Sの一例を示す図。 実施形態に係るマスターサーバ100の動作の一例を示す図。 実施形態に係るマスターサーバ100の動作の一例を示す図。 実施形態に係るマスターサーバ100の動作の一例を示す図。 実施形態に係るスケジュール部120によって取得される更新差分の順番の一例を示す図。 実施形態に係る差分送信部130によって送信される更新差分の順番の一例を示す図。 実施形態に係る優先度の設定によって得られる効果の一例を示す図。 実施形態に係る更新順序の一貫性を説明するための図。 実施形態に係るマスターサーバ100の動作の一例を示す図。 実施形態に係るマスターサーバ100の動作の一例を示す図。 実施形態に係るマスターサーバ100の動作の一例を示す図。 実施形態に係るマスターサーバ100の動作の一例を示す図。 実施形態に係るマスターサーバ100の動作の一例を示す図。 実施形態に係るSQL処理部110の動作を示すフローチャート。 実施形態に係るスケジュール部120の動作を示すフローチャート。 実施形態に係る差分送信部130の動作を示すフローチャート。 実施形態に係るSQL処理部210の動作を示すフローチャート。
以下、実施形態のマスターサーバ、テーブル更新方法、およびプログラムを、図面を参照して説明する。
図1は、実施形態に係るストレージシステム10の全体構成を示す図である。図1に示されるように、本実施形態のストレージシステム10は、マスターサーバ100と、スレーブサーバ200と、クライアント端末300とを備える。マスターサーバ100、スレーブサーバ200、およびクライアント端末300は、ネットワークNWを介して互いに接続される。ネットワークNWは、例えば、WAN(Wide Area Network)やLAN(Local Area Network)等である。
マスターサーバ100は、クライアント端末300からの要求に応じて、データを記憶するサーバである。マスターサーバ100は、SQL処理部110と、スケジュール部120と、差分送信部130と、書込要求受信部140と、記憶部150とを備える。
SQL処理部110、スケジュール部120、差分送信部130、および書込要求受信部140は、例えば、マスターサーバ100のプロセッサがプログラムを実行することで実現されてもよいし、LSI(Large Scale Integration)、ASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)などのハードウェアによって実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。
記憶部150は、例えば、RAM(Random Access Memory)、ROM(Read Only Memory)、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ、またはこれらのうち複数が組み合わされたハイブリッド型記憶装置などにより実現される。記憶部150は、テーブルで管理されるデータを記憶する。テーブルとは、例えば、ラベル付けされたデータ書き込み領域あるいはデータである。詳細は後述するが、テーブルには優先度が設定されている。また、詳細は後述するが、記憶部150は、テーブルの優先度と、テーブルが属するグループとが関連付けられた設定情報Sを記憶している。
スレーブサーバ200は、レプリケーションを行うために設けられたサーバであり、マスターサーバ100に記憶されたテーブルと同じテーブルを記憶する。すなわち、スレーブサーバ200は、マスターサーバ100と並行してデータを記憶する。スレーブサーバ200は、SQL処理部210と、差分受信部220と、記憶部230とを備える。
SQL処理部210および差分受信部220は、例えば、スレーブサーバ200のプロセッサがプログラムを実行することで実現されてもよいし、LSI、ASIC、FPGAなどのハードウェアによって実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。
記憶部230は、例えば、RAM、ROM、HDD、SSD、フラッシュメモリ、またはこれらのうち複数が組み合わされたハイブリッド型記憶装置などにより実現される。
クライアント端末300は、ネットワークNWを介してマスターサーバ100にデータの書き込みを要求する端末である。クライアント端末300は、デスクトップ型のコンピュータまたはノート型のコンピュータであるが、これに限られない。例えば、クライアント端末300は、タブレット端末、スマートフォンなどの携帯電話、またはPDA(Personal Digital Assistant)であってもよい。
クライアント端末300は、表示部310と、入力部320と、書込要求送信部330とを備える。表示部310は、液晶表示装置などの表示装置である。入力部320は、キーボードやマウスなどの入力装置である。クライアント端末300がスマートフォンなどの携帯電話またはタブレット端末である場合には、入力部320はタッチパネルなどの入力装置であってもよい。
書込要求送信部330は、例えば、クライアント端末300のプロセッサがプログラムを実行することで実現されてもよいし、LSI、ASIC、FPGAなどのハードウェアによって実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。
ユーザは、入力部320を用いてマスターサーバ100の記憶部150に書き込むデータを指定する。書込要求送信部330は、指定されたデータを記憶部150に書き込むための書込要求を、マスターサーバ100に送信する。書込要求には、記憶部150に書き込まれるデータの他、データの書き込み先のアドレスおよびデータの書き込みにより更新されるテーブルの識別情報などが含まれる。
図2は、実施形態に係るマスターサーバ100およびスレーブサーバ200の動作を示す図である。まず、マスターサーバ100の書込要求受信部140は、クライアント端末300から送信された書込要求を受信する。次に、書込要求受信部140は、受信した書込要求をSQL処理部110に出力する。
SQL処理部110は、クライアント端末300から受信した書込要求に基づき、記憶部150におけるテーブルを更新すると共に、更新の内容を認識可能な更新差分(更新差分情報)を生成するテーブル更新部として機能する。具体的に、SQL処理部110は、書込要求受信部140から入力された書込要求に基づいてデータを記憶部150に書き込むことで、記憶部150に記憶されたテーブルを更新する。その後、SQL処理部110は、更新の内容を認識可能な更新差分を生成し、生成した更新差分をFIFO(First-In, First-Out)のキュー161に格納する。
更新差分は、SQL処理部110が記憶部150に対して行った更新の内容を認識可能な情報であり、例えば、更新が行われるごとに付与される一連番号、更新されたテーブルの識別情報、更新されたデータそのもの(更新の内容が削除であれば削除された旨を示す情報)等を含む。SQL処理部110は、記憶部150に記憶されたテーブルを更新する度に、更新差分をキュー161に格納していく。
スケジュール部120は、SQL処理部110により生成された更新差分をマスターサーバ100と並行してデータを記憶するスレーブサーバ200に送信する順番を、テーブルごとに設定される優先度に基づいて制御する。具体的に、スケジュール部120は、キュー161から更新差分を一つ取得し、取得した更新差分を3つのキュー162から164のいずれかに格納する。キュー162から164は、FIFOのキューであり、それぞれ優先度が割り当てられている。具体的には、キュー162は優先度1(高優先度)のキューであり、キュー163は優先度2(中優先度)のキューであり、キュー164は優先度3(低優先度)のキューである。例えば、スケジュール部120は、優先度1のテーブルの更新差分をキュー162に格納し、優先度2のテーブルの更新差分をキュー163に格納し、優先度3のテーブルの更新差分をキュー164に格納する。
図3は、実施形態に係る記憶部150に格納されている設定情報Sの一例を示す図である。設定情報Sには、「テーブル名」の項目と、「優先度」の項目と、「グループ」の項目とが含まれる。テーブル名は、記憶部150に記憶されているテーブルの名称を示す情報である。優先度は、記憶部150に記憶されているテーブルの優先度を示す情報である。グループは、記憶部150に記憶されているテーブルの属するグループを示す情報である。
図3において、テーブル名が“Normal”であるテーブルは、定期的に更新されるテーブルである。テーブル名が“Log”であるテーブルは、頻繁に更新されるテーブルである。テーブル名が“Error”であるテーブルは、エラー発生時にのみ更新されるテーブルである。このため、更新差分の発生頻度は“Log”が最も高く、“Error”が最も低い。
優先度が高いテーブルほど、優先的にスレーブサーバ200の記憶部230に格納される。“Normal”の優先度は2であり、“Log”の優先度は3であり、“Error”の優先度は1である。このため、“Error”の更新差分が最も優先的にスレーブサーバ200に送信され、記憶部230内の“Error”のテーブルがスレーブサーバ200において最も優先的に更新される。
図4から図6は、実施形態に係るマスターサーバ100の動作の一例を示す図である。図4に示される例において、スケジュール部120は、“Log”の更新差分L−1、“Normal”の更新差分N−1、および“Log”の更新差分L−2を、この順番でキュー161から取得している。前述したように、“Log”の優先度は3(低優先度)であり、“Normal”の優先度は2(中優先度)である。
この場合、図5に示されるように、スケジュール部120は、1番目に取得した更新差分L−1を、優先度3のキュー164に格納する。次に、スケジュール部120は、2番目に取得した更新差分N−1を、優先度2のキュー163に格納する。その後、スケジュール部120は、3番目に取得した更新差分L−2を、優先度3のキュー164に格納する。
差分送信部130は、優先度1のキュー162、優先度2のキュー163、優先度3のキュー164から、優先度に基づく順番で更新差分を取得する。図6に示される例においては、優先度1のキュー162に更新差分が格納されていないため、差分送信部130は、優先度2のキュー163から更新差分N−1を取得し、取得した更新差分N−1をスレーブサーバ200に送信する。次に、差分送信部130は、優先度3のキュー164から更新差分L−1を取得し、取得した更新差分L−1をスレーブサーバ200に送信する。その後、差分送信部130は、優先度3のキュー164から更新差分L−2を取得し、取得した更新差分L−2をスレーブサーバ200に送信する。
このように、スケジュール部120は、SQL処理部110から更新差分L−1を取得した後、更新差分N−1を取得した場合、更新差分L−1に係るテーブルの優先度と、更新差分N−1に係るテーブルの優先度とを比較し、更新差分L−1をスレーブサーバ200に送信する順番と、更新差分N−1をスレーブサーバ200に送信する順番とを入れ替えるか否かを判定する。具体的には、更新差分N−1に係るテーブルの優先度2の方が更新差分L−1に係るテーブルの優先度3よりも高いため、スケジュール部120は、更新差分L−1の順番と更新差分N−1の順番とを、キュー163およびキュー164を用いて入れ替える。
これによって、マスターサーバ100は、優先度の高いテーブルに対する更新処理を迅速にスレーブサーバ200に行わせることができる。また、スケジュール部120は、複数のキュー162から164を用いて更新差分を入れ替えるため、更新差分の送信順序を効率的に制御することができる。
また、差分送信部130は、優先度の高いキューから順に更新差分を取得し、取得した更新差分をスレーブサーバ200に送信する。これによって、マスターサーバ100は、スケジュール部120によって制御された順番に従って更新差分をスレーブサーバ200に送信することができる。
図7は、実施形態に係るスケジュール部120によって取得される更新差分の順番の一例を示す図である。図7に示される例において、スケジュール部120は、更新差分L−1、更新差分N−1、更新差分L−2、更新差分N−2、…、更新差分L−n、更新差分N−nを、この順番で取得している。
図8は、実施形態に係る差分送信部130によって送信される更新差分の順番の一例を示す図である。本実施形態においては、“Log”の優先度よりも“Normal”の優先度の方が高いため、差分送信部130は、“Log”の更新差分よりも“Normal”の更新差分を優先的にスレーブサーバ200に送信する。したがって、図8に示されるように、差分送信部130は、更新差分N−1、更新差分N−2、…、更新差分N−n、更新差分L−1、更新差分L−2、…、更新差分L−nを、この順番で送信する。
図9は、実施形態に係る優先度の設定によって得られる効果の一例を示す図である。時刻T0は、差分送信部130からスレーブサーバ200への、更新差分N−1の送信開始時刻を示す。時刻T1は、更新差分N−1の送信完了時刻を示す。時刻T2は、更新差分N−2の送信完了時刻を示す。時刻Tnは、更新差分N−nの送信完了時刻を示す。時刻W1は、スレーブサーバ200における更新差分N−1についての更新完了時刻を示す。時刻W2は、スレーブサーバ200における更新差分N−2についての更新完了時刻を示す。時刻Wnは、スレーブサーバ200における更新差分N−nについての更新完了時刻を示す。
図9において、送信時間tは1つの更新差分の送信に要する時間を示し、書込時間wは1つの更新差分の書き込みに要する時間を示す。なお、送信時間tは、書込時間wより長い。また、スレーブサーバ200は、更新差分の受信と記憶部230への書込みを並行して実行できるものとする。この場合、送信開始時刻T0から更新完了時刻Wnまでに要する時間は、t×n+wとなる。
一方、従来技術と同様に、スケジュール部120によって取得された更新差分の送信順序を制御せずに、差分送信部130が更新差分をスレーブサーバ200に送信する場合(図7に示される順番で更新差分を送信する場合)、送信開始時刻T0から更新完了時刻Wnまでに要する時間は、t×2n+wとなる。したがって、本発明によれば、送信開始時刻T0から更新完了時刻Wnまでに要する時間を従来の約半分まで短くすることができるため、優先度の高いテーブルに対する更新処理を迅速に行うことができる。
設定情報Sに含まれるグループに同じ値が設定されているテーブルは、同じグループに属する。図3においては、“Normal”のグループは2であり、“Log”のグループは1であり、“Error”のグループは1である。このため、“Log”のテーブルおよび“Error”のテーブルは、同一のグループに属する。同一のグループに属するテーブルは、更新順序の一貫性が保たれる。
図10は、実施形態に係る更新順序の一貫性を説明するための図である。図10に示されるように、マスターサーバ100は、記憶部150に対して更新処理1を行った後、更新処理2を行う。マスターサーバ100は、更新処理1が完了すると、更新処理1の更新差分1をスレーブサーバ200に送信する。また、マスターサーバ100は、更新処理2が完了すると、更新処理2の更新差分2をスレーブサーバ200に送信する。
もし、スレーブサーバ200が、更新差分1に基づく更新処理よりも先に、更新差分2に基づく更新処理を実行すると、記憶部230における更新順序の一貫性が損なわれることとなる。更新順序の一貫性が損なわれると、例えば、2つのテーブルをJOIN(結合)する場合に、一方のテーブルが新しく、他方のテーブルが古いという状況が発生してしまう。
本実施形態においては、前述したように、優先度の高いテーブルの更新が優先的に行われる。しかしながら、図10に示される例において、更新処理2のテーブルの優先度が、更新処理1のテーブルの優先度よりも高い場合、更新差分1に基づく更新処理よりも先に、更新差分2に基づく更新処理が実行されることとなり、スレーブサーバ200において更新順序の一貫性が損なわれてしまう。このため、本実施形態においては、更新順序の一貫性が保証されるグループが、設定情報Sに予め設定されている。
図11から図15は、実施形態に係るマスターサーバ100の動作の一例を示す図である。図11に示される例において、スケジュール部120は、“Normal”の更新差分N、“Log”の更新差分L、および“Error”の更新差分Eを、この順番でキュー161から取得している。前述したように、“Normal”の優先度は2(中優先度)であり、“Log”の優先度は3(低優先度)であり、“Error”の優先度は1(高優先度)である。
この場合、図11に示されるように、スケジュール部120は、1番目に取得した更新差分Nを、優先度2のキュー163に格納する。次に、スケジュール部120は、2番目に取得した更新差分Lを、優先度3のキュー164に格納する。図12は、更新差分Nおよび更新差分Lが、それぞれキュー163およびキュー164に格納された状態を示す。
次の更新差分Eの優先度は1であるため、スケジュール部120は、更新差分Eを優先度1のキュー162に格納することとなる。しかしながら、図3に示されるように、更新差分E(Error)の属するグループは、更新差分L(Log)の属するグループと同一であり、更新差分Lは既に優先度3のキュー164に格納されている。前述したように、同一グループの更新差分については、更新順序の一貫性を保証する必要がある。更新順序の一貫性を保証するためには、更新差分Eと同じグループに属する更新差分Lの優先度を、更新差分Eの優先度1(高優先度)に変更する必要がある。
このため、スケジュール部120は、更新差分Eと同一のグループに属する更新差分Lを優先度3のキュー164から、優先度1のキュー162に移動させる。図13は、更新差分Lが、優先度3のキュー164から、優先度1のキュー162に移動された状態を示す。更新差分Lが優先度1のキュー162に格納されると、図14に示されるように、スケジュール部120は、優先度が1である更新差分Eを優先度1のキュー162に格納する。
このように、更新差分Eに係るテーブルの優先度が更新差分Lに係るテーブルの優先度より高く、更新差分Lに係るテーブルと更新差分Eに係るテーブルとが同一のグループに属する場合、スケジュール部120は、更新差分Lを、更新差分Lに係るテーブルの優先度3に対応するキュー164から、更新差分Eに係るテーブルの優先度1に対応するキュー162に移動させる。これによって、同一のグループに属する更新差分については更新順序の一貫性を保証することができる。
差分送信部130は、優先度1のキュー162、優先度2のキュー163、優先度3のキュー164から、優先度に基づく順番で更新差分を取得する。図15に示される例においては、差分送信部130は、優先度1のキュー162から更新差分Lを取得し、取得した更新差分Lをスレーブサーバ200に送信する。次に、差分送信部130は、優先度1のキュー162から更新差分Eを取得し、取得した更新差分Eをスレーブサーバ200に送信する。その後、差分送信部130は、優先度2のキュー163から更新差分Nを取得し、取得した更新差分Nをスレーブサーバ200に送信する。
図11から図15に示される例において、スケジュール部120は、記憶部150に記憶された設定情報S(図3)を参照して、更新差分Lに係るテーブルと更新差分Eに係るテーブルとが同一のグループに属する否かを判定する。更新差分Lに係るテーブルと更新差分Eに係るテーブルとが同一のグループに属する場合、スケジュール部120は、更新差分Eに係るテーブルの優先度が更新差分Lに係るテーブルの優先度より高い場合であっても、更新差分Lをスレーブサーバ200に送信する順番と、更新差分Eをスレーブサーバ200に送信する順番とを入れ替えない。
これによって、同一のグループに属する更新差分については更新順序の一貫性を保証することができる。更新順序の一貫性が保証されることによって、例えば、2つのテーブルをJOIN(結合)する場合に、一方のテーブルが新しく、他方のテーブルが古いという状況が発生するのを防止することができる。
図16は、実施形態に係るSQL処理部110の動作を示すフローチャートである。本フローチャートを実行するためのプログラムは、マスターサーバ100のプログラムメモリに格納されている。
マスターサーバ100の書込要求受信部140がクライアント端末300から書込要求を受信すると、書込要求受信部140は、受信した書込要求をSQL処理部110に出力する。SQL処理部110は、書込要求受信部140から書込要求を受信したか否かを判定する(S10)。SQL処理部110は、書込要求受信部140から書込要求を受信したと判定した場合、受信した書込要求に従って記憶部150内のテーブルにデータを書き込む(S11)。
次に、SQL処理部110は、記憶部150内のテーブルへのデータの書き込みが成功したか否かを判定する(S12)。SQL処理部110は、記憶部150内のテーブルへのデータの書き込みが成功したと判定した場合、キュー161に更新差分を格納する(S13)。その後、SQL処理部110は、クライアント端末300に書き込み成功を通知し(S14)、前述のS10の処理に戻る。
このように、SQL処理部110は、記憶部150内のテーブルへのデータの書き込みが完了した場合、スレーブサーバ200の記憶部230内のテーブルへのデータの書き込み完了を待たずに、クライアント端末300に書き込み完了通知を送信する。このように、非同期レプリケーションを行うことによって、マスターサーバ100の記憶部150内のテーブルに対する書き込み性能を向上させることができる。
一方、S12において、SQL処理部110は、記憶部150内のテーブルへのデータの書き込みが失敗したと判定した場合、クライアント端末300に書き込み失敗を通知し(S15)、前述のS10の処理に戻る。クライアント端末300は、マスターサーバ100から書き込み失敗が通知されると、再度書込要求をマスターサーバ100に送信する。これによって、マスターサーバ100は、記憶部150内のテーブルに対する書き込み動作をリトライすることができる。
図17は、実施形態に係るスケジュール部120の動作を示すフローチャートである。本フローチャートを実行するためのプログラムは、マスターサーバ100のプログラムメモリに格納されている。
スケジュール部120は、キュー161から更新差分を取得したか否かを判定する(S20)。次に、スケジュール部120は、キュー161から更新差分を取得したと判定した場合、取得した更新差分に係るテーブルの優先度PおよびグループGを、記憶部150内の設定情報S(図3)を参照して判別する(S21)。例えば、受信した更新差分が“Normal”の更新差分である場合、優先度Pは2であり、グループGは2である。受信した更新差分が“Log”の更新差分の場合、優先度Pは3であり、グループGは1である。受信した更新差分が“Error”の更新差分の場合、優先度Pは1であり、グループGは1である。
次に、スケジュール部120は、優先度Pよりも低い優先度のキューに、同一グループの更新差分が存在するか否かを判定する(S22)。スケジュール部120は、優先度Pよりも低い優先度のキューに、同一グループの更新差分が存在すると判定した場合、同一グループの更新差分を優先度Pのキューに移動させる(S23)。その後、スケジュール部120は、前述のS22の処理に戻る。
一方、S22において、スケジュール部120は、優先度Pよりも低い優先度のキューに、同一グループの更新差分が存在しないと判定した場合、S20において受信した更新差分を優先度Pのキューに追加する(S24)。その後、スケジュール部120は、前述のS20の処理に戻る。
図18は、実施形態に係る差分送信部130の動作を示すフローチャートである。本フローチャートを実行するためのプログラムは、マスターサーバ100のプログラムメモリに格納されている。
まず、差分送信部130は、優先度Pを1に設定する(S30)。次に、差分送信部130は、優先度Pのキューに更新差分が存在するか否かを判定する(S31)。差分送信部130は、優先度Pのキューに更新差分が存在すると判定した場合、優先度Pのキューから更新差分を一つ取り出す(S32)。その後、差分送信部130は、取り出した更新差分をスレーブサーバ200に送信する(S33)。
次に、差分送信部130は、優先度Pより高い優先度Qのキューに更新差分が存在するか否かを判定する(S34)。差分送信部130は、優先度Pより高い優先度Qのキューに更新差分が存在すると判定した場合、優先度PをQに設定し(S35)、前述のS32の処理に戻る。一方、S34において、差分送信部130は、優先度Pより高い優先度Qのキューに更新差分が存在しないと判定した場合、前述のS31の処理に戻る。
S31において、差分送信部130は、優先度Pのキューに更新差分が存在しないと判定した場合、優先度Pが最も低い優先度であるか否かを判定する(S36)。例えば、図3に示される例においては、優先度3が最も低い優先度である。差分送信部130は、優先度Pが最も低い優先度であると判定した場合、前述のS30の処理に戻る。一方、S36において、差分送信部130は、優先度Pが最も低い優先度ではないと判定した場合、優先度Pに1を加算し(S37)、前述のS31の処理に戻る。
図19は、実施形態に係るSQL処理部210の動作を示すフローチャートである。本フローチャートを実行するためのプログラムは、スレーブサーバ200のプログラムメモリに格納されている。
スレーブサーバ200の差分受信部220がマスターサーバ100から更新差分を受信すると、差分受信部220は、受信した更新差分をSQL処理部210に出力する。SQL処理部210は、差分受信部220から更新差分を受信したか否かを判定する(S40)。SQL処理部210は、差分受信部220から更新差分を受信したと判定した場合、受信した更新差分に従って記憶部230内のテーブルにデータを書き込む(S41)。
次に、SQL処理部210は、記憶部230内のテーブルへのデータの書き込みが成功したか否かを判定する(S42)。SQL処理部210は、記憶部230内のテーブルへのデータの書き込みが成功したと判定した場合、マスターサーバ100に書き込み成功を通知し(S43)、前述のS40の処理に戻る。
一方、S42において、SQL処理部210は、記憶部230内のテーブルへのデータの書き込みが失敗したと判定した場合、マスターサーバ100に書き込み失敗を通知し(S44)、前述のS40の処理に戻る。マスターサーバ100は、スレーブサーバ200から書き込み失敗が通知されると、再度書込要求をスレーブサーバ200に送信する。これによって、スレーブサーバ200は、記憶部230内のテーブルに対する書き込み動作をリトライすることができる。以上の処理によって、スレーブサーバ200は、レプリケーションを行うことができる。
以上説明したように、SQL処理部110は、クライアント端末300から受信した書込要求に基づき、記憶部150におけるテーブルを更新すると共に、更新の内容を認識可能な更新差分情報を生成する。スケジュール部120は、SQL処理部110により生成された更新差分をスレーブサーバ200に送信する順番を、テーブルごとに設定される優先度に基づいて制御する。差分送信部130は、スケジュール部120によって制御された順番に応じて、更新差分情報をスレーブサーバ200に送信する。これによって、マスターサーバ100は、優先度の高いテーブルに対する更新処理を迅速にスレーブサーバ200に行わせることができる。
なお、上記実施形態において、ストレージシステム10が、レプリケーションを行うためのスレーブサーバを一つだけ備える例について説明したが、これに限られない、例えば、ストレージシステム10は、二つ以上のスレーブサーバを備えてもよい。この場合、マスターサーバ100は、各スレーブサーバに同一の更新差分を送信すればよい。
また、上記実施形態において、高優先度の更新差分が長時間続く場合には、低優先度の更新差分が長時間送信されなくなる。このため、スケジュール部120は、一定時間以上キューに滞留した更新差分を、優先度が一つ高いキューに移動させてもよい。これによって、低優先度の更新差分がキュー内に長時間滞留することを防止できる。
また、スケジュール部120は、厳密にレプリケーションを行う必要が無い場合には、一定時間以上キューに滞留した更新差分を、キューから削除してもよい。更新差分をキューから削除したとしても、マスターサーバ100内の記憶部150には更新されたテーブルが格納されている。このため、ユーザは、クライアント端末300を用いてマスターサーバ100内の記憶部150にアクセスすることで、最新のテーブルを参照することができる。
なお、上記実施形態によるマスターサーバ100およびスレーブサーバ200は、内部にコンピュータシステムを有している。そして、上述したマスターサーバ100およびスレーブサーバ200の各処理の過程は、プログラムの形式でコンピュータ読み取り可能な記録媒体に記憶されており、このプログラムをコンピュータが読み出して実行することによって上記各種処理が行われる。ここで、コンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、このコンピュータプログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該プログラムを実行するようにしてもよい。
以上説明した少なくともひとつの実施形態によれば、マスターサーバ100は、記憶部150と、SQL処理部110と、スケジュール部120と、差分送信部130とを持つ。記憶部150は、テーブルで管理されるデータを記憶する。SQL処理部110は、クライアント端末300から受信した書込要求に基づき、記憶部150におけるテーブルを更新すると共に、更新の内容を認識可能な更新差分情報を生成する。スケジュール部120は、SQL処理部110により生成された更新差分をスレーブサーバ200に送信する順番を、テーブルごとに設定される優先度に基づいて制御する。差分送信部130は、スケジュール部120によって制御された順番に応じて、更新差分情報をスレーブサーバ200に送信する。これによって、優先度の高いテーブルに対する更新処理を迅速に行うことができる。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
10…ストレージシステム、100…マスターサーバ、110…SQL処理部、120…スケジュール部、130…差分送信部、140…書込要求受信部、150…記憶部、161…キュー、162…キュー、163…キュー、164…キュー、200…スレーブサーバ、210…SQL処理部、220…差分受信部、230…記憶部、300…クライアント端末

Claims (5)

  1. テーブルで管理されるデータを記憶する記憶部と、
    クライアントから受信した書込要求に基づき、前記記憶部におけるテーブルを更新すると共に、前記更新の内容を認識可能な更新差分情報を生成するテーブル更新部と、
    前記テーブル更新部により生成された前記更新差分情報を自装置と並行してデータを記憶するスレーブサーバに送信する順番を、前記テーブルごとに設定される優先度に基づいて制御するスケジュール部と、
    前記スケジュール部によって制御された順番に応じて、前記更新差分情報を前記スレーブサーバに送信する差分送信部と、
    を備えるマスターサーバであって、
    前記記憶部は、前記テーブルの優先度と、前記テーブルが属するグループとが関連付けられた設定情報を記憶し、
    前記スケジュール部は、前記テーブル更新部から第1の更新差分情報を取得した後、第2の更新差分情報を取得した場合、前記第1の更新差分情報に係るテーブルの優先度と、前記第2の更新差分情報に係るテーブルの優先度とを比較し、前記第1の更新差分情報を前記スレーブサーバに送信する順番と、前記第2の更新差分情報を前記スレーブサーバに送信する順番とを入れ替えるか否かを判定するものであって、前記記憶部に記憶された前記設定情報を参照して、前記第1の更新差分情報に係るテーブルと前記第2の更新差分情報に係るテーブルとが同一のグループに属する否かを判定し、前記第1の更新差分情報に係るテーブルと前記第2の更新差分情報に係るテーブルとが同一のグループに属する場合、前記第2の更新差分情報に係るテーブルの優先度が前記第1の更新差分情報に係るテーブルの優先度より高い場合であっても、前記第1の更新差分情報を前記スレーブサーバに送信する順番と、前記第2の更新差分情報を前記スレーブサーバに送信する順番とを入れ替えない、
    マスターサーバ。
  2. 前記テーブルに対して設定され得る優先度ごとに設けられた複数のキューを更に備え、
    前記スケジュール部は、前記複数のキューのうち、前記テーブル更新部から取得した前記更新差分情報に係るテーブルの優先度に関連付けられたキューに前記更新差分情報を格納し、
    前記差分送信部は、前記優先度の高いキューから順に前記更新差分情報を取得し、取得した前記更新差分情報を前記スレーブサーバに送信する
    請求項に記載のマスターサーバ。
  3. 前記第2の更新差分情報に係るテーブルの優先度が前記第1の更新差分情報に係るテーブルの優先度より高く、前記第1の更新差分情報に係るテーブルと前記第2の更新差分情報に係るテーブルとが同一のグループに属する場合、前記スケジュール部は、前記第1の更新差分情報を、前記第1の更新差分情報に係るテーブルの優先度に対応するキューから、前記第2の更新差分情報に係るテーブルの優先度に対応するキューに移動させる
    請求項記載のマスターサーバ。
  4. クライアントから受信した書込要求に基づき、記憶部におけるテーブルを更新すると共に、前記更新の内容を認識可能な更新差分情報を生成するテーブル更新工程と、
    前記テーブル更新工程で生成された前記更新差分情報を自装置と並行してデータを記憶するスレーブサーバに送信する順番を、前記テーブルごとに設定される優先度に基づいて制御するスケジュール工程と、
    前記スケジュール工程で制御された順番に応じて、前記更新差分情報を前記スレーブサーバに送信する差分送信工程と、
    を備えるテーブル更新方法であって、
    前記差分送信工程において、第1の更新差分情報を取得した後、第2の更新差分情報を取得した場合、前記第1の更新差分情報に係るテーブルの優先度と、前記第2の更新差分情報に係るテーブルの優先度とを比較し、前記第1の更新差分情報を前記スレーブサーバに送信する順番と、前記第2の更新差分情報を前記スレーブサーバに送信する順番とを入れ替えるか否かを判定し、前記記憶部に記憶された設定情報を参照して、前記第1の更新差分情報に係るテーブルと前記第2の更新差分情報に係るテーブルとが同一のグループに属する否かを判定し、前記第1の更新差分情報に係るテーブルと前記第2の更新差分情報に係るテーブルとが同一のグループに属する場合、前記第2の更新差分情報に係るテーブルの優先度が前記第1の更新差分情報に係るテーブルの優先度より高い場合であっても、前記第1の更新差分情報を前記スレーブサーバに送信する順番と、前記第2の更新差分情報を前記スレーブサーバに送信する順番とを入れ替えない、
    テーブル更新方法。
  5. コンピュータを、
    クライアントから受信した書込要求に基づき、記憶部におけるテーブルを更新すると共に、前記更新の内容を認識可能な更新差分情報を生成するテーブル更新部、
    前記テーブル更新部により生成された前記更新差分情報を自装置と並行してデータを記憶するスレーブサーバに送信する順番を、前記テーブルごとに設定される優先度に基づいて制御するスケジュール部、
    前記スケジュール部によって制御された順番に応じて、前記更新差分情報を前記スレーブサーバに送信する差分送信部、
    として機能させるためのプログラムであって、
    前記記憶部は、前記テーブルの優先度と、前記テーブルが属するグループとが関連付けられた設定情報を記憶し、
    前記スケジュール部は、前記テーブル更新部から第1の更新差分情報を取得した後、第2の更新差分情報を取得した場合、前記第1の更新差分情報に係るテーブルの優先度と、前記第2の更新差分情報に係るテーブルの優先度とを比較し、前記第1の更新差分情報を前記スレーブサーバに送信する順番と、前記第2の更新差分情報を前記スレーブサーバに送信する順番とを入れ替えるか否かを判定し、前記記憶部に記憶された前記設定情報を参照して、前記第1の更新差分情報に係るテーブルと前記第2の更新差分情報に係るテーブルとが同一のグループに属する否かを判定し、前記第1の更新差分情報に係るテーブルと前記第2の更新差分情報に係るテーブルとが同一のグループに属する場合、前記第2の更新差分情報に係るテーブルの優先度が前記第1の更新差分情報に係るテーブルの優先度より高い場合であっても、前記第1の更新差分情報を前記スレーブサーバに送信する順番と、前記第2の更新差分情報を前記スレーブサーバに送信する順番とを入れ替えない、
    プログラム
JP2016130557A 2016-06-30 2016-06-30 マスターサーバ、テーブル更新方法、およびプログラム Active JP6517753B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2016130557A JP6517753B2 (ja) 2016-06-30 2016-06-30 マスターサーバ、テーブル更新方法、およびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2016130557A JP6517753B2 (ja) 2016-06-30 2016-06-30 マスターサーバ、テーブル更新方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2018005508A JP2018005508A (ja) 2018-01-11
JP6517753B2 true JP6517753B2 (ja) 2019-05-22

Family

ID=60946381

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016130557A Active JP6517753B2 (ja) 2016-06-30 2016-06-30 マスターサーバ、テーブル更新方法、およびプログラム

Country Status (1)

Country Link
JP (1) JP6517753B2 (ja)

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005242403A (ja) * 2004-02-24 2005-09-08 Hitachi Ltd 計算機システム
JP5740276B2 (ja) * 2011-10-06 2015-06-24 株式会社日立製作所 ディザスタリカバリ方法およびシステム
WO2014068877A1 (ja) * 2012-11-02 2014-05-08 日本電気株式会社 情報処理装置

Also Published As

Publication number Publication date
JP2018005508A (ja) 2018-01-11

Similar Documents

Publication Publication Date Title
US9418096B2 (en) Control method, and information processing system
US11281546B2 (en) System and method for performing an incremental backup for a persistent storage system that stores data for a node cluster
CN110597910A (zh) 一种异地数据同步方法、装置和系统
US11544232B2 (en) Efficient transaction log and database processing
US10489378B2 (en) Detection and resolution of conflicts in data synchronization
US10572350B1 (en) System and method for improved application consistency in a distributed environment
JP6405255B2 (ja) 通信システム、キュー管理サーバ、及び、通信方法
US11151062B2 (en) Optimized locking for replication solutions
US20190065330A1 (en) Copy-on-read process in disaster recovery
EP2845110B1 (en) Reflective memory bridge for external computing nodes
US20130138604A1 (en) Storage system and storage device
JP2014229088A (ja) データ処理システム、データ処理装置および記憶媒体
JP6834715B2 (ja) 更新処理プログラム、装置、及び方法
JP6517753B2 (ja) マスターサーバ、テーブル更新方法、およびプログラム
US20200387412A1 (en) Method To Manage Database
US20140052947A1 (en) Data storage device and method of controlling data storage device
JP6677605B2 (ja) プログラム、ストレージシステム、およびストレージシステムの制御方法
JP6237925B2 (ja) クラスタシステム及びクラスタ制御方法
US9208114B2 (en) Storage device, computer-readable recording medium, and storage control method
US20160357588A1 (en) Queue management method, non-transitory computer-readable recording medium and queue management device
US11695853B1 (en) Content management systems providing zero recovery point objective
US10762011B2 (en) Reflective memory bridge for external computing nodes
RU2609089C2 (ru) Система и способ выполнения очереди запросов в отношении цифровых объектов
US11269736B2 (en) Method to manage database failure
JP6912105B2 (ja) ディスクアレイシステム、ディスクアレイシステムの制御方法、および、ディスクアレイ装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180327

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190129

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190219

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190313

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: 20190319

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190418

R151 Written notification of patent or utility model registration

Ref document number: 6517753

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151