(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6557323
(24)【登録日】2019年7月19日
(45)【発行日】2019年8月7日
(54)【発明の名称】データベース障害時のデータ記憶
(51)【国際特許分類】
G06F 16/21 20190101AFI20190729BHJP
G06F 16/27 20190101ALI20190729BHJP
【FI】
G06F16/21
G06F16/27
【請求項の数】20
【全頁数】17
(21)【出願番号】特願2017-503894(P2017-503894)
(86)(22)【出願日】2015年8月7日
(65)【公表番号】特表2017-524190(P2017-524190A)
(43)【公表日】2017年8月24日
(86)【国際出願番号】US2015044319
(87)【国際公開番号】WO2016022976
(87)【国際公開日】20160211
【審査請求日】2018年5月10日
(31)【優先権主張番号】201410389882.5
(32)【優先日】2014年8月8日
(33)【優先権主張国】CN
(73)【特許権者】
【識別番号】510330264
【氏名又は名称】アリババ・グループ・ホールディング・リミテッド
【氏名又は名称原語表記】ALIBABA GROUP HOLDING LIMITED
(74)【代理人】
【識別番号】110001243
【氏名又は名称】特許業務法人 谷・阿部特許事務所
(72)【発明者】
【氏名】チュンマオ ジュー
【審査官】
田名網 忠雄
(56)【参考文献】
【文献】
特開2011−248678(JP,A)
【文献】
特開2004−348701(JP,A)
【文献】
特開2003−122509(JP,A)
【文献】
特表2013−542486(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00−16/958
(57)【特許請求の範囲】
【請求項1】
サーバにより実行される方法であって、
1次データベースの障害時に、M秒以内のトランザクション要求を特定することとであって、Mは1次データベースがデータを読出しデータベースと同期するために必要な時間示す、ことと、
前記トランザクション要求に対応するトランザクション識別及び対応するデータ値の変動を表すデータ変動値を取得することと、
前記トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定することと、
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されていないという判定に応じて、前記読出しデータベースにおける前記トランザクション要求により要求されるデータ値と前記データ変動値とを使用して、前記トランザクション識別に対応する正確なデータ値を特定することと、
前記トランザクション識別と前記正確なデータ値とを前記待機データベースに記憶することと
を含む方法。
【請求項2】
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているという判定に応じて、
前記トランザクション識別に対応する前記正確なデータ値が前記待機データベースに記憶されていると判断することと、
前記取得したトランザクション識別及び前記データ変動値を破棄することと
をさらに含む請求項1に記載の方法。
【請求項3】
前記待機データベースに記憶されている前記正確なデータ値に基づいてサービスを提供することをさらに含む請求項1に記載の方法。
【請求項4】
前記1次データベースに障害がない時は、前記1次データベースが読出しサービス及び書込みサービスを提供し、
前記1次データベースの前記障害時には、前記待機データベースが前記書込みサービス及び前記読出しサービスを提供し、
前記1次データベースはデータを前記読出しデータベースにM秒以内に同期する、
請求項1に記載の方法。
【請求項5】
前記読出しデータベースは、前記1次データベースのバックアップ機能を提供し、前記書込みサービス抜きの前記読出しサービスを提供する、請求項4に記載の方法。
【請求項6】
M秒以内の前記トランザクション要求の前記特定は、
上流サーバに対し、前記1次データベースの前記障害が発生するM秒前以内に発信された前記トランザクション要求を再発信するように通知することと、
前記再発信されたトランザクション要求を受信することと、
前記再発信されたトランザクション要求が、前記上流サーバにより再送され、前記1次データベースの前記障害が発生するM秒前以内に発信されたものであると判断することと
を含む、請求項1に記載の方法。
【請求項7】
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているかどうかを判定する前に、
前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていると判定することと、
前記トランザクション識別に対応する前記正確なデータ値が前記読出しデータベースに既に記憶されていると判断することと、
前記取得したトランザクション識別及び前記データ変動値を破棄することと
をさらに含む請求項1に記載の方法。
【請求項8】
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているかどうかを判定する前に、前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていないと判定すること
をさらに含む請求項1に記載の方法。
【請求項9】
前記読出しデータベースに記憶されている前記データ値と前記データ変動値とを使用した、前記トランザクション識別に対応する前記正確なデータ値の前記特定は、
前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていないと判定することと、
前記読出しデータベースにおける前記トランザクション要求により要求される前記データ値を取得することと、
前記読出しデータベースにおける前記トランザクション要求により要求される前記データ値と前記データ変動値との合計が、前記トランザクション識別に対応する前記正確なデータ値であると判断することと
を含む、請求項1に記載の方法。
【請求項10】
前記読出しデータベースに記憶されている前記データ値と前記データ変動値とを使用して、前記トランザクション識別に対応する前記正確なデータ値を特定することは、
前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていると判定することと、
前記読出しデータベースに記憶されている前記トランザクション識別に対応する前記データ値が、前記トランザクション識別に対応する前記正確なデータ値であると判断することと
を含む、請求項1に記載の方法。
【請求項11】
前記1次データベースが前記障害から回復した後、
前記待機データベースに記憶されている前記正確なデータ値を前記1次データベースに復元することと、
前記1次データベースに記憶されている前記正確なデータ値に基づいてサービスを提供することと
をさらに含む請求項1に記載の方法。
【請求項12】
1次データベースの障害時に、M秒以内のトランザクション要求を特定し、前記トランザクション要求に対応するトランザクション識別と対応するデータ値の変動を表すデータ変動値とを取得する取得モジュールであって、Mは1次データベースがデータを読出しデータベースと同期するために必要な時間を示す、取得モジュールと、
前記トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定する判定モジュールと、
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されていないという判定に応じて、前記読出しデータベースに記憶されている前記データ値と前記データ変動値とを使用して、前記トランザクション識別に対応する正確なデータ値を特定する特定モジュールと、
前記トランザクション識別と前記正確なデータ値とを前記待機データベースに記憶する記憶モジュールと
を含むサーバ。
【請求項13】
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているという判定に応じて、前記判定モジュールはさらに、前記トランザクション識別に対応する前記正確なデータ値が前記待機データベースに記憶されていると判断し、現在取得されている前記トランザクション識別及びデータ変動値を破棄する、請求項12に記載のサーバ。
【請求項14】
前記1次データベースに障害がない時、前記1次データベースは、読出しサービス及び書込みサービスを提供し、データを前記読出しデータベースにM秒以内に同期し、
前記1次データベースの前記障害時には、前記待機データベースが前記書込みサービス及び前記読出しサービスを提供し、
前記読出しデータベースは、前記1次データベースのバックアップ機能を提供し、前記書込みサービス抜きの前記読出しサービスを提供する、
請求項12に記載のサーバ。
【請求項15】
前記取得モジュールはさらに、
上流サーバに対し、前記1次データベースの前記障害が発生するM秒前以内に発信された前記トランザクション要求を再発信するように通知し、
前記再発信されたトランザクション要求を受信し、
前記再発信されたトランザクション要求が、前記上流サーバにより再送され、前記1次データベースの前記障害が発生するM秒前以内に発信された前記トランザクション要求であると判断する、
請求項12に記載のサーバ。
【請求項16】
前記判定モジュールはさらに、前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているかどうかを判定する前に、前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていると判定し、
前記トランザクション識別に対応する前記正確なデータ値が前記読出しデータベースに既に記憶されていると判断し、
前記トランザクション識別及び前記データ変動値を破棄する、請求項12に記載のサーバ。
【請求項17】
前記判定モジュールはさらに、前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているかどうかを判定する前に、前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていないと判定する、請求項12に記載のサーバ。
【請求項18】
前記特定モジュールはさらに、
前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていないと判断し、
前記読出しデータベースにおける前記トランザクション要求により要求される前記データ値を取得し、
前記読出しデータベースにおける前記トランザクション要求により要求される前記データ値と前記データ変動値との合計が、前記トランザクション識別に対応する前記正確なデータ値であると判断する、
請求項12に記載のサーバ。
【請求項19】
前記特定モジュールはさらに、
前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていると判断し、
前記読出しデータベースに記憶されている前記トランザクション識別に対応する前記データ値が、前記トランザクション識別に対応する前記正確なデータ値であると判断する、
請求項12に記載のサーバ。
【請求項20】
コンピュータ実行可能命令を自身に記憶している1つまたは複数のコンピュータ読み取り可能な記憶媒体であって、前記コンピュータ実行可能命令は、
1次データベースの障害時に、M秒以内のトランザクション要求を特定することと、
前記トランザクション要求に対応するトランザクション識別及び対応するデータ値の変動を表すデータ変動値を取得することと、
前記トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定することであって、前記判定は、
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されていないという判定に応じて、読出しデータベースに記憶されている前記データ値と前記データ変動値とを使用して、前記トランザクション識別に対応する正確なデータ値を特定すること、または、
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているという判定に応じて、前記トランザクション識別に対応する前記正確なデータ値が前記待機データベースに記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄すること
を含む、前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているかどうかを判定することと、
前記トランザクション識別と前記正確なデータ値とを前記待機データベースに記憶することと
を含む動作を1つまたは複数のプロセッサに実行させ、
前記1次データベースに障害がない時、前記1次データベースは、読出しサービス及び書込みサービスを提供し、データを前記読出しデータベースにM秒以内に同期し、
前記1次データベースの前記障害時には、前記待機データベースが前記書込みサービス及び前記読出しサービスを提供し、
前記読出しデータベースは、前記1次データベースのバックアップ機能を提供する、
前記1つまたは複数のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、2014年8月8日に出願された“METHOD AND APPARATUS FOR DATA STORAGE UPON DATABASE FAILURE”と題する中国特許出願第201410389882.5号に対する外国優先権を主張し、その全体が参照により本明細書に組み込まれるものとする。
【0002】
本開示はインターネット技術に関し、より詳細にはデータ記憶の方法とデバイス、特にデータベースの障害時におけるデータ記憶の方法及びデバイスに関する。
【背景技術】
【0003】
トランザクション処理サーバは、上流サーバからのトランザクション要求を受信すると、トランザクション要求のトランザクション処理を実行し、トランザクション処理の結果を使用して1次データベースに記憶されているデータ値を更新する。例えば、1次データベースが主に勘定残高を記憶するために使用され、かつ上流サーバがユーザの支払行為を処理するために使用される時、ユーザAの支払行為が$100を支払うことだとすると、上流サーバはトランザクション処理サーバに対し、ユーザAの勘定残高から$100を差し引くよう要求するために使用されるトランザクション要求を送信する。トランザクション処理サーバは、トランザクション要求を受信すると、トランザクション要求を使用して、ユーザAの勘定残高から$100を差し引くトランザクション処理を実行する。さらに、1次データベースにおけるユーザAの対応勘定残高が$1000だとすると、トランザクション処理サーバは、1次データベースに記憶されているユーザAの勘定残高$1000から$100を差し引いて、1次データベースに記憶されているユーザAの勘定残高を$900に更新する必要がある。
【0004】
既存の技術では、1次データベースの障害時に1次データベースはサービスの提供を停止し、そして1次データベースがデータの正確性を保証できるように復旧されて初めて、1次データベースは引き続きサービスを提供する。しかしながら、1次データベースの障害時に、トランザクション処理サーバは、1次データベース内のデータ値を取得して、1次データベースに記憶されているデータ値に基づいてトランザクション処理を実行することができないため、トランザクションは中断され、ユーザ体験に影響を及ぼす。
【発明の概要】
【0005】
当概要は、発明を実施するための形態においてさらに後述される概念の精選を、簡潔な形式で紹介するために提供される。当概要には、請求内容の全ての主要な特徴または重要な特徴を特定する意図はなく、また請求内容の範囲の特定を補助するものとして単独で用いられる意図もない。用語「技術(複数可)または技術的解決策(複数可)」は例えば、前述の文脈により、また本開示を通して許容されているように、装置(複数可)、システム(複数可)、方法(複数可)、及び/またはコンピュータ可読命令を指し得る。
【0006】
本開示は、1次データベースの障害時にトランザクションが中断されることを防ぎ、ユーザ体験を向上する、データベースの障害時におけるデータ記憶の方法及びデバイスを提供する。
【0007】
本開示は、データベースの障害時におけるデータ記憶の例示的方法を提供し、1次データベースに記憶されるデータ値は、読出しデータベースにM秒以内に同期されなければならない。方法は以下の動作、1次データベースの障害時に、トランザクション処理サーバにより、M秒以内のトランザクション要求を特定し、トランザクション要求のトランザクション処理を実行して対応トランザクション識別とデータ変動値とを取得することと、トランザクション処理サーバにより、トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定することと、記憶されていない場合、トランザクション処理サーバにより、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定することと、待機データベースに記憶されているデータ値に基づいてサービスを提供するために、トランザクション処理サーバにより、トランザクション識別と正確なデータ値とを待機データベースに記憶することを含み得る。
【0008】
例えば、トランザクション処理サーバによりM秒以内のトランザクション要求を特定することは以下の動作、上流サーバがM秒以内に既に発信済みのトランザクション要求を再送するように、トランザクション処理サーバにより上流サーバに対し、M秒以内に発信したトランザクション要求を再発信するように通知することと、トランザクション処理サーバにより、上流サーバからのトランザクション要求を受信し、当該トランザクション要求が、上流サーバにより再送されたM秒以内に既に発信済みのトランザクション要求であると判断することを含み得る。
【0009】
トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかをトランザクション処理サーバが判定する前に、方法はさらに以下の動作、トランザクション識別に対応するデータ値が読出しデータベースに記憶されているか否かをトランザクション処理サーバにより判定することと、トランザクション識別に対応するデータ値が既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が読出しデータベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄することと、トランザクション識別に対応するデータ値が記憶されていない場合は、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定するステップを実行することを含み得る。
【0010】
トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかをトランザクション処理サーバが判定した後、方法はさらに以下の動作、トランザクション識別に対応するデータ値が待機データベースに既に記憶されている場合は、トランザクション処理サーバにより、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄することを含み得る。
【0011】
例えば、トランザクション処理サーバにより、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定することは、具体的には以下の動作、トランザクション識別に対応するデータ値が読出しデータベースに記憶されていない場合は、トランザクション処理サーバにより、読出しデータベースにおけるトランザクション要求により要求されるデータ値を取得し、読出しデータベースにおけるトランザクション要求により要求されるデータ値とデータ変動値との合計または組み合わせが、トランザクション識別に対応する正確なデータ値であると判断すること、または、トランザクション識別に対応するデータ値が読出しデータベースに既に記憶されている場合は、トランザクション処理サーバにより、読出しデータベースに記憶されているトランザクション識別に対応するデータ値が、トランザクション識別に対応する正確なデータ値であると判断することを含み得る。
【0012】
トランザクション処理サーバがトランザクション識別と正確なデータ値とを待機データベースに記憶した後、方法はさらに以下の動作、1次データベースの障害が回復すると、トランザクション処理サーバにより、待機データベースに記憶されているデータ値を1次データベースに復元し、1次データベースに記憶されているデータ値に基づいてサービスを提供することを含み得る。
【0013】
本開示はまた、例示的トランザクション処理サーバも提供する。1次データベースに記憶されるデータ値は、読出しデータベースにM秒以内に同期されなければならない。トランザクション処理サーバは以下のモジュール、1次データベースの障害時に、M秒以内のトランザクション要求を特定し、トランザクション要求のトランザクション処理を実行して対応トランザクション識別とデータ変動値とを取得する取得モジュールと、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する判定モジュールと、判定モジュールからの判定結果が否定的である場合に、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定する特定モジュールと、待機データベースに記憶されているデータ値に基づいてサービスを提供するために、トランザクション識別と正確なデータ値とを待機データベースに記憶する記憶モジュールを含み得る。
【0014】
例えば、取得モジュールは、M秒以内のトランザクション要求を特定する時、上流サーバがM秒以内に既に発信済みのトランザクション要求を再送するように、上流サーバに対し、M秒以内に発信したトランザクション要求を再発信するように通知し、上流サーバからのトランザクション要求を受信し、当該トランザクション要求が、上流サーバにより再送されたM秒以内に既に発信済みのトランザクション要求であると判断する。
【0015】
例えば、判定モジュールはさらに、トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定する前に、トランザクション識別に対応するデータ値が読出しデータベースに記憶されているか否かを判定し、トランザクション識別に対応するデータ値が既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が読出しデータベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄し、トランザクション識別に対応するデータ値が記憶されていない場合は、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定するプロセスを実行する。
【0016】
例えば、判定モジュールはさらに、トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定した後、トランザクション識別に対応するデータ値が待機データベースに既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄する。
【0017】
例えば、特定モジュールは、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定する時に、トランザクション識別に対応するデータ値が読出しデータベースに記憶されていない場合は、読出しデータベースにおけるトランザクション要求により要求されるデータ値を取得し、読出しデータベースにおけるトランザクション要求により要求されるデータ値とデータ変動値との合計または組み合わせが、トランザクション識別に対応する正確なデータ値であると判断し、または、トランザクション識別に対応するデータ値が読出しデータベースに既に記憶されている場合は、読出しデータベースに記憶されているトランザクション識別に対応するデータ値が、トランザクション識別に対応する正確なデータ値であると判断する。
【0018】
記憶モジュールはさらに、トランザクション識別と正確なデータ値とを待機データベースに記憶した後、1次データベースの障害が回復すると、待機データベースに記憶されているデータ値を1次データベースに復元し、1次データベースに記憶されているデータ値に基づいてサービスを提供するために使用される。
【0019】
既存の技術と比較すると、本開示の技術は少なくとも以下の技術的利点を有する。1次データベースの障害時に、トランザクション処理サーバは、読出しデータベースに記憶されているデータ値を介して正確なデータ値を特定し、正確なデータ値を待機データベースに記憶する。従って1次データベースに障害が発生し1次データベースが復旧を待つ時には、待機データベースに記憶されているデータ値に基づいてサービスが提供される。よってトランザクション処理サーバは、待機データベースから正確なデータ値を取得してトランザクション処理を実行し、これによりトランザクションが中断されることが防がれ、ユーザ体験が向上する。
【0020】
本開示の例示的実施形態における技術的解決策をより明確に説明するために、下記において、本開示の例示的実施形態を説明する添付図面が簡単に紹介される。明らかに、添付図面は、本開示のいくつかの例示的実施形態を示すにすぎず、当業者は創意的な努力なしに本開示の例示的実施形態のこれらの添付図面から、さらに他の図面を引き出し得る。
【図面の簡単な説明】
【0021】
【
図1】本開示による、例示的アプリケーションシナリオの模式図である。
【
図2】本開示の第1実施形態による、データベースの障害時におけるデータ記憶の例示的方法のフローチャートである。
【
図3】本開示の第2例示的実施形態による、例示的トランザクション処理サーバの構造的模式図である。
【発明を実施するための形態】
【0022】
本開示の例示的実施形態における技術的解決策が、添付図面を参照しながら下記において説明される。明らかに、説明される例示的実施形態は、本開示の実施形態の全てではなく一部を表すにすぎない。本開示により創意的な努力なしに当業者が得る全ての他の実施形態は、本開示の保護範囲に属するものとする。
【0023】
本開示の第1例示的実施形態が、下記において説明される。既存技術における問題を解決するために、本開示の例示的実施形態は、データベースの障害時におけるデータ記憶の方法を提供する。本開示の例示的実施形態による例示的アプリケーションシナリオの模式図である
図1を参照すると、トランザクション処理サーバ102と、1つまたは複数の上流サーバ104(1)、104(2)、・・・、104(m)と、少なくとも3つのデータベースとを含むシステム100に方法が適用される。上流サーバの数は1つまたは複数であり得、そしてmは任意の整数であり得る。3つのデータベースは、1次データベース106と、読出しデータベース108と、待機データベース110とを含み、読出しデータベース108は、1次データベースとの同期遅延が小さいデータベースである。
【0024】
図1に示されるように、トランザクション処理サーバ102は、1次データベース106、読出しデータベース108、及び待機データベース110とそれぞれ接続されている。1次データベース106は、読出しデータベース108、及び待機データベース110と接続されている。
【0025】
1次データベース106に障害がない時、読出し及び書込みサービスは、1次データベース106により提供される。すなわちトランザクション処理サーバ102は、1次データベース106にデータを書込むか、または1次データベース106からデータを読出す。1次データベース106の障害時には、読出し及び書込みサービスは、待機データベース110により提供される。すなわちトランザクション処理サーバ102は、待機データベース110にデータを書込むか、または待機データベース110からデータを読出す。
【0026】
例えば、読出しデータベース108は、1次データベース106のバックアップデータベースとして使用される。1次データベース106に障害がない時、1次データベース106内のデータは読出しデータベース108に同期され、読出しデータベース108は読出しサービスのみを提供し得る。すなわちトランザクション処理サーバ102は、読出しデータベース108からデータを読出し得るが、読出しデータベース108にデータを書込むことはできない。例えば、読出しデータベース108は、1次データベース106のバックアップ機能を提供し、かつ読出しサービスのみを提供するデータベースである。
【0027】
本開示の例示的実施形態において、1次データベース106に障害がない時、1次データベース106に記憶されているデータ値を使用してサービスは提供され、そして1次データベース106に記憶される全てのデータ値は読出しデータベース108に同期される。1次データベース106に記憶されるデータ値が読出しデータベース108に同期される時、1次データベースに記憶されるデータ値は、読出しデータベースにM秒以内に同期されなければならない。すなわち、新たなデータ値が1次データベース106に記憶された後、または1次データベース106に記憶されているデータ値が変更した後、1次データベース106は、記憶された新たなデータ値または変更したデータ値を、読出しデータベース108にM秒以内に同期する。従って、1次データベース106内のデータ値と読出しデータベース108内のデータ値間の不一致期間は最大M秒であり、1次データベース106内のデータ値は最終的に読出しデータベース108内のデータ値と一致する。
【0028】
例えば、M秒の値は、通常1秒である。勿論、異なるアプリケーションシナリオの下、M秒の値は、1次データベースの性能を含み得る様々な要素に依存するが、本明細書においては詳述されない。
【0029】
本開示の例示的実施形態において、1次データベース106の障害時には、1次データベース106の障害が回復されるまで、データ値は待機データベース110を使用して記憶され、そして待機データベース110に記憶されているデータ値を使用してサービスが提供される。
【0030】
前述のアプリケーションシナリオの下、
図2に示されるように、本開示の例示的実施形態によるデータベースの障害時におけるデータ記憶の例示的方法は、1次データベースの障害時に以下の動作を含み得る。
【0031】
202において、トランザクション処理サーバは、M秒以内(1次データベースの障害の発生するM秒前等)のトランザクション要求を特定し、トランザクション要求のトランザクション処理を実行して対応トランザクション識別とデータ変動値とを取得する。
【0032】
本開示の例示的実施形態において、トランザクション処理サーバによりM秒以内に起こったトランザクション要求を特定することは、以下の動作を非限定的に含み得る。
【0033】
上流サーバがM秒以内に既に発信済みのトランザクション要求を再送するように、トランザクション処理サーバは上流サーバに対し、M秒以内に発信したトランザクション要求を再発信するように通知し、そして、トランザクション処理サーバは、上流サーバからのトランザクション要求を受信し、当該トランザクション要求が、上流サーバにより再送されたM秒以内に既に発信済みのものと判断する。
【0034】
1次データベースの障害時に、トランザクション処理サーバは、トランザクション処理サーバと対話する全ての上流サーバに対し(すなわちトランザクション処理サーバに接続されている全ての上流サーバに対し)、M秒以内に発信したトランザクション要求を再発信するように通知する。上流サーバは、通知を受信すると、どのトランザクション要求が上流サーバからトランザクション処理サーバへM秒以内に送信されたか照会し、M秒以内に既に発信済みのトランザクション要求をトランザクション処理サーバへ再送する。例えば、上流サーバがトランザクション要求1をトランザクション処理サーバへM秒以内に送信したとすると、上流サーバは、トランザクション要求1をトランザクション処理サーバへ再送する。そして、トランザクション処理サーバは、上流サーバから再送されたM秒以内に既に発信済みのトランザクション要求1を受信する。
【0035】
本開示の例示的実施形態において、トランザクション処理サーバがトランザクション要求のトランザクション処理を実行する度に、トランザクション処理サーバは、トランザクション要求に対応するトランザクション識別(トランザクション番号等)とデータ変動値とを取得し、トランザクション要求に対応するトランザクション識別は冪等制御信号とも称され得る。
【0036】
例えば、1次データベースが主に勘定残高を記憶するために使用され、かつ上流サーバがユーザの支払行為を処理するために使用される時、ユーザAの支払行為が$100を支払うことだとすると、上流サーバはトランザクション処理サーバに対し、ユーザAの勘定残高から$100を差し引くために使用されるトランザクション要求1を送信する。トランザクション処理サーバは、トランザクション要求1を受信すると、トランザクション要求1を使用して、ユーザAの勘定残高から$100を差し引くトランザクション処理を実行する。当該トランザクション処理に対応するトランザクション識別は、123456と仮定する。さらに、1次データベースにおけるユーザAの対応勘定残高が$1000だとすると、トランザクション処理サーバは、1次データベースに記憶されているユーザAの勘定残高$1000から$100を差し引き、1次データベースに記憶されているユーザAの勘定残高を$900に更新し、トランザクション処理に対応する123456等のトランザクション識別を1次データベースに記録する。
【0037】
1次データベースの障害時に、トランザクション処理サーバは全ての上流サーバに対し、1次データベースの障害が発生するM秒前以内に発信されたトランザクション要求を再発信するように通知する。上流サーバは、通知を受信すると、ユーザAの勘定残高から$100を差し引くために使用されるトランザクション要求1を、トランザクション処理サーバへ再送する。トランザクション処理サーバは、上流サーバにより再送されたトランザクション要求1を受信すると、トランザクション要求1を使用して、ユーザAの勘定残高から$100を差し引くトランザクション処理を実行する。トランザクション要求を使用してトランザクション処理を実行するプロセスにおいて、トランザクション処理サーバにより取得される対応トランザクション識別は123456であり、トランザクション処理サーバにより取得される対応データ変動値は$100の差し引きである。
【0038】
204において、トランザクション処理サーバは、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する。記憶されている場合には、206における動作が実行され、記憶されていない場合には、208における動作が実行される。
【0039】
本開示の例示的実施形態において、1次データベースの障害時には、データ値を記憶するのに待機データベースが使用され、そして待機データベースに記憶されているデータ値を使用してサービスが提供される。従って、トランザクション処理サーバがトランザクション要求のトランザクション処理を実行して対応トランザクション識別及びデータ変動値を取得した後、トランザクション処理サーバは、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する。トランザクション識別に対応するデータ値が待機データベースに記憶されている場合は、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されているため、206における動作が実行され、トランザクション識別に対応するデータ値が待機データベースに記憶されていない場合は、トランザクション識別に対応する正確なデータ値が待機データベースに記憶されていないため、208における動作が実行される。例えば、トランザクション処理サーバは、トランザクション識別123456に対応するデータ値が待機データベースに記憶されているか否かを判定し、記憶されている場合には、206における動作が実行され、記憶されていない場合には、208における動作が実行される。
【0040】
本開示の例示的実施形態において、トランザクション識別(123456等)に対応するデータ値が待機データベースに記憶されているか否かをトランザクション処理サーバが判定する前に、トランザクション処理サーバはさらに、トランザクション識別(123456等)に対応するデータ値が読出しデータベースに記憶されているか否かを判定し得る。トランザクション識別に対応するデータ値が読出しデータベースに既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が読出しデータベースに既に記憶されていると判断される。従って、トランザクション処理サーバは、現在取得されているトランザクション識別及びデータ変動値を直接破棄し、そして204における動作は実行されず、トランザクション要求の処理は終了する。あるいは、トランザクション処理サーバは、「トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する」動作を実行する、すなわち上述の204を実行する。トランザクション識別に対応するデータ値が読出しデータベースに記憶されていない場合には、トランザクション処理サーバは、「トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する」動作を実行しなければならない、すなわち上述の204を実行する。
【0041】
206において、トランザクション処理サーバは、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄する。
【0042】
本開示の例示的実施形態において、トランザクション識別に対応するデータ値が待機データベースに既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されている、すなわち正確なデータ値とトランザクション識別とが待機データベースに既に記憶されていることが示される。従って、トランザクション処理サーバが、トランザクション識別と対応する正確なデータ値とを待機データベースに記憶する必要はなくなり、そしてトランザクション処理サーバは、現在取得されているトランザクション識別及びデータ変動値を直接破棄し得る。
【0043】
208において、トランザクション処理サーバは、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定し、そして待機データベースに記憶されているデータ値に基づいてサービスを提供するために、トランザクション識別と正確なデータ値とを待機データベースに記憶する。
【0044】
本開示の例示的実施形態において、1次データベースに障害がない時、1次データベースに記憶されるデータ値は読出しデータベースにM秒以内に同期されなければならないため、1次データベースの障害が発生するM秒前より前に記憶された全データ値は読出しデータベースに既に同期されており、これらのデータ値が待機データベースに記憶される必要はもうない。1次データベースの障害が発生するM秒前以内に記憶されたデータ値に関して、当該データ値は、読出しデータベースに既に同期された可能性がある、または読出しデータベースに同期されなかった可能性がある。従って、待機データベースを通して正確なデータ値を提供するために、1次データベースの障害が発生するM秒前以内に記憶されたデータ値は、待機データベースに記憶されなければならない。1次データベースの障害が発生するM秒前以内のデータ値を待機データベースに記憶するために、204から208までの上述の動作が実行され、最終的にトランザクション識別と正確なデータ値とが待機データベースに記憶される。
【0045】
本開示の例示的実施形態において、1次データベースの障害時に、1次データベースの障害後に作成されたデータ値に関して、トランザクション処理サーバは、対応するデータ値を直接待機データベースに記憶する。
【0046】
本開示の例示的実施形態において、トランザクション処理サーバにより、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定することは、以下の動作を非限定的に含み得る。
【0047】
トランザクション識別に対応するデータ値が読出しデータベースに記憶されていない場合には、トランザクション処理サーバは、読出しデータベースにおけるトランザクション要求により要求されるデータ値を取得し、読出しデータベースにおけるトランザクション要求により要求されるデータ値とデータ変動値との合計または組み合わせが、トランザクション識別に対応する正確なデータ値であると判断する。あるいは、トランザクション識別に対応するデータ値が読出しデータベースに既に記憶されている場合には、トランザクション処理サーバは、読出しデータベースに記憶されているトランザクション識別に対応するデータ値が、トランザクション識別に対応する正確なデータ値であると判断する。
【0048】
例えば、トランザクション処理サーバは123456という対応トランザクション識別と、$100を差し引く対応データ変動値とを取得した後、トランザクション処理サーバは第1に、トランザクション識別123456に対応するデータ値が待機データベースに記憶されているか否かを判定する。202の前にトランザクション要求1に対しトランザクション処理が既に実行され、かつトランザクション処理後に取得されたトランザクション識別123456及びデータ値が待機データベースに記憶された場合には、トランザクション識別123456に対応するデータ値が待機データベースに記憶された状態で存在し、そうでなければ、トランザクション識別123456に対応するデータ値は待機データベースに存在しない。
【0049】
第2に、トランザクション識別123456に対応するデータ値が待機データベースに存在しないとすると、トランザクション処理サーバは、トランザクション識別123456に対応するデータ値が読出しデータベースに記憶されているか否かを判定する。トランザクション識別123456に対応するデータ値が読出しデータベースに記憶されていない場合には、トランザクション処理サーバは、読出しデータベースにおけるトランザクション要求により要求されるデータ値、すなわちユーザAの勘定残高が$1000であることを取得し、読出しデータベースにおけるトランザクション要求に対応するデータ値($1000)とデータ変動値(−100)との合計または組み合わせが、トランザクション識別123456に対応する正確な値である、すなわち正確なデータ値は$900であると判断する。トランザクション識別123456に対応するデータ値が読出しデータベースに既に記憶されている場合には、トランザクション処理サーバは、読出しデータベースに記憶されているトランザクション識別123456に対応するデータ値(すなわちユーザAの勘定残高は$900)が、トランザクション識別123456に対応する正確なデータ値である、すなわち正確なデータ値は$900であると判断する。それからトランザクション処理サーバは、トランザクション識別123456と正確なデータ値$900を待機データベースに記憶する。
【0050】
本開示の例示的実施形態において、トランザクション処理サーバがトランザクション識別と正確なデータ値とを待機データベースに記憶した後、1次データベースの障害が回復すると、トランザクション処理サーバは、待機データベースに記憶されているデータ値を1次データベースに復元し、1次データベースに記憶されているデータ値に基づいてサービスが提供される。
【0051】
概して、本開示の技術は少なくとも以下の技術的利点を有する。1次データベースの障害時に、トランザクション処理サーバは、読出しデータベースに記憶されているデータ値を介して正確なデータ値を特定し、正確なデータ値を待機データベースに記憶し得る。従って1次データベースに障害が発生し1次データベースが復旧を待つ時には、待機データベースに記憶されているデータ値に基づいてサービスが提供され得る。よってトランザクション処理サーバは、待機データベースから正確なデータ値を取得してトランザクション処理を実行し得るため、これによりトランザクションが中断されることが防がれ、ユーザ体験が向上する。
【0052】
本開示の第2例示的実施形態が、下記において説明される。
【0053】
上述の方法と同じ概念に基づいて、本開示はさらに例示的トランザクション処理サーバを提供する。1次データベースに記憶されるデータ値は、読出しデータベースにM秒以内に同期される。
図3に示されるように、トランザクション処理サーバ300は、1つまたは複数のプロセッサ302もしくはデータ処理ユニットと、メモリ304とを含む。トランザクション処理サーバ300はさらに、1つまたは複数の入出力装置と、ネットワークインターフェースを含み得る(
図3に図示せず)。メモリ304は、コンピュータ可読媒体の実施例である。
【0054】
コンピュータ可読媒体には、情報記憶を実施するための任意の方法または技術を使用し得る永続的及び非永続的、取り外し可能及び取り外し不可能な媒体が含まれる。情報は、コンピュータ可読命令、データ構造、ソフトウェアモジュール、または任意のデータであり得る。コンピュータ記憶媒体の例には、相変化メモリ(PCM)、静的ランダムアクセスメモリ(SRAM)、動的ランダムアクセスメモリ(DRAM)、他の種類のRAM、ROM、電気的消去可能プログラマブル読出専用メモリ(EEPROM)、フラッシュメモリ、内部メモリ、CD−ROM、DVD、光学メモリ、磁気テープ、磁気ディスク、その他の磁気記憶装置、またはコンピューティングデバイスによりアクセス可能な情報を記憶し得るその他の非通信媒体が含まれ得るが、これに限定されない。本明細書において定義されるように、コンピュータ可読媒体には、変調データ信号及び搬送波等の一時的媒体は含まれない。
【0055】
メモリ304は中に、複数のモジュールまたはユニットを格納し得る。当該複数のモジュールまたはユニットには、1次データベースの障害時に、M秒以内のトランザクション要求を特定し、トランザクション要求のトランザクション処理を実行して対応トランザクション識別とデータ変動値とを取得する取得モジュール306と、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する判定モジュール308と、判定結果が否定的である場合に、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定する特定モジュール310と、待機データベースに記憶されているデータ値に基づいてサービスを提供するために、トランザクション識別と正確なデータ値とを待機データベースに記憶する記憶モジュール312とが含まれる。
【0056】
例えば、取得モジュール306は、M秒以内のトランザクション要求を特定する時、さらに、上流サーバがM秒以内に既に発信済みのトランザクション要求を再送するように、上流サーバに対し、M秒以内に発信したトランザクション要求を再発信するように通知し、上流サーバからのトランザクション要求を受信し、当該トランザクション要求が、上流サーバにより再送されたM秒以内に既に発信済みのトランザクション要求であると判断する。
【0057】
例えば、判定モジュール308は、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する前に、さらに、トランザクション識別に対応するデータ値が読出しデータベースに記憶されているか否かを判定し、トランザクション識別に対応するデータ値が既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が読出しデータベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄し、トランザクション識別に対応するデータ値が記憶されていない場合は、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定するプロセスを実行する。
【0058】
例えば、判定モジュール308は、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かの判定後、トランザクション識別に対応するデータ値が待機データベースに既に記憶されている場合は、さらに、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄する。
【0059】
例えば、特定モジュール310は、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定する時に、トランザクション識別に対応するデータ値が読出しデータベースに記憶されていない場合は、さらに、読出しデータベースにおけるトランザクション要求により要求されるデータ値を取得し、読出しデータベースにおけるトランザクション要求により要求されるデータ値とデータ変動値との合計または組み合わせが、トランザクション識別に対応する正確なデータ値であると判断し、あるいは、トランザクション識別に対応するデータ値が読出しデータベースに既に記憶されている場合は、読出しデータベースに記憶されているトランザクション識別に対応するデータ値が、トランザクション識別に対応する正確なデータ値であると判断する。
【0060】
例えば、記憶モジュール312は、トランザクション識別と正確なデータ値とを待機データベースに記憶した後、1次データベースの障害が回復すると、さらに、待機データベースに記憶されているデータ値を1次データベースに復元し、1次データベースに記憶されているデータ値に基づいてサービスを提供する。
【0061】
本開示のデバイスもしくは装置のモジュールは、統合され得るか、または個別に配置され得る。上述のモジュールは、1つのモジュールに併合され得るか、または複数のサブモジュールにさらに分割され得る。
【0062】
例示的実施形態の前述の説明により、本開示は、ハードウェア、ソフトウェア、またはソフトウェアに加えて必要な一般的ハードウェアプラットフォームを介して実行され得ることが、当業者には明確に理解されよう。このような理解に基づいて、本開示の技術的解決策の要旨、または当業技術の水準に貢献する出願の一部は、コンピュータ可読媒体に記憶され、かつコンピュータデバイス(パーソナルコンピュータ、サーバ、ネットワークデバイス等)が本開示の実施形態において列挙される方法または動作を実行することを可能にするコンピュータ実行可能命令を含む、ソフトウェア製品の形態で具現化され得る。図面は例示的実施形態の模式図にすぎず、本開示を実施するために図面内のモジュールまたはフローを使用する必要はないことが、当業者には認識されよう。実施形態における装置内のモジュールは、説明されるように実施形態におけるデバイスまたは装置内に分散され得る、あるいは本実施形態におけるデバイスまたは装置以外の1つまたは複数のデバイスまたは装置に配置されるように変更され得ることが、当業者には認識されよう。前述の実施形態におけるモジュールは、1つのモジュールに合併され得る、または複数のサブモジュールにさらに分割され得る。本出願の例示的実施形態は、説明の目的でのみ番号が振られており、実施形態間の優位性を示すためではない。前述の開示は、本開示のいくつかの例示的実施形態の例示にすぎないが、本開示はこれらに限定されない。当業者が思いつき得る任意の変形も、本開示の保護範囲に入るものとする。