JP7371087B2 - データ書き込みのための方法及び装置 - Google Patents

データ書き込みのための方法及び装置 Download PDF

Info

Publication number
JP7371087B2
JP7371087B2 JP2021507465A JP2021507465A JP7371087B2 JP 7371087 B2 JP7371087 B2 JP 7371087B2 JP 2021507465 A JP2021507465 A JP 2021507465A JP 2021507465 A JP2021507465 A JP 2021507465A JP 7371087 B2 JP7371087 B2 JP 7371087B2
Authority
JP
Japan
Prior art keywords
group identifier
data
node
write
group
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
JP2021507465A
Other languages
English (en)
Other versions
JP2021535468A (ja
JPWO2020046916A5 (ja
Inventor
チャン,インチャン
ヘ,デンチェン
Original Assignee
アリババ グループ ホウルディング リミテッド
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 アリババ グループ ホウルディング リミテッド filed Critical アリババ グループ ホウルディング リミテッド
Publication of JP2021535468A publication Critical patent/JP2021535468A/ja
Publication of JPWO2020046916A5 publication Critical patent/JPWO2020046916A5/ja
Application granted granted Critical
Publication of JP7371087B2 publication Critical patent/JP7371087B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1044Group management mechanisms 
    • H04L67/1051Group master selection mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

関連出願の相互参照
[0001] 本開示は、2018年8月29日に出願された中国特許出願第201810994734.4号の優先権の利益を主張し、同特許出願は、その全体が参照により本明細書に組み込まれる。
技術分野
[0002] 本開示は、データベースの技術分野に関し、具体的には、データ書き込みのための方法及び装置に関する。
背景
[0003] 分散合意プロトコル(Paxosなど)は、分散データベースのコア構成要素である。分散合意プロトコルは、分散データベースのマルチコピーデータの一貫性、耐災害性切替及び他の能力を保証するために使用され、それらの性能は、分散データベース全体の性能に影響を及ぼす。現在、分散合意プロトコルは、シングルポイント書き込みのみをサポートし、マルチポイント書き込みはサポートしない。例えば、分散データベースは、地域Aに位置するノードA及び地域Bに位置するノードBを含む。Paxosグループ1のマスタノードはノードAであり、Paxosグループ1のスレーブノードはノードBである。ユーザ1が地域Aに位置する際、ユーザ1は、Paxosグループ1に加えることができる。ユーザ1が地域AにおいてデータXを書き込むことを要求すると、データXは、ノードAに送信される。ノードAはPaxosグループ1のマスタノードであるため、データXは、その地域で書き込み、ノードBと同期させることができる。ユーザ1が地域Bに移動し、データYを書き込むことを要求すると、データYは、ノードBに送信される。ノードBはPaxosグループ1のスレーブノードであるため、データYは、その地域で書き込むことはできず、データYの書き込み失敗が生じる。
[0004] 分散データベース技術の急速な発展により、国際的に複数の地域にわたって配備される分散データベースの人気が高まり、データのマルチポイント書き込みに対する共通のニーズが高まった。分散合意プロトコルはデータのマルチポイント書き込みをサポートしないため、複数の地域を横断するユーザは、分散合意プロトコルに基づいて、現地域のノードにデータを書き込むことができず、したがってサービスにおける貧弱なユーザ経験をもたらす。
概要
[0005] 本出願の実施形態は、データ書き込みのための方法及び装置を提供する。いくつかの実施形態では、分散データベースシステムのノードによって実施されるデータ書き込みのための例示的な方法は、第1の書き込み予定のデータを得ることと、第1の書き込み予定のデータに対応する第1のグループ識別子を決定することと、第1のグループ識別子に対応するマスタノードを決定することと、マスタノードがノードである場合は、第1の書き込み予定のデータを書き込むこととを含む。
[0006] いくつかの実施形態では、分散データベースシステムの第1のノードによって実施されるデータ書き込みのための例示的な方法は、分散データベースシステムの第2のノードからメッセージを受信することであって、メッセージが、第2のグループ識別子を含む、受信することと、第2のグループ識別子に対応するデータテーブルのデータ行を決定することと、データ行の第1のグループ識別子を第2のグループ識別子に修正することであって、第1のグループ識別子が、第1のノードが第1のデータ行を修正することができるマスタノードであることを示す、修正することと、更新メッセージを第2のノードに送信することとを含む。
[0007] いくつかの実施形態では、分散データベースシステムのノードにおけるデータ書き込みのための例示的な装置は、命令セットを格納するメモリと、本開示の実施形態の方法のいずれかを装置に実行させるために命令セットを実行するように構成された1つ又は複数のプロセッサとを含む。
[0008] いくつかの実施形態では、非一時的な機械可読記憶媒体が提供される。非一時的な機械可読記憶媒体には、命令が格納される。プロセッサによって実行されると、命令は、本開示の実施形態の方法のいずれかを機械に実行させる。
図面の簡単な説明
[0009] 本開示の実施形態の技術的解決法をより明確に示すため、本開示の実施形態の説明において使用される図面を以下で簡単に説明する。一見したところ、以下の説明の図面は、本開示で説明される実施形態の一部のみを示している。
[0010]本開示のいくつかの実施形態による、データ書き込みのための方法のフローチャートである。 [0011]本開示のいくつかの実施形態による、データ書き込みのための方法のフローチャートである。 [0012]本開示のいくつかの実施形態による、アプリケーションシナリオの概略図である。 [0013]分散データベースのデータ論理アーキテクチャの概略図である。 [0013]分散データベースのデータ論理アーキテクチャの概略図である。 [0013]分散データベースのデータ論理アーキテクチャの概略図である。 [0014]本開示のいくつかの実施形態による、データ書き込みのための装置の概略図である。 [0015]本開示のいくつかの実施形態による、分散データベースの例示的なノードを示す概略図である。
詳細な説明
[0016] 本開示で使用される専門用語は、本開示を制限するというよりむしろ、特定の実施形態を説明することのみを目的とする。「a」、「前記(said)」及び「the」の単数形は、本開示及び添付の特許請求の範囲で使用される場合、文脈において明示的に別段の指示がない限り、複数形を含むことも意図する。また、「及び/又は」という用語は、本明細書で使用される場合、1つ又は複数のリストされる関連アイテムを含む可能な組合せのいずれか又はすべてを指すことも理解すべきである。
[0017] 「第1の」、「第2の」、「第3の」などの用語は、様々なタイプの情報を説明するために、本開示の実施形態において使用することができるが、そのような情報は、これらの用語に限定すべきではないことを理解すべきである。これらの用語は、同じタイプの情報片を互いに区別するためだけに使用される。例えば、第1の情報は、本開示の範囲から逸脱することなく、第2の情報と呼ぶこともできる。同様に、第2の情報は、第1の情報と呼ぶこともできる。それは文脈次第である。それに加えて、「~の場合」という語句は、本明細書で使用される場合、「~の時」又は、「~の際」又は「決定に応答して」と解釈することができる。
[0018] 本開示のいくつかの実施形態は、データ書き込みのための方法を提供し、この方法は、分散データベースのいかなるノード(現ノードと呼ばれる)にも適用することができる。図1を参照すると、図1は、方法の例示的なフローチャートであり、方法は、以下のステップを含み得る。
[0019] ステップ101では、第1の書き込み予定のデータが得られる。
[0020] ステップ102では、第1の書き込み予定のデータに対応する第1のグループ識別子が決定される。第1の書き込み予定のデータに対応する第1のグループ識別子を決定することは、これに限定されないが、第1の書き込み予定のデータに対応する第1のデータテーブル及び第1の書き込み予定のデータに対応する第1のデータテーブルの第1のデータ行を決定することを含み得る。第1のデータ行は、第1の書き込み予定のデータに対応するグループ識別子を含み得る。さらに、第1のデータ行のグループ識別子は、第1のグループ識別子として決定することができる。
[0021] ステップ103では、第1のグループ識別子に対応するマスタノードが決定される。第1のグループ識別子に対応するマスタノードの決定は、これに限定されないが、マッピングテーブルからマスタノードを検索することを含み得る。例えば、マッピングテーブルは、第1のグループ識別子に対応するマスタノードを得るために、第1のグループ識別子で検索することができる。
[0022] 例では、マッピングテーブルは、複数のグループ識別子及び対応するマスタノードを含み得る。従って、マッピングテーブルは、グループ識別子とマスタノードとの間の対応を記録することができる。この対応に基づいて、第1の書き込み予定のデータに対応する第1のグループ識別子を得た後、第1のグループ識別子に対応するマスタノードに対して、第1のグループ識別子でマッピングテーブルを検索することができる。
[0023] ステップ104では、マスタノードが現ノード以外の第1のノードである場合は、第2のグループ識別子が決定される。現ノードは、第2のグループ識別子に対応するマスタノードである。第2のグループ識別子は、第1のノードに送信される。第1のノードは、第2のグループ識別子を受信し、第2のグループ識別子又は第1の書き込み予定のデータに対応する第1のグループ識別子を第2のグループ識別子に修正することができる。いくつかの実施形態では、第1のグループ識別子は、データテーブルのデータ行に含まれる。次いで、第1のノードは、更新メッセージを現ノードに送信することができる。更新メッセージは、第1のノードにおいて第1のグループ識別子が第2のグループ識別子に修正されることを示すことができる。
[0024] 第2のグループ識別子を決定することは、これらに限定されないが、マッピングテーブルにおいてグループ識別子を得ることと、グループ識別子に対応するマスタノードが現ノードである場合は、グループ識別子を第2のグループ識別子として決定することとを含み得る。
[0025] 例では、マッピングテーブルは、複数のグループ識別子及び対応するマスタノードを含み得る。従って、マッピングテーブルは、グループ識別子とマスタノードとの間の対応を記録することができる。この対応に基づいて、マッピングテーブルに記録された各グループ識別子に対し、グループ識別子に対応するマスタノードが現ノードである場合は、グループ識別子を第2のグループ識別子として決定することができる。
[0026] 第2のグループ識別子を第1のノードに送信することは、これに限定されないが、通知メッセージを第1のノードに送信することを含み得る。通知メッセージは、第2のグループ識別子を含み得る。また、通知メッセージは、第1の書き込み予定のデータのインデックス情報も含み得る。
[0027] ここでの通知メッセージは、第1のノードが、インデックス情報に従って第1の書き込み予定のデータに対応する第2のデータ行を決定し、第2のデータ行に記録された第1のグループ識別子を第2のグループ識別子に修正できるようにすることができる。
[0028] ステップ105では、第1のノードによって送信された更新メッセージが受信され、更新メッセージに従って第1の書き込み予定のデータに対応する第1のグループ識別子が第2のグループ識別子に修正される。更新メッセージに従って第1の書き込み予定のデータに対応する第1のグループ識別子を第2のグループ識別子に修正することは、これに限定されないが、更新メッセージが第1の書き込み予定のデータのインデックス情報をさらに含む場合は、インデックス情報に従って、第1の書き込み予定のデータに対応する第1のデータテーブルの第1のデータ行を決定し、次いで、第1のデータ行の第1のグループ識別子を第2のグループ識別子に修正することを含み得る。
[0029] ステップ106では、現ノードは、第1の書き込み予定のデータを書き込む。いくつかの実施形態では、第1の書き込み予定のデータを書き込むことは、更新メッセージに従って第1の書き込み予定のデータに対応する第1のグループ識別子が第2のグループ識別子に修正された後に実行することができる。
[0030] いくつかの実施形態では、現ノード及び第1のノードは、異なる地域に位置し得る。第1の書き込み予定のデータは、第1のノードが位置する地域から現ノードが位置する地域にユーザが移動した後に送信することができる。
[0031] 例では、データ書き込みのための方法は、以下のステップ(図1には図示せず)をさらに含む。
[0032] ステップ107では、第2の書き込み予定のデータが得られる。第2のデータのインデックス情報及び第1の書き込み予定のデータのインデックス情報は、同じものであっても又は異なるものであってもよい。例として、この2つが同じである事例について説明する。
[0033] ステップ108では、第2の書き込み予定のデータに対応するグループ識別子が決定される。第2の書き込み予定のデータに対応するグループ識別子を決定することは、これに限定されないが、第2の書き込み予定のデータに対応する第2のデータテーブル及び第2のデータテーブルの第2の書き込み予定のデータに対応する第3のデータ行を決定することを含み得る。第3のデータ行は、第2の書き込み予定のデータに対応するグループ識別子を含み得る。さらに、第3のデータ行のグループ識別子は、第2の書き込み予定のデータに対応するグループ識別子として決定することができる。
[0034] ステップ109では、第2の書き込み予定のデータに対応するグループ識別子が第2のグループ識別子とは異なる場合は、第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが決定される。第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを決定することは、これに限定されないが、マッピングテーブルからこのマスタノードを検索することを含み得る。例えば、マッピングテーブルは、第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを得るために、第2の書き込み予定のデータに対応するグループ識別子で検索することができる。例では、マッピングテーブルは、複数のグループ識別子及び対応するマスタノードを含み得る。従って、マッピングテーブルは、グループ識別子とマスタノードとの間の対応を記録することができる。この対応に基づいて、第2の書き込み予定のデータに対応するグループ識別子を得た後、第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを得るために、第2の書き込み予定のデータに対応するグループ識別子でマッピングテーブルを検索することができる。
[0035] ステップ110では、マスタノードが現ノード以外の第3のノードである場合は、第2のグループ識別子が第3のノードに送信される。第3のノードは、第2のグループ識別子を受信し、第2のグループ識別子又は第2の書き込み予定のデータに対応するグループ識別子を第2のグループ識別子に修正することができる。いくつかの実施形態では、第2の書き込み予定のデータに対応するグループ識別子は、データテーブルのデータ行に含まれる。次いで、第3のノードは、更新メッセージを現ノードに送信することができる。更新メッセージは、第3のノードにおいて第2の書き込み予定のデータに対応するグループ識別子が第2のグループ識別子に修正されることを示すことができる。
[0036] 第2のグループ識別子を第3のノードに送信することは、これに限定されないが、通知メッセージを第3のノードに送信することを含み得る。通知メッセージは、第2のグループ識別子を含み得る。また、通知メッセージは、第2の書き込み予定のデータのインデックス情報も含み得る。
[0037] ここでの通知メッセージは、第3のノードが、インデックス情報に従って第2の書き込み予定のデータに対応するデータ行を決定し、データ行のグループ識別子を第2のグループ識別子に修正できるようにすることができる。
[0038] ステップ111では、第3のノードによって送信された更新メッセージが受信され、更新メッセージに従って第2の書き込み予定のデータに対応するグループ識別子が第2のグループ識別子に修正される。更新メッセージに従って第2の書き込み予定のデータに対応するグループ識別子を第2のグループ識別子に修正することは、これに限定されないが、更新メッセージが第2の書き込み予定のデータのインデックス情報をさらに含む場合は、インデックス情報に従って、第2のデータテーブルの第2の書き込み予定のデータに対応する第3のデータ行を決定し、次いで、第3のデータ行のグループ識別子を第2のグループ識別子に修正することを含み得る。
[0039] ステップ112では、現ノードは、第2の書き込み予定のデータを書き込む。いくつかの実施形態では、第2の書き込み予定のデータを書き込むことは、更新メッセージに従って第2の書き込み予定のデータに対応するグループ識別子が第2のグループ識別子に修正された後に実行することができる。
[0040] 例では、ステップ109において第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが決定された後、マスタノードが現ノードである場合は、現ノードは、第2の書き込み予定のデータに対応するグループ識別子を第2のグループ識別子に修正する。さらに、現ノードは、第2の書き込み予定のデータを書き込む。
[0041] さらに、更新メッセージは、現ノード以外の他のノードに送信することもできる。更新メッセージは、他のノードが、更新メッセージに従って第2の書き込み予定のデータに対応するグループ識別子を第2のグループ識別子に修正できるようにすることができる。
[0042] 例では、ステップ108において第2の書き込み予定のデータに対応するグループ識別子が決定された後、第2の書き込み予定のデータに対応するグループ識別子が第2のグループ識別子と同じである場合は、現ノードは、第2の書き込み予定のデータの書き込みを実行するが、前述のステップ109~112は実行しない。
[0043] いくつかの実施形態では、グループ識別子は、これに限定されないが、分散合意プロトコルのグループ識別子を含み得る。
[0044] 本開示において上記で説明されるステップの順序は、制限というよりむしろ、説明の便宜上与えられた単なる例であることが理解されている。実際の適用では、ステップの順序は、変更することができる。対応する方法のステップは、必ずしも、本明細書で示される及び説明される順序で実行されるわけではなく、方法は、本開示で説明されるものより多くの又は少ないステップを含み得る。それに加えて、本明細書で説明される単一のステップは、いくつかの実施形態では、複数のステップに分解することができる。本開示で説明される様々なステップは、いくつかの実施形態では、単一のステップに組み合わせることができる。
[0045] 本開示のいくつかの実施形態では、マルチポイント書き込みをサポートする分散合意プロトコルが提供される。分散合意プロトコルはデータのマルチポイント書き込みをサポートするため、複数の地域を横断するユーザの場合、データは、分散合意プロトコルに基づいて、現地域のノードに書き込むことができる。従って、サービスにおけるユーザ経験を向上させることができる。結果として、分散合意プロトコルは、ユーザの近接書き込み及び動的移動をサポートすることができ、行レベル及びユーザレベルでのマルチポイント書き込みを実現することができる。その上、分散データベースのデータ一貫性を保証することができる。複数の地域にわたって分散されたトランザクションを実施することができ、ユーザ緯度における(at the user latitude)データの横断地域問題を解決することができ、サービスにおける近接書き込みをサポートすることができる。
[0046] 本開示のいくつかの実施形態は、データ書き込みのための方法を提供し、この方法は、分散データベースのいかなるノード(現ノードと呼ばれる)にも適用することができる。図2を参照すると、図2は、方法の例示的なフローチャートであり、方法は、ステップ201における、第1の書き込み予定のデータを得ることと、ステップ202における、第1の書き込み予定のデータに対応する第1のグループ識別子を決定することと、ステップ203における、第1のグループ識別子に対応するマスタノードを決定することとを含み得る。ステップ201~203に対しては、ステップ101~103を参照することができ、ここでは詳述しない。ステップ204では、マスタノードが現ノードである場合は、現ノードは、第1の書き込み予定のデータを書き込む。
[0047] 例では、データ書き込みのための方法は、以下のステップ(図2には図示せず)をさらに含む。
[0048] ステップ205では、第2の書き込み予定のデータが得られる。第2のデータのインデックス情報及び第1の書き込み予定のデータのインデックス情報は、同じものであっても又は異なるものであってもよい。例として、この2つが同じである事例について説明する。
[0049] ステップ206では、第2の書き込み予定のデータに対応するグループ識別子が決定される。第2の書き込み予定のデータに対応するグループ識別子を決定することは、これに限定されないが、第2の書き込み予定のデータに対応する第2のデータテーブル及び第2のデータテーブルの第2の書き込み予定のデータに対応する第3のデータ行を決定することを含み得る。第3のデータ行は、第2の書き込み予定のデータに対応するグループ識別子を含み得る。さらに、第3のデータ行のグループ識別子は、第2の書き込み予定のデータに対応するグループ識別子として決定することができる。
[0050] ステップ207では、第2の書き込み予定のデータに対応するグループ識別子が第1のグループ識別子とは異なる場合は、第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが決定される。第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを決定することは、これに限定されないが、マッピングテーブルからこのマスタノードを検索することを含み得る。例えば、マッピングテーブルは、第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを得るために、第2の書き込み予定のデータに対応するグループ識別子で検索することができる。例では、マッピングテーブルは、複数のグループ識別子及び対応するマスタノードを含み得る。従って、マッピングテーブルは、グループ識別子とマスタノードとの間の対応を記録することができる。この対応に基づいて、第2の書き込み予定のデータに対応するグループ識別子を得た後、第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードを得るために、第2の書き込み予定のデータに対応するグループ識別子でマッピングテーブルを検索することができる。
[0051] ステップ208では、マスタノードが現ノード以外の第2のノードである場合は、第1のグループ識別子が第2のノードに送信される。第2のノードは、第1のグループ識別子を受信し、第1のグループ識別子又は第2の書き込み予定のデータに対応するグループ識別子を第1のグループ識別子に修正することができる。いくつかの実施形態では、第2の書き込み予定のデータに対応するグループ識別子は、データテーブルのデータ行に含まれる。次いで、第2のノードは、更新メッセージを現ノードに送信することができる。更新メッセージは、第2のノードにおいて第2の書き込み予定のデータに対応するグループ識別子が第1のグループ識別子に修正されることを示すことができる。
[0052] 第1のグループ識別子を第2のノードに送信することは、これに限定されないが、通知メッセージを第2のノードに送信することを含み得る。通知メッセージは、第1のグループ識別子を含み得る。また、通知メッセージは、第2の書き込み予定のデータのインデックス情報も含み得る。
[0053] ここでの通知メッセージは、第2のノードが、インデックス情報に従って第2の書き込み予定のデータに対応するデータ行を決定し、データ行のグループ識別子を第1のグループ識別子に修正できるようにすることができる。
[0054] ステップ209では、第2のノードによって送信された更新メッセージが受信され、更新メッセージに従って第2の書き込み予定のデータに対応するグループ識別子が第1のグループ識別子に修正される。更新メッセージに従って第2の書き込み予定のデータに対応するグループ識別子を第1のグループ識別子に修正することは、これに限定されないが、更新メッセージが第2の書き込み予定のデータのインデックス情報をさらに含む場合は、インデックス情報に従って、第2のデータテーブルの第2の書き込み予定のデータに対応する第3のデータ行を決定し、次いで、第3のデータ行のグループ識別子を第1のグループ識別子に修正することを含み得る。
[0055] ステップ210では、現ノードは、第2の書き込み予定のデータを書き込む。いくつかの実施形態では、第2の書き込み予定のデータを書き込むことは、更新メッセージに従って第2の書き込み予定のデータに対応するグループ識別子が第1のグループ識別子に修正された後に実行することができる。
[0056] 例では、ステップ207において第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが決定された後、マスタノードが現ノードである場合は、現ノードは、第2の書き込み予定のデータに対応するグループ識別子を第1のグループ識別子に修正する。さらに、現ノードは、第2の書き込み予定のデータを書き込む。
[0057] さらに、更新メッセージは、現ノード以外の他のノードに送信することもできる。更新メッセージは、他のノードが、更新メッセージに従って第2の書き込み予定のデータに対応するグループ識別子を第1のグループ識別子に修正できるようにすることができる。
[0058] 例では、ステップ206において第2の書き込み予定のデータに対応するグループ識別子が決定された後、第2の書き込み予定のデータに対応するグループ識別子が第1のグループ識別子と同じである場合は、現ノードは、第2の書き込み予定のデータの書き込みを実行するが、前述のステップ207~210は実行しない。
[0059] いくつかの実施形態では、グループ識別子は、これに限定されないが、分散合意プロトコルのグループ識別子を含み得る。
[0060] 本開示において上記で説明されるステップの順序は、制限というよりむしろ、説明の便宜上与えられた単なる例であることが理解されている。実際の適用では、ステップの順序は、変更することができる。対応する方法のステップは、必ずしも、本明細書で示される及び説明される順序で実行されるわけではなく、方法は、本開示で説明されるものより多くの又は少ないステップを含み得る。それに加えて、本明細書で説明される単一のステップは、いくつかの実施形態では、複数のステップに分解することができる。本開示で説明される様々なステップは、いくつかの実施形態では、単一のステップに組み合わせることができる。
[0061] 本開示のいくつかの実施形態では、マルチポイント書き込みをサポートする分散合意プロトコルが提供される。分散合意プロトコルはデータのマルチポイント書き込みをサポートするため、複数の地域を横断するユーザの場合、データは、分散合意プロトコルに基づいて、現地域のノードに書き込むことができる。従って、サービスにおけるユーザ経験を向上させることができる。結果として、分散合意プロトコルは、ユーザの近接書き込み及び動的移動をサポートすることができ、行レベル及びユーザレベルでのマルチポイント書き込みを実現することができる。その上、分散データベースのデータ一貫性を保証することができる。複数の地域にわたって分散されたトランザクションを実施することができ、ユーザ緯度におけるデータの横断地域問題を解決することができ、サービスにおける近接書き込みをサポートすることができる。
[0062] 本開示のいくつかの実施形態は、データ書き込みのための別の方法を提供し、この方法は、分散データベースのいかなるノード(現ノードと呼ばれる)にも適用することができる。現ノードは、少なくとも1つのグループに対応し、グループのマスタノードとして機能する。方法は、以下のステップ、すなわち、第1の書き込み予定のデータが得られ、第1の書き込み予定のデータに対応する第1のデータ行が決定されることを含み得る。第1のデータ行は、第1の書き込み予定のデータに対応するグループ識別子を含み得る。
[0063] 次いで、第1のデータ行に含まれるグループ識別子は、第1のデータ行を現ノードに対応するグループと動的に結び付けるために、現ノードに対応するグループのグループ識別子に修正することができる。
[0064] 第1の書き込み予定のデータに対応する第1のデータ行を決定することに関しては、前述のステップ102を参照することができ、ここでは詳述しない。第1のデータ行に含まれるグループ識別子を現ノードに対応するグループのグループ識別子に修正することに関しては、前述のステップ103~106を参照することができ、ここでは詳述しない。
[0065] 本開示のいくつかの実施形態では、第1のデータ行を現ノードに対応するグループと動的に結び付けることにより、データのマルチポイント書き込みがサポートされる。複数の地域を横断するユーザの場合、データは、分散合意プロトコルに基づいて、現地域のノードに書き込むことができる。サービスにおけるユーザ経験を向上させることができる。分散合意プロトコルは、ユーザの近接書き込み及び動的移動をサポートし、行レベル及びユーザレベルでのマルチポイント書き込みを実現することができる。その上、分散データベースのデータ一貫性を保証することができ、複数の地域にわたって分散されたトランザクションを実現することができる。
[0066] 以下は、具体的なアプリケーションシナリオと組み合わせて、データ書き込みのための方法を説明する。図3Aを参照すると、本実施形態のアプリケーションシナリオの概略図が示されており、例として、3つのノードを含む分散データベースが示されている。実際の適用では、分散データベースは、より多くのノードを含み得、ノードの数はここでは制限されない。
[0067] 図3Aに示されるように、ノード301は、地域A(例えば、杭州など)に配備することができ、ノード302は、地域B(例えば、上海など)に配備することができ、ノード303は、地域C(例えば、北京など)に配備することができる。
[0068] この実施形態では、分散データベースは、分散合意プロトコル(Paxosなど)を使用して、マルチコピーデータの一貫性、耐災害性切替及び他の能力を保証することができる。分散合意プロトコルがマルチポイント書き込みをサポートできるようにするため、複数のグループ(分散合意プロトコルグループなど)を設定することができ、各グループは、グループ固有識別子(分散合意プロトコルのグループ識別子など)を有する。説明の便宜上、例えば、分散合意プロトコルがPaxosである事例では、複数のPaxosグループを設定することができ、各Paxosグループは、Paxosグループ固有識別子を有する。
[0069] 例では、Paxosグループの数は、ノードの数に関連し得る。例えば、Paxosグループの数は、ノードの数の正の整数倍である。ノードの数が3であれば、Paxosグループの数は、3、6、9などであり得る。また、Paxosグループの数は、ノードの数とは無関係であってもよい。例えば、Paxosグループの数は、3、4、5、6、7など、いかなる値でもあり得る。Paxosグループの数は、ここでは制限されず、以下の説明では、例として、6つのPaxosグループの事例が取り入れられる。
[0070] Paxosグループ1のグループ識別子はAAであり得、Paxosグループ2のグループ識別子はBBであり得、Paxosグループ3のグループ識別子はCCであり得、Paxosグループ4のグループ識別子はDDであり得、Paxosグループ5のグループ識別子はEEであり得、Paxosグループ6のグループ識別子はFFであり得る。その上、各ノードは、表1に示されるマッピングテーブルを格納することができ、マッピングテーブルは、グループ識別子とマスタノードとスレーブノードとの間の対応を記録するために使用される。
Figure 0007371087000001
[0071] 表1に示されるマッピングテーブルは、経験によって構成することができる。各Paxosグループに対し、Paxosグループは、1つのマスタノード(リーダノードとも呼ばれる)に対応し、残りのノードは、スレーブノード(フォロワノードとも呼ばれる)である。いくつかの実施形態では、表1から分かるように、すべてのPaxosグループに対し、各ノードは、マスタノードである回数が同じであり、各ノードは、スレーブノードである回数が同じである。
[0072] 説明の便利上、図3Aには、Paxosグループ1、Paxosグループ2及びPaxosグループ3のみが示されており、Paxosグループ4、Paxosグループ5及びPaxosグループ6は、Paxosグループ1、Paxosグループ2及びPaxosグループ3と同様である。図3Aから分かるように、ノード301は、Paxosグループ1のマスタノードであり、Paxosグループ2及びPaxosグループ3のスレーブノードでもある。ノード302は、Paxosグループ2のマスタノードであり、Paxosグループ1及びPaxosグループ3のスレーブノードでもある。ノード303は、Paxosグループ3のマスタノードであり、Paxosグループ1及びPaxosグループ2のスレーブノードでもある。
[0073] 図3Bを参照すると、分散データベースのデータ論理アーキテクチャの概略図が示されている。第1の層は、テーブルファミリを指し、トランザクションが関連付けられるテーブルのセットを表すために使用される。第2の層は、データを格納するためのテーブルを指し、一般データテーブルと呼ぶこともできる。第3の層は、テーブルパーティションを指し、パーティショニングルールに従ってテーブルが複数の物理パーティションに分割されることを意味する。各物理パーティションは、一般データテーブルのデータサブテーブルであり、同じテーブルファミリの下でのすべてのテーブルのパーティションルールは、同じものであり得る。第4の層は、パーティショングループを指し、同じテーブルファミリの下でのすべてのテーブルの同じパーティションを表す。第5の層は、Paxosグループを指し、Paxosパーティションを表す。Paxosパーティション内のデータは、ローカルトランザクションを実施することができる。
[0074] 図3Bに示されるように、1つのパーティショングループは、1つのPaxosグループにのみ対応するため、同じパーティショングループのデータ行は、同じノードにのみ書き込むことができる。この事例では、Paxosグループ間でデータを移動する必要がある際、移動は、最小単位としてテーブルパーティショングループでのみ行うことができる。結果として、単一のテーブルパーティションの複数のデータ行は、異なるノードに書き込むことはできない。これを受けて、分散合意プロトコルは、マルチポイント書き込みをサポートすることができなくなる。
[0075] 上記のプロセスは、具体的なアプリケーションシナリオと併せて以下で説明する。テーブルファミリは、一般データテーブルA及び一般データテーブルBを含む。一般データテーブルAの例は、表2に示されるようなものであり、一般データテーブルBの例は、表3に示されるようなものである。一般データテーブルAの大量のコンテンツにより、一般データテーブルAが占めるスペースを低減するため、一般データテーブルAは、パーティショニングルール1(ラストネームの頭文字、ラストネームの画数など)に従って、データサブテーブルA1とデータサブテーブルA2にパーティション分割することができる。表4及び表5を参照すると、例として、2つのデータサブテーブルが示されており、データサブテーブルの数は、2より大きくともよい。一般データテーブルBの大量のコンテンツにより、一般データテーブルBが占めるスペースを低減するため、一般データテーブルBは、パーティショニングルール1に従って、データサブテーブルB1とデータサブテーブルB2にパーティション分割することができる。表6及び表7を参照すると、例として、2つのデータサブテーブルが示されており、データサブテーブルの数は、2より大きくともよい。
Figure 0007371087000002
Figure 0007371087000003
Figure 0007371087000004
Figure 0007371087000005
Figure 0007371087000006
Figure 0007371087000007
[0076] さらに、データサブテーブルA1、データサブテーブルA2、データサブテーブルB1及びデータサブテーブルB2の場合、データサブテーブルA1及びデータサブテーブルB1のラストネームの頭文字は「L」であるため、データサブテーブルA1及びデータサブテーブルB1は、同じパーティショングループ1に加えることができ、パーティショングループ1は、Paxosグループ1に対応する。Paxosグループ1のマスタノードはノード301であるため、データサブテーブルA1及びデータサブテーブルB1は、ノード301に格納され、データサブテーブルA1及びデータサブテーブルB1のデータ書き込みは、ノード301によって実施される。
[0077] データサブテーブルA2及びデータサブテーブルB2のラストネームの頭文字は「Z」であるため、データサブテーブルA2及びデータサブテーブルB2は、同じパーティショングループ2に加えることができ、パーティショングループ2は、Paxosグループ2に対応する。Paxosグループ2のマスタノードはノード302であるため、データサブテーブルA2及びデータサブテーブルB2は、ノード302に格納され、データサブテーブルA2及びデータサブテーブルB2のデータ書き込みは、ノード302によって実施される。
[0078] データサブテーブルA1とデータサブテーブルB1が同じノード(例えば、ノード301)に格納される理由は、「LI Er」のアイデンティティデータ及び消費データはノード301に格納されていることから、書き込みトランザクションが「LI Er」のアイデンティティデータ及び消費データを同時に書き込む必要がある場合に、書き込み効率を高めるためにノード301によって当該同時の書き込みを実行することができるためである。書き込みトランザクションが「LI Er」のアイデンティティデータ及び消費データを同時に書き込む必要がある際に、「LI Er」のアイデンティティデータがノード301に格納されており、「LI Er」の消費データがノード302に格納されている場合は、ノード301とノード302との間の書き込みは複雑になり得、書き込みが失敗することさえあり得る。
[0079] 明らかに、データサブテーブルA1及びデータサブテーブルB1をパーティショングループ1に加え、パーティショングループ1をPaxosグループ1と結び付けることにより、データサブテーブルA1及びデータサブテーブルB1のデータ書き込みは、ノード301によって実行することができる。データサブテーブルA2及びデータサブテーブルB2をパーティショングループ2に加え、パーティショングループ2をPaxosグループ2と結び付けることにより、データサブテーブルA2及びデータサブテーブルB2のデータ書き込みは、ノード302によって実行することができる。
[0080] しかし、図3Bの実施形態では、データサブテーブルA1及びデータサブテーブルB1のすべてのユーザは、同じ地域においてアクセスすることになっており、例えば、「LI Er」及び「LV San」は両者とも、ノード301が位置する地域Aにおいてアクセスする。「LI Er」が地域Bに移動した時点で、ノード301は、「LI Er」のデータを書き込むことができなくなる。
[0081] この問題を考慮すると、図3C又は図3Dには、いくつかの実施形態における分散データベースのデータ論理アーキテクチャが示されている。図3Cには、テーブルファミリを含めることができる。従って、一般データテーブルAを複数のデータサブテーブルにパーティション分割するため及び一般データテーブルBを複数のデータサブテーブルにパーティション分割するため、同じパーティショニングルール(パーティショニングルール1など)を使用することができる。図3Dには、テーブルファミリは含まれていない。従って、一般データテーブルAを複数のデータサブテーブルにパーティション分割するため及び一般データテーブルBを複数のデータサブテーブルにパーティション分割するため、同じパーティショニングルールを使用しても又は異なるパーティションルールを使用してもよい。例えば、一般データテーブルAを複数のデータサブテーブルにパーティション分割するため及び一般データテーブルBを複数のデータサブテーブルにパーティション分割するために、パーティショニングルール1を使用することができる。或いは、一般データテーブルAを複数のデータサブテーブルにパーティション分割するために、パーティショニングルール1を使用し、一般データテーブルBを複数のデータサブテーブルにパーティション分割するために、異なるパーティショニングルール2を使用することができる。
[0082] 説明の便宜上、一般データテーブルAは、パーティショニングルール1を用いて、データサブテーブルA1とデータサブテーブルA2にパーティション分割され、一般データテーブルBは、パーティショニングルール1を用いて、データサブテーブルB1とデータサブテーブルB2にパーティション分割される。表2及び3に示される一般データテーブルA及び一般データテーブルBに対し、データサブテーブルA1及びデータサブテーブルA2は表8及び表9に示され、データサブテーブルB1及びデータサブテーブルB2は表10及び表11に示されている。
Figure 0007371087000008
Figure 0007371087000009
Figure 0007371087000010
Figure 0007371087000011
[0083] さらに、データサブテーブルA1、データサブテーブルA2、データサブテーブルB1及びデータサブテーブルB2に対し、データサブテーブルA1及びデータサブテーブルB1をパーティショングループ1に加える必要も、データサブテーブルA2及びデータサブテーブルB2をパーティショングループ2に加える必要もない。従って、パーティショングループの特徴は伴わないが、このデータ行が属するPaxosグループ1を示すために、各データ行にグループ識別子が加えられる。
[0084] 例えば、「LI Er」に対応するデータ行がPaxosグループ1に対応するように、データサブテーブルA1及びデータサブテーブルB1の「LI Er」に対応するデータ行にグループ識別子AAが加えられる。Paxosグループ1のマスタノードはノード301であるため、データサブテーブルA1及びデータサブテーブルB1の「LI Er」に対応するデータ行のデータ書き込みは、ノード301によって実行される。「LI Er」のアイデンティティデータと消費データは両方ともノード301に格納されているため、書き込みトランザクションが「LI Er」のアイデンティティデータ及び消費データを同時に書き込む必要がある場合は、書き込み効率を高めるためにノード301によって実行できることが理解されている。
[0085] その上、いくつかの実施形態では、データサブテーブルA1及びデータサブテーブルB1のすべてのユーザが同じ地域においてアクセスする必要があるわけではない。例えば、「LV San」は、ノード301が位置する地域Aにおいてアクセスし、「LI Er」は、地域Aから地域Bに移動する。データサブテーブルA1及びデータサブテーブルB1の「LI Er」に対応するデータ行は、表12及び表13に示されるように、グループ識別子AAからグループ識別子BBに修正することができる。従って、「LI Er」に対応するデータ行は、Paxosグループ2に対応する。Paxosグループ2のマスタノードはノード302であるため、データサブテーブルA1及びデータサブテーブルB1の「LI Er」に対応するデータ行のデータ書き込みは、ノード302によって実行される。「LI Er」のアイデンティティデータ及び消費データはノード302に格納されているため、書き込みトランザクションが「LI Er」のアイデンティティデータ及び消費データを同時に書き込む必要がある場合は、書き込み効率を高めるため及びユーザ移動を実現するためにノード302によって実行できることが理解されている。
Figure 0007371087000012
Figure 0007371087000013
[0086] 要約すると、いくつかの実施形態では、パーティショングループを排除し、Paxosグループのグループ識別子をデータ行に加えることにより、パーティショングループとPaxosグループを分離することができる。こうして、パーティショングループの制限を破棄することができる。従って、1つのパーティショングループのすべてのデータが、同じPaxosグループに対応し、1つのノードしか書き込むことができないという制限を回避することができる。その上、データ行とPaxosグループとを動的に結び付けるために、データ行をPaxosグループに直接結合することができる。
[0087] いくつかの実施形態では、データサブテーブルのグループ識別子は、PGID(PaxosグループID又はPaxosグループ識別子)と呼ぶこともできる。グループ識別子をデータ行に加えることにより、データ行が属するPaxosグループをグループ識別子によって表すことができ、従って、データ行とPaxosグループとを動的に結び付けることを実現することができる。データ行のPaxosグループに対応するマスタノードは、データ行のデータを書き込む。ユーザ移動が起こると、データ行の書き込みノードは、データ行と関連付けられたPaxosグループを修正することによって変更することができ、従って、ユーザ移動を実現する。その上、最小データ単位はデータ行であり、それにより、トラフィックベースの行レベル書き込みが実現される。単一ノードの複数のPaxosグループの分散トランザクションは、トランザクションレベル動的移動方法によって実施される。それは、ユーザ緯度におけるサービスにおける近接アクセスの基盤であり、分散データベース及び関連サービスアーキテクチャへの大きな変化である。それにより、ユーザ緯度におけるデータフロー切替問題を解決することができ、サービスにおける近接書き込みをサポートすることができる。
[0088] グループ識別子に基づくデータ書き込みのための方法は、いくつかの具体的な実施形態と併せて、以下で説明する。
[0089] 実施形態1:ユーザ「LI Er」が地域Aにおいてアクセスし、データ書き込み要求1及びデータ書き込み要求2を送信する。データ書き込み要求1は、データサブテーブルA1のテーブル名、ユーザ名「ZHANG Er」及びデータA15を含む。データ書き込み要求2は、データサブテーブルB1のテーブル名、ユーザ名「ZHANG Er」及びデータB15を含む。
[0090] ユーザ「LI Er」は地域Aにおいてアクセスするため、ノード301が、データ書き込み要求1を受信し、データ書き込み要求1からデータサブテーブルA1のテーブル名、ユーザ名「ZHANG Er」及びデータA15を得ることができる。ノード301は、テーブル名に従って、データテーブルが表8に示されるようなデータサブテーブルA1であると決定することができる。
[0091] 次いで、インデックスとしてユーザ名「ZHANG Er」を用いて、データ行(例えば、表8の第1行)を得るためにデータサブテーブルA1が検索される。データ行に含まれるグループ識別子AAは、データA15に対応するグループ識別子である。
[0092] 次いで、表1に示されるマッピングテーブルがグループ識別子AAで検索され、マスタノードとしてノード301が得られる。マスタノードは現ノードである(例えば、ノード301は、グループ識別子AAに対応するPaxosグループ1のマスタノードである)ため、データA15の書き込みプロセスは、ノード301によって実行される。具体的には、ノード301は、表8のデータA11をデータA15に修正し、スレーブノードのデータサブテーブルA1のデータA11をデータA15と同期させることができる。スレーブノードのデータサブテーブルA1は、マスタノードのデータサブテーブルA1と同一であり、そのコンテンツは、マスタノードによって同期される。Paxosグループ1の場合、スレーブノードは、ノード302及びノード303である。
[0093] それに加えて、データ書き込み要求1に対応するグループ識別子はグループ識別子AAであるため、トランザクショングループ識別子もまた、グループ識別子AAとして記録することができ、それにより、現書き込みトランザクションがグループ識別子AAに対する書き込みトランザクションであることが示される。
[0094] ユーザ「LI Er」は地域Aにおいてアクセスするため、ノード301が、データ書き込み要求2を受信することができる。データ書き込み要求2とデータ書き込み要求1は異なる書き込みトランザクションであると想定される。この場合、データ書き込み要求2の処理フローは、データ書き込み要求1の処理フローと同様であり、詳細については、本明細書で再度説明することはしない。データ書き込み要求2はデータ書き込み要求1と同じ書き込みトランザクションであると想定される。この場合、データ書き込み要求2の処理は、データ書き込み要求1の処理結果を使用して実行することができる。データ書き込み要求2の処理は、以下で説明されるトランザクショングループ識別子に基づいて実行することができる。
[0095] 最初に、ノード301は、データ書き込み要求2からデータサブテーブルB1のテーブル名、ユーザ名「ZHANG Er」及びデータB15を得る。ノード301は、テーブル名に従って、データテーブルが表10に示されるようなデータサブテーブルB1であると決定することができる。次いで、インデックスとしてユーザ名「ZHANG Er」を用いて、データ行(例えば、表10の第1行)を得るためにデータサブテーブルB1が検索される。データ行に含まれるグループ識別子は、データB15に対応するグループ識別子である。
[0096] さらに、グループ識別子に応じて、以下の事例が存在し得る。
[0097] 事例1:データ行に含まれるグループ識別子がグループ識別子AAであると想定する。グループ識別子AAはトランザクショングループ識別子(例えば、グループ識別子AA)と同じであるため、データB15の書き込みプロセスは、ノード301によって実行することができる。具体的には、ノード301は、表10のデータB11をデータB15に修正し、スレーブノードのデータサブテーブルB1のデータB11をデータB15と同期させることができる。このデータ書き込みプロセスについては、再度説明することはしない。
[0098] 事例2:データ行に含まれるグループ識別子がグループ識別子DDであると想定する。グループ識別子DDはトランザクショングループ識別子(例えば、グループ識別子AA)とは異なるため、ノード301は、表1に示されるマッピングテーブルをグループ識別子DDで検索し、マスタノードとしてノード301を得る。マスタノードは現ノードである(例えば、ノード301は、グループ識別子DDに対応するPaxosグループ4のマスタノードである)ため、ノード301は、データ行のグループ識別子DDをトランザクショングループ識別子(例えば、グループ識別子AA)に修正し、Paxosグループ4のスレーブノードに更新メッセージを送信することができる。更新メッセージを受信した後、Paxosグループ4のスレーブノード(例えば、ノード302及びノード303)は、更新メッセージに従って、データサブテーブルB1の対応するデータ行のグループ識別子DDをグループ識別子AAに修正する。
[0099] ノード301がデータ行のグループ識別子DDをトランザクショングループ識別子(例えば、グループ識別子AA)に修正した後、データ行に対応するPaxosグループは、Paxosグループ4からPaxosグループ1に切り替えられる。データB15の書き込みプロセスは、ノード301によって実行することができる。具体的には、ノード301は、表10のデータB11をデータB15に修正し、スレーブノードのデータサブテーブルB1のデータB11をデータB15と同期させることができる。
[00100] 事例3:データ行に含まれるグループ識別子がグループ識別子BBであると想定する。グループ識別子BBはトランザクショングループ識別子(例えば、グループ識別子AA)とは異なるため、ノード301は、表1に示されるマッピングテーブルをグループ識別子BBで検索し、マスタノードとしてノード302を得る。マスタノードは、現ノード301ではなく、ノード302である(例えば、ノード302は、グループ識別子BBに対応するPaxosグループ2のマスタノードである)ため、ノード301は、通知メッセージをノード302に送信する。通知メッセージは、トランザクショングループ識別子(例えば、グループ識別子AA)、インデックス情報「ZHANG Er」及びデータサブテーブルB1のテーブル名を含み得る。通知メッセージのコンテンツは、本明細書では制限されないことが理解されている。
[00101] 通知メッセージを受信した後、ノード302は、テーブル名に従って、データテーブルがデータサブテーブルB1であると決定し、データ行を得るためにインデックスとしてインデックス情報「ZHANG Er」を使用してデータサブテーブルB1を検索する。次いで、ノード302は、データ行に含まれるグループ識別子BBを通知メッセージのトランザクショングループ識別子(例えば、グループ識別子AA)に修正する。
[00102] データ行のグループ識別子BBをグループ識別子AAに修正した後、ノード302は、Paxosグループ2のスレーブノードに更新メッセージを送信する。更新メッセージを受信した後、Paxosグループ2のスレーブノード(例えば、ノード301及びノード303)は、更新メッセージに従って、データサブテーブルB1の対応するデータ行のグループ識別子BBをグループ識別子AAに修正することができる。具体的には、ノード301による処理が、例として説明される。更新メッセージは、グループ識別子AA、インデックス情報「ZHANG Er」及びデータサブテーブルB1のテーブル名を含み得る。更新メッセージのコンテンツは、本明細書では制限されないことが理解されている。更新メッセージを受信した後、ノード301は、テーブル名に従って、データテーブルがデータサブテーブルB1であると決定し、データ行を得るためにインデックスとしてインデックス情報「ZHANG Er」を使用してデータサブテーブルB1へのクエリを行う。次いで、ノード301は、データ行に含まれるグループ識別子BBを更新メッセージのグループ識別子AAに修正する。
[00103] 前述の処理の後、ノード301によって、データ行のグループ識別子BBがトランザクショングループ識別子(例えば、グループ識別子AA)に修正される。従って、データ行に対応するPaxosグループは、Paxosグループ2からPaxosグループ1に切り替えることができる。Paxosグループ1のマスタノードはノード301であるため、データB15の書き込みプロセスは、ノード301によって実行することができる。具体的には、ノード301は、表10のデータB11をデータB15に修正し、スレーブノードのデータサブテーブルB1のデータB11をデータB15と同期させることができる。
[00104] 実施形態2:ユーザ「LI Er」が地域Bにおいてアクセスし、データ書き込み要求1及びデータ書き込み要求2を送信する。データ書き込み要求1は、データサブテーブルA1のテーブル名、ユーザ名「ZHANG Er」及びデータA15を含む。データ書き込み要求2は、データサブテーブルB1のテーブル名、ユーザ名「ZHANG Er」及びデータB15を含む。
[00105] ユーザ「LI Er」は、地域Aから地域Bに移動し、地域Bにおいてアクセスするため、ノード302が、データ書き込み要求1を受信し、データ書き込み要求1からデータサブテーブルA1のテーブル名、ユーザ名「ZHANG Er」及びデータA15を得る。ノード302は、テーブル名に従って、データテーブルが表8に示されるようなデータサブテーブルA1であると決定することができる。
[00106] 次いで、インデックスとしてユーザ名「ZHANG Er」を用いて、データ行(例えば、表8の第1行)を得るためにデータサブテーブルA1が検索される。データ行に含まれるグループ識別子AAは、データA15に対応するグループ識別子である。
[00107] 次いで、表1に示されるマッピングテーブルがグループ識別子AAで検索され、マスタノードとしてノード301が得られる。マスタノードは、ノード302ではなく、ノード301である(例えば、ノード301は、グループ識別子AAに対応するPaxosグループ1のマスタノードである)ため、ノード302は、マスタノードがノード302である場合のグループ識別子(例えば、グループ識別子BB)を決定する。
[00108] 次いで、ノード302は、通知メッセージをノード301に送信する。通知メッセージは、グループ識別子BB、インデックス情報「ZHANG Er」及びデータサブテーブルA1のテーブル名を含み得る。通知メッセージのコンテンツは、本明細書では制限されないことが理解されている。
[00109] さらに、通知メッセージを受信した後、ノード301は、テーブル名に従って、データテーブルがデータサブテーブルA1であると決定し、データ行を得るためにインデックスとしてインデックス情報「ZHANG Er」を使用してデータサブテーブルA1を検索する。ノード301は、データ行に含まれるグループ識別子AAを通知メッセージのグループ識別子BBに修正する。
[00110] データ行のグループ識別子AAをグループ識別子BBに修正した後、ノード301は、Paxosグループ1のスレーブノードに更新メッセージを送信する。更新メッセージを受信した後、Paxosグループ1のスレーブノード(例えば、ノード302及びノード303)は、更新メッセージに従って、データサブテーブルA1の対応するデータ行のグループ識別子AAをグループ識別子BBに修正することができる。具体的には、ノード302による処理が、例として説明される。更新メッセージは、グループ識別子BB、インデックス情報「ZHANG Er」及びデータサブテーブルA1のテーブル名を含み得る。更新メッセージのコンテンツは、本明細書では制限されない。更新メッセージを受信した後、ノード302は、テーブル名に従って、データテーブルがデータサブテーブルA1であると決定し、データ行を得るためにインデックスとしてインデックス情報「ZHANG Er」を使用してデータサブテーブルA1を検索する。ノード302は、データ行に含まれるグループ識別子AAを更新メッセージのグループ識別子BBに修正する。
[00111] 前述の処理の後、ノード302によって、データ行のグループ識別子AAがグループ識別子BBに修正される。従って、データ行に対応するPaxosグループは、Paxosグループ1からPaxosグループ2に切り替えられる。Paxosグループ2のマスタノードはノード302であるため、データA15の書き込みプロセスは、ノード302によって実行される。具体的には、ノード302は、表8のデータA11をデータA15に修正し、スレーブノード(Paxosグループ2の場合、スレーブノードはノード301及びノード303である)のデータサブテーブルA1のデータA11をデータA15と同期させることができる。
[00112] それに加えて、データ書き込み要求1に対応するグループ識別子はグループ識別子BBであるため、トランザクショングループ識別子もまた、グループ識別子BBとして記録することができる。トランザクショングループ識別子は、現書き込みトランザクションがグループ識別子BBに対する書き込みトランザクションであることを示す。
[00113] ユーザ「LI Er」は地域Bにおいてアクセスするため、ノード302が、データ書き込み要求2を受信することができる。データ書き込み要求2及びデータ書き込み要求1は異なる書き込みトランザクションであると想定される。この場合、データ書き込み要求2の処理フローは、データ書き込み要求1の処理フローと同様である。詳細については、本明細書で再度説明することはしない。データ書き込み要求2はデータ書き込み要求1と同じ書き込みトランザクションであると想定される。この場合、データ書き込み要求2の処理は、データ書き込み要求1の処理結果を使用して実行することができる。データ書き込み要求2の処理は、以下で説明されるトランザクショングループ識別子に基づいて実行することができる。
[00114] 最初に、ノード302は、データ書き込み要求2からデータサブテーブルB1のテーブル名、ユーザ名「ZHANG Er」及びデータB15を得る。ノード302は、テーブル名に従って、データテーブルが表10に示されるようなデータサブテーブルB1であると決定することができる。次いで、インデックスとしてユーザ名「ZHANG Er」を用いて、データ行(例えば、表10の第1行)を得るためにデータサブテーブルB1が検索される。データ行に含まれるグループ識別子は、データB15に対応するグループ識別子である。
[00115] さらに、グループ識別子に応じて、以下の事例が存在し得る。
[00116] 事例1:データ行に含まれるグループ識別子がグループ識別子BBであると想定する。グループ識別子BBはトランザクショングループ識別子(例えば、グループ識別子BB)と同じであるため、データB15の書き込みプロセスは、ノード302によって実行することができる。具体的には、ノード302は、表10のデータB11をデータB15に修正し、スレーブノードのデータサブテーブルB1のデータB11をデータB15と同期させることができる。このデータ書き込みプロセスについては、再度説明することはしない。
[00117] 事例2:データ行に含まれるグループ識別子がグループ識別子EEであると想定する。グループ識別子EEはトランザクショングループ識別子(例えば、グループ識別子BB)とは異なるため、ノード302は、表1に示されるマッピングテーブルをグループ識別子EEで検索し、マスタノードとしてノード302を得る。マスタノードは現ノードであるため、ノード302は、データ行のグループ識別子EEをトランザクショングループ識別子(例えば、グループ識別子BB)に修正し、Paxosグループ5のスレーブノードに更新メッセージを送信することができる。更新メッセージを受信した後、Paxosグループ5のスレーブノードは、更新メッセージに従って、データサブテーブルB1の対応するデータ行のグループ識別子EEをグループ識別子BBに修正する。
[00118] ノード302がデータ行のグループ識別子EEをトランザクショングループ識別子(例えば、グループ識別子BB)に修正した後、データ行に対応するPaxosグループは、Paxosグループ5からPaxosグループ2に切り替えられる。データB15の書き込みプロセスは、ノード302によって実行することができる。具体的には、ノード302は、表10のデータB11をデータB15に修正し、スレーブノードのデータサブテーブルB1のデータB11をデータB15と同期させることができる。
[00119] 事例3:データ行に含まれるグループ識別子がグループ識別子AAであると想定する。グループ識別子AAはトランザクショングループ識別子(例えば、グループ識別子BB)とは異なるため、ノード302は、表1に示されるマッピングテーブルをグループ識別子AAで検索し、マスタノードとしてノード301を得る。マスタノードは、現ノード302ではなく、ノード301であるため、ノード302は、通知メッセージをノード301に送信する。通知メッセージは、トランザクショングループ識別子(例えば、グループ識別子BB)、インデックス情報「ZHANG Er」及びデータサブテーブルB1のテーブル名を含み得る。通知メッセージのコンテンツは、本明細書では制限されないことが理解されている。
[00120] 通知メッセージを受信した後、ノード301は、テーブル名に従って、データテーブルがデータサブテーブルB1であると決定し、データ行を得るためにインデックスとしてインデックス情報「ZHANG Er」を使用してデータサブテーブルB1を検索する。次いで、ノード301は、データ行に含まれるグループ識別子AAを通知メッセージのトランザクショングループ識別子(例えば、グループ識別子BB)に修正する。
[00121] データ行のグループ識別子AAをグループ識別子BBに修正した後、ノード301は、Paxosグループ1のスレーブノードに更新メッセージを送信する。更新メッセージを受信した後、Paxosグループ1のスレーブノード(例えば、ノード302及びノード303)は、更新メッセージに従って、データサブテーブルB1の対応するデータ行のグループ識別子AAをグループ識別子BBに修正することができる。前述の処理の後、ノード302によって、データ行のグループ識別子AAがトランザクショングループ識別子(例えば、グループ識別子BB)に修正される。データ行に対応するPaxosグループは、Paxosグループ1からPaxosグループ2に切り替えられる。Paxosグループ2のマスタノードはノード302であるため、データB15の書き込みプロセスは、ノード302によって実行することができる。具体的には、ノード302は、表10のデータB11をデータB15に修正し、スレーブノードのデータサブテーブルB1のデータB11をデータB15と同期させることができる。
[00122] 本開示のいくつかの実施形態では、データ書き込みのための装置がさらに提供される。図4は、データ書き込みのための例示的な装置の概略図である。
[00123] 装置は、取得モジュール401、決定モジュール402及び処理モジュール404を含み得る。取得モジュール401は、第1の書き込み予定のデータを得ることができる。決定モジュール402は、第1の書き込み予定のデータに対応する第1のグループ識別子を決定し、第1のグループ識別子に対応するマスタノードを決定することができる。処理モジュール404は、マスタノードが現ノードである場合は、第1の書き込み予定のデータを書き込むことができる。いくつかの実施形態では、装置は、現ノードであり得る。別の実施形態では、装置は、現ノードに位置し得る。
[00124] 決定モジュール402は、マスタノードが現ノード以外の第1のノードである場合は、第2のグループ識別子をさらに決定することができる。第2のグループ識別子に対応するマスタノードは、現ノードである。装置は、第2のグループ識別子を第1のノードに送信することができる送信モジュール403を含み得る。第1のノードは、第1の書き込み予定のデータに対応する第1のグループ識別子を第2のグループ識別子に修正し、更新メッセージを装置に送信することができる。処理モジュール404は、第1のノードによって送信された更新メッセージを受信し、更新メッセージに従って第1の書き込み予定のデータに対応する第1のグループ識別子を第2のグループ識別子に修正し、第1の書き込み予定のデータを書き込むことができる。
[00125] 例では、第1の書き込み予定のデータに対応する第1のグループ識別子を決定する際、決定モジュール402は、具体的には、第1の書き込み予定のデータに対応する第1のデータテーブル及び第1の書き込み予定のデータに対応する第1のデータテーブルの第1のデータ行を決定する。第1のデータ行は、第1の書き込み予定のデータに対応するグループ識別子を含み得る。決定モジュール402は、第1のデータ行のグループ識別子を第1のグループ識別子として決定することができる。
[00126] 例では、第1のグループ識別子に対応するマスタノードが現ノードである場合は、取得モジュール401は、第2の書き込み予定のデータを得ることができる。いくつかの実施形態では、第2の書き込み予定のデータのインデックス情報は、第1の書き込み予定のデータのインデックス情報と同じである。決定モジュール402は、第2の書き込み予定のデータに対応するグループ識別子を決定し、第2の書き込み予定のデータに対応するグループ識別子が第1のグループ識別子とは異なる場合は、第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードをさらに決定することができる。送信モジュール403は、第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが現ノード以外の第2のノードである場合は、第1のグループ識別子を第2のノードに送信することができる。第2のノードは、第1のグループ識別子を受信し、第1のグループ識別子又は第2の書き込み予定のデータに対応するグループ識別子を第1のグループ識別子に修正することができる。次いで、第2のノードは、更新メッセージを現ノードに送信することができる。処理モジュール404は、第2のノードによって送信された更新メッセージを受信し、更新メッセージに従って第2の書き込み予定のデータに対応するグループ識別子を第1のグループ識別子に修正し、第2の書き込み予定のデータを書き込むことができる。
[00127] 第1のグループ識別子に対応するマスタノードが現ノード以外の第1のノードである場合は、取得モジュール401は、第2の書き込み予定のデータを得ることができる。いくつかの実施形態では、第2の書き込み予定のデータのインデックス情報は、第1の書き込み予定のデータのインデックス情報と同じである。決定モジュール402は、第2の書き込み予定のデータに対応するグループ識別子を決定し、第2の書き込み予定のデータに対応するグループ識別子が第2のグループ識別子とは異なる場合は、第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードをさらに決定することができる。第2の書き込み予定のデータに対応するグループ識別子に対応するマスタノードが現ノード以外の第3のノードである場合は、送信モジュール403は、第2のグループ識別子を第3のノードに送信することができる。第3のノードは、第2のグループ識別子を受信し、第2のグループ識別子又は第2の書き込み予定のデータに対応するグループ識別子を第2のグループ識別子に修正することができる。次いで、第3のノードは、更新メッセージを現ノードに送信することができる。処理モジュール404は、第3のノードによって送信された更新メッセージを受信し、更新メッセージに従って第2の書き込み予定のデータに対応するグループ識別子を第2のグループ識別子に修正し、第2の書き込み予定のデータを書き込むことができる。
[00128] 図5は、本開示のいくつかの実施形態による、分散データベース500の例示的なノード510を示す概略図である。いくつかの実施形態では、本開示のデータ書き込みのための方法、装置又はデバイスは、例示的なノード510又は分散データベース500によって実施することができる。
[00129] 図5によれば、ノード510は、バス512又は情報を伝達するための他の通信メカニズムと、情報を処理するためにバス512と通信可能に結合された1つ又は複数のプロセッサ516とを含む。プロセッサ516は、例えば、1つ又は複数のマイクロプロセッサであり得る。
[00130] ノード510は、ネットワーク522を通じて、別のノード530にデータを送信するか又は別のノード530と通信することができる。ネットワーク522は、ローカルネットワーク、インターネットサービスプロバイダ、インターネット又はそれらの任意の組合せであり得る。ノード510の通信インタフェース518は、ネットワーク522に接続される。それに加えて、ノード510は、バス512を介して、周辺デバイス540に結合することができ、周辺デバイス540は、ディスプレイ(例えば、ブラウン管(CRT)、液晶ディスプレイ(LCD)、タッチスクリーンなど)及び入力デバイス(例えば、キーボード、マウス、ソフトキーパッドなど)を含む。
[00131] ノード510は、カスタマイズされた配線ロジック、1つ若しくは複数のASIC若しくはFPGA、ファームウェア又はプログラムロジックを使用して実施することができ、それらをノードと組み合わせることにより、ノード510が専用マシンになるようにする。
[00132] ノード510は、記憶装置514をさらに含み、記憶装置514は、メモリ561及び物理的記憶装置564(例えば、ハードドライブ、ソリッドステートドライブなど)を含み得る。メモリ561は、ランダムアクセスメモリ(RAM)562及び読み取り専用メモリ(ROM)563を含み得る。記憶装置514は、バス512を介して、プロセッサ516と通信可能に結合することができる。記憶装置514は、メインメモリを含み得、メインメモリは、プロセッサ516によって実行される命令の実行の間に変数又は他の中間情報を一時的に格納するために使用することができる。そのような命令は、プロセッサ516がアクセス可能な非一時的な記憶媒体に格納された後、ノード510を、命令において指定される動作を実行するようにカスタマイズされた専用マシンにする。「非一時的な媒体」という用語は、本明細書で使用される場合、特定の様式でマシンを動作させるデータ又は命令を格納する任意の非一時的な媒体を指す。そのような非一時的な媒体は、不揮発性媒体及び/又は揮発性媒体を含み得る。非一時的な媒体は、例えば、光又は磁気ディスク、ダイナミックメモリ、フロッピーディスク、フレキシブルディスク、ハードディスク、ソリッドステートドライブ、磁気テープ、又は他の任意の磁気データ記憶媒体、CD-ROM、他の任意の光データ記憶媒体、孔パターンを有する任意の物理的な媒体、RAM、PROM及びEPROM、FLASH-EPROM、NVRAM、フラッシュメモリ、レジスタ、キャッシュ、他の任意のメモリチップ又はカートリッジ、並びに、それらのネットワーク接続バージョンを含む。
[00133] 媒体の様々な形態は、実行のために1つ又は複数の命令の1つ又は複数のシーケンスをプロセッサ516に運ぶことに関与し得る。例えば、命令は、最初に、リモートコンピュータの磁気ディスク又はソリッドステートドライブ上で実行することができる。リモートコンピュータは、そのダイナミックメモリに命令をロードし、モデムを使用して電話回線上で命令を送信することができる。ノード510にローカル設置されたモデムは、電話回線上でデータを受信し、赤外線送信機を使用してデータを赤外線信号に変換することができる。赤外線検出器は、赤外線信号で運ばれたデータを受信し、適切な回路は、データをバス512に送ることができる。バス512は、記憶装置514内のメインメモリにデータを運び、そこから、プロセッサ516は、命令を検索して実行する。
[00134] 本開示のいくつかの実施形態では、データ書き込みのためのデバイスが提供される。いくつかの実施形態では、デバイスは、分散データベースのノード(例えば、現ノード)であり得る。別の実施形態では、デバイスは、分散データベースのノード(例えば、現ノード)に含めることができる。デバイスは、プロセッサ及び非一時的な機械可読記憶媒体を含む。非一時的な機械可読記憶媒体は、複数の命令を格納する。プロセッサによって実行されると、命令は、本開示の実施形態のいかなる方法をもデバイスに実行させる。例えば、プロセッサによって実行されると、命令は、第1の書き込み予定のデータを得ることと、第1の書き込み予定のデータに対応する第1のグループ識別子及び第1のグループ識別子に対応するマスタノードを決定することと、マスタノードが現ノードである場合は、第1の書き込み予定のデータを書き込むこととを含む方法をデバイスに実行させる。また、方法は、マスタノードが現ノード以外の第1のノードである場合は、第2のグループ識別子を決定することであって、第2のグループ識別子に対応するマスタノードが、現ノードである、決定することと、第2のグループ識別子を第1のノードに送信することと、第1のノードによって送信された更新メッセージを受信することであって、更新メッセージが、第1のノードにおいて第1の書き込み予定のデータに対応する第1のグループ識別子が第2のグループ識別子に修正されることを示す、受信することと、更新メッセージに従って第1の書き込み予定のデータに対応する第1のグループ識別子を第2のグループ識別子に修正することと、第1の書き込み予定のデータを書き込むこととも含み得る。
[00135] 本開示のいくつかの実施形態では、非一時的な機械可読記憶媒体がさらに提供される。非一時的な機械可読記憶媒体は、複数の命令を格納する。プロセッサによって実行されると、命令は、本開示の実施形態のいかなる方法をも機械に実行させる。例えば、プロセッサによって実行されると、命令は、第1の書き込み予定のデータを得ることと、第1の書き込み予定のデータに対応する第1のグループ識別子及び第1のグループ識別子に対応するマスタノードを決定することと、マスタノードが現ノードである場合は、第1の書き込み予定のデータを書き込むこととを含む方法をマシンに実行させる。また、方法は、マスタノードが現ノード以外の第1のノードである場合は、第2のグループ識別子を決定することであって、第2のグループ識別子に対応するマスタノードが、現ノードである、決定することと、第2のグループ識別子を第1のノードに送信することと、第1のノードによって送信された更新メッセージを受信することであって、更新メッセージが、第1のノードにおいて第1の書き込み予定のデータに対応する第1のグループ識別子が第2のグループ識別子に修正されることを示す、受信することと、更新メッセージに従って第1の書き込み予定のデータに対応する第1のグループ識別子を第2のグループ識別子に修正することと、第1の書き込み予定のデータを書き込むこととも含み得る。
[00136] 本開示のいくつかの実施形態では、データ書き込みのための装置が提供される。いくつかの実施形態では、装置は、分散データベースのノードであり得る。別の実施形態では、装置は、分散データベースのノードに含めることができる。ノードは、少なくとも1つのグループに対応し、グループのマスタノードである。装置は、第1の書き込み予定のデータを得るための取得モジュールと、第1の書き込み予定のデータに対応する第1のデータ行を決定するための決定モジュールと、処理モジュールとを含み得る。第1のデータ行は、第1の書き込み予定のデータに対応するグループ識別子を含む。処理モジュールは、第1のデータ行をノードに対応するグループと動的に結び付けるために、第1のデータ行に含まれるグループ識別子をノードに対応するグループのグループ識別子に修正することができる。
[00137] 実施形態において示されるシステム、装置、デバイス、モジュール又はユニットは、具体的には、コンピュータチップ若しくはエンティティによって又はある機能を有する製品によって実施することができる。典型的な実施デバイスは、コンピュータであり、コンピュータは、パーソナルコンピュータ、ラップトップコンピュータ、携帯電話、カメラフォン、スマートフォン、携帯情報端末、メディアプレーヤ、ナビゲーションデバイス、Eメールトランシーバデバイス、ゲームコンソール、タブレットコンピュータ、着用可能デバイス又はこれらのデバイスの任意の組合せの特定の形態であり得る。
[00138] 説明の便利上、上記で説明されるデバイス及び装置は、機能別にパーティション分割された様々なユニットとして別々に説明される。当然ながら、様々なユニットの機能は、本開示の実施形態におけるソフトウェア及び/又はハードウェアの同じ又は複数の断片において実施することができる。
[00139] 当業者は、方法、システム又はコンピュータプログラム製品として本開示の実施形態を提供できることを理解すべきである。それに従って、本開示は、完全なハードウェア実施形態、完全なソフトウェア実施形態、又は、ソフトウェアとハードウェアを組み合わせたいくつかの実施形態の形態を取ることができる。その上、本開示の実施形態は、コンピュータ使用可能プログラムコードを含む1つ又は複数のコンピュータ使用可能記憶媒体(これらに限定されないが、ディスクメモリ、CD-ROM、光メモリなどを含む)上で実施されるコンピュータプログラム製品の形態を取ることができる。
[00140] 本開示は、本開示の実施形態による方法、デバイス(システム)及びコンピュータプログラム製品のフローチャート及び/又はブロック図を参照して説明される。フローチャート及び/又はブロック図の各プロセス及び/又はブロック、並びに、フローチャート及び/又はブロック図のプロセス及び/又はブロックの組合せは、コンピュータプログラム命令によって実施できることを理解すべきである。これらのコンピュータプログラム命令は、マシンを生成するために、コンピュータのプロセッサ、埋め込みプロセッサ又は他のプログラム可能なデータ処理デバイスのプロセッサに提供することができ、その結果、コンピュータ又は他のプログラム可能なデータ処理デバイスのプロセッサによって実行される命令によって、フローチャートの1つ若しくは複数のプロセス及び/又はブロック図の1つ若しくは複数のブロックにおいて指定される機能を実施するための装置を生成することができる。
[00141] また、これらのコンピュータプログラム命令は、特定の様式で機能するように、コンピュータ又は他のプログラム可能なデータ処理デバイスに指示することができるコンピュータ可読メモリに格納することもでき、その結果、コンピュータ可読メモリに格納された命令は、フローチャートの1つ若しくは複数のプロセス及び/又はブロック図の1つ若しくは複数のブロックにおいて指定される機能を実施する命令手段を含む製造品を生成する。
[00142] また、これらのコンピュータプログラム命令は、コンピュータ又は他のプログラム可能なデータ処理デバイスにロードすることもでき、その結果、一連の動作ステップがコンピュータ又は他のプログラム可能デバイス上で実行され、コンピュータ実施処理が生み出される。従って、コンピュータ又は他のプログラム可能デバイス上で実行される命令は、フローチャートの1つ若しくは複数のプロセス及び/又はブロック図の1つ若しくは複数のブロックにおいて指定される機能を実施するためのステップを提供する。
[00143] 上記の説明は、本開示の単なる実施形態であり、本開示を制限することを意図しない。当業者であれば、本開示への様々な変更及び変化をもたらすことができる。本開示の精神及び原理内で行われるいかなる変更、均等な代用、改善なども、本開示の添付の特許請求の範囲内に含まれることが意図される。

Claims (17)

  1. 分散データベースシステムの現ノードによって実施されるデータ書き込みのための方法であって、
    第1の書き込み予定のデータを得ることと、
    前記第1の書き込み予定のデータに対応する第1のグループ識別子を決定することと、
    前記第1のグループ識別子に対応する第1のマスタノードを決定することと、
    前記第1のマスタノードが前記分散データベースシステムの前記現ノード以外の第1のノードであることに応答して、
    第2のグループ識別子を決定することであって、前記第2のグループ識別子に対応する第2のマスタノードが、前記現ノードである、決定すること、
    前記第2のグループ識別子を前記第1のノードに送信すること、
    前記第1のノードから第1の更新メッセージを受信することであって、前記第1の更新メッセージが、前記第1のノードにおいて前記第1のグループ識別子が前記第2のグループ識別子に修正されることを示す、受信すること、及び
    前記第1のグループ識別子を前記第2のグループ識別子に修正することと、
    記第1の書き込み予定のデータを書き込むことと
    を含む、方法。
  2. 前記第1の書き込み予定のデータに対応する前記第1のグループ識別子を決定することが、
    前記第1の書き込み予定のデータに対応する第1のデータテーブルの第1のデータ行を決定することと、
    前記第1のデータ行のグループ識別子を前記第1のグループ識別子として決定することと
    を含む、請求項1に記載の方法。
  3. 前記第1のグループ識別子に対応する前記第1のマスタノードを決定することが、
    マッピングテーブルから前記第1のマスタノードを検索すること
    を含み、
    前記マッピングテーブルが、複数のグループ識別子及び対応するマスタノードを含む、請求項1に記載の方法。
  4. 前記第2のグループ識別子を決定することが、
    マッピングテーブルから前記第2のグループ識別子を検索すること
    を含み、
    前記マッピングテーブルが、複数のグループ識別子及び対応するマスタノードを含む、請求項1に記載の方法。
  5. 前記第2のグループ識別子を前記第1のノードに送信することが、
    前記第2のグループ識別子及び前記第1の書き込み予定のデータのインデックス情報を含む通知メッセージを前記第1のノードに送信すること
    を含む、請求項1に記載の方法。
  6. 前記第1のグループ識別子を前記第2のグループ識別子に修正することが、
    前記更新メッセージのインデックス情報に従って、前記第1の書き込み予定のデータに対応する第1のデータテーブルの第1のデータ行を決定すること
    を含む、請求項1に記載の方法。
  7. 前記第1のマスタノードが前記現ノードである場合は、
    第2の書き込み予定のデータを得ることと、
    前記第2の書き込み予定のデータに対応する第3のグループ識別子を決定することと、
    前記第3のグループ識別子が前記第1のグループ識別子とは異なる場合は、前記第3のグループ識別子に対応する第3のマスタノードを決定することと、
    前記第3のマスタノードが前記分散データベースシステムの前記現ノード以外の第2のノードである場合は、前記第1のグループ識別子を前記第2のノードに送信することと、
    前記第2のノードから第2の更新メッセージを受信することであって、前記第2の更新メッセージが、前記第2のノードにおいて前記第3のグループ識別子が前記第1のグループ識別子に修正されることを示す、受信することと、
    前記第3のグループ識別子を前記第1のグループ識別子に修正することと、
    前記第2の書き込み予定のデータを書き込むことと
    をさらに含む、請求項1に記載の方法。
  8. 前記第3のマスタノードが前記現ノードである場合は、前記第3のグループ識別子を前記第1のグループ識別子に修正することと、
    前記第2の書き込み予定のデータを書き込むことと、
    前記第3のグループ識別子を前記第1のグループ識別子に修正したことを示す第3の更新メッセージを送信することと
    をさらに含む、請求項7に記載の方法。
  9. 前記第3のグループ識別子が前記第1のグループ識別子と同じである場合は、前記第2の書き込み予定のデータを書き込むこと
    をさらに含む、請求項7に記載の方法。
  10. 前記第1のマスタノードが前記現ノード以外の前記第1のノードである場合は、
    第2の書き込み予定のデータを得ることと、
    前記第2の書き込み予定のデータに対応する第3のグループ識別子を決定することと、
    前記第3のグループ識別子が前記第2のグループ識別子とは異なる場合は、前記第3のグループ識別子に対応する第3のマスタノードを決定することと、
    前記第3のマスタノードが前記分散データベースシステムの前記現ノード以外の第2のノードである場合は、前記第2のグループ識別子を前記第2のノードに送信することと、
    前記第2のノードから第3の更新メッセージを受信することであって、前記第3の更新メッセージが、前記第2のノードにおいて前記第3のグループ識別子が前記第2のグループ識別子に修正されることを示す、受信することと、
    前記第3のグループ識別子を前記第2のグループ識別子に修正することと、
    前記第2の書き込み予定のデータを書き込むことと
    をさらに含む、請求項1に記載の方法。
  11. 前記第3のマスタノードが前記現ノードである場合は、前記第3のグループ識別子を前記第2のグループ識別子に修正することと、
    第3の書き込み予定のデータを書き込むことと、
    前記第3のグループ識別子を前記第2のグループ識別子に修正したことを示す第3の更新メッセージを送信することと
    をさらに含む、請求項10に記載の方法。
  12. 前記第3のグループ識別子が前記第2のグループ識別子と同じである場合は、前記第2の書き込み予定のデータを書き込むこと
    をさらに含む、請求項10に記載の方法。
  13. 前記現ノードと前記第1のノードが、異なる地域に位置する、請求項1に記載の方法。
  14. 分散データベースシステムの現ノードにおけるデータ書き込みのための装置であって、
    命令セットを格納するメモリと、
    1つ又は複数のプロセッサと
    を含み、前記1つ又は複数のプロセッサが、前記命令セットを実行して、
    第1の書き込み予定のデータを得ることと、
    前記第1の書き込み予定のデータに対応する第1のグループ識別子を決定することと、
    前記第1のグループ識別子に対応する第1のマスタノードを決定することと、
    前記第1のマスタノードが前記分散データベースシステムの前記現ノード以外の第1のノードであることに応答して、
    第2のグループ識別子を決定することであって、前記第2のグループ識別子に対応する第2のマスタノードが、前記現ノードである、決定すること、
    前記第2のグループ識別子を前記第1のノードに送信すること、
    前記第1のノードから第1の更新メッセージを受信することであって、前記第1の更新メッセージが、前記第1のノードにおいて前記第1のグループ識別子が前記第2のグループ識別子に修正されることを示す、受信すること、及び
    前記第1のグループ識別子を前記第2のグループ識別子に修正することと、
    記第1の書き込み予定のデータを書き込むことと
    を前記装置に実行させるように構成される、装置。
  15. 前記第1の書き込み予定のデータに対応する前記第1のグループ識別子を決定することが、
    前記第1の書き込み予定のデータに対応する第1のデータテーブルの第1のデータ行を決定することと、
    前記第1のデータ行のグループ識別子を前記第1のグループ識別子として決定することと
    を含む、請求項14に記載の装置。
  16. 命令セットを格納する非一時的な機械可読記憶媒体であって、前記命令セットが、分散データベースシステムの現ノードが方法を実行するように、前記現ノードの1つ又は複数のプロセッサによって実行可能であり、前記方法が、
    第1の書き込み予定のデータを得ることと、
    前記第1の書き込み予定のデータに対応する第1のグループ識別子を決定することと、
    前記第1のグループ識別子に対応する第1のマスタノードを決定することと、
    前記第1のマスタノードが前記分散データベースシステムの前記現ノード以外の第1のノードであることに応答して、
    第2のグループ識別子を決定することであって、前記第2のグループ識別子に対応する第2のマスタノードが、前記現ノードである、決定すること、
    前記第2のグループ識別子を前記第1のノードに送信すること、
    前記第1のノードから第1の更新メッセージを受信することであって、前記第1の更新メッセージが、前記第1のノードにおいて前記第1のグループ識別子が前記第2のグループ識別子に修正されることを示す、受信すること、及び
    前記第1のグループ識別子を前記第2のグループ識別子に修正することと、
    記第1の書き込み予定のデータを書き込むことと
    を含む、非一時的な機械可読記憶媒体。
  17. 前記第1の書き込み予定のデータに対応する前記第1のグループ識別子を決定することが、
    前記第1の書き込み予定のデータに対応する第1のデータテーブルの第1のデータ行を決定することと、
    前記第1のデータ行のグループ識別子を前記第1のグループ識別子として決定することと
    を含む、請求項16に記載の非一時的な機械可読記憶媒体。
JP2021507465A 2018-08-29 2019-08-27 データ書き込みのための方法及び装置 Active JP7371087B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201810994734.4A CN110874382B (zh) 2018-08-29 2018-08-29 一种数据写入方法、装置及其设备
CN201810994734.4 2018-08-29
PCT/US2019/048317 WO2020046916A1 (en) 2018-08-29 2019-08-27 Method and apparatus for data writing

Publications (3)

Publication Number Publication Date
JP2021535468A JP2021535468A (ja) 2021-12-16
JPWO2020046916A5 JPWO2020046916A5 (ja) 2022-09-02
JP7371087B2 true JP7371087B2 (ja) 2023-10-30

Family

ID=69640552

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021507465A Active JP7371087B2 (ja) 2018-08-29 2019-08-27 データ書き込みのための方法及び装置

Country Status (5)

Country Link
US (1) US10893098B2 (ja)
EP (1) EP3844635A4 (ja)
JP (1) JP7371087B2 (ja)
CN (1) CN110874382B (ja)
WO (1) WO2020046916A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11759460B2 (en) * 2020-08-14 2023-09-19 Devie Medical Gmbh Method of local antibiotic treatment of infective endocarditis

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110178985A1 (en) 2008-10-03 2011-07-21 Marta San Martin Arribas Master monitoring mechanism for a geographical distributed database
JP5165693B2 (ja) 2006-12-21 2013-03-21 オーチス エレベータ カンパニー 乗客コンベア手摺り駆動制御
WO2013073020A1 (ja) 2011-11-16 2013-05-23 株式会社日立製作所 計算機システム、データ管理方法及びプログラム
JP2014186383A (ja) 2013-03-21 2014-10-02 Fujitsu Ltd 情報処理システム、情報処理装置の制御プログラム及び情報処理システムの制御方法
US9069827B1 (en) 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
JP2016177578A (ja) 2015-03-20 2016-10-06 株式会社日立製作所 管理システム、サーバ装置、およびデータ管理方法
US9569513B1 (en) 2013-09-10 2017-02-14 Amazon Technologies, Inc. Conditional master election in distributed databases
JP2017534133A (ja) 2014-11-06 2017-11-16 華為技術有限公司Huawei Technologies Co.,Ltd. 分散ストレージ及びレプリケーションシステム、並びに方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05165693A (ja) * 1991-12-17 1993-07-02 Fujitsu Ltd 分散情報処理装置
JP2005004474A (ja) * 2003-06-11 2005-01-06 Digital Dream:Kk 意味づけされた情報要素を分散管理する情報ストレージシステムの構成方法
US8572031B2 (en) 2010-12-23 2013-10-29 Mongodb, Inc. Method and apparatus for maintaining replica sets
US8732140B2 (en) * 2011-05-24 2014-05-20 Red Lambda, Inc. Methods for storing files in a distributed environment
KR101696911B1 (ko) * 2011-11-01 2017-01-17 한국전자통신연구원 분산 데이터 베이스 장치 및 그 장치에서의 스트림 데이터 처리 방법
US8843441B1 (en) 2012-01-17 2014-09-23 Amazon Technologies, Inc. System and method for maintaining a master replica for reads and writes in a data store
US9230000B1 (en) * 2012-06-04 2016-01-05 Google Inc. Pipelining Paxos state machines
US8965921B2 (en) * 2012-06-06 2015-02-24 Rackspace Us, Inc. Data management and indexing across a distributed database
CN104866584A (zh) * 2015-05-28 2015-08-26 交通银行股份有限公司 一种基于业务规则的数据分区方法及装置
US10623486B2 (en) * 2015-06-15 2020-04-14 Redis Labs Ltd. Methods, systems, and media for providing distributed database access during a network split
EP3193256B1 (en) * 2016-01-12 2018-08-01 Politechnika Poznanska A fault-tolerant data processing computer system and method for implementing a distributed two-tier state machine
CN107153660B (zh) * 2016-03-04 2020-03-17 福建天晴数码有限公司 分布式数据库系统的故障检测处理方法及其系统
CN107544869B (zh) * 2017-05-27 2020-06-09 新华三技术有限公司 一种数据恢复方法和装置
CN107295080B (zh) * 2017-06-19 2020-12-18 北京百度网讯科技有限公司 应用于分布式服务器集群的数据存储方法和服务器
US20200019476A1 (en) * 2018-07-11 2020-01-16 EMC IP Holding Company LLC Accelerating Write Performance for Microservices Utilizing a Write-Ahead Log

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5165693B2 (ja) 2006-12-21 2013-03-21 オーチス エレベータ カンパニー 乗客コンベア手摺り駆動制御
US20110178985A1 (en) 2008-10-03 2011-07-21 Marta San Martin Arribas Master monitoring mechanism for a geographical distributed database
JP2012504807A (ja) 2008-10-03 2012-02-23 テレフオンアクチーボラゲット エル エム エリクソン(パブル) 分散データベースの監視メカニズム
WO2013073020A1 (ja) 2011-11-16 2013-05-23 株式会社日立製作所 計算機システム、データ管理方法及びプログラム
US9069827B1 (en) 2012-01-17 2015-06-30 Amazon Technologies, Inc. System and method for adjusting membership of a data replication group
JP2014186383A (ja) 2013-03-21 2014-10-02 Fujitsu Ltd 情報処理システム、情報処理装置の制御プログラム及び情報処理システムの制御方法
US9569513B1 (en) 2013-09-10 2017-02-14 Amazon Technologies, Inc. Conditional master election in distributed databases
JP2017534133A (ja) 2014-11-06 2017-11-16 華為技術有限公司Huawei Technologies Co.,Ltd. 分散ストレージ及びレプリケーションシステム、並びに方法
JP2016177578A (ja) 2015-03-20 2016-10-06 株式会社日立製作所 管理システム、サーバ装置、およびデータ管理方法

Also Published As

Publication number Publication date
JP2021535468A (ja) 2021-12-16
US10893098B2 (en) 2021-01-12
CN110874382A (zh) 2020-03-10
EP3844635A4 (en) 2022-05-18
EP3844635A1 (en) 2021-07-07
WO2020046916A1 (en) 2020-03-05
CN110874382B (zh) 2023-07-04
US20200076890A1 (en) 2020-03-05

Similar Documents

Publication Publication Date Title
US10534547B2 (en) Consistent transition from asynchronous to synchronous replication in hash-based storage systems
WO2019128318A1 (zh) 数据处理方法、装置和系统
US20180225353A1 (en) Distributed Database Processing Method and Device
US11061924B2 (en) Multi-region, multi-master replication of database tables
CN104731956B (zh) 同步数据的方法、系统及相关数据库
WO2022017347A1 (zh) 分布式数据库系统及数据处理方法
JP6086463B2 (ja) ピアツーピアデータ複製用の方法、デバイス、およびシステム、ならびにマスタノード切替え用の方法、デバイス、およびシステム
US11070979B2 (en) Constructing a scalable storage device, and scaled storage device
CN103345502B (zh) 分布式数据库的事务处理方法和系统
US20180293257A1 (en) Method for accessing distributed database and distributed data service apparatus
CN110196851A (zh) 一种数据存储方法、装置、设备及存储介质
JP7371087B2 (ja) データ書き込みのための方法及び装置
CN105868210B (zh) 一种分布式数据库中唯一索引的创建方法和装置
US20230252025A1 (en) Data Processing System, Blockchain-Based Data Processing Method, and Device
CN113297231A (zh) 数据库处理方法及装置
US9141609B2 (en) Reducing sequence cache latch contention in a database system
US20200110632A1 (en) Method and system for routing and executing transactions
CN110928943B (zh) 一种分布式数据库及数据写入方法
US11989171B2 (en) Data storage method and system
US11789971B1 (en) Adding replicas to a multi-leader replica group for a data set
Li et al. Research and implementation of a distributed transaction processing middleware
US11803568B1 (en) Replicating changes from a database to a destination and modifying replication capacity
US20230334050A1 (en) Systems and methods for spilling data for hash joins
CN117874132A (zh) 数据同步方法、装置、计算机设备、存储介质和程序产品
CN116226274A (zh) 元数据同步方法、分布式数据库系统和存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220824

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20220824

TRDD Decision of grant or rejection written
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20230913

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20230919

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20231018

R150 Certificate of patent or registration of utility model

Ref document number: 7371087

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150