(57)【要約】  本開示の実施形態は、データ書き込みのための方法及び装置を提供する。例示的な方法は、第１の書き込み予定のデータを得ることと、第１の書き込み予定のデータに対応する第１のグループ識別子を決定することと、第１のグループ識別子に対応するマスタノードを決定することと、マスタノードが現ノードである場合は、第１の書き込み予定のデータを書き込むこととを含む。
2021535468.tif 000002
【特許請求の範囲】
【請求項１】
分散データベースシステムの現ノードによって実施されるデータ書き込みのための方法であって、
第１の書き込み予定のデータを得ることと、
前記第１の書き込み予定のデータに対応する第１のグループ識別子を決定することと、
前記第１のグループ識別子に対応する第１のマスタノードを決定することと、
前記第１のマスタノードが前記現ノードである場合は、前記第１の書き込み予定のデータを書き込むことと
を含む、方法。
【請求項２】
前記第１のマスタノードが前記分散データベースシステムの前記現ノード以外の第１のノードである場合は、第２のグループ識別子を決定することであって、前記第２のグループ識別子に対応する第２のマスタノードが、前記現ノードである、決定することと、
前記第２のグループ識別子を前記第１のノードに送信することと、
前記第１のノードから第１の更新メッセージを受信することであって、前記第１の更新メッセージが、前記第１のノードにおいて前記第１のグループ識別子が前記第２のグループ識別子に修正されることを示す、受信することと、
前記第１のグループ識別子を前記第２のグループ識別子に修正することと、
前記第１の書き込み予定のデータを書き込むことと
をさらに含む、請求項１に記載の方法。
【請求項３】
前記第１の書き込み予定のデータに対応する前記第１のグループ識別子を決定することが、
前記第１の書き込み予定のデータに対応する第１のデータテーブルの第１のデータ行を決定することと、
前記第１のデータ行のグループ識別子を前記第１のグループ識別子として決定することと
を含む、請求項１又は２に記載の方法。
【請求項４】
前記第１のグループ識別子に対応する前記第１のマスタノードを決定することが、
マッピングテーブルから前記第１のマスタノードを検索すること
を含み、
前記マッピングテーブルが、複数のグループ識別子及び対応するマスタノードを含む、請求項１〜３のいずれか一項に記載の方法。
【請求項５】
前記第２のグループ識別子を決定することが、
マッピングテーブルから前記第２のグループ識別子を検索すること
を含み、
前記マッピングテーブルが、複数のグループ識別子及び対応するマスタノードを含む、請求項２に記載の方法。
【請求項６】
前記第２のグループ識別子を前記第１のノードに送信することが、
前記第２のグループ識別子及び前記第１の書き込み予定のデータのインデックス情報を含む通知メッセージを前記第１のノードに送信すること
を含む、請求項２に記載の方法。
【請求項７】
前記第１のグループ識別子を前記第２のグループ識別子に修正することが、
前記更新メッセージのインデックス情報に従って、前記第１の書き込み予定のデータに対応する第１のデータテーブルの第１のデータ行を決定すること
を含む、請求項２に記載の方法。
【請求項８】
前記第１のマスタノードが前記現ノードである場合は、
第２の書き込み予定のデータを得ることと、
前記第２の書き込み予定のデータに対応する第３のグループ識別子を決定することと、
前記第３のグループ識別子が前記第１のグループ識別子とは異なる場合は、前記第３のグループ識別子に対応する第３のマスタノードを決定することと、
前記第３のマスタノードが前記分散データベースシステムの前記現ノード以外の第２のノードである場合は、前記第１のグループ識別子を前記第２のノードに送信することと、
前記第２のノードから第２の更新メッセージを受信することであって、前記第２の更新メッセージが、前記第２のノードにおいて前記第３のグループ識別子が前記第１のグループ識別子に修正されることを示す、受信することと、
前記第３のグループ識別子を前記第１のグループ識別子に修正することと、
前記第２の書き込み予定のデータを書き込むことと
をさらに含む、請求項１に記載の方法。
【請求項９】
前記第３のマスタノードが前記現ノードである場合は、前記第３のグループ識別子を前記第１のグループ識別子に修正することと、
前記第２の書き込み予定のデータを書き込むことと、
前記第３のグループ識別子を前記第１のグループ識別子に修正したことを示す第３の更新メッセージを送信することと
をさらに含む、請求項８に記載の方法。
【請求項１０】
前記第３のグループ識別子が前記第１のグループ識別子と同じである場合は、前記第２の書き込み予定のデータを書き込むこと
をさらに含む、請求項８に記載の方法。
【請求項１１】
前記第１のマスタノードが前記現ノード以外の前記第１のノードである場合は、
第２の書き込み予定のデータを得ることと、
前記第２の書き込み予定のデータに対応する第３のグループ識別子を決定することと、
前記第３のグループ識別子が前記第２のグループ識別子とは異なる場合は、前記第３のグループ識別子に対応する第３のマスタノードを決定することと、
前記第３のマスタノードが前記分散データベースシステムの前記現ノード以外の第２のノードである場合は、前記第２のグループ識別子を前記第２のノードに送信することと、
前記第２のノードから第３の更新メッセージを受信することであって、前記第３の更新メッセージが、前記第２のノードにおいて前記第３のグループ識別子が前記第２のグループ識別子に修正されることを示す、受信することと、
前記第３のグループ識別子を前記第２のグループ識別子に修正することと、
前記第２の書き込み予定のデータを書き込むことと
をさらに含む、請求項２に記載の方法。
【請求項１２】
前記第３のマスタノードが前記現ノードである場合は、前記第３のグループ識別子を前記第２のグループ識別子に修正することと、
第３の書き込み予定のデータを書き込むことと、
前記第３のグループ識別子を前記第２のグループ識別子に修正したことを示す第３の更新メッセージを送信することと
をさらに含む、請求項１１に記載の方法。
【請求項１３】
前記第３のグループ識別子が前記第２のグループ識別子と同じである場合は、前記第２の書き込み予定のデータを書き込むこと
をさらに含む、請求項１１に記載の方法。
【請求項１４】
前記第２の書き込み予定のデータに対応する前記第３のグループ識別子を決定することが、
前記第２の書き込み予定のデータに対応する第２のデータテーブルの第３のデータ行を決定することと、
前記第３のデータ行のグループ識別子を前記第３のグループ識別子として決定することと
を含む、請求項８又は１１に記載の方法。
【請求項１５】
前記第３のグループ識別子に対応する前記第３のマスタノードを決定することが、
マッピングテーブルから前記第３のマスタノードを検索することであって、前記マッピングテーブルが、複数のグループ識別子及び対応するマスタノードを含む、検索すること
を含む、請求項８又は１１に記載の方法。
【請求項１６】
前記現ノードと前記第１のノードが、異なる地域に位置する、請求項２に記載の方法。
【請求項１７】
分散データベースシステムの第１のノードによって実施されるデータ書き込みのための方法であって、
前記分散データベースシステムの第２のノードからメッセージを受信することであって、前記メッセージが、第２のグループ識別子を含む、受信することと、
前記第２のグループ識別子に対応するデータテーブルのデータ行を決定することと、
前記データ行の第１のグループ識別子を前記第２のグループ識別子に修正することであって、前記第１のグループ識別子が、前記第１のノードが前記第１のデータ行を修正することができるマスタノードであることを示す、修正することと、
更新メッセージを前記第２のノードに送信することと
を含む、方法。
【請求項１８】
分散データベースシステムの現ノードにおけるデータ書き込みのための装置であって、
命令セットを格納するメモリと、
１つ又は複数のプロセッサと
を含み、前記１つ又は複数のプロセッサが、前記命令セットを実行して、
第１の書き込み予定のデータを得ることと、
前記第１の書き込み予定のデータに対応する第１のグループ識別子を決定することと、
前記第１のグループ識別子に対応する第１のマスタノードを決定することと、
前記第１のマスタノードが前記現ノードである場合は、前記第１の書き込み予定のデータを書き込むことと
を前記装置に実行させるように構成される、装置。
【請求項１９】
前記１つ又は複数のプロセッサが、前記命令セットを実行して、
前記マスタノードが前記分散データベースシステムの前記現ノード以外の第１のノードである場合は、第２のグループ識別子を決定することであって、前記第２のグループ識別子に対応する第２のマスタノードが、前記現ノードである、決定することと、
前記第２のグループ識別子を前記第１のノードに送信することと、
前記第１のノードから更新メッセージを受信することであって、前記更新メッセージが、前記第１のノードにおいて前記第１のグループ識別子が前記第２のグループ識別子に修正されることを示す、受信することと、
前記第１のグループ識別子を前記第２のグループ識別子に修正することと、
前記第１の書き込み予定のデータを書き込むことと
を前記装置に実行させるように構成される、請求項１８に記載の装置。
【請求項２０】
前記第１の書き込み予定のデータに対応する前記第１のグループ識別子を決定することが、
前記第１の書き込み予定のデータに対応する第１のデータテーブルの第１のデータ行を決定することと、
前記第１のデータ行のグループ識別子を前記第１のグループ識別子として決定することと
を含む、請求項１８又は１９に記載の装置。
【請求項２１】
命令セットを格納する非一時的な機械可読記憶媒体であって、前記命令セットが、分散データベースシステムの現ノードが方法を実行するように、前記現ノードの１つ又は複数のプロセッサによって実行可能であり、前記方法が、
第１の書き込み予定のデータを得ることと、
前記第１の書き込み予定のデータに対応する第１のグループ識別子を決定することと、
前記第１のグループ識別子に対応する第１のマスタノードを決定することと、
前記第１のマスタノードが前記現ノードである場合は、前記第１の書き込み予定のデータを書き込むことと
を含む、非一時的な機械可読記憶媒体。
【請求項２２】
前記１つ又は複数のプロセッサによって実行可能な前記命令セットが、
前記第１のマスタノードが前記分散データベースシステムの前記現ノード以外の第１のノードである場合は、第２のグループ識別子を決定することであって、前記第２のグループ識別子に対応する第２のマスタノードが、前記現ノードである、決定することと、
前記第２のグループ識別子を前記第１のノードに送信することと、
前記第１のノードから第１の更新メッセージを受信することであって、前記第１の更新メッセージが、前記第１のノードにおいて前記第１のグループ識別子が前記第２のグループ識別子に修正されることを示す、受信することと、
前記第１のグループ識別子を前記第２のグループ識別子に修正することと、
前記第１の書き込み予定のデータを書き込むことと
を前記現ノードにさらに実行させる、請求項２１に記載の非一時的な機械可読記憶媒体。
【請求項２３】
前記第１の書き込み予定のデータに対応する前記第１のグループ識別子を決定することが、
前記第１の書き込み予定のデータに対応する第１のデータテーブルの第１のデータ行を決定することと、
前記第１のデータ行のグループ識別子を前記第１のグループ識別子として決定することと
を含む、請求項２１又は２２に記載の非一時的な機械可読記憶媒体。
【請求項２４】
命令セットを格納する非一時的な機械可読記憶媒体であって、前記命令セットが、分散データベースシステムの第１のノードが方法を実行するように、前記第１のノードの１つ又は複数のプロセッサによって実行可能であり、前記方法が、 
前記分散データベースシステムの第２のノードからメッセージを受信することであって、前記メッセージが、第２のグループ識別子を含む、受信することと、
前記第２のグループ識別子に対応するデータテーブルのデータ行を決定することと、
前記データ行の第１のグループ識別子を前記第２のグループ識別子に修正することであって、前記第１のグループ識別子が、前記第１のノードが前記第１のデータ行を修正することができるマスタノードであることを示す、修正することと、
更新メッセージを前記第２のノードに送信することと
を含む、非一時的な機械可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
[0001]  本開示は、２０１８年８月２９日に出願された中国特許出願第２０１８１０９９４７３４．４号の優先権の利益を主張し、同特許出願は、その全体が参照により本明細書に組み込まれる。
【０００２】
技術分野
[0002]  本開示は、データベースの技術分野に関し、具体的には、データ書き込みのための方法及び装置に関する。
【背景技術】
【０００３】
背景
[0003]  分散合意プロトコル（Paxosなど）は、分散データベースのコア構成要素である。分散合意プロトコルは、分散データベースのマルチコピーデータの一貫性、耐災害性切替及び他の能力を保証するために使用され、それらの性能は、分散データベース全体の性能に影響を及ぼす。現在、分散合意プロトコルは、シングルポイント書き込みのみをサポートし、マルチポイント書き込みはサポートしない。例えば、分散データベースは、地域Ａに位置するノードＡ及び地域Ｂに位置するノードＢを含む。Paxosグループ１のマスタノードはノードＡであり、Paxosグループ１のスレーブノードはノードＢである。ユーザ１が地域Ａに位置する際、ユーザ１は、Paxosグループ１に加えることができる。ユーザ１が地域ＡにおいてデータＸを書き込むことを要求すると、データＸは、ノードＡに送信される。ノードＡはPaxosグループ１のマスタノードであるため、データＸは、その地域で書き込み、ノードＢと同期させることができる。ユーザ１が地域Ｂに移動し、データＹを書き込むことを要求すると、データＹは、ノードＢに送信される。ノードＢはPaxosグループ１のスレーブノードであるため、データＹは、その地域で書き込むことはできず、データＹの書き込み失敗が生じる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
[0004]  分散データベース技術の急速な発展により、国際的に複数の地域にわたって配備される分散データベースの人気が高まり、データのマルチポイント書き込みに対する共通のニーズが高まった。分散合意プロトコルはデータのマルチポイント書き込みをサポートしないため、複数の地域を横断するユーザは、分散合意プロトコルに基づいて、現地域のノードにデータを書き込むことができず、したがってサービスにおける貧弱なユーザ経験をもたらす。
【課題を解決するための手段】
【０００５】
概要
[0005]  本出願の実施形態は、データ書き込みのための方法及び装置を提供する。いくつかの実施形態では、分散データベースシステムのノードによって実施されるデータ書き込みのための例示的な方法は、第１の書き込み予定のデータを得ることと、第１の書き込み予定のデータに対応する第１のグループ識別子を決定することと、第１のグループ識別子に対応するマスタノードを決定することと、マスタノードがノードである場合は、第１の書き込み予定のデータを書き込むこととを含む。
【０００６】
[0006]  いくつかの実施形態では、分散データベースシステムの第１のノードによって実施されるデータ書き込みのための例示的な方法は、分散データベースシステムの第２のノードからメッセージを受信することであって、メッセージが、第２のグループ識別子を含む、受信することと、第２のグループ識別子に対応するデータテーブルのデータ行を決定することと、データ行の第１のグループ識別子を第２のグループ識別子に修正することであって、第１のグループ識別子が、第１のノードが第１のデータ行を修正することができるマスタノードであることを示す、修正することと、更新メッセージを第２のノードに送信することとを含む。
【０００７】
[0007]  いくつかの実施形態では、分散データベースシステムのノードにおけるデータ書き込みのための例示的な装置は、命令セットを格納するメモリと、本開示の実施形態の方法のいずれかを装置に実行させるために命令セットを実行するように構成された１つ又は複数のプロセッサとを含む。
【０００８】
[0008]  いくつかの実施形態では、非一時的な機械可読記憶媒体が提供される。非一時的な機械可読記憶媒体には、命令が格納される。プロセッサによって実行されると、命令は、本開示の実施形態の方法のいずれかを機械に実行させる。
【０００９】
図面の簡単な説明
[0009]  本開示の実施形態の技術的解決法をより明確に示すため、本開示の実施形態の説明において使用される図面を以下で簡単に説明する。一見したところ、以下の説明の図面は、本開示で説明される実施形態の一部のみを示している。
【図面の簡単な説明】
【００１０】
【図１】[0010]本開示のいくつかの実施形態による、データ書き込みのための方法のフローチャートである。
【図２】[0011]本開示のいくつかの実施形態による、データ書き込みのための方法のフローチャートである。
【図３Ａ】[0012]本開示のいくつかの実施形態による、アプリケーションシナリオの概略図である。
【図３Ｂ】[0013]分散データベースのデータ論理アーキテクチャの概略図である。
【図３Ｃ】[0013]分散データベースのデータ論理アーキテクチャの概略図である。
【図３Ｄ】[0013]分散データベースのデータ論理アーキテクチャの概略図である。
【図４】[0014]本開示のいくつかの実施形態による、データ書き込みのための装置の概略図である。
【図５】[0015]本開示のいくつかの実施形態による、分散データベースの例示的なノードを示す概略図である。
【発明を実施するための形態】
【００１１】
詳細な説明
[0016]  本開示で使用される専門用語は、本開示を制限するというよりむしろ、特定の実施形態を説明することのみを目的とする。「a」、「前記（said）」及び「the」の単数形は、本開示及び添付の特許請求の範囲で使用される場合、文脈において明示的に別段の指示がない限り、複数形を含むことも意図する。また、「及び／又は」という用語は、本明細書で使用される場合、１つ又は複数のリストされる関連アイテムを含む可能な組合せのいずれか又はすべてを指すことも理解すべきである。
【００１２】
[0017]  「第１の」、「第２の」、「第３の」などの用語は、様々なタイプの情報を説明するために、本開示の実施形態において使用することができるが、そのような情報は、これらの用語に限定すべきではないことを理解すべきである。これらの用語は、同じタイプの情報片を互いに区別するためだけに使用される。例えば、第１の情報は、本開示の範囲から逸脱することなく、第２の情報と呼ぶこともできる。同様に、第２の情報は、第１の情報と呼ぶこともできる。それは文脈次第である。それに加えて、「〜の場合」という語句は、本明細書で使用される場合、「〜の時」又は、「〜の際」又は「決定に応答して」と解釈することができる。
【００１３】
[0018]  本開示のいくつかの実施形態は、データ書き込みのための方法を提供し、この方法は、分散データベースのいかなるノード（現ノードと呼ばれる）にも適用することができる。図１を参照すると、図１は、方法の例示的なフローチャートであり、方法は、以下のステップを含み得る。
【００１４】
[0019]  ステップ１０１では、第１の書き込み予定のデータが得られる。
【００１５】
[0020]  ステップ１０２では、第１の書き込み予定のデータに対応する第１のグループ識別子が決定される。第１の書き込み予定のデータに対応する第１のグループ識別子を決定することは、これに限定されないが、第１の書き込み予定のデータに対応する第１のデータテーブル及び第１の書き込み予定のデータに対応する第１のデータテーブルの第１のデータ行を決定することを含み得る。第１のデータ行は、第１の書き込み予定のデータに対応するグループ識別子を含み得る。さらに、第１のデータ行のグループ識別子は、第１のグループ識別子として決定することができる。
【００１６】
[0021]  ステップ１０３では、第１のグループ識別子に対応するマスタノードが決定される。第１のグループ識別子に対応するマスタノードの決定は、これに限定されないが、マッピングテーブルからマスタノードを検索することを含み得る。例えば、マッピングテーブルは、第１のグループ識別子に対応するマスタノードを得るために、第１のグループ識別子で検索することができる。
【００１７】
[0022]  例では、マッピングテーブルは、複数のグループ識別子及び対応するマスタノードを含み得る。従って、マッピングテーブルは、グループ識別子とマスタノードとの間の対応を記録することができる。この対応に基づいて、第１の書き込み予定のデータに対応する第１のグループ識別子を得た後、第１のグループ識別子に対応するマスタノードに対して、第１のグループ識別子でマッピングテーブルを検索することができる。
【００１８】
[0023]  ステップ１０４では、マスタノードが現ノード以外の第１のノードである場合は、第２のグループ識別子が決定される。現ノードは、第２のグループ識別子に対応するマスタノードである。第２のグループ識別子は、第１のノードに送信される。第１のノードは、第２のグループ識別子を受信し、第２のグループ識別子又は第１の書き込み予定のデータに対応する第１のグループ識別子を第２のグループ識別子に修正することができる。いくつかの実施形態では、第１のグループ識別子は、データテーブルのデータ行に含まれる。次いで、第１のノードは、更新メッセージを現ノードに送信することができる。更新メッセージは、第１のノードにおいて第１のグループ識別子が第２のグループ識別子に修正されることを示すことができる。
【００１９】
[0024]  第２のグループ識別子を決定することは、これらに限定されないが、マッピングテーブルにおいてグループ識別子を得ることと、グループ識別子に対応するマスタノードが現ノードである場合は、グループ識別子を第２のグループ識別子として決定することとを含み得る。
【００２０】
[0025]  例では、マッピングテーブルは、複数のグループ識別子及び対応するマスタノードを含み得る。従って、マッピングテーブルは、グループ識別子とマスタノードとの間の対応を記録することができる。この対応に基づいて、マッピングテーブルに記録された各グループ識別子に対し、グループ識別子に対応するマスタノードが現ノードである場合は、グループ識別子を第２のグループ識別子として決定することができる。
【００２１】
[0026]  第２のグループ識別子を第１のノードに送信することは、これに限定されないが、通知メッセージを第１のノードに送信することを含み得る。通知メッセージは、第２のグループ識別子を含み得る。また、通知メッセージは、第１の書き込み予定のデータのインデックス情報も含み得る。
【００２２】
[0027]  ここでの通知メッセージは、第１のノードが、インデックス情報に従って第１の書き込み予定のデータに対応する第２のデータ行を決定し、第２のデータ行に記録された第１のグループ識別子を第２のグループ識別子に修正できるようにすることができる。
【００２３】
[0028]  ステップ１０５では、第１のノードによって送信された更新メッセージが受信され、更新メッセージに従って第１の書き込み予定のデータに対応する第１のグループ識別子が第２のグループ識別子に修正される。更新メッセージに従って第１の書き込み予定のデータに対応する第１のグループ識別子を第２のグループ識別子に修正することは、これに限定されないが、更新メッセージが第１の書き込み予定のデータのインデックス情報をさらに含む場合は、インデックス情報に従って、第１の書き込み予定のデータに対応する第１のデータテーブルの第１のデータ行を決定し、次いで、第１のデータ行の第１のグループ識別子を第２のグループ識別子に修正することを含み得る。
【００２４】
[0029]  ステップ１０６では、現ノードは、第１の書き込み予定のデータを書き込む。いくつかの実施形態では、第１の書き込み予定のデータを書き込むことは、更新メッセージに従って第１の書き込み予定のデータに対応する第１のグループ識別子が第２のグループ識別子に修正された後に実行することができる。
【００２５】
[0030]  いくつかの実施形態では、現ノード及び第１のノードは、異なる地域に位置し得る。第１の書き込み予定のデータは、第１のノードが位置する地域から現ノードが位置する地域にユーザが移動した後に送信することができる。
【００２６】
[0031]  例では、データ書き込みのための方法は、以下のステップ（図１には図示せず）をさらに含む。
【００２７】
[0032]  ステップ１０７では、第２の書き込み予定のデータが得られる。第２のデータのインデックス情報及び第１の書き込み予定のデータのインデックス情報は、同じものであっても又は異なるものであってもよい。例として、この２つが同じである事例について説明する。
【００２８】
[0033]  ステップ１０８では、第２の書き込み予定のデータに対応するグループ識別子が決定される。第２の書き込み予定のデータに対応するグループ識別子を決定することは、これに限定されないが、第２の書き込み予定のデータに対応する第２のデータテーブル及び第２のデータテーブルの第２の書き込み予定のデータに対応する第３のデータ行を決定することを含み得る。第３のデータ行は、第２の書き込み予定のデータに対応するグループ識別子を含み得る。さらに、第３のデータ行のグループ識別子は、第２の書き込み予定のデータに対応するグループ識別子として決定することができる。
【００２９】
[0034]  ステップ１０９では、第２の書き込み予定のデータに対応するグループ識別子が第２のグループ識別子とは異なる場合は、第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが決定される。第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを決定することは、これに限定されないが、マッピングテーブルからこのマスタノードを検索することを含み得る。例えば、マッピングテーブルは、第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを得るために、第２の書き込み予定のデータに対応するグループ識別子で検索することができる。例では、マッピングテーブルは、複数のグループ識別子及び対応するマスタノードを含み得る。従って、マッピングテーブルは、グループ識別子とマスタノードとの間の対応を記録することができる。この対応に基づいて、第２の書き込み予定のデータに対応するグループ識別子を得た後、第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを得るために、第２の書き込み予定のデータに対応するグループ識別子でマッピングテーブルを検索することができる。
【００３０】
[0035]  ステップ１１０では、マスタノードが現ノード以外の第３のノードである場合は、第２のグループ識別子が第３のノードに送信される。第３のノードは、第２のグループ識別子を受信し、第２のグループ識別子又は第２の書き込み予定のデータに対応するグループ識別子を第２のグループ識別子に修正することができる。いくつかの実施形態では、第２の書き込み予定のデータに対応するグループ識別子は、データテーブルのデータ行に含まれる。次いで、第３のノードは、更新メッセージを現ノードに送信することができる。更新メッセージは、第３のノードにおいて第２の書き込み予定のデータに対応するグループ識別子が第２のグループ識別子に修正されることを示すことができる。
【００３１】
[0036]  第２のグループ識別子を第３のノードに送信することは、これに限定されないが、通知メッセージを第３のノードに送信することを含み得る。通知メッセージは、第２のグループ識別子を含み得る。また、通知メッセージは、第２の書き込み予定のデータのインデックス情報も含み得る。
【００３２】
[0037]  ここでの通知メッセージは、第３のノードが、インデックス情報に従って第２の書き込み予定のデータに対応するデータ行を決定し、データ行のグループ識別子を第２のグループ識別子に修正できるようにすることができる。
【００３３】
[0038]  ステップ１１１では、第３のノードによって送信された更新メッセージが受信され、更新メッセージに従って第２の書き込み予定のデータに対応するグループ識別子が第２のグループ識別子に修正される。更新メッセージに従って第２の書き込み予定のデータに対応するグループ識別子を第２のグループ識別子に修正することは、これに限定されないが、更新メッセージが第２の書き込み予定のデータのインデックス情報をさらに含む場合は、インデックス情報に従って、第２のデータテーブルの第２の書き込み予定のデータに対応する第３のデータ行を決定し、次いで、第３のデータ行のグループ識別子を第２のグループ識別子に修正することを含み得る。
【００３４】
[0039]  ステップ１１２では、現ノードは、第２の書き込み予定のデータを書き込む。いくつかの実施形態では、第２の書き込み予定のデータを書き込むことは、更新メッセージに従って第２の書き込み予定のデータに対応するグループ識別子が第２のグループ識別子に修正された後に実行することができる。
【００３５】
[0040]  例では、ステップ１０９において第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが決定された後、マスタノードが現ノードである場合は、現ノードは、第２の書き込み予定のデータに対応するグループ識別子を第２のグループ識別子に修正する。さらに、現ノードは、第２の書き込み予定のデータを書き込む。
【００３６】
[0041]  さらに、更新メッセージは、現ノード以外の他のノードに送信することもできる。更新メッセージは、他のノードが、更新メッセージに従って第２の書き込み予定のデータに対応するグループ識別子を第２のグループ識別子に修正できるようにすることができる。
【００３７】
[0042]  例では、ステップ１０８において第２の書き込み予定のデータに対応するグループ識別子が決定された後、第２の書き込み予定のデータに対応するグループ識別子が第２のグループ識別子と同じである場合は、現ノードは、第２の書き込み予定のデータの書き込みを実行するが、前述のステップ１０９〜１１２は実行しない。
【００３８】
[0043]  いくつかの実施形態では、グループ識別子は、これに限定されないが、分散合意プロトコルのグループ識別子を含み得る。
【００３９】
[0044]  本開示において上記で説明されるステップの順序は、制限というよりむしろ、説明の便宜上与えられた単なる例であることが理解されている。実際の適用では、ステップの順序は、変更することができる。対応する方法のステップは、必ずしも、本明細書で示される及び説明される順序で実行されるわけではなく、方法は、本開示で説明されるものより多くの又は少ないステップを含み得る。それに加えて、本明細書で説明される単一のステップは、いくつかの実施形態では、複数のステップに分解することができる。本開示で説明される様々なステップは、いくつかの実施形態では、単一のステップに組み合わせることができる。
【００４０】
[0045]  本開示のいくつかの実施形態では、マルチポイント書き込みをサポートする分散合意プロトコルが提供される。分散合意プロトコルはデータのマルチポイント書き込みをサポートするため、複数の地域を横断するユーザの場合、データは、分散合意プロトコルに基づいて、現地域のノードに書き込むことができる。従って、サービスにおけるユーザ経験を向上させることができる。結果として、分散合意プロトコルは、ユーザの近接書き込み及び動的移動をサポートすることができ、行レベル及びユーザレベルでのマルチポイント書き込みを実現することができる。その上、分散データベースのデータ一貫性を保証することができる。複数の地域にわたって分散されたトランザクションを実施することができ、ユーザ緯度における（at the user latitude）データの横断地域問題を解決することができ、サービスにおける近接書き込みをサポートすることができる。
【００４１】
[0046]  本開示のいくつかの実施形態は、データ書き込みのための方法を提供し、この方法は、分散データベースのいかなるノード（現ノードと呼ばれる）にも適用することができる。図２を参照すると、図２は、方法の例示的なフローチャートであり、方法は、ステップ２０１における、第１の書き込み予定のデータを得ることと、ステップ２０２における、第１の書き込み予定のデータに対応する第１のグループ識別子を決定することと、ステップ２０３における、第１のグループ識別子に対応するマスタノードを決定することとを含み得る。ステップ２０１〜２０３に対しては、ステップ１０１〜１０３を参照することができ、ここでは詳述しない。ステップ２０４では、マスタノードが現ノードである場合は、現ノードは、第１の書き込み予定のデータを書き込む。
【００４２】
[0047]  例では、データ書き込みのための方法は、以下のステップ（図２には図示せず）をさらに含む。
【００４３】
[0048]  ステップ２０５では、第２の書き込み予定のデータが得られる。第２のデータのインデックス情報及び第１の書き込み予定のデータのインデックス情報は、同じものであっても又は異なるものであってもよい。例として、この２つが同じである事例について説明する。
【００４４】
[0049]  ステップ２０６では、第２の書き込み予定のデータに対応するグループ識別子が決定される。第２の書き込み予定のデータに対応するグループ識別子を決定することは、これに限定されないが、第２の書き込み予定のデータに対応する第２のデータテーブル及び第２のデータテーブルの第２の書き込み予定のデータに対応する第３のデータ行を決定することを含み得る。第３のデータ行は、第２の書き込み予定のデータに対応するグループ識別子を含み得る。さらに、第３のデータ行のグループ識別子は、第２の書き込み予定のデータに対応するグループ識別子として決定することができる。
【００４５】
[0050]  ステップ２０７では、第２の書き込み予定のデータに対応するグループ識別子が第１のグループ識別子とは異なる場合は、第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが決定される。第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを決定することは、これに限定されないが、マッピングテーブルからこのマスタノードを検索することを含み得る。例えば、マッピングテーブルは、第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを得るために、第２の書き込み予定のデータに対応するグループ識別子で検索することができる。例では、マッピングテーブルは、複数のグループ識別子及び対応するマスタノードを含み得る。従って、マッピングテーブルは、グループ識別子とマスタノードとの間の対応を記録することができる。この対応に基づいて、第２の書き込み予定のデータに対応するグループ識別子を得た後、第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを得るために、第２の書き込み予定のデータに対応するグループ識別子でマッピングテーブルを検索することができる。
【００４６】
[0051]  ステップ２０８では、マスタノードが現ノード以外の第２のノードである場合は、第１のグループ識別子が第２のノードに送信される。第２のノードは、第１のグループ識別子を受信し、第１のグループ識別子又は第２の書き込み予定のデータに対応するグループ識別子を第１のグループ識別子に修正することができる。いくつかの実施形態では、第２の書き込み予定のデータに対応するグループ識別子は、データテーブルのデータ行に含まれる。次いで、第２のノードは、更新メッセージを現ノードに送信することができる。更新メッセージは、第２のノードにおいて第２の書き込み予定のデータに対応するグループ識別子が第１のグループ識別子に修正されることを示すことができる。
【００４７】
[0052]  第１のグループ識別子を第２のノードに送信することは、これに限定されないが、通知メッセージを第２のノードに送信することを含み得る。通知メッセージは、第１のグループ識別子を含み得る。また、通知メッセージは、第２の書き込み予定のデータのインデックス情報も含み得る。
【００４８】
[0053]  ここでの通知メッセージは、第２のノードが、インデックス情報に従って第２の書き込み予定のデータに対応するデータ行を決定し、データ行のグループ識別子を第１のグループ識別子に修正できるようにすることができる。
【００４９】
[0054]  ステップ２０９では、第２のノードによって送信された更新メッセージが受信され、更新メッセージに従って第２の書き込み予定のデータに対応するグループ識別子が第１のグループ識別子に修正される。更新メッセージに従って第２の書き込み予定のデータに対応するグループ識別子を第１のグループ識別子に修正することは、これに限定されないが、更新メッセージが第２の書き込み予定のデータのインデックス情報をさらに含む場合は、インデックス情報に従って、第２のデータテーブルの第２の書き込み予定のデータに対応する第３のデータ行を決定し、次いで、第３のデータ行のグループ識別子を第１のグループ識別子に修正することを含み得る。
【００５０】
[0055]  ステップ２１０では、現ノードは、第２の書き込み予定のデータを書き込む。いくつかの実施形態では、第２の書き込み予定のデータを書き込むことは、更新メッセージに従って第２の書き込み予定のデータに対応するグループ識別子が第１のグループ識別子に修正された後に実行することができる。
【００５１】
[0056]  例では、ステップ２０７において第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが決定された後、マスタノードが現ノードである場合は、現ノードは、第２の書き込み予定のデータに対応するグループ識別子を第１のグループ識別子に修正する。さらに、現ノードは、第２の書き込み予定のデータを書き込む。
【００５２】
[0057]  さらに、更新メッセージは、現ノード以外の他のノードに送信することもできる。更新メッセージは、他のノードが、更新メッセージに従って第２の書き込み予定のデータに対応するグループ識別子を第１のグループ識別子に修正できるようにすることができる。
【００５３】
[0058]  例では、ステップ２０６において第２の書き込み予定のデータに対応するグループ識別子が決定された後、第２の書き込み予定のデータに対応するグループ識別子が第１のグループ識別子と同じである場合は、現ノードは、第２の書き込み予定のデータの書き込みを実行するが、前述のステップ２０７〜２１０は実行しない。
【００５４】
[0059]  いくつかの実施形態では、グループ識別子は、これに限定されないが、分散合意プロトコルのグループ識別子を含み得る。
【００５５】
[0060]  本開示において上記で説明されるステップの順序は、制限というよりむしろ、説明の便宜上与えられた単なる例であることが理解されている。実際の適用では、ステップの順序は、変更することができる。対応する方法のステップは、必ずしも、本明細書で示される及び説明される順序で実行されるわけではなく、方法は、本開示で説明されるものより多くの又は少ないステップを含み得る。それに加えて、本明細書で説明される単一のステップは、いくつかの実施形態では、複数のステップに分解することができる。本開示で説明される様々なステップは、いくつかの実施形態では、単一のステップに組み合わせることができる。
【００５６】
[0061]  本開示のいくつかの実施形態では、マルチポイント書き込みをサポートする分散合意プロトコルが提供される。分散合意プロトコルはデータのマルチポイント書き込みをサポートするため、複数の地域を横断するユーザの場合、データは、分散合意プロトコルに基づいて、現地域のノードに書き込むことができる。従って、サービスにおけるユーザ経験を向上させることができる。結果として、分散合意プロトコルは、ユーザの近接書き込み及び動的移動をサポートすることができ、行レベル及びユーザレベルでのマルチポイント書き込みを実現することができる。その上、分散データベースのデータ一貫性を保証することができる。複数の地域にわたって分散されたトランザクションを実施することができ、ユーザ緯度におけるデータの横断地域問題を解決することができ、サービスにおける近接書き込みをサポートすることができる。
【００５７】
[0062]  本開示のいくつかの実施形態は、データ書き込みのための別の方法を提供し、この方法は、分散データベースのいかなるノード（現ノードと呼ばれる）にも適用することができる。現ノードは、少なくとも１つのグループに対応し、グループのマスタノードとして機能する。方法は、以下のステップ、すなわち、第１の書き込み予定のデータが得られ、第１の書き込み予定のデータに対応する第１のデータ行が決定されることを含み得る。第１のデータ行は、第１の書き込み予定のデータに対応するグループ識別子を含み得る。
【００５８】
[0063]  次いで、第１のデータ行に含まれるグループ識別子は、第１のデータ行を現ノードに対応するグループと動的に結び付けるために、現ノードに対応するグループのグループ識別子に修正することができる。
【００５９】
[0064]  第１の書き込み予定のデータに対応する第１のデータ行を決定することに関しては、前述のステップ１０２を参照することができ、ここでは詳述しない。第１のデータ行に含まれるグループ識別子を現ノードに対応するグループのグループ識別子に修正することに関しては、前述のステップ１０３〜１０６を参照することができ、ここでは詳述しない。
【００６０】
[0065]  本開示のいくつかの実施形態では、第１のデータ行を現ノードに対応するグループと動的に結び付けることにより、データのマルチポイント書き込みがサポートされる。複数の地域を横断するユーザの場合、データは、分散合意プロトコルに基づいて、現地域のノードに書き込むことができる。サービスにおけるユーザ経験を向上させることができる。分散合意プロトコルは、ユーザの近接書き込み及び動的移動をサポートし、行レベル及びユーザレベルでのマルチポイント書き込みを実現することができる。その上、分散データベースのデータ一貫性を保証することができ、複数の地域にわたって分散されたトランザクションを実現することができる。
【００６１】
[0066]  以下は、具体的なアプリケーションシナリオと組み合わせて、データ書き込みのための方法を説明する。図３Ａを参照すると、本実施形態のアプリケーションシナリオの概略図が示されており、例として、３つのノードを含む分散データベースが示されている。実際の適用では、分散データベースは、より多くのノードを含み得、ノードの数はここでは制限されない。
【００６２】
[0067]  図３Ａに示されるように、ノード３０１は、地域Ａ（例えば、杭州など）に配備することができ、ノード３０２は、地域Ｂ（例えば、上海など）に配備することができ、ノード３０３は、地域Ｃ（例えば、北京など）に配備することができる。
【００６３】
[0068]  この実施形態では、分散データベースは、分散合意プロトコル（Paxosなど）を使用して、マルチコピーデータの一貫性、耐災害性切替及び他の能力を保証することができる。分散合意プロトコルがマルチポイント書き込みをサポートできるようにするため、複数のグループ（分散合意プロトコルグループなど）を設定することができ、各グループは、グループ固有識別子（分散合意プロトコルのグループ識別子など）を有する。説明の便宜上、例えば、分散合意プロトコルがPaxosである事例では、複数のPaxosグループを設定することができ、各Paxosグループは、Paxosグループ固有識別子を有する。
【００６４】
[0069]  例では、Paxosグループの数は、ノードの数に関連し得る。例えば、Paxosグループの数は、ノードの数の正の整数倍である。ノードの数が３であれば、Paxosグループの数は、３、６、９などであり得る。また、Paxosグループの数は、ノードの数とは無関係であってもよい。例えば、Paxosグループの数は、３、４、５、６、７など、いかなる値でもあり得る。Paxosグループの数は、ここでは制限されず、以下の説明では、例として、６つのPaxosグループの事例が取り入れられる。
【００６５】
[0070]  Paxosグループ１のグループ識別子はＡＡであり得、Paxosグループ２のグループ識別子はＢＢであり得、Paxosグループ３のグループ識別子はＣＣであり得、Paxosグループ４のグループ識別子はＤＤであり得、Paxosグループ５のグループ識別子はＥＥであり得、Paxosグループ６のグループ識別子はＦＦであり得る。その上、各ノードは、表１に示されるマッピングテーブルを格納することができ、マッピングテーブルは、グループ識別子とマスタノードとスレーブノードとの間の対応を記録するために使用される。
【００６６】
【表１】
2021535468.tif 000003
【００６７】
[0071]  表１に示されるマッピングテーブルは、経験によって構成することができる。各Paxosグループに対し、Paxosグループは、１つのマスタノード（リーダノードとも呼ばれる）に対応し、残りのノードは、スレーブノード（フォロワノードとも呼ばれる）である。いくつかの実施形態では、表１から分かるように、すべてのPaxosグループに対し、各ノードは、マスタノードである回数が同じであり、各ノードは、スレーブノードである回数が同じである。
【００６８】
[0072]  説明の便利上、図３Ａには、Paxosグループ１、Paxosグループ２及びPaxosグループ３のみが示されており、Paxosグループ４、Paxosグループ５及びPaxosグループ６は、Paxosグループ１、Paxosグループ２及びPaxosグループ３と同様である。図３Ａから分かるように、ノード３０１は、Paxosグループ１のマスタノードであり、Paxosグループ２及びPaxosグループ３のスレーブノードでもある。ノード３０２は、Paxosグループ２のマスタノードであり、Paxosグループ１及びPaxosグループ３のスレーブノードでもある。ノード３０３は、Paxosグループ３のマスタノードであり、Paxosグループ１及びPaxosグループ２のスレーブノードでもある。
【００６９】
[0073]  図３Ｂを参照すると、分散データベースのデータ論理アーキテクチャの概略図が示されている。第１の層は、テーブルファミリを指し、トランザクションが関連付けられるテーブルのセットを表すために使用される。第２の層は、データを格納するためのテーブルを指し、一般データテーブルと呼ぶこともできる。第３の層は、テーブルパーティションを指し、パーティショニングルールに従ってテーブルが複数の物理パーティションに分割されることを意味する。各物理パーティションは、一般データテーブルのデータサブテーブルであり、同じテーブルファミリの下でのすべてのテーブルのパーティションルールは、同じものであり得る。第４の層は、パーティショングループを指し、同じテーブルファミリの下でのすべてのテーブルの同じパーティションを表す。第５の層は、Paxosグループを指し、Paxosパーティションを表す。Paxosパーティション内のデータは、ローカルトランザクションを実施することができる。
【００７０】
[0074]  図３Ｂに示されるように、１つのパーティショングループは、１つのPaxosグループにのみ対応するため、同じパーティショングループのデータ行は、同じノードにのみ書き込むことができる。この事例では、Paxosグループ間でデータを移動する必要がある際、移動は、最小単位としてテーブルパーティショングループでのみ行うことができる。結果として、単一のテーブルパーティションの複数のデータ行は、異なるノードに書き込むことはできない。これを受けて、分散合意プロトコルは、マルチポイント書き込みをサポートすることができなくなる。
【００７１】
[0075]  上記のプロセスは、具体的なアプリケーションシナリオと併せて以下で説明する。テーブルファミリは、一般データテーブルＡ及び一般データテーブルＢを含む。一般データテーブルＡの例は、表２に示されるようなものであり、一般データテーブルＢの例は、表３に示されるようなものである。一般データテーブルＡの大量のコンテンツにより、一般データテーブルＡが占めるスペースを低減するため、一般データテーブルＡは、パーティショニングルール１（ラストネームの頭文字、ラストネームの画数など）に従って、データサブテーブルＡ１とデータサブテーブルＡ２にパーティション分割することができる。表４及び表５を参照すると、例として、２つのデータサブテーブルが示されており、データサブテーブルの数は、２より大きくともよい。一般データテーブルＢの大量のコンテンツにより、一般データテーブルＢが占めるスペースを低減するため、一般データテーブルＢは、パーティショニングルール１に従って、データサブテーブルＢ１とデータサブテーブルＢ２にパーティション分割することができる。表６及び表７を参照すると、例として、２つのデータサブテーブルが示されており、データサブテーブルの数は、２より大きくともよい。
【００７２】
【表２】
2021535468.tif 000004
【００７３】
【表３】
2021535468.tif 000005
【００７４】
【表４】
2021535468.tif 000006
【００７５】
【表５】
2021535468.tif 000007
【００７６】
【表６】
2021535468.tif 000008
【００７７】
【表７】
2021535468.tif 000009
【００７８】
[0076]  さらに、データサブテーブルＡ１、データサブテーブルＡ２、データサブテーブルＢ１及びデータサブテーブルＢ２の場合、データサブテーブルＡ１及びデータサブテーブルＢ１のラストネームの頭文字は「Ｌ」であるため、データサブテーブルＡ１及びデータサブテーブルＢ１は、同じパーティショングループ１に加えることができ、パーティショングループ１は、Paxosグループ１に対応する。Paxosグループ１のマスタノードはノード３０１であるため、データサブテーブルＡ１及びデータサブテーブルＢ１は、ノード３０１に格納され、データサブテーブルＡ１及びデータサブテーブルＢ１のデータ書き込みは、ノード３０１によって実施される。
【００７９】
[0077]  データサブテーブルＡ２及びデータサブテーブルＢ２のラストネームの頭文字は「Ｚ」であるため、データサブテーブルＡ２及びデータサブテーブルＢ２は、同じパーティショングループ２に加えることができ、パーティショングループ２は、Paxosグループ２に対応する。Paxosグループ２のマスタノードはノード３０２であるため、データサブテーブルＡ２及びデータサブテーブルＢ２は、ノード３０２に格納され、データサブテーブルＡ２及びデータサブテーブルＢ２のデータ書き込みは、ノード３０２によって実施される。
【００８０】
[0078]  データサブテーブルＡ１とデータサブテーブルＢ１が同じノード（例えば、ノード３０１）に格納される理由は、「LI Er」のアイデンティティデータ及び消費データはノード３０１に格納されていることから、書き込みトランザクションが「LI Er」のアイデンティティデータ及び消費データを同時に書き込む必要がある場合に、書き込み効率を高めるためにノード３０１によって当該同時の書き込みを実行することができるためである。書き込みトランザクションが「LI Er」のアイデンティティデータ及び消費データを同時に書き込む必要がある際に、「LI Er」のアイデンティティデータがノード３０１に格納されており、「LI Er」の消費データがノード３０２に格納されている場合は、ノード３０１とノード３０２との間の書き込みは複雑になり得、書き込みが失敗することさえあり得る。
【００８１】
[0079]  明らかに、データサブテーブルＡ１及びデータサブテーブルＢ１をパーティショングループ１に加え、パーティショングループ１をPaxosグループ１と結び付けることにより、データサブテーブルＡ１及びデータサブテーブルＢ１のデータ書き込みは、ノード３０１によって実行することができる。データサブテーブルＡ２及びデータサブテーブルＢ２をパーティショングループ２に加え、パーティショングループ２をPaxosグループ２と結び付けることにより、データサブテーブルＡ２及びデータサブテーブルＢ２のデータ書き込みは、ノード３０２によって実行することができる。
【００８２】
[0080]  しかし、図３Ｂの実施形態では、データサブテーブルＡ１及びデータサブテーブルＢ１のすべてのユーザは、同じ地域においてアクセスすることになっており、例えば、「LI Er」及び「LV San」は両者とも、ノード３０１が位置する地域Ａにおいてアクセスする。「LI Er」が地域Ｂに移動した時点で、ノード３０１は、「LI Er」のデータを書き込むことができなくなる。
【００８３】
[0081]  この問題を考慮すると、図３Ｃ又は図３Ｄには、いくつかの実施形態における分散データベースのデータ論理アーキテクチャが示されている。図３Ｃには、テーブルファミリを含めることができる。従って、一般データテーブルＡを複数のデータサブテーブルにパーティション分割するため及び一般データテーブルＢを複数のデータサブテーブルにパーティション分割するため、同じパーティショニングルール（パーティショニングルール１など）を使用することができる。図３Ｄには、テーブルファミリは含まれていない。従って、一般データテーブルＡを複数のデータサブテーブルにパーティション分割するため及び一般データテーブルＢを複数のデータサブテーブルにパーティション分割するため、同じパーティショニングルールを使用しても又は異なるパーティションルールを使用してもよい。例えば、一般データテーブルＡを複数のデータサブテーブルにパーティション分割するため及び一般データテーブルＢを複数のデータサブテーブルにパーティション分割するために、パーティショニングルール１を使用することができる。或いは、一般データテーブルＡを複数のデータサブテーブルにパーティション分割するために、パーティショニングルール１を使用し、一般データテーブルＢを複数のデータサブテーブルにパーティション分割するために、異なるパーティショニングルール２を使用することができる。
【００８４】
[0082]  説明の便宜上、一般データテーブルＡは、パーティショニングルール１を用いて、データサブテーブルＡ１とデータサブテーブルＡ２にパーティション分割され、一般データテーブルＢは、パーティショニングルール１を用いて、データサブテーブルＢ１とデータサブテーブルＢ２にパーティション分割される。表２及び３に示される一般データテーブルＡ及び一般データテーブルＢに対し、データサブテーブルＡ１及びデータサブテーブルＡ２は表８及び表９に示され、データサブテーブルＢ１及びデータサブテーブルＢ２は表１０及び表１１に示されている。
【００８５】
【表８】
2021535468.tif 000010
【００８６】
【表９】
2021535468.tif 000011
【００８７】
【表１０】
2021535468.tif 000012
【００８８】
【表１１】
2021535468.tif 000013
【００８９】
[0083]  さらに、データサブテーブルＡ１、データサブテーブルＡ２、データサブテーブルＢ１及びデータサブテーブルＢ２に対し、データサブテーブルＡ１及びデータサブテーブルＢ１をパーティショングループ１に加える必要も、データサブテーブルＡ２及びデータサブテーブルＢ２をパーティショングループ２に加える必要もない。従って、パーティショングループの特徴は伴わないが、このデータ行が属するPaxosグループ１を示すために、各データ行にグループ識別子が加えられる。
【００９０】
[0084]  例えば、「LI Er」に対応するデータ行がPaxosグループ１に対応するように、データサブテーブルＡ１及びデータサブテーブルＢ１の「LI Er」に対応するデータ行にグループ識別子ＡＡが加えられる。Paxosグループ１のマスタノードはノード３０１であるため、データサブテーブルＡ１及びデータサブテーブルＢ１の「LI Er」に対応するデータ行のデータ書き込みは、ノード３０１によって実行される。「LI Er」のアイデンティティデータと消費データは両方ともノード３０１に格納されているため、書き込みトランザクションが「LI Er」のアイデンティティデータ及び消費データを同時に書き込む必要がある場合は、書き込み効率を高めるためにノード３０１によって実行できることが理解されている。
【００９１】
[0085]  その上、いくつかの実施形態では、データサブテーブルＡ１及びデータサブテーブルＢ１のすべてのユーザが同じ地域においてアクセスする必要があるわけではない。例えば、「LV San」は、ノード３０１が位置する地域Ａにおいてアクセスし、「LI Er」は、地域Ａから地域Ｂに移動する。データサブテーブルＡ１及びデータサブテーブルＢ１の「LI Er」に対応するデータ行は、表１２及び表１３に示されるように、グループ識別子ＡＡからグループ識別子ＢＢに修正することができる。従って、「LI Er」に対応するデータ行は、Paxosグループ２に対応する。Paxosグループ２のマスタノードはノード３０２であるため、データサブテーブルＡ１及びデータサブテーブルＢ１の「LI Er」に対応するデータ行のデータ書き込みは、ノード３０２によって実行される。「LI Er」のアイデンティティデータ及び消費データはノード３０２に格納されているため、書き込みトランザクションが「LI Er」のアイデンティティデータ及び消費データを同時に書き込む必要がある場合は、書き込み効率を高めるため及びユーザ移動を実現するためにノード３０２によって実行できることが理解されている。
【００９２】
【表１２】
2021535468.tif 000014
【００９３】
【表１３】
2021535468.tif 000015
【００９４】
[0086]  要約すると、いくつかの実施形態では、パーティショングループを排除し、Paxosグループのグループ識別子をデータ行に加えることにより、パーティショングループとPaxosグループを分離することができる。こうして、パーティショングループの制限を破棄することができる。従って、１つのパーティショングループのすべてのデータが、同じPaxosグループに対応し、１つのノードしか書き込むことができないという制限を回避することができる。その上、データ行とPaxosグループとを動的に結び付けるために、データ行をPaxosグループに直接結合することができる。
【００９５】
[0087]  いくつかの実施形態では、データサブテーブルのグループ識別子は、ＰＧＩＤ（PaxosグループＩＤ又はPaxosグループ識別子）と呼ぶこともできる。グループ識別子をデータ行に加えることにより、データ行が属するPaxosグループをグループ識別子によって表すことができ、従って、データ行とPaxosグループとを動的に結び付けることを実現することができる。データ行のPaxosグループに対応するマスタノードは、データ行のデータを書き込む。ユーザ移動が起こると、データ行の書き込みノードは、データ行と関連付けられたPaxosグループを修正することによって変更することができ、従って、ユーザ移動を実現する。その上、最小データ単位はデータ行であり、それにより、トラフィックベースの行レベル書き込みが実現される。単一ノードの複数のPaxosグループの分散トランザクションは、トランザクションレベル動的移動方法によって実施される。それは、ユーザ緯度におけるサービスにおける近接アクセスの基盤であり、分散データベース及び関連サービスアーキテクチャへの大きな変化である。それにより、ユーザ緯度におけるデータフロー切替問題を解決することができ、サービスにおける近接書き込みをサポートすることができる。
【００９６】
[0088]  グループ識別子に基づくデータ書き込みのための方法は、いくつかの具体的な実施形態と併せて、以下で説明する。
【００９７】
[0089]  実施形態１：ユーザ「LI Er」が地域Ａにおいてアクセスし、データ書き込み要求１及びデータ書き込み要求２を送信する。データ書き込み要求１は、データサブテーブルＡ１のテーブル名、ユーザ名「ZHANG Er」及びデータＡ１５を含む。データ書き込み要求２は、データサブテーブルＢ１のテーブル名、ユーザ名「ZHANG Er」及びデータＢ１５を含む。
【００９８】
[0090]  ユーザ「LI Er」は地域Ａにおいてアクセスするため、ノード３０１が、データ書き込み要求１を受信し、データ書き込み要求１からデータサブテーブルＡ１のテーブル名、ユーザ名「ZHANG Er」及びデータＡ１５を得ることができる。ノード３０１は、テーブル名に従って、データテーブルが表８に示されるようなデータサブテーブルＡ１であると決定することができる。
【００９９】
[0091]  次いで、インデックスとしてユーザ名「ZHANG Er」を用いて、データ行（例えば、表８の第１行）を得るためにデータサブテーブルＡ１が検索される。データ行に含まれるグループ識別子ＡＡは、データＡ１５に対応するグループ識別子である。
【０１００】
[0092]  次いで、表１に示されるマッピングテーブルがグループ識別子ＡＡで検索され、マスタノードとしてノード３０１が得られる。マスタノードは現ノードである（例えば、ノード３０１は、グループ識別子ＡＡに対応するPaxosグループ１のマスタノードである）ため、データＡ１５の書き込みプロセスは、ノード３０１によって実行される。具体的には、ノード３０１は、表８のデータＡ１１をデータＡ１５に修正し、スレーブノードのデータサブテーブルＡ１のデータＡ１１をデータＡ１５と同期させることができる。スレーブノードのデータサブテーブルＡ１は、マスタノードのデータサブテーブルＡ１と同一であり、そのコンテンツは、マスタノードによって同期される。Paxosグループ１の場合、スレーブノードは、ノード３０２及びノード３０３である。
【０１０１】
[0093]  それに加えて、データ書き込み要求１に対応するグループ識別子はグループ識別子ＡＡであるため、トランザクショングループ識別子もまた、グループ識別子ＡＡとして記録することができ、それにより、現書き込みトランザクションがグループ識別子ＡＡに対する書き込みトランザクションであることが示される。
【０１０２】
[0094]  ユーザ「LI Er」は地域Ａにおいてアクセスするため、ノード３０１が、データ書き込み要求２を受信することができる。データ書き込み要求２とデータ書き込み要求１は異なる書き込みトランザクションであると想定される。この場合、データ書き込み要求２の処理フローは、データ書き込み要求１の処理フローと同様であり、詳細については、本明細書で再度説明することはしない。データ書き込み要求２はデータ書き込み要求１と同じ書き込みトランザクションであると想定される。この場合、データ書き込み要求２の処理は、データ書き込み要求１の処理結果を使用して実行することができる。データ書き込み要求２の処理は、以下で説明されるトランザクショングループ識別子に基づいて実行することができる。
【０１０３】
[0095]  最初に、ノード３０１は、データ書き込み要求２からデータサブテーブルＢ１のテーブル名、ユーザ名「ZHANG Er」及びデータＢ１５を得る。ノード３０１は、テーブル名に従って、データテーブルが表１０に示されるようなデータサブテーブルＢ１であると決定することができる。次いで、インデックスとしてユーザ名「ZHANG Er」を用いて、データ行（例えば、表１０の第１行）を得るためにデータサブテーブルＢ１が検索される。データ行に含まれるグループ識別子は、データＢ１５に対応するグループ識別子である。
【０１０４】
[0096]  さらに、グループ識別子に応じて、以下の事例が存在し得る。
【０１０５】
[0097]  事例１：データ行に含まれるグループ識別子がグループ識別子ＡＡであると想定する。グループ識別子ＡＡはトランザクショングループ識別子（例えば、グループ識別子ＡＡ）と同じであるため、データＢ１５の書き込みプロセスは、ノード３０１によって実行することができる。具体的には、ノード３０１は、表１０のデータＢ１１をデータＢ１５に修正し、スレーブノードのデータサブテーブルＢ１のデータＢ１１をデータＢ１５と同期させることができる。このデータ書き込みプロセスについては、再度説明することはしない。
【０１０６】
[0098]  事例２：データ行に含まれるグループ識別子がグループ識別子ＤＤであると想定する。グループ識別子ＤＤはトランザクショングループ識別子（例えば、グループ識別子ＡＡ）とは異なるため、ノード３０１は、表１に示されるマッピングテーブルをグループ識別子ＤＤで検索し、マスタノードとしてノード３０１を得る。マスタノードは現ノードである（例えば、ノード３０１は、グループ識別子ＤＤに対応するPaxosグループ４のマスタノードである）ため、ノード３０１は、データ行のグループ識別子ＤＤをトランザクショングループ識別子（例えば、グループ識別子ＡＡ）に修正し、Paxosグループ４のスレーブノードに更新メッセージを送信することができる。更新メッセージを受信した後、Paxosグループ４のスレーブノード（例えば、ノード３０２及びノード３０３）は、更新メッセージに従って、データサブテーブルＢ１の対応するデータ行のグループ識別子ＤＤをグループ識別子ＡＡに修正する。
【０１０７】
[0099]  ノード３０１がデータ行のグループ識別子ＤＤをトランザクショングループ識別子（例えば、グループ識別子ＡＡ）に修正した後、データ行に対応するPaxosグループは、Paxosグループ４からPaxosグループ１に切り替えられる。データＢ１５の書き込みプロセスは、ノード３０１によって実行することができる。具体的には、ノード３０１は、表１０のデータＢ１１をデータＢ１５に修正し、スレーブノードのデータサブテーブルＢ１のデータＢ１１をデータＢ１５と同期させることができる。
【０１０８】
[00100]  事例３：データ行に含まれるグループ識別子がグループ識別子ＢＢであると想定する。グループ識別子ＢＢはトランザクショングループ識別子（例えば、グループ識別子ＡＡ）とは異なるため、ノード３０１は、表１に示されるマッピングテーブルをグループ識別子ＢＢで検索し、マスタノードとしてノード３０２を得る。マスタノードは、現ノード３０１ではなく、ノード３０２である（例えば、ノード３０２は、グループ識別子ＢＢに対応するPaxosグループ２のマスタノードである）ため、ノード３０１は、通知メッセージをノード３０２に送信する。通知メッセージは、トランザクショングループ識別子（例えば、グループ識別子ＡＡ）、インデックス情報「ZHANG Er」及びデータサブテーブルＢ１のテーブル名を含み得る。通知メッセージのコンテンツは、本明細書では制限されないことが理解されている。
【０１０９】
[00101]  通知メッセージを受信した後、ノード３０２は、テーブル名に従って、データテーブルがデータサブテーブルＢ１であると決定し、データ行を得るためにインデックスとしてインデックス情報「ZHANG Er」を使用してデータサブテーブルＢ１を検索する。次いで、ノード３０２は、データ行に含まれるグループ識別子ＢＢを通知メッセージのトランザクショングループ識別子（例えば、グループ識別子ＡＡ）に修正する。
【０１１０】
[00102]  データ行のグループ識別子ＢＢをグループ識別子ＡＡに修正した後、ノード３０２は、Paxosグループ２のスレーブノードに更新メッセージを送信する。更新メッセージを受信した後、Paxosグループ２のスレーブノード（例えば、ノード３０１及びノード３０３）は、更新メッセージに従って、データサブテーブルＢ１の対応するデータ行のグループ識別子ＢＢをグループ識別子ＡＡに修正することができる。具体的には、ノード３０１による処理が、例として説明される。更新メッセージは、グループ識別子ＡＡ、インデックス情報「ZHANG Er」及びデータサブテーブルＢ１のテーブル名を含み得る。更新メッセージのコンテンツは、本明細書では制限されないことが理解されている。更新メッセージを受信した後、ノード３０１は、テーブル名に従って、データテーブルがデータサブテーブルＢ１であると決定し、データ行を得るためにインデックスとしてインデックス情報「ZHANG Er」を使用してデータサブテーブルＢ１へのクエリを行う。次いで、ノード３０１は、データ行に含まれるグループ識別子ＢＢを更新メッセージのグループ識別子ＡＡに修正する。
【０１１１】
[00103]  前述の処理の後、ノード３０１によって、データ行のグループ識別子ＢＢがトランザクショングループ識別子（例えば、グループ識別子ＡＡ）に修正される。従って、データ行に対応するPaxosグループは、Paxosグループ２からPaxosグループ１に切り替えることができる。Paxosグループ１のマスタノードはノード３０１であるため、データＢ１５の書き込みプロセスは、ノード３０１によって実行することができる。具体的には、ノード３０１は、表１０のデータＢ１１をデータＢ１５に修正し、スレーブノードのデータサブテーブルＢ１のデータＢ１１をデータＢ１５と同期させることができる。
【０１１２】
[00104]  実施形態２：ユーザ「LI Er」が地域Ｂにおいてアクセスし、データ書き込み要求１及びデータ書き込み要求２を送信する。データ書き込み要求１は、データサブテーブルＡ１のテーブル名、ユーザ名「ZHANG Er」及びデータＡ１５を含む。データ書き込み要求２は、データサブテーブルＢ１のテーブル名、ユーザ名「ZHANG Er」及びデータＢ１５を含む。
【０１１３】
[00105]  ユーザ「LI Er」は、地域Ａから地域Ｂに移動し、地域Ｂにおいてアクセスするため、ノード３０２が、データ書き込み要求１を受信し、データ書き込み要求１からデータサブテーブルＡ１のテーブル名、ユーザ名「ZHANG Er」及びデータＡ１５を得る。ノード３０２は、テーブル名に従って、データテーブルが表８に示されるようなデータサブテーブルＡ１であると決定することができる。
【０１１４】
[00106]  次いで、インデックスとしてユーザ名「ZHANG Er」を用いて、データ行（例えば、表８の第１行）を得るためにデータサブテーブルＡ１が検索される。データ行に含まれるグループ識別子ＡＡは、データＡ１５に対応するグループ識別子である。
【０１１５】
[00107]  次いで、表１に示されるマッピングテーブルがグループ識別子ＡＡで検索され、マスタノードとしてノード３０１が得られる。マスタノードは、ノード３０２ではなく、ノード３０１である（例えば、ノード３０１は、グループ識別子ＡＡに対応するPaxosグループ１のマスタノードである）ため、ノード３０２は、マスタノードがノード３０２である場合のグループ識別子（例えば、グループ識別子ＢＢ）を決定する。
【０１１６】
[00108]  次いで、ノード３０２は、通知メッセージをノード３０１に送信する。通知メッセージは、グループ識別子ＢＢ、インデックス情報「ZHANG Er」及びデータサブテーブルＡ１のテーブル名を含み得る。通知メッセージのコンテンツは、本明細書では制限されないことが理解されている。
【０１１７】
[00109]  さらに、通知メッセージを受信した後、ノード３０１は、テーブル名に従って、データテーブルがデータサブテーブルＡ１であると決定し、データ行を得るためにインデックスとしてインデックス情報「ZHANG Er」を使用してデータサブテーブルＡ１を検索する。ノード３０１は、データ行に含まれるグループ識別子ＡＡを通知メッセージのグループ識別子ＢＢに修正する。
【０１１８】
[00110]  データ行のグループ識別子ＡＡをグループ識別子ＢＢに修正した後、ノード３０１は、Paxosグループ１のスレーブノードに更新メッセージを送信する。更新メッセージを受信した後、Paxosグループ１のスレーブノード（例えば、ノード３０２及びノード３０３）は、更新メッセージに従って、データサブテーブルＡ１の対応するデータ行のグループ識別子ＡＡをグループ識別子ＢＢに修正することができる。具体的には、ノード３０２による処理が、例として説明される。更新メッセージは、グループ識別子ＢＢ、インデックス情報「ZHANG Er」及びデータサブテーブルＡ１のテーブル名を含み得る。更新メッセージのコンテンツは、本明細書では制限されない。更新メッセージを受信した後、ノード３０２は、テーブル名に従って、データテーブルがデータサブテーブルＡ１であると決定し、データ行を得るためにインデックスとしてインデックス情報「ZHANG Er」を使用してデータサブテーブルＡ１を検索する。ノード３０２は、データ行に含まれるグループ識別子ＡＡを更新メッセージのグループ識別子ＢＢに修正する。
【０１１９】
[00111]  前述の処理の後、ノード３０２によって、データ行のグループ識別子ＡＡがグループ識別子ＢＢに修正される。従って、データ行に対応するPaxosグループは、Paxosグループ１からPaxosグループ２に切り替えられる。Paxosグループ２のマスタノードはノード３０２であるため、データＡ１５の書き込みプロセスは、ノード３０２によって実行される。具体的には、ノード３０２は、表８のデータＡ１１をデータＡ１５に修正し、スレーブノード（Paxosグループ２の場合、スレーブノードはノード３０１及びノード３０３である）のデータサブテーブルＡ１のデータＡ１１をデータＡ１５と同期させることができる。
【０１２０】
[00112]  それに加えて、データ書き込み要求１に対応するグループ識別子はグループ識別子ＢＢであるため、トランザクショングループ識別子もまた、グループ識別子ＢＢとして記録することができる。トランザクショングループ識別子は、現書き込みトランザクションがグループ識別子ＢＢに対する書き込みトランザクションであることを示す。
【０１２１】
[00113]  ユーザ「LI Er」は地域Ｂにおいてアクセスするため、ノード３０２が、データ書き込み要求２を受信することができる。データ書き込み要求２及びデータ書き込み要求１は異なる書き込みトランザクションであると想定される。この場合、データ書き込み要求２の処理フローは、データ書き込み要求１の処理フローと同様である。詳細については、本明細書で再度説明することはしない。データ書き込み要求２はデータ書き込み要求１と同じ書き込みトランザクションであると想定される。この場合、データ書き込み要求２の処理は、データ書き込み要求１の処理結果を使用して実行することができる。データ書き込み要求２の処理は、以下で説明されるトランザクショングループ識別子に基づいて実行することができる。
【０１２２】
[00114]  最初に、ノード３０２は、データ書き込み要求２からデータサブテーブルＢ１のテーブル名、ユーザ名「ZHANG Er」及びデータＢ１５を得る。ノード３０２は、テーブル名に従って、データテーブルが表１０に示されるようなデータサブテーブルＢ１であると決定することができる。次いで、インデックスとしてユーザ名「ZHANG Er」を用いて、データ行（例えば、表１０の第１行）を得るためにデータサブテーブルＢ１が検索される。データ行に含まれるグループ識別子は、データＢ１５に対応するグループ識別子である。
【０１２３】
[00115]  さらに、グループ識別子に応じて、以下の事例が存在し得る。
【０１２４】
[00116]  事例１：データ行に含まれるグループ識別子がグループ識別子ＢＢであると想定する。グループ識別子ＢＢはトランザクショングループ識別子（例えば、グループ識別子ＢＢ）と同じであるため、データＢ１５の書き込みプロセスは、ノード３０２によって実行することができる。具体的には、ノード３０２は、表１０のデータＢ１１をデータＢ１５に修正し、スレーブノードのデータサブテーブルＢ１のデータＢ１１をデータＢ１５と同期させることができる。このデータ書き込みプロセスについては、再度説明することはしない。
【０１２５】
[00117]  事例２：データ行に含まれるグループ識別子がグループ識別子ＥＥであると想定する。グループ識別子ＥＥはトランザクショングループ識別子（例えば、グループ識別子ＢＢ）とは異なるため、ノード３０２は、表１に示されるマッピングテーブルをグループ識別子ＥＥで検索し、マスタノードとしてノード３０２を得る。マスタノードは現ノードであるため、ノード３０２は、データ行のグループ識別子ＥＥをトランザクショングループ識別子（例えば、グループ識別子ＢＢ）に修正し、Paxosグループ５のスレーブノードに更新メッセージを送信することができる。更新メッセージを受信した後、Paxosグループ５のスレーブノードは、更新メッセージに従って、データサブテーブルＢ１の対応するデータ行のグループ識別子ＥＥをグループ識別子ＢＢに修正する。
【０１２６】
[00118]  ノード３０２がデータ行のグループ識別子ＥＥをトランザクショングループ識別子（例えば、グループ識別子ＢＢ）に修正した後、データ行に対応するPaxosグループは、Paxosグループ５からPaxosグループ２に切り替えられる。データＢ１５の書き込みプロセスは、ノード３０２によって実行することができる。具体的には、ノード３０２は、表１０のデータＢ１１をデータＢ１５に修正し、スレーブノードのデータサブテーブルＢ１のデータＢ１１をデータＢ１５と同期させることができる。
【０１２７】
[00119]  事例３：データ行に含まれるグループ識別子がグループ識別子ＡＡであると想定する。グループ識別子ＡＡはトランザクショングループ識別子（例えば、グループ識別子ＢＢ）とは異なるため、ノード３０２は、表１に示されるマッピングテーブルをグループ識別子ＡＡで検索し、マスタノードとしてノード３０１を得る。マスタノードは、現ノード３０２ではなく、ノード３０１であるため、ノード３０２は、通知メッセージをノード３０１に送信する。通知メッセージは、トランザクショングループ識別子（例えば、グループ識別子ＢＢ）、インデックス情報「ZHANG Er」及びデータサブテーブルＢ１のテーブル名を含み得る。通知メッセージのコンテンツは、本明細書では制限されないことが理解されている。
【０１２８】
[00120]  通知メッセージを受信した後、ノード３０１は、テーブル名に従って、データテーブルがデータサブテーブルＢ１であると決定し、データ行を得るためにインデックスとしてインデックス情報「ZHANG Er」を使用してデータサブテーブルＢ１を検索する。次いで、ノード３０１は、データ行に含まれるグループ識別子ＡＡを通知メッセージのトランザクショングループ識別子（例えば、グループ識別子ＢＢ）に修正する。
【０１２９】
[00121]  データ行のグループ識別子ＡＡをグループ識別子ＢＢに修正した後、ノード３０１は、Paxosグループ１のスレーブノードに更新メッセージを送信する。更新メッセージを受信した後、Paxosグループ１のスレーブノード（例えば、ノード３０２及びノード３０３）は、更新メッセージに従って、データサブテーブルＢ１の対応するデータ行のグループ識別子ＡＡをグループ識別子ＢＢに修正することができる。前述の処理の後、ノード３０２によって、データ行のグループ識別子ＡＡがトランザクショングループ識別子（例えば、グループ識別子ＢＢ）に修正される。データ行に対応するPaxosグループは、Paxosグループ１からPaxosグループ２に切り替えられる。Paxosグループ２のマスタノードはノード３０２であるため、データＢ１５の書き込みプロセスは、ノード３０２によって実行することができる。具体的には、ノード３０２は、表１０のデータＢ１１をデータＢ１５に修正し、スレーブノードのデータサブテーブルＢ１のデータＢ１１をデータＢ１５と同期させることができる。
【０１３０】
[00122]  本開示のいくつかの実施形態では、データ書き込みのための装置がさらに提供される。図４は、データ書き込みのための例示的な装置の概略図である。
【０１３１】
[00123]  装置は、取得モジュール４０１、決定モジュール４０２及び処理モジュール４０４を含み得る。取得モジュール４０１は、第１の書き込み予定のデータを得ることができる。決定モジュール４０２は、第１の書き込み予定のデータに対応する第１のグループ識別子を決定し、第１のグループ識別子に対応するマスタノードを決定することができる。処理モジュール４０４は、マスタノードが現ノードである場合は、第１の書き込み予定のデータを書き込むことができる。いくつかの実施形態では、装置は、現ノードであり得る。別の実施形態では、装置は、現ノードに位置し得る。
【０１３２】
[00124]  決定モジュール４０２は、マスタノードが現ノード以外の第１のノードである場合は、第２のグループ識別子をさらに決定することができる。第２のグループ識別子に対応するマスタノードは、現ノードである。装置は、第２のグループ識別子を第１のノードに送信することができる送信モジュール４０３を含み得る。第１のノードは、第１の書き込み予定のデータに対応する第１のグループ識別子を第２のグループ識別子に修正し、更新メッセージを装置に送信することができる。処理モジュール４０４は、第１のノードによって送信された更新メッセージを受信し、更新メッセージに従って第１の書き込み予定のデータに対応する第１のグループ識別子を第２のグループ識別子に修正し、第１の書き込み予定のデータを書き込むことができる。
【０１３３】
[00125]  例では、第１の書き込み予定のデータに対応する第１のグループ識別子を決定する際、決定モジュール４０２は、具体的には、第１の書き込み予定のデータに対応する第１のデータテーブル及び第１の書き込み予定のデータに対応する第１のデータテーブルの第１のデータ行を決定する。第１のデータ行は、第１の書き込み予定のデータに対応するグループ識別子を含み得る。決定モジュール４０２は、第１のデータ行のグループ識別子を第１のグループ識別子として決定することができる。
【０１３４】
[00126]  例では、第１のグループ識別子に対応するマスタノードが現ノードである場合は、取得モジュール４０１は、第２の書き込み予定のデータを得ることができる。いくつかの実施形態では、第２の書き込み予定のデータのインデックス情報は、第１の書き込み予定のデータのインデックス情報と同じである。決定モジュール４０２は、第２の書き込み予定のデータに対応するグループ識別子を決定し、第２の書き込み予定のデータに対応するグループ識別子が第１のグループ識別子とは異なる場合は、第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードをさらに決定することができる。送信モジュール４０３は、第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが現ノード以外の第２のノードである場合は、第１のグループ識別子を第２のノードに送信することができる。第２のノードは、第１のグループ識別子を受信し、第１のグループ識別子又は第２の書き込み予定のデータに対応するグループ識別子を第１のグループ識別子に修正することができる。次いで、第２のノードは、更新メッセージを現ノードに送信することができる。処理モジュール４０４は、第２のノードによって送信された更新メッセージを受信し、更新メッセージに従って第２の書き込み予定のデータに対応するグループ識別子を第１のグループ識別子に修正し、第２の書き込み予定のデータを書き込むことができる。
【０１３５】
[00127]  第１のグループ識別子に対応するマスタノードが現ノード以外の第１のノードである場合は、取得モジュール４０１は、第２の書き込み予定のデータを得ることができる。いくつかの実施形態では、第２の書き込み予定のデータのインデックス情報は、第１の書き込み予定のデータのインデックス情報と同じである。決定モジュール４０２は、第２の書き込み予定のデータに対応するグループ識別子を決定し、第２の書き込み予定のデータに対応するグループ識別子が第２のグループ識別子とは異なる場合は、第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードをさらに決定することができる。第２の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが現ノード以外の第３のノードである場合は、送信モジュール４０３は、第２のグループ識別子を第３のノードに送信することができる。第３のノードは、第２のグループ識別子を受信し、第２のグループ識別子又は第２の書き込み予定のデータに対応するグループ識別子を第２のグループ識別子に修正することができる。次いで、第３のノードは、更新メッセージを現ノードに送信することができる。処理モジュール４０４は、第３のノードによって送信された更新メッセージを受信し、更新メッセージに従って第２の書き込み予定のデータに対応するグループ識別子を第２のグループ識別子に修正し、第２の書き込み予定のデータを書き込むことができる。
【０１３６】
[00128]  図５は、本開示のいくつかの実施形態による、分散データベース５００の例示的なノード５１０を示す概略図である。いくつかの実施形態では、本開示のデータ書き込みのための方法、装置又はデバイスは、例示的なノード５１０又は分散データベース５００によって実施することができる。
【０１３７】
[00129]  図５によれば、ノード５１０は、バス５１２又は情報を伝達するための他の通信メカニズムと、情報を処理するためにバス５１２と通信可能に結合された１つ又は複数のプロセッサ５１６とを含む。プロセッサ５１６は、例えば、１つ又は複数のマイクロプロセッサであり得る。
【０１３８】
[00130]  ノード５１０は、ネットワーク５２２を通じて、別のノード５３０にデータを送信するか又は別のノード５３０と通信することができる。ネットワーク５２２は、ローカルネットワーク、インターネットサービスプロバイダ、インターネット又はそれらの任意の組合せであり得る。ノード５１０の通信インタフェース５１８は、ネットワーク５２２に接続される。それに加えて、ノード５１０は、バス５１２を介して、周辺デバイス５４０に結合することができ、周辺デバイス５４０は、ディスプレイ（例えば、ブラウン管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）、タッチスクリーンなど）及び入力デバイス（例えば、キーボード、マウス、ソフトキーパッドなど）を含む。
【０１３９】
[00131]  ノード５１０は、カスタマイズされた配線ロジック、１つ若しくは複数のＡＳＩＣ若しくはＦＰＧＡ、ファームウェア又はプログラムロジックを使用して実施することができ、それらをノードと組み合わせることにより、ノード５１０が専用マシンになるようにする。
【０１４０】
[00132]  ノード５１０は、記憶装置５１４をさらに含み、記憶装置５１４は、メモリ５６１及び物理的記憶装置５６４（例えば、ハードドライブ、ソリッドステートドライブなど）を含み得る。メモリ５６１は、ランダムアクセスメモリ（ＲＡＭ）５６２及び読み取り専用メモリ（ＲＯＭ）５６３を含み得る。記憶装置５１４は、バス５１２を介して、プロセッサ５１６と通信可能に結合することができる。記憶装置５１４は、メインメモリを含み得、メインメモリは、プロセッサ５１６によって実行される命令の実行の間に変数又は他の中間情報を一時的に格納するために使用することができる。そのような命令は、プロセッサ５１６がアクセス可能な非一時的な記憶媒体に格納された後、ノード５１０を、命令において指定される動作を実行するようにカスタマイズされた専用マシンにする。「非一時的な媒体」という用語は、本明細書で使用される場合、特定の様式でマシンを動作させるデータ又は命令を格納する任意の非一時的な媒体を指す。そのような非一時的な媒体は、不揮発性媒体及び／又は揮発性媒体を含み得る。非一時的な媒体は、例えば、光又は磁気ディスク、ダイナミックメモリ、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、又は他の任意の磁気データ記憶媒体、ＣＤ−ＲＯＭ、他の任意の光データ記憶媒体、孔パターンを有する任意の物理的な媒体、ＲＡＭ、ＰＲＯＭ及びＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、ＮＶＲＡＭ、フラッシュメモリ、レジスタ、キャッシュ、他の任意のメモリチップ又はカートリッジ、並びに、それらのネットワーク接続バージョンを含む。
【０１４１】
[00133]  媒体の様々な形態は、実行のために１つ又は複数の命令の１つ又は複数のシーケンスをプロセッサ５１６に運ぶことに関与し得る。例えば、命令は、最初に、リモートコンピュータの磁気ディスク又はソリッドステートドライブ上で実行することができる。リモートコンピュータは、そのダイナミックメモリに命令をロードし、モデムを使用して電話回線上で命令を送信することができる。ノード５１０にローカル設置されたモデムは、電話回線上でデータを受信し、赤外線送信機を使用してデータを赤外線信号に変換することができる。赤外線検出器は、赤外線信号で運ばれたデータを受信し、適切な回路は、データをバス５１２に送ることができる。バス５１２は、記憶装置５１４内のメインメモリにデータを運び、そこから、プロセッサ５１６は、命令を検索して実行する。
【０１４２】
[00134]  本開示のいくつかの実施形態では、データ書き込みのためのデバイスが提供される。いくつかの実施形態では、デバイスは、分散データベースのノード（例えば、現ノード）であり得る。別の実施形態では、デバイスは、分散データベースのノード（例えば、現ノード）に含めることができる。デバイスは、プロセッサ及び非一時的な機械可読記憶媒体を含む。非一時的な機械可読記憶媒体は、複数の命令を格納する。プロセッサによって実行されると、命令は、本開示の実施形態のいかなる方法をもデバイスに実行させる。例えば、プロセッサによって実行されると、命令は、第１の書き込み予定のデータを得ることと、第１の書き込み予定のデータに対応する第１のグループ識別子及び第１のグループ識別子に対応するマスタノードを決定することと、マスタノードが現ノードである場合は、第１の書き込み予定のデータを書き込むこととを含む方法をデバイスに実行させる。また、方法は、マスタノードが現ノード以外の第１のノードである場合は、第２のグループ識別子を決定することであって、第２のグループ識別子に対応するマスタノードが、現ノードである、決定することと、第２のグループ識別子を第１のノードに送信することと、第１のノードによって送信された更新メッセージを受信することであって、更新メッセージが、第１のノードにおいて第１の書き込み予定のデータに対応する第１のグループ識別子が第２のグループ識別子に修正されることを示す、受信することと、更新メッセージに従って第１の書き込み予定のデータに対応する第１のグループ識別子を第２のグループ識別子に修正することと、第１の書き込み予定のデータを書き込むこととも含み得る。
【０１４３】
[00135]  本開示のいくつかの実施形態では、非一時的な機械可読記憶媒体がさらに提供される。非一時的な機械可読記憶媒体は、複数の命令を格納する。プロセッサによって実行されると、命令は、本開示の実施形態のいかなる方法をも機械に実行させる。例えば、プロセッサによって実行されると、命令は、第１の書き込み予定のデータを得ることと、第１の書き込み予定のデータに対応する第１のグループ識別子及び第１のグループ識別子に対応するマスタノードを決定することと、マスタノードが現ノードである場合は、第１の書き込み予定のデータを書き込むこととを含む方法をマシンに実行させる。また、方法は、マスタノードが現ノード以外の第１のノードである場合は、第２のグループ識別子を決定することであって、第２のグループ識別子に対応するマスタノードが、現ノードである、決定することと、第２のグループ識別子を第１のノードに送信することと、第１のノードによって送信された更新メッセージを受信することであって、更新メッセージが、第１のノードにおいて第１の書き込み予定のデータに対応する第１のグループ識別子が第２のグループ識別子に修正されることを示す、受信することと、更新メッセージに従って第１の書き込み予定のデータに対応する第１のグループ識別子を第２のグループ識別子に修正することと、第１の書き込み予定のデータを書き込むこととも含み得る。
【０１４４】
[00136]  本開示のいくつかの実施形態では、データ書き込みのための装置が提供される。いくつかの実施形態では、装置は、分散データベースのノードであり得る。別の実施形態では、装置は、分散データベースのノードに含めることができる。ノードは、少なくとも１つのグループに対応し、グループのマスタノードである。装置は、第１の書き込み予定のデータを得るための取得モジュールと、第１の書き込み予定のデータに対応する第１のデータ行を決定するための決定モジュールと、処理モジュールとを含み得る。第１のデータ行は、第１の書き込み予定のデータに対応するグループ識別子を含む。処理モジュールは、第１のデータ行をノードに対応するグループと動的に結び付けるために、第１のデータ行に含まれるグループ識別子をノードに対応するグループのグループ識別子に修正することができる。
【０１４５】
[00137]  実施形態において示されるシステム、装置、デバイス、モジュール又はユニットは、具体的には、コンピュータチップ若しくはエンティティによって又はある機能を有する製品によって実施することができる。典型的な実施デバイスは、コンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラフォン、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、Ｅメールトランシーバデバイス、ゲームコンソール、タブレットコンピュータ、着用可能デバイス又はこれらのデバイスの任意の組合せの特定の形態であり得る。
【０１４６】
[00138]  説明の便利上、上記で説明されるデバイス及び装置は、機能別にパーティション分割された様々なユニットとして別々に説明される。当然ながら、様々なユニットの機能は、本開示の実施形態におけるソフトウェア及び／又はハードウェアの同じ又は複数の断片において実施することができる。
【０１４７】
[00139]  当業者は、方法、システム又はコンピュータプログラム製品として本開示の実施形態を提供できることを理解すべきである。それに従って、本開示は、完全なハードウェア実施形態、完全なソフトウェア実施形態、又は、ソフトウェアとハードウェアを組み合わせたいくつかの実施形態の形態を取ることができる。その上、本開示の実施形態は、コンピュータ使用可能プログラムコードを含む１つ又は複数のコンピュータ使用可能記憶媒体（これらに限定されないが、ディスクメモリ、ＣＤ−ＲＯＭ、光メモリなどを含む）上で実施されるコンピュータプログラム製品の形態を取ることができる。
【０１４８】
[00140]  本開示は、本開示の実施形態による方法、デバイス（システム）及びコンピュータプログラム製品のフローチャート及び／又はブロック図を参照して説明される。フローチャート及び／又はブロック図の各プロセス及び／又はブロック、並びに、フローチャート及び／又はブロック図のプロセス及び／又はブロックの組合せは、コンピュータプログラム命令によって実施できることを理解すべきである。これらのコンピュータプログラム命令は、マシンを生成するために、コンピュータのプロセッサ、埋め込みプロセッサ又は他のプログラム可能なデータ処理デバイスのプロセッサに提供することができ、その結果、コンピュータ又は他のプログラム可能なデータ処理デバイスのプロセッサによって実行される命令によって、フローチャートの１つ若しくは複数のプロセス及び／又はブロック図の１つ若しくは複数のブロックにおいて指定される機能を実施するための装置を生成することができる。
【０１４９】
[00141]  また、これらのコンピュータプログラム命令は、特定の様式で機能するように、コンピュータ又は他のプログラム可能なデータ処理デバイスに指示することができるコンピュータ可読メモリに格納することもでき、その結果、コンピュータ可読メモリに格納された命令は、フローチャートの１つ若しくは複数のプロセス及び／又はブロック図の１つ若しくは複数のブロックにおいて指定される機能を実施する命令手段を含む製造品を生成する。
【０１５０】
[00142]  また、これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理デバイスにロードすることもでき、その結果、一連の動作ステップがコンピュータ又は他のプログラム可能デバイス上で実行され、コンピュータ実施処理が生み出される。従って、コンピュータ又は他のプログラム可能デバイス上で実行される命令は、フローチャートの１つ若しくは複数のプロセス及び／又はブロック図の１つ若しくは複数のブロックにおいて指定される機能を実施するためのステップを提供する。
【０１５１】
[00143]  上記の説明は、本開示の単なる実施形態であり、本開示を制限することを意図しない。当業者であれば、本開示への様々な変更及び変化をもたらすことができる。本開示の精神及び原理内で行われるいかなる変更、均等な代用、改善なども、本開示の添付の特許請求の範囲内に含まれることが意図される。
【図１】
2021535468.tif 000016
【図２】
2021535468.tif 000017
【図３Ａ】
2021535468.tif 000018
【図３Ｂ】
2021535468.tif 000019
【図３Ｃ】
2021535468.tif 000020
【図３Ｄ】
2021535468.tif 000021
【図４】
2021535468.tif 000022
【図５】
2021535468.tif 000023
【国際調査報告】
2021535468.tif 000024
2021535468.tif 000025
2021535468.tif 000026