(57)【特許請求の範囲】
【請求項１】
サーバにより実行される方法であって、
１次データベースの障害時に、Ｍ秒以内のトランザクション要求を特定することとであって、Ｍは１次データベースがデータを読出しデータベースと同期するために必要な時間示す、ことと、
前記トランザクション要求に対応するトランザクション識別及び対応するデータ値の変動を表すデータ変動値を取得することと、
前記トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定することと、
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されていないという判定に応じて、前記読出しデータベースにおける前記トランザクション要求により要求されるデータ値と前記データ変動値とを使用して、前記トランザクション識別に対応する正確なデータ値を特定することと、
前記トランザクション識別と前記正確なデータ値とを前記待機データベースに記憶することと
を含む方法。
【請求項２】
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているという判定に応じて、
前記トランザクション識別に対応する前記正確なデータ値が前記待機データベースに記憶されていると判断することと、
前記取得したトランザクション識別及び前記データ変動値を破棄することと
をさらに含む請求項１に記載の方法。
【請求項３】
前記待機データベースに記憶されている前記正確なデータ値に基づいてサービスを提供することをさらに含む請求項１に記載の方法。
【請求項４】
前記１次データベースに障害がない時は、前記１次データベースが読出しサービス及び書込みサービスを提供し、
前記１次データベースの前記障害時には、前記待機データベースが前記書込みサービス及び前記読出しサービスを提供し、
前記１次データベースはデータを前記読出しデータベースにＭ秒以内に同期する、
請求項１に記載の方法。
【請求項５】
前記読出しデータベースは、前記１次データベースのバックアップ機能を提供し、前記書込みサービス抜きの前記読出しサービスを提供する、請求項４に記載の方法。
【請求項６】
Ｍ秒以内の前記トランザクション要求の前記特定は、
上流サーバに対し、前記１次データベースの前記障害が発生するＭ秒前以内に発信された前記トランザクション要求を再発信するように通知することと、
前記再発信されたトランザクション要求を受信することと、
前記再発信されたトランザクション要求が、前記上流サーバにより再送され、前記１次データベースの前記障害が発生するＭ秒前以内に発信されたものであると判断することと
を含む、請求項１に記載の方法。
【請求項７】
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているかどうかを判定する前に、
前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていると判定することと、
前記トランザクション識別に対応する前記正確なデータ値が前記読出しデータベースに既に記憶されていると判断することと、
前記取得したトランザクション識別及び前記データ変動値を破棄することと
をさらに含む請求項１に記載の方法。
【請求項８】
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているかどうかを判定する前に、前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていないと判定すること
をさらに含む請求項１に記載の方法。
【請求項９】
前記読出しデータベースに記憶されている前記データ値と前記データ変動値とを使用した、前記トランザクション識別に対応する前記正確なデータ値の前記特定は、
前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていないと判定することと、
前記読出しデータベースにおける前記トランザクション要求により要求される前記データ値を取得することと、
前記読出しデータベースにおける前記トランザクション要求により要求される前記データ値と前記データ変動値との合計が、前記トランザクション識別に対応する前記正確なデータ値であると判断することと
を含む、請求項１に記載の方法。
【請求項１０】
前記読出しデータベースに記憶されている前記データ値と前記データ変動値とを使用して、前記トランザクション識別に対応する前記正確なデータ値を特定することは、
前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていると判定することと、
前記読出しデータベースに記憶されている前記トランザクション識別に対応する前記データ値が、前記トランザクション識別に対応する前記正確なデータ値であると判断することと
を含む、請求項１に記載の方法。
【請求項１１】
前記１次データベースが前記障害から回復した後、
前記待機データベースに記憶されている前記正確なデータ値を前記１次データベースに復元することと、
前記１次データベースに記憶されている前記正確なデータ値に基づいてサービスを提供することと
をさらに含む請求項１に記載の方法。
【請求項１２】
１次データベースの障害時に、Ｍ秒以内のトランザクション要求を特定し、前記トランザクション要求に対応するトランザクション識別と対応するデータ値の変動を表すデータ変動値とを取得する取得モジュールであって、Ｍは１次データベースがデータを読出しデータベースと同期するために必要な時間を示す、取得モジュールと、
前記トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定する判定モジュールと、
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されていないという判定に応じて、前記読出しデータベースに記憶されている前記データ値と前記データ変動値とを使用して、前記トランザクション識別に対応する正確なデータ値を特定する特定モジュールと、
前記トランザクション識別と前記正確なデータ値とを前記待機データベースに記憶する記憶モジュールと
を含むサーバ。
【請求項１３】
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているという判定に応じて、前記判定モジュールはさらに、前記トランザクション識別に対応する前記正確なデータ値が前記待機データベースに記憶されていると判断し、現在取得されている前記トランザクション識別及びデータ変動値を破棄する、請求項１２に記載のサーバ。
【請求項１４】
前記１次データベースに障害がない時、前記１次データベースは、読出しサービス及び書込みサービスを提供し、データを前記読出しデータベースにＭ秒以内に同期し、
前記１次データベースの前記障害時には、前記待機データベースが前記書込みサービス及び前記読出しサービスを提供し、
前記読出しデータベースは、前記１次データベースのバックアップ機能を提供し、前記書込みサービス抜きの前記読出しサービスを提供する、
請求項１２に記載のサーバ。
【請求項１５】
前記取得モジュールはさらに、
上流サーバに対し、前記１次データベースの前記障害が発生するＭ秒前以内に発信された前記トランザクション要求を再発信するように通知し、
前記再発信されたトランザクション要求を受信し、
前記再発信されたトランザクション要求が、前記上流サーバにより再送され、前記１次データベースの前記障害が発生するＭ秒前以内に発信された前記トランザクション要求であると判断する、
請求項１２に記載のサーバ。
【請求項１６】
前記判定モジュールはさらに、前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているかどうかを判定する前に、前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていると判定し、
前記トランザクション識別に対応する前記正確なデータ値が前記読出しデータベースに既に記憶されていると判断し、
前記トランザクション識別及び前記データ変動値を破棄する、請求項１２に記載のサーバ。
【請求項１７】
前記判定モジュールはさらに、前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているかどうかを判定する前に、前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていないと判定する、請求項１２に記載のサーバ。
【請求項１８】
前記特定モジュールはさらに、
前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていないと判断し、
前記読出しデータベースにおける前記トランザクション要求により要求される前記データ値を取得し、
前記読出しデータベースにおける前記トランザクション要求により要求される前記データ値と前記データ変動値との合計が、前記トランザクション識別に対応する前記正確なデータ値であると判断する、
請求項１２に記載のサーバ。
【請求項１９】
前記特定モジュールはさらに、
前記トランザクション識別に対応する前記データ値が前記読出しデータベースに記憶されていると判断し、
前記読出しデータベースに記憶されている前記トランザクション識別に対応する前記データ値が、前記トランザクション識別に対応する前記正確なデータ値であると判断する、
請求項１２に記載のサーバ。
【請求項２０】
コンピュータ実行可能命令を自身に記憶している１つまたは複数のコンピュータ読み取り可能な記憶媒体であって、前記コンピュータ実行可能命令は、
１次データベースの障害時に、Ｍ秒以内のトランザクション要求を特定することと、
前記トランザクション要求に対応するトランザクション識別及び対応するデータ値の変動を表すデータ変動値を取得することと、
前記トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定することであって、前記判定は、
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されていないという判定に応じて、読出しデータベースに記憶されている前記データ値と前記データ変動値とを使用して、前記トランザクション識別に対応する正確なデータ値を特定すること、または、
前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているという判定に応じて、前記トランザクション識別に対応する前記正確なデータ値が前記待機データベースに記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄すること
を含む、前記トランザクション識別に対応する前記データ値が前記待機データベースに記憶されているかどうかを判定することと、
前記トランザクション識別と前記正確なデータ値とを前記待機データベースに記憶することと
を含む動作を１つまたは複数のプロセッサに実行させ、
前記１次データベースに障害がない時、前記１次データベースは、読出しサービス及び書込みサービスを提供し、データを前記読出しデータベースにＭ秒以内に同期し、
前記１次データベースの前記障害時には、前記待機データベースが前記書込みサービス及び前記読出しサービスを提供し、
前記読出しデータベースは、前記１次データベースのバックアップ機能を提供する、
前記１つまたは複数のコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年８月８日に出願された“ＭＥＴＨＯＤ  ＡＮＤ  ＡＰＰＡＲＡＴＵＳ  ＦＯＲ  ＤＡＴＡ  ＳＴＯＲＡＧＥ  ＵＰＯＮ  ＤＡＴＡＢＡＳＥ  ＦＡＩＬＵＲＥ”と題する中国特許出願第２０１４１０３８９８８２．５号に対する外国優先権を主張し、その全体が参照により本明細書に組み込まれるものとする。
【０００２】
本開示はインターネット技術に関し、より詳細にはデータ記憶の方法とデバイス、特にデータベースの障害時におけるデータ記憶の方法及びデバイスに関する。
【背景技術】
【０００３】
トランザクション処理サーバは、上流サーバからのトランザクション要求を受信すると、トランザクション要求のトランザクション処理を実行し、トランザクション処理の結果を使用して１次データベースに記憶されているデータ値を更新する。例えば、１次データベースが主に勘定残高を記憶するために使用され、かつ上流サーバがユーザの支払行為を処理するために使用される時、ユーザＡの支払行為が＄１００を支払うことだとすると、上流サーバはトランザクション処理サーバに対し、ユーザＡの勘定残高から＄１００を差し引くよう要求するために使用されるトランザクション要求を送信する。トランザクション処理サーバは、トランザクション要求を受信すると、トランザクション要求を使用して、ユーザＡの勘定残高から＄１００を差し引くトランザクション処理を実行する。さらに、１次データベースにおけるユーザＡの対応勘定残高が＄１０００だとすると、トランザクション処理サーバは、１次データベースに記憶されているユーザＡの勘定残高＄１０００から＄１００を差し引いて、１次データベースに記憶されているユーザＡの勘定残高を＄９００に更新する必要がある。
【０００４】
既存の技術では、１次データベースの障害時に１次データベースはサービスの提供を停止し、そして１次データベースがデータの正確性を保証できるように復旧されて初めて、１次データベースは引き続きサービスを提供する。しかしながら、１次データベースの障害時に、トランザクション処理サーバは、１次データベース内のデータ値を取得して、１次データベースに記憶されているデータ値に基づいてトランザクション処理を実行することができないため、トランザクションは中断され、ユーザ体験に影響を及ぼす。
【発明の概要】
【０００５】
当概要は、発明を実施するための形態においてさらに後述される概念の精選を、簡潔な形式で紹介するために提供される。当概要には、請求内容の全ての主要な特徴または重要な特徴を特定する意図はなく、また請求内容の範囲の特定を補助するものとして単独で用いられる意図もない。用語「技術（複数可）または技術的解決策（複数可）」は例えば、前述の文脈により、また本開示を通して許容されているように、装置（複数可）、システム（複数可）、方法（複数可）、及び／またはコンピュータ可読命令を指し得る。
【０００６】
本開示は、１次データベースの障害時にトランザクションが中断されることを防ぎ、ユーザ体験を向上する、データベースの障害時におけるデータ記憶の方法及びデバイスを提供する。
【０００７】
本開示は、データベースの障害時におけるデータ記憶の例示的方法を提供し、１次データベースに記憶されるデータ値は、読出しデータベースにＭ秒以内に同期されなければならない。方法は以下の動作、１次データベースの障害時に、トランザクション処理サーバにより、Ｍ秒以内のトランザクション要求を特定し、トランザクション要求のトランザクション処理を実行して対応トランザクション識別とデータ変動値とを取得することと、トランザクション処理サーバにより、トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定することと、記憶されていない場合、トランザクション処理サーバにより、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定することと、待機データベースに記憶されているデータ値に基づいてサービスを提供するために、トランザクション処理サーバにより、トランザクション識別と正確なデータ値とを待機データベースに記憶することを含み得る。
【０００８】
例えば、トランザクション処理サーバによりＭ秒以内のトランザクション要求を特定することは以下の動作、上流サーバがＭ秒以内に既に発信済みのトランザクション要求を再送するように、トランザクション処理サーバにより上流サーバに対し、Ｍ秒以内に発信したトランザクション要求を再発信するように通知することと、トランザクション処理サーバにより、上流サーバからのトランザクション要求を受信し、当該トランザクション要求が、上流サーバにより再送されたＭ秒以内に既に発信済みのトランザクション要求であると判断することを含み得る。
【０００９】
トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかをトランザクション処理サーバが判定する前に、方法はさらに以下の動作、トランザクション識別に対応するデータ値が読出しデータベースに記憶されているか否かをトランザクション処理サーバにより判定することと、トランザクション識別に対応するデータ値が既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が読出しデータベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄することと、トランザクション識別に対応するデータ値が記憶されていない場合は、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定するステップを実行することを含み得る。
【００１０】
トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかをトランザクション処理サーバが判定した後、方法はさらに以下の動作、トランザクション識別に対応するデータ値が待機データベースに既に記憶されている場合は、トランザクション処理サーバにより、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄することを含み得る。
【００１１】
例えば、トランザクション処理サーバにより、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定することは、具体的には以下の動作、トランザクション識別に対応するデータ値が読出しデータベースに記憶されていない場合は、トランザクション処理サーバにより、読出しデータベースにおけるトランザクション要求により要求されるデータ値を取得し、読出しデータベースにおけるトランザクション要求により要求されるデータ値とデータ変動値との合計または組み合わせが、トランザクション識別に対応する正確なデータ値であると判断すること、または、トランザクション識別に対応するデータ値が読出しデータベースに既に記憶されている場合は、トランザクション処理サーバにより、読出しデータベースに記憶されているトランザクション識別に対応するデータ値が、トランザクション識別に対応する正確なデータ値であると判断することを含み得る。
【００１２】
トランザクション処理サーバがトランザクション識別と正確なデータ値とを待機データベースに記憶した後、方法はさらに以下の動作、１次データベースの障害が回復すると、トランザクション処理サーバにより、待機データベースに記憶されているデータ値を１次データベースに復元し、１次データベースに記憶されているデータ値に基づいてサービスを提供することを含み得る。
【００１３】
本開示はまた、例示的トランザクション処理サーバも提供する。１次データベースに記憶されるデータ値は、読出しデータベースにＭ秒以内に同期されなければならない。トランザクション処理サーバは以下のモジュール、１次データベースの障害時に、Ｍ秒以内のトランザクション要求を特定し、トランザクション要求のトランザクション処理を実行して対応トランザクション識別とデータ変動値とを取得する取得モジュールと、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する判定モジュールと、判定モジュールからの判定結果が否定的である場合に、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定する特定モジュールと、待機データベースに記憶されているデータ値に基づいてサービスを提供するために、トランザクション識別と正確なデータ値とを待機データベースに記憶する記憶モジュールを含み得る。
【００１４】
例えば、取得モジュールは、Ｍ秒以内のトランザクション要求を特定する時、上流サーバがＭ秒以内に既に発信済みのトランザクション要求を再送するように、上流サーバに対し、Ｍ秒以内に発信したトランザクション要求を再発信するように通知し、上流サーバからのトランザクション要求を受信し、当該トランザクション要求が、上流サーバにより再送されたＭ秒以内に既に発信済みのトランザクション要求であると判断する。
【００１５】
例えば、判定モジュールはさらに、トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定する前に、トランザクション識別に対応するデータ値が読出しデータベースに記憶されているか否かを判定し、トランザクション識別に対応するデータ値が既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が読出しデータベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄し、トランザクション識別に対応するデータ値が記憶されていない場合は、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定するプロセスを実行する。
【００１６】
例えば、判定モジュールはさらに、トランザクション識別に対応するデータ値が待機データベースに記憶されているかどうかを判定した後、トランザクション識別に対応するデータ値が待機データベースに既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄する。
【００１７】
例えば、特定モジュールは、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定する時に、トランザクション識別に対応するデータ値が読出しデータベースに記憶されていない場合は、読出しデータベースにおけるトランザクション要求により要求されるデータ値を取得し、読出しデータベースにおけるトランザクション要求により要求されるデータ値とデータ変動値との合計または組み合わせが、トランザクション識別に対応する正確なデータ値であると判断し、または、トランザクション識別に対応するデータ値が読出しデータベースに既に記憶されている場合は、読出しデータベースに記憶されているトランザクション識別に対応するデータ値が、トランザクション識別に対応する正確なデータ値であると判断する。
【００１８】
記憶モジュールはさらに、トランザクション識別と正確なデータ値とを待機データベースに記憶した後、１次データベースの障害が回復すると、待機データベースに記憶されているデータ値を１次データベースに復元し、１次データベースに記憶されているデータ値に基づいてサービスを提供するために使用される。
【００１９】
既存の技術と比較すると、本開示の技術は少なくとも以下の技術的利点を有する。１次データベースの障害時に、トランザクション処理サーバは、読出しデータベースに記憶されているデータ値を介して正確なデータ値を特定し、正確なデータ値を待機データベースに記憶する。従って１次データベースに障害が発生し１次データベースが復旧を待つ時には、待機データベースに記憶されているデータ値に基づいてサービスが提供される。よってトランザクション処理サーバは、待機データベースから正確なデータ値を取得してトランザクション処理を実行し、これによりトランザクションが中断されることが防がれ、ユーザ体験が向上する。
【００２０】
本開示の例示的実施形態における技術的解決策をより明確に説明するために、下記において、本開示の例示的実施形態を説明する添付図面が簡単に紹介される。明らかに、添付図面は、本開示のいくつかの例示的実施形態を示すにすぎず、当業者は創意的な努力なしに本開示の例示的実施形態のこれらの添付図面から、さらに他の図面を引き出し得る。
【図面の簡単な説明】
【００２１】
【図１】本開示による、例示的アプリケーションシナリオの模式図である。
【図２】本開示の第１実施形態による、データベースの障害時におけるデータ記憶の例示的方法のフローチャートである。
【図３】本開示の第２例示的実施形態による、例示的トランザクション処理サーバの構造的模式図である。
【発明を実施するための形態】
【００２２】
本開示の例示的実施形態における技術的解決策が、添付図面を参照しながら下記において説明される。明らかに、説明される例示的実施形態は、本開示の実施形態の全てではなく一部を表すにすぎない。本開示により創意的な努力なしに当業者が得る全ての他の実施形態は、本開示の保護範囲に属するものとする。
【００２３】
本開示の第１例示的実施形態が、下記において説明される。既存技術における問題を解決するために、本開示の例示的実施形態は、データベースの障害時におけるデータ記憶の方法を提供する。本開示の例示的実施形態による例示的アプリケーションシナリオの模式図である図１を参照すると、トランザクション処理サーバ１０２と、１つまたは複数の上流サーバ１０４（１）、１０４（２）、・・・、１０４（ｍ）と、少なくとも３つのデータベースとを含むシステム１００に方法が適用される。上流サーバの数は１つまたは複数であり得、そしてｍは任意の整数であり得る。３つのデータベースは、１次データベース１０６と、読出しデータベース１０８と、待機データベース１１０とを含み、読出しデータベース１０８は、１次データベースとの同期遅延が小さいデータベースである。
【００２４】
図１に示されるように、トランザクション処理サーバ１０２は、１次データベース１０６、読出しデータベース１０８、及び待機データベース１１０とそれぞれ接続されている。１次データベース１０６は、読出しデータベース１０８、及び待機データベース１１０と接続されている。
【００２５】
１次データベース１０６に障害がない時、読出し及び書込みサービスは、１次データベース１０６により提供される。すなわちトランザクション処理サーバ１０２は、１次データベース１０６にデータを書込むか、または１次データベース１０６からデータを読出す。１次データベース１０６の障害時には、読出し及び書込みサービスは、待機データベース１１０により提供される。すなわちトランザクション処理サーバ１０２は、待機データベース１１０にデータを書込むか、または待機データベース１１０からデータを読出す。
【００２６】
例えば、読出しデータベース１０８は、１次データベース１０６のバックアップデータベースとして使用される。１次データベース１０６に障害がない時、１次データベース１０６内のデータは読出しデータベース１０８に同期され、読出しデータベース１０８は読出しサービスのみを提供し得る。すなわちトランザクション処理サーバ１０２は、読出しデータベース１０８からデータを読出し得るが、読出しデータベース１０８にデータを書込むことはできない。例えば、読出しデータベース１０８は、１次データベース１０６のバックアップ機能を提供し、かつ読出しサービスのみを提供するデータベースである。
【００２７】
本開示の例示的実施形態において、１次データベース１０６に障害がない時、１次データベース１０６に記憶されているデータ値を使用してサービスは提供され、そして１次データベース１０６に記憶される全てのデータ値は読出しデータベース１０８に同期される。１次データベース１０６に記憶されるデータ値が読出しデータベース１０８に同期される時、１次データベースに記憶されるデータ値は、読出しデータベースにＭ秒以内に同期されなければならない。すなわち、新たなデータ値が１次データベース１０６に記憶された後、または１次データベース１０６に記憶されているデータ値が変更した後、１次データベース１０６は、記憶された新たなデータ値または変更したデータ値を、読出しデータベース１０８にＭ秒以内に同期する。従って、１次データベース１０６内のデータ値と読出しデータベース１０８内のデータ値間の不一致期間は最大Ｍ秒であり、１次データベース１０６内のデータ値は最終的に読出しデータベース１０８内のデータ値と一致する。
【００２８】
例えば、Ｍ秒の値は、通常１秒である。勿論、異なるアプリケーションシナリオの下、Ｍ秒の値は、１次データベースの性能を含み得る様々な要素に依存するが、本明細書においては詳述されない。
【００２９】
本開示の例示的実施形態において、１次データベース１０６の障害時には、１次データベース１０６の障害が回復されるまで、データ値は待機データベース１１０を使用して記憶され、そして待機データベース１１０に記憶されているデータ値を使用してサービスが提供される。
【００３０】
前述のアプリケーションシナリオの下、図２に示されるように、本開示の例示的実施形態によるデータベースの障害時におけるデータ記憶の例示的方法は、１次データベースの障害時に以下の動作を含み得る。
【００３１】
２０２において、トランザクション処理サーバは、Ｍ秒以内（１次データベースの障害の発生するＭ秒前等）のトランザクション要求を特定し、トランザクション要求のトランザクション処理を実行して対応トランザクション識別とデータ変動値とを取得する。
【００３２】
本開示の例示的実施形態において、トランザクション処理サーバによりＭ秒以内に起こったトランザクション要求を特定することは、以下の動作を非限定的に含み得る。
【００３３】
上流サーバがＭ秒以内に既に発信済みのトランザクション要求を再送するように、トランザクション処理サーバは上流サーバに対し、Ｍ秒以内に発信したトランザクション要求を再発信するように通知し、そして、トランザクション処理サーバは、上流サーバからのトランザクション要求を受信し、当該トランザクション要求が、上流サーバにより再送されたＭ秒以内に既に発信済みのものと判断する。
【００３４】
１次データベースの障害時に、トランザクション処理サーバは、トランザクション処理サーバと対話する全ての上流サーバに対し（すなわちトランザクション処理サーバに接続されている全ての上流サーバに対し）、Ｍ秒以内に発信したトランザクション要求を再発信するように通知する。上流サーバは、通知を受信すると、どのトランザクション要求が上流サーバからトランザクション処理サーバへＭ秒以内に送信されたか照会し、Ｍ秒以内に既に発信済みのトランザクション要求をトランザクション処理サーバへ再送する。例えば、上流サーバがトランザクション要求１をトランザクション処理サーバへＭ秒以内に送信したとすると、上流サーバは、トランザクション要求１をトランザクション処理サーバへ再送する。そして、トランザクション処理サーバは、上流サーバから再送されたＭ秒以内に既に発信済みのトランザクション要求１を受信する。
【００３５】
本開示の例示的実施形態において、トランザクション処理サーバがトランザクション要求のトランザクション処理を実行する度に、トランザクション処理サーバは、トランザクション要求に対応するトランザクション識別（トランザクション番号等）とデータ変動値とを取得し、トランザクション要求に対応するトランザクション識別は冪等制御信号とも称され得る。
【００３６】
例えば、１次データベースが主に勘定残高を記憶するために使用され、かつ上流サーバがユーザの支払行為を処理するために使用される時、ユーザＡの支払行為が＄１００を支払うことだとすると、上流サーバはトランザクション処理サーバに対し、ユーザＡの勘定残高から＄１００を差し引くために使用されるトランザクション要求１を送信する。トランザクション処理サーバは、トランザクション要求１を受信すると、トランザクション要求１を使用して、ユーザＡの勘定残高から＄１００を差し引くトランザクション処理を実行する。当該トランザクション処理に対応するトランザクション識別は、１２３４５６と仮定する。さらに、１次データベースにおけるユーザＡの対応勘定残高が＄１０００だとすると、トランザクション処理サーバは、１次データベースに記憶されているユーザＡの勘定残高＄１０００から＄１００を差し引き、１次データベースに記憶されているユーザＡの勘定残高を＄９００に更新し、トランザクション処理に対応する１２３４５６等のトランザクション識別を１次データベースに記録する。
【００３７】
１次データベースの障害時に、トランザクション処理サーバは全ての上流サーバに対し、１次データベースの障害が発生するＭ秒前以内に発信されたトランザクション要求を再発信するように通知する。上流サーバは、通知を受信すると、ユーザＡの勘定残高から＄１００を差し引くために使用されるトランザクション要求１を、トランザクション処理サーバへ再送する。トランザクション処理サーバは、上流サーバにより再送されたトランザクション要求１を受信すると、トランザクション要求１を使用して、ユーザＡの勘定残高から＄１００を差し引くトランザクション処理を実行する。トランザクション要求を使用してトランザクション処理を実行するプロセスにおいて、トランザクション処理サーバにより取得される対応トランザクション識別は１２３４５６であり、トランザクション処理サーバにより取得される対応データ変動値は＄１００の差し引きである。
【００３８】
２０４において、トランザクション処理サーバは、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する。記憶されている場合には、２０６における動作が実行され、記憶されていない場合には、２０８における動作が実行される。
【００３９】
本開示の例示的実施形態において、１次データベースの障害時には、データ値を記憶するのに待機データベースが使用され、そして待機データベースに記憶されているデータ値を使用してサービスが提供される。従って、トランザクション処理サーバがトランザクション要求のトランザクション処理を実行して対応トランザクション識別及びデータ変動値を取得した後、トランザクション処理サーバは、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する。トランザクション識別に対応するデータ値が待機データベースに記憶されている場合は、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されているため、２０６における動作が実行され、トランザクション識別に対応するデータ値が待機データベースに記憶されていない場合は、トランザクション識別に対応する正確なデータ値が待機データベースに記憶されていないため、２０８における動作が実行される。例えば、トランザクション処理サーバは、トランザクション識別１２３４５６に対応するデータ値が待機データベースに記憶されているか否かを判定し、記憶されている場合には、２０６における動作が実行され、記憶されていない場合には、２０８における動作が実行される。
【００４０】
本開示の例示的実施形態において、トランザクション識別（１２３４５６等）に対応するデータ値が待機データベースに記憶されているか否かをトランザクション処理サーバが判定する前に、トランザクション処理サーバはさらに、トランザクション識別（１２３４５６等）に対応するデータ値が読出しデータベースに記憶されているか否かを判定し得る。トランザクション識別に対応するデータ値が読出しデータベースに既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が読出しデータベースに既に記憶されていると判断される。従って、トランザクション処理サーバは、現在取得されているトランザクション識別及びデータ変動値を直接破棄し、そして２０４における動作は実行されず、トランザクション要求の処理は終了する。あるいは、トランザクション処理サーバは、「トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する」動作を実行する、すなわち上述の２０４を実行する。トランザクション識別に対応するデータ値が読出しデータベースに記憶されていない場合には、トランザクション処理サーバは、「トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する」動作を実行しなければならない、すなわち上述の２０４を実行する。
【００４１】
２０６において、トランザクション処理サーバは、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄する。
【００４２】
本開示の例示的実施形態において、トランザクション識別に対応するデータ値が待機データベースに既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されている、すなわち正確なデータ値とトランザクション識別とが待機データベースに既に記憶されていることが示される。従って、トランザクション処理サーバが、トランザクション識別と対応する正確なデータ値とを待機データベースに記憶する必要はなくなり、そしてトランザクション処理サーバは、現在取得されているトランザクション識別及びデータ変動値を直接破棄し得る。
【００４３】
２０８において、トランザクション処理サーバは、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定し、そして待機データベースに記憶されているデータ値に基づいてサービスを提供するために、トランザクション識別と正確なデータ値とを待機データベースに記憶する。
【００４４】
本開示の例示的実施形態において、１次データベースに障害がない時、１次データベースに記憶されるデータ値は読出しデータベースにＭ秒以内に同期されなければならないため、１次データベースの障害が発生するＭ秒前より前に記憶された全データ値は読出しデータベースに既に同期されており、これらのデータ値が待機データベースに記憶される必要はもうない。１次データベースの障害が発生するＭ秒前以内に記憶されたデータ値に関して、当該データ値は、読出しデータベースに既に同期された可能性がある、または読出しデータベースに同期されなかった可能性がある。従って、待機データベースを通して正確なデータ値を提供するために、１次データベースの障害が発生するＭ秒前以内に記憶されたデータ値は、待機データベースに記憶されなければならない。１次データベースの障害が発生するＭ秒前以内のデータ値を待機データベースに記憶するために、２０４から２０８までの上述の動作が実行され、最終的にトランザクション識別と正確なデータ値とが待機データベースに記憶される。
【００４５】
本開示の例示的実施形態において、１次データベースの障害時に、１次データベースの障害後に作成されたデータ値に関して、トランザクション処理サーバは、対応するデータ値を直接待機データベースに記憶する。
【００４６】
本開示の例示的実施形態において、トランザクション処理サーバにより、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定することは、以下の動作を非限定的に含み得る。
【００４７】
トランザクション識別に対応するデータ値が読出しデータベースに記憶されていない場合には、トランザクション処理サーバは、読出しデータベースにおけるトランザクション要求により要求されるデータ値を取得し、読出しデータベースにおけるトランザクション要求により要求されるデータ値とデータ変動値との合計または組み合わせが、トランザクション識別に対応する正確なデータ値であると判断する。あるいは、トランザクション識別に対応するデータ値が読出しデータベースに既に記憶されている場合には、トランザクション処理サーバは、読出しデータベースに記憶されているトランザクション識別に対応するデータ値が、トランザクション識別に対応する正確なデータ値であると判断する。
【００４８】
例えば、トランザクション処理サーバは１２３４５６という対応トランザクション識別と、＄１００を差し引く対応データ変動値とを取得した後、トランザクション処理サーバは第１に、トランザクション識別１２３４５６に対応するデータ値が待機データベースに記憶されているか否かを判定する。２０２の前にトランザクション要求１に対しトランザクション処理が既に実行され、かつトランザクション処理後に取得されたトランザクション識別１２３４５６及びデータ値が待機データベースに記憶された場合には、トランザクション識別１２３４５６に対応するデータ値が待機データベースに記憶された状態で存在し、そうでなければ、トランザクション識別１２３４５６に対応するデータ値は待機データベースに存在しない。
【００４９】
第２に、トランザクション識別１２３４５６に対応するデータ値が待機データベースに存在しないとすると、トランザクション処理サーバは、トランザクション識別１２３４５６に対応するデータ値が読出しデータベースに記憶されているか否かを判定する。トランザクション識別１２３４５６に対応するデータ値が読出しデータベースに記憶されていない場合には、トランザクション処理サーバは、読出しデータベースにおけるトランザクション要求により要求されるデータ値、すなわちユーザＡの勘定残高が＄１０００であることを取得し、読出しデータベースにおけるトランザクション要求に対応するデータ値（＄１０００）とデータ変動値（−１００）との合計または組み合わせが、トランザクション識別１２３４５６に対応する正確な値である、すなわち正確なデータ値は＄９００であると判断する。トランザクション識別１２３４５６に対応するデータ値が読出しデータベースに既に記憶されている場合には、トランザクション処理サーバは、読出しデータベースに記憶されているトランザクション識別１２３４５６に対応するデータ値（すなわちユーザＡの勘定残高は＄９００）が、トランザクション識別１２３４５６に対応する正確なデータ値である、すなわち正確なデータ値は＄９００であると判断する。それからトランザクション処理サーバは、トランザクション識別１２３４５６と正確なデータ値＄９００を待機データベースに記憶する。
【００５０】
本開示の例示的実施形態において、トランザクション処理サーバがトランザクション識別と正確なデータ値とを待機データベースに記憶した後、１次データベースの障害が回復すると、トランザクション処理サーバは、待機データベースに記憶されているデータ値を１次データベースに復元し、１次データベースに記憶されているデータ値に基づいてサービスが提供される。
【００５１】
概して、本開示の技術は少なくとも以下の技術的利点を有する。１次データベースの障害時に、トランザクション処理サーバは、読出しデータベースに記憶されているデータ値を介して正確なデータ値を特定し、正確なデータ値を待機データベースに記憶し得る。従って１次データベースに障害が発生し１次データベースが復旧を待つ時には、待機データベースに記憶されているデータ値に基づいてサービスが提供され得る。よってトランザクション処理サーバは、待機データベースから正確なデータ値を取得してトランザクション処理を実行し得るため、これによりトランザクションが中断されることが防がれ、ユーザ体験が向上する。
【００５２】
本開示の第２例示的実施形態が、下記において説明される。
【００５３】
上述の方法と同じ概念に基づいて、本開示はさらに例示的トランザクション処理サーバを提供する。１次データベースに記憶されるデータ値は、読出しデータベースにＭ秒以内に同期される。図３に示されるように、トランザクション処理サーバ３００は、１つまたは複数のプロセッサ３０２もしくはデータ処理ユニットと、メモリ３０４とを含む。トランザクション処理サーバ３００はさらに、１つまたは複数の入出力装置と、ネットワークインターフェースを含み得る（図３に図示せず）。メモリ３０４は、コンピュータ可読媒体の実施例である。
【００５４】
コンピュータ可読媒体には、情報記憶を実施するための任意の方法または技術を使用し得る永続的及び非永続的、取り外し可能及び取り外し不可能な媒体が含まれる。情報は、コンピュータ可読命令、データ構造、ソフトウェアモジュール、または任意のデータであり得る。コンピュータ記憶媒体の例には、相変化メモリ（ＰＣＭ）、静的ランダムアクセスメモリ（ＳＲＡＭ）、動的ランダムアクセスメモリ（ＤＲＡＭ）、他の種類のＲＡＭ、ＲＯＭ、電気的消去可能プログラマブル読出専用メモリ（ＥＥＰＲＯＭ）、フラッシュメモリ、内部メモリ、ＣＤ−ＲＯＭ、ＤＶＤ、光学メモリ、磁気テープ、磁気ディスク、その他の磁気記憶装置、またはコンピューティングデバイスによりアクセス可能な情報を記憶し得るその他の非通信媒体が含まれ得るが、これに限定されない。本明細書において定義されるように、コンピュータ可読媒体には、変調データ信号及び搬送波等の一時的媒体は含まれない。
【００５５】
メモリ３０４は中に、複数のモジュールまたはユニットを格納し得る。当該複数のモジュールまたはユニットには、１次データベースの障害時に、Ｍ秒以内のトランザクション要求を特定し、トランザクション要求のトランザクション処理を実行して対応トランザクション識別とデータ変動値とを取得する取得モジュール３０６と、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する判定モジュール３０８と、判定結果が否定的である場合に、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定する特定モジュール３１０と、待機データベースに記憶されているデータ値に基づいてサービスを提供するために、トランザクション識別と正確なデータ値とを待機データベースに記憶する記憶モジュール３１２とが含まれる。
【００５６】
例えば、取得モジュール３０６は、Ｍ秒以内のトランザクション要求を特定する時、さらに、上流サーバがＭ秒以内に既に発信済みのトランザクション要求を再送するように、上流サーバに対し、Ｍ秒以内に発信したトランザクション要求を再発信するように通知し、上流サーバからのトランザクション要求を受信し、当該トランザクション要求が、上流サーバにより再送されたＭ秒以内に既に発信済みのトランザクション要求であると判断する。
【００５７】
例えば、判定モジュール３０８は、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定する前に、さらに、トランザクション識別に対応するデータ値が読出しデータベースに記憶されているか否かを判定し、トランザクション識別に対応するデータ値が既に記憶されている場合は、トランザクション識別に対応する正確なデータ値が読出しデータベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄し、トランザクション識別に対応するデータ値が記憶されていない場合は、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かを判定するプロセスを実行する。
【００５８】
例えば、判定モジュール３０８は、トランザクション識別に対応するデータ値が待機データベースに記憶されているか否かの判定後、トランザクション識別に対応するデータ値が待機データベースに既に記憶されている場合は、さらに、トランザクション識別に対応する正確なデータ値が待機データベースに既に記憶されていると判断し、現在取得されているトランザクション識別及びデータ変動値を破棄する。
【００５９】
例えば、特定モジュール３１０は、読出しデータベースに記憶されているデータ値とデータ変動値とを使用してトランザクション識別に対応する正確なデータ値を特定する時に、トランザクション識別に対応するデータ値が読出しデータベースに記憶されていない場合は、さらに、読出しデータベースにおけるトランザクション要求により要求されるデータ値を取得し、読出しデータベースにおけるトランザクション要求により要求されるデータ値とデータ変動値との合計または組み合わせが、トランザクション識別に対応する正確なデータ値であると判断し、あるいは、トランザクション識別に対応するデータ値が読出しデータベースに既に記憶されている場合は、読出しデータベースに記憶されているトランザクション識別に対応するデータ値が、トランザクション識別に対応する正確なデータ値であると判断する。
【００６０】
例えば、記憶モジュール３１２は、トランザクション識別と正確なデータ値とを待機データベースに記憶した後、１次データベースの障害が回復すると、さらに、待機データベースに記憶されているデータ値を１次データベースに復元し、１次データベースに記憶されているデータ値に基づいてサービスを提供する。
【００６１】
本開示のデバイスもしくは装置のモジュールは、統合され得るか、または個別に配置され得る。上述のモジュールは、１つのモジュールに併合され得るか、または複数のサブモジュールにさらに分割され得る。
【００６２】
例示的実施形態の前述の説明により、本開示は、ハードウェア、ソフトウェア、またはソフトウェアに加えて必要な一般的ハードウェアプラットフォームを介して実行され得ることが、当業者には明確に理解されよう。このような理解に基づいて、本開示の技術的解決策の要旨、または当業技術の水準に貢献する出願の一部は、コンピュータ可読媒体に記憶され、かつコンピュータデバイス（パーソナルコンピュータ、サーバ、ネットワークデバイス等）が本開示の実施形態において列挙される方法または動作を実行することを可能にするコンピュータ実行可能命令を含む、ソフトウェア製品の形態で具現化され得る。図面は例示的実施形態の模式図にすぎず、本開示を実施するために図面内のモジュールまたはフローを使用する必要はないことが、当業者には認識されよう。実施形態における装置内のモジュールは、説明されるように実施形態におけるデバイスまたは装置内に分散され得る、あるいは本実施形態におけるデバイスまたは装置以外の１つまたは複数のデバイスまたは装置に配置されるように変更され得ることが、当業者には認識されよう。前述の実施形態におけるモジュールは、１つのモジュールに合併され得る、または複数のサブモジュールにさらに分割され得る。本出願の例示的実施形態は、説明の目的でのみ番号が振られており、実施形態間の優位性を示すためではない。前述の開示は、本開示のいくつかの例示的実施形態の例示にすぎないが、本開示はこれらに限定されない。当業者が思いつき得る任意の変形も、本開示の保護範囲に入るものとする。
【図１】
0006557323.tif 000002
【図２】
0006557323.tif 000003
【図３】
0006557323.tif 000004