JP2021513715A - 分散データベースクラスタシステム、及びデータ同期方法 - Google Patents

分散データベースクラスタシステム、及びデータ同期方法 Download PDF

Info

Publication number
JP2021513715A
JP2021513715A JP2020565003A JP2020565003A JP2021513715A JP 2021513715 A JP2021513715 A JP 2021513715A JP 2020565003 A JP2020565003 A JP 2020565003A JP 2020565003 A JP2020565003 A JP 2020565003A JP 2021513715 A JP2021513715 A JP 2021513715A
Authority
JP
Japan
Prior art keywords
database
operation instruction
cluster system
data
distributed database
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.)
Granted
Application number
JP2020565003A
Other languages
English (en)
Other versions
JP7090744B2 (ja
Inventor
ダイ,フー
ルオ,シェンメイ
フー,ユー
チエン,ユーミン
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
ZTE Corp
Original Assignee
ZTE Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ZTE Corp filed Critical ZTE Corp
Publication of JP2021513715A publication Critical patent/JP2021513715A/ja
Application granted granted Critical
Publication of JP7090744B2 publication Critical patent/JP7090744B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/466Transaction processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures 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/18File system types
    • 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/1805Append-only file systems, e.g. using logs or journals to store data
    • G06F16/1815Journaling file systems
    • 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/23Updating
    • 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/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • 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/24Querying
    • G06F16/242Query formulation
    • 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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • G06F16/2438Embedded query languages
    • 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
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • G06F9/5016Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue
    • 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)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Testing Resistance To Weather, Investigating Materials By Mechanical Methods (AREA)

Abstract

本開示は、分散データベースクラスタシステム、データ同期方法及び記憶媒体を提供する。分散データベースクラスタシステムは、第1の同期クロックモジュールと、第1のデータ同期モジュールと、それぞれ1つの第1のマスターデータベースを含む複数の第1のデータベース群とを含み、前記第1の同期クロックモジュールは、クロック同期命令を定期的に送信するように構成され、前記第1のデータ同期モジュールは、各第1のマスターデータベースにおいて前記第1の同期クロックモジュールから送信された隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして前記第1の操作命令ブロックを送信するように構成される。本開示によると、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保する。

Description

本発明は、分散データベース分野に関し、特に、分散データベースクラスタシステム、データ同期方法及び記憶媒体に関する。
近年、例えばMySQL(SQLはStructured Query Language、すなわち、構造化問合せ言語を表す)等のオープンソースデータベース製品を注目し利用する組織が増えている。業務及び技術の発展に伴い、データベース技術もクラスタ化へ発展している。クラスタ間のデータ同期技術は災害復旧の基礎技術として、2つのデータセンター間の効率的で一貫性のあるデータ同期方法の研究は重要で深遠な意義を持つ。
現在、分散データベース分野において、データクラスタ間のデータ同期は、主に、ポイントツーポイントのデータ移行に依頼する。しかし、サーバーやネットワークの差異等のさまざまな要因によって、クラスタ間の異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現することができないおそれがある。例えば、マスタークラスタ内のAとBとの2つのデータノードがデータをバックアップクラスタ内のA’とB’との2つのデータノードに同期させ、ある時刻において、A’はAの時刻T0でのデータに同期したが、B’はBの時刻T1でのデータに同期した。
この時に切り替えが行われると、業務をバックアップクラスタに移行しなければならないが、バックアップクラスタのデータがグローバルな一貫を保っていないので、業務を直ちにバックアップクラスタに切り替えることができない。そして、基準となる時点又はクロックがないので、業務データを一貫する時点に復元させることもできない。
マスターデータベースクラスタとバックアップデータベースクラスタとの間の切り替え状況以外に、例えば増分データのサブスクリプション、増分データの抽出を含むが、これらに限定されてはいないデータ同期に係る他の状況においても、クラスタ間の異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題がある。
本開示の実施例によると、少なくとも既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決する分散データベースクラスタシステム、データ同期方法及び記憶媒体を提供する。
本開示の一実施例によると、第1の同期クロックモジュールと、第1のデータ同期モジュールと、それぞれ1つの第1のマスターデータベースを含む複数の第1のデータベース群とを含み、前記第1の同期クロックモジュールは、クロック同期命令を定期的に送信するように構成され、前記第1のデータ同期モジュールは、各第1のマスターデータベースにおいて前記第1の同期クロックモジュールから送信された隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして前記第1の操作命令ブロックを送信するように構成される分散データベースクラスタシステムを提供する。
本開示の他の実施例によると、相手側の分散データベースクラスタシステムから送信された操作命令ブロックを受信し、受信した前記操作命令ブロックにおけるデータベース操作命令を実行するように構成される第2のデータ同期モジュールと、それぞれ1つの第2のマスターデータベースを含む複数の第2のデータベース群と、を含み、前記操作命令ブロックは第1の操作命令ブロック又は第2の操作命令ブロックを含み、前記第1の操作命令ブロックには、前記相手側の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がパッケージングされており、前記第2の操作命令ブロックには、前記相手側の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令のうち、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含むフィルタ条件を満たすデータベース操作命令がパッケージングされている分散データベースクラスタシステムを提供する。
本開示の他の一実施例によると、それぞれ1つの第1のマスターデータベースを含む複数の第1のデータベース群を含む第1の分散データベースクラスタシステムに適用されるデータ同期方法であって、前記第1の分散データベースクラスタシステムが、クロック同期命令を定期的に送信することと、前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングして前記第1の操作命令ブロックを送信することと、を含むデータ同期方法を提供する。
本開示の他の一実施例によると、それぞれ1つの第2のマスターデータベースを含む複数の第2のデータベース群を含む第2の分散データベースクラスタシステムに適用されるデータ同期方法であって、前記第2の分散データベースクラスタシステムが、第1の分散データベースクラスタシステムから送信された操作命令ブロックであって、前記第1の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がパッケージングされた第1の操作命令ブロック、又は前記第1の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令のうち、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含むフィルタ条件を満たすデータベース操作命令がパッケージングされた第2の操作命令ブロックを含む操作命令ブロックを受信することと、前記第2の分散データベースクラスタシステムが、受信した前記操作命令ブロックにおけるデータベース操作命令を実行することと、を含むデータ同期方法を提供する。
本開示の他の一実施例によると、コンピュータープログラムが記憶された記憶媒体であって、前記コンピュータープログラムは、実行されると、上述したいずれかの方法実施例におけるのステップを実行するように構成される記憶媒体を提供する。
本開示の他の一実施例によると、メモリとプロセッサとを含む電子機器であって、前記メモリにコンピュータープログラムが記憶され、前記プロセッサは前記コンピュータープログラムを実行することで上述したいずれかの方法実施例におけるステップを実行するように構成される電子機器を提供する。
本開示によると、分散データベースクラスタシステムの内部でクロック同期命令を定期的に送信し、データ同期中に、各マスターデータベースに記録された操作命令に対して、いずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして送信することで、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保して、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保することができる。
ここで説明する図面は本開示を一層理解させるためのもので、本願の一部を構成し、本開示に示す実施例及びその説明は本開示を解釈するものであり、本開示を不当に限定するものではない。
本開示の実施例1に係る分散データベースクラスタシステムの構成を示す図である。 本開示の実施例1に係る分散データベースクラスタシステムの第1の好適な構成を示す図である。 本開示の実施例1に係る分散データベースクラスタシステムの第2の好適な構成を示す図である。 本開示の実施例2に係る分散データベースクラスタシステムの構成を示す図である。 本開示の実施例2に係る分散データベースクラスタシステムの好適な構成を示す図である。 本開示の実施例3に係るデータ同期方法を示すフローチャートである。 本開示の実施例4に係るデータ同期方法を示すフローチャートである。 本開示の実施例5に係るグローバルな一貫性を確保する分散データベースデータ同期装置の構成を示す図である。 本開示の実施例5に係るデータ同期方法の詳細な作業フローチャートである。 本開示の実施例6に係るSQLステートメント分割パケットを示す図である。 本開示の実施例7に係るSQLステートメント行並列処理を示すフローチャートである。 本開示の実施例8に係るリアルタイムなグローバルな一貫性フィルタを示すフローチャートである。 本開示の実施例8に係る最終的なグローバルな一貫性フィルタを示すフローチャートである。 本開示の実施例9に係る分散データベースクラスタのデータ同期高性能モードでのシステム構成を示す図である。 本開示の実施例10に係る分散データベースクラスタのデータ同期高性能モードでのシステム構成を示す図である。 本開示の実施例11に係る分散データベースを準リアルタイムにバックアップするシステム構成を示す図である。 本開示の実施例12に係る分散データベースの増分データに基づくデータ抽出を示すシステム構成を示す図である。
分散データベースクラスタシステムは複数のデータベース群からなり、各データベース群は複数の独立したデータベースノードからなり、群内のデータベースノードのデータは完全に一致し、群内のデータベースノードにおいて、1つのノードのみが外部向けに書き込みサービスを提供してマスターデータベースと呼ばれ、他のデータノードはデータベース間のコピー技術によって、データをローカルに同期させ、バックアップデータベースと呼ばれる。外部向けにデータサービスの形でアプリケーションにデータベース機能を提供し、アプリケーションに、例えばSQLインタフェース等の統一した標準インタフェースを提供する。
例えばデータクラスタ間のデータ同期、増分データのサブスクリプション、増分データの抽出などの分散データベースクラスタシステム間の同期について、既存技術におけるデータ同期態様によると、グローバルな一貫性を提供できない問題や欠陥が存在する場合が多い。
上記問題について、本開示において分散データベースクラスタシステム、データ同期方法及び記憶媒体を提供する。以下、図面を参照しつつ実施例とともに本開示を詳しく説明する。なお、矛盾しない限り、本願の実施例及び実施例の特徴を互いに組み合わせることができる。
なお、本開示の明細書、特許請求の範囲及び上記図面における「第1」、「第2」等の用語は、特定の順又は前後順を限定するものではなく、類似する対象を区別するためものである。
この実施例において分散データベースクラスタシステムを提供する。図1は本開示の実施例1に係る分散データベースクラスタシステムの構成を示す図である。
図1に示すように、この分散データベースクラスタシステムは、第1の同期クロックモジュール12と、第1のデータ同期モジュール14と、複数の第1のデータベース群16と、を含むことができる。ここで、前記複数の第1のデータベース群16のうちの各第1のデータベース群16は1つの第1のマスターデータベース(未図示)を含む。
前記第1の同期クロックモジュール12は、クロック同期命令を定期的に送信するように構成される。
前記第1のデータ同期モジュール14は、各第1のマスターデータベースにおいて前記第1の同期クロックモジュール12から送信された隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングし、前記第1の操作命令ブロックを送信するように構成される。
上記技術案によると、分散データベースクラスタシステムにおいて第1の同期クロックモジュール12がクロック同期命令を定期的に送信し、第1のデータ同期モジュール14はデータ同期中に、各マスターデータベースに記録された操作命令に対して、いずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして送信することで、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保して、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保することができる。
第1のデータ同期モジュール14が、如何に、各第1のマスターデータベースにおいて前記第1の同期クロックモジュール12から送信された隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がどのような命令であるかを特定して、また、第1の操作命令ブロックにパッケージングするかについて、分散データベースクラスタシステムの内部には、このような目的を実現できる態様が多くある。以下、簡単に実現でき且つ既存の分散データベースクラスタシステムの処理モードを多く変動させる必要がない実施形態を説明する。
例示的な実施形態として、前記第1の同期クロックモジュール12は、定期的に各第1のマスターデータベースへ前記クロック同期命令を送信するように構成される。前記第1のマスターデータベースは、受信したデータベース操作命令を前記第1のマスターデータベースのログファイルに書き込み、受信した前記クロック同期命令を前記ログファイルに書き込むように構成される。前記第1のデータ同期モジュール14は、各第1のマスターデータベースの前記ログファイルをそれぞれ取得し、前記ログファイルにおいて2つのクロック同期命令の間に介在されたデータベース操作命令を前記第1の操作命令ブロックにパッケージングし、前記第1の操作命令ブロックを送信するように構成される。
このように、このような態様によると、マスターデータベースにおいて受信したクロック同期命令と普通のデータベース操作命令とをいずれも正常にログファイルに書き込み、前記第1のデータ同期モジュール14はログファイルを読み取って、ログにおけるクロック同期命令に基づいてデータベース操作命令を分割し、2つのクロック同期命令の間に介在されたデータベース操作命令を前記第1の操作命令ブロックにパッケージングする。マスターデータベースによるログ記録の便宜を図るため、常用のデータベース操作ステートメントを用いてクロック同期命令を生成してもよく、これにより、マスターデータベースがこのクロック同期命令を普通のデータベース操作ステートメントと一緒にログファイルに簡単に書き込むことができる。
現在の分散データベースクラスタシステムの場合、相対的に好適なデータベース操作ステートメントはSQLであり、すなわち、同期クロックSQLステートメントをクロック同期命令として用いることができ、データベース操作命令もSQLステートメントを用いることができる。
上述のように、本実施例における技術案によると、各マスターデータベースに記録された操作命令に対して、いずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして送信することで、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保し、データベースの操作命令の記録方面でグローバルな一貫性を実現する。
データベースクラスタにおいて、処理タスクの分散が比較的に均一である場合、又は処理リソースの帯域幅が十分である場合、各操作命令の実行時間長が非常に小さく、且つ比較的に均一に分散されており、この時、データベース実行方面でも基本的にグローバルな一貫性を実現できる。実際の分散データベースクラスタシステムにおいてデータベースクラスタに処理タスクの分散が均一でないか、又は処理リソースの帯域幅が小さい場合もあることを考慮すると、この時、同一のデータベースクラスタにて異なる処理タスクの実行状態の差異がある可能性がある。
そこで、この時、以下のような2つの処理方式(最終的なグローバルな一貫性とリアルタイムなグローバルな一貫性)のうちの少なくとも1つによってデータベース実行方面のグローバルな一貫性を確保することができる。
<最終的なグローバルな一貫性態様>
この態様において、前記第1のデータ同期モジュール14は、前記第1の操作命令ブロックを相手側の分散データベースクラスタシステムに送信するように構成される。この時、相手側の分散データベースクラスタシステムに送信する第1の操作命令ブロックは、マスターデータベースにおいて記録された、2つの同期クロック信号の間のデータベース操作命令であり、これらのデータベース操作命令に対しては一貫性フィルタを行わない。相手側の分散データベースクラスタシステムのデータ同期モジュールは、それを正常に相手側の分散データベースクラスタシステムの対応するマスターデータベースに同期させる。しかし、相手側の分散データベースクラスタシステムは、業務によるクラスタの切り替えが行われる時にグローバルな一貫性フィルタを行う。
この実施例は、災害復旧システムにおいてRPO指標に対する要求が高い場合に適用され、データが効率的に相手側のクラスタに伝送されて永続化されることができ、RPOができるだけ小さくなるように確保する。この処理方式によって、業務によるクラスタの切り替えが行われる時に同期受信側でグローバルな一貫性フィルタを行う具体的な実施形態について、は実施例8を参照することができる。
<リアルタイムなグローバルな一貫性態様>
このリアルタイムなグローバルな一貫性態様によると、分散データベースクラスタシステムに第1の一貫性フィルタモジュール22が追加される。図2は本開示の実施例1に係る分散データベースクラスタシステムの第1の好適な構成を示す図である。
図2に示すように、この分散データベースクラスタシステムは、第1の一貫性フィルタモジュール22をさらに含む。
前記第1のデータ同期モジュール14は、前記第1の操作命令ブロックを前記第1の一貫性フィルタモジュール22に送信するように構成される。前記第1の一貫性フィルタモジュール22は、前記第1のデータ同期モジュール14から送信された前記第1の操作命令ブロックを受信し、前記第1の操作命令ブロックにグローバルな一貫性フィルタを行い、前記第1の操作命令ブロックにおける、フィルタ条件を満たすデータベース操作命令を第2の操作命令ブロックにパッケージングし、前記第2の操作命令ブロックを相手側の分散データベースクラスタシステムに送信するように構成される。
ここで、前記フィルタ条件は前記データベース操作命令がグローバルトランザクション提出済状態にあることを含む。この態様によると、第1の操作命令ブロックから実行がまだ終了されていない(すなわち、グローバルトランザクション未提出状態にある)データベース操作命令を除去し、実行が終了されたデータベース操作命令のみを保留して第2の操作命令ブロックにパッケージングして相手側の分散データベースクラスタシステムに送信し、これにより、相手側の分散データベースクラスタシステムにおいて同期したのは、現在の分散データベースクラスタシステムにおいて実行が終了されたデータであり、これにより、バックアップクラスタに同期されたデータが常に一貫状態となる。
この実施例は、災害復旧システムにおいてRTO指標に対する要求が高い場合に適用される。業務はいつでも相手側の分散データベースクラスタを引き取ることができ、RTOはゼロであることができる。この処理方式によって、同期開始側でリアルタイムにグローバルな一貫性フィルタを行う具体的な実施形態については、実施例8を参照することができる。
増分データのサブスクリプション、増分データの抽出において、相手側の分散データベースクラスタシステムが受信したデータを選別する必要があり、特定の条件を満たすデータ対象(データベース、テーブル等)のみを相手側の分散データベースクラスタシステムに送信する必要があることを考慮すると、この時、このフィルタタスクをも前記第1の一貫性フィルタモジュール22に渡すことができる。フィルタ条件を追加することができ、例えば前記フィルタ条件は、前記データベース操作命令が、前記相手側の分散データベースクラスタシステムに対応するデータ対象フィルタルールに該当することをさらに含むことができる。
実行がまだ終了されていない(すなわち、グローバルトランザクション未提出状態にある)データベース操作命令に対して、前記第1の一貫性フィルタモジュール22は、さらに、前記第1の操作命令ブロックにおけるグローバルトランザクション未提出状態にあるデータベース操作命令をバッファし、また、次回に前記第1のデータ同期モジュール14から送信された、現在の第1のマスターデータベースに対応する前記第1の操作命令ブロックを受信すると、バッファした前記データベース操作命令を前記第1の操作命令ブロックに付加してから前記第1の操作命令ブロックに対してグローバルな一貫性フィルタを行う。
分散データベースクラスタシステムの内部で簡単にグローバルなトランザクション管理を行うことで、第1の一貫性フィルタモジュール22が、簡単にデータベース操作命令が現在グローバルトランザクション提出済状態にあるかそれとも未提出状態にあるかを判断するために、分散データベースクラスタシステムを改善してもよい。
図3は本開示の実施例1に係る分散データベースクラスタシステムの第2の好適な構成を示す図である。
図3に示すように、この分散データベースクラスタシステムはグローバルトランザクション管理モジュール32をさらに含み、前記グローバルトランザクション管理モジュール32はグローバルトランザクションを一意に識別可能なグローバルトランザクション識別IDを管理し、各グローバルトランザクションの状態とライフサイクルを記録するように構成される。
前記第1の同期クロックモジュール12は、各第1のマスターデータベースの現在のアクティブトランザクションリストを定期的に要求し、前記現在のアクティブトランザクションリストと前記現在のアクティブトランザクションリストを取得したタイムスタンプとを前記第1のマスターデータベースに対応する同期テーブルに記録し、前記タイムスタンプ及び前記現在のアクティブトランザクションリストの情報を、前記第1のマスターデータベースへ送信する前記クロック同期命令に載せるように構成される。
前記第1の一貫性フィルタモジュール22は、現在の第1のマスターデータベースに対応する前記同期テーブルにおける直近に記録された前記現在のアクティブトランザクションリストを調べ、直近に記録された前記現在のアクティブトランザクションリストにおけるグローバルトランザクションIDに対応するデータベース操作命令を取り除き、残りのデータベース操作命令をグローバルトランザクション提出済状態にあるフィルタ条件を満たすデータベース操作命令として前記第2の操作命令ブロックにパッケージングする。
好適な実施形態として、データ同期処理を行う前に、相手側の分散データベースクラスタシステムの現在の分散データベースクラスタシステムとの同期位置を取得してもよい。この時、前記第1のデータ同期モジュール14は、さらに、相手側の分散データベースクラスタシステムからの同期位置要求情報を受信し(ここで、前記同期位置要求情報に前記分散データベースクラスタシステムと前記相手側の分散データベースクラスタシステムと間の同期位置が載せられている)、また、前記同期位置要求情報に載せられた前記同期位置に基づいて、各第1のマスターデータベースに記録されたデータベース操作命令に対するパッケージングを実行するように構成される。
以上は分散データベースクラスタシステムがデータ同期の送信側である場合に各モジュールによって実行される機能を説明した。なお、分散データベースクラスタシステムは実際の応用においてその役柄がよく変更される必要があり、例えば分散データベースクラスタシステムが当時はマスター分散データベースクラスタシステムである可能性があり、この場合には、データ同期の送信側となる必要がある。しかし、故障した後、分散データベースクラスタシステムがバックアップ分散データベースクラスタシステムになってしまう可能性があり、この時、データ同期の受信側であるので、好適な実施形態として、分散データベースクラスタシステムの各モジュールはさらに以下の機能を有する。
データ同期の受信側として、送信側からのデータ同期パケットを受信して、同期パケットの内容を実行してデータ同期を完成しなければならないが、この時、前記第1のデータ同期モジュール14は、さらに、相手側の分散データベースクラスタシステムから送信された操作命令ブロックを受信し(ここで、前記操作命令ブロックは第1の操作命令ブロック又は第2の操作命令ブロックを含む)、また、受信した前記操作命令ブロックにおけるデータベース操作命令を実行するように構成される。
例示的な実施形態として、前記第1のデータ同期モジュール14は、
前記操作命令ブロックにおける前記データベース操作命令を再生ファイルに永続化し、
前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行う方式で、
受信した前記操作命令ブロックにおける前記データベース操作命令を実行するように構成される。
例示的な実施形態として、前記第1のデータ同期モジュール14は、
テーブル名と主キーに応じて、前記操作命令ブロックにおける前記データベース操作命令を異なるデータ行に分割し、同一のデータ行の前記データベース操作命令は前後順で1つのトランザクションを構成し、
異なるトランザクションの前記データベース操作命令を異なるワーカースレッドに配置して処理を行う方式で、
前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行う。
再生に失敗した時にタスクに応答するために、例示的な実施形態として、前記第1のデータ同期モジュール14は、さらに、受信した前記操作命令ブロックにおける前記データベース操作命令の実行に成功した後、データベース操作命令の実行に成功した位置をファイルに永続化するように構成される。
上述の最終的なグローバルな一貫性態様に記載されたように、相手側の分散データベースクラスタシステムは、業務によるクラスタ切り替えが行われる時にグローバルな一貫性フィルタを1回行う。前記分散データベースクラスタシステムを前記相手側の分散データベースクラスタシステムのバックアップ分散データベースクラスタシステムとする場合もあることを考慮すると、前記第1のデータ同期モジュール14は、前記分散データベースクラスタシステムを前記相手側の分散データベースクラスタシステムの代わりにマスター分散データベースクラスタシステムとする必要がある場合に、第1の一貫性フィルタモジュール22を呼び出すように構成されてもよい。
この例示的な実施形態において、前記第1の一貫性フィルタモジュール22は、
各第1のマスターデータベースに対応する同期テーブルを取得し、前記同期テーブルに基づいて各第1のマスターデータベースの直近に同期されたタイムスタンプを特定し、その中の最も早いタイムスタンプを切り替え基準時点として特定し、
直近に同期されたタイムスタンプが前記切り替え基準時点よりも遅い各第1のマスターデータベースに対しては、前記第1のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第1のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される。
例示的な実施形態として、前記第1の一貫性フィルタモジュール22は、
前記切り替え基準時点よりも後のデータベース操作命令に対して、リバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行し、
前記切り替え基準時点でグローバルトランザクション未提出状態にあるデータベース操作命令に対してリバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行する方式で、
前記第1のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第1のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される。
この実施例において他の分散データベースクラスタシステムを提供する。この分散データベースクラスタシステムをデータ同期の受信側とすることができ、もちろん、データ同期の送信側の機能も同時に与えられた場合にはデータ同期の送信側とすることもでき、この時、実施例1を参照することができる。
図4は本開示の実施例2に係る分散データベースクラスタシステムの構成を示す図である。
図4に示すように、この分散データベースクラスタシステムは、第2のデータ同期モジュール42と、複数の第2のデータベース群44とを含むことができる。ここで、前記複数の第2のデータベース群44のうちの各第2のデータベース群44は1つの第2のマスターデータベース(未図示)を含む。
前記第2のデータ同期モジュール42は、相手側の分散データベースクラスタシステムから送信された操作命令ブロックを受信し、
また、受信した前記操作命令ブロックにおけるデータベース操作命令を実行するように構成される。
ここで、前記操作命令ブロックは第1の操作命令ブロック又は第2の操作命令ブロックを含み、前記第1の操作命令ブロックには前記相手側の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がパッケージングされており、前記第2の操作命令ブロックには前記相手側の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令のうち、フィルタ条件を満たすデータベース操作命令がパッケージングされている。ここで、前記フィルタ条件は、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含む。
上記技術案によると、データ同期の受信側としての分散データベースクラスタシステムが前記第2のデータ同期モジュール42を介して、データ同期の送信側の分散データベースクラスタシステムからの操作命令ブロックに応じて実行することで、データ同期プロセスを完成することができる。
送信された操作命令ブロックにおいて、第1の分散データベースクラスタシステムにおける各マスターデータベースに記録された操作命令に載せられたのがいずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令であるので、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保して、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保することができる。
例示的な実施形態として、前記第2のデータ同期モジュール42は、
前記操作命令ブロックにおける前記データベース操作命令を再生ファイルに永続化し、
前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行う方式で、
受信した前記操作命令ブロックにおける前記データベース操作命令を実行するように構成される。
例示的な実施形態として、前記第2のデータ同期モジュール42は、
テーブル名と主キーに応じて、前記操作命令ブロックにおける前記データベース操作命令を異なるデータ行に分割し、同一のデータ行の前記データベース操作命令は前後順で1つのトランザクションを構成し、
異なるトランザクションの前記データベース操作命令を異なるワーカースレッドに配置して処理を行う方式で、
前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行うように構成される。
再生に失敗した時にタスクに応答するために、例示的な実施形態として、前記第2のデータ同期モジュール42は、さらに、受信した前記操作命令ブロックにおける前記データベース操作命令の実行に成功した後、データベース操作命令の実行に成功した位置をファイルに永続化するように構成される。
図5は本開示の実施例2に係る分散データベースクラスタシステムの好適な構成を示す図である。
最終的なグローバルな一貫性態様に対して、この分散データベースクラスタシステムは、業務によるクラスタの切り替えが行われる時にグローバルな一貫性フィルタを1回行うことができる。前記分散データベースクラスタシステムをバックアップ分散データベースクラスタシステムとする場合もあることを考慮すると、図5に示すように、この分散データベースクラスタシステムは第2の一貫性フィルタモジュール52をさらに含むことができる。
前記第2のデータ同期モジュール42は、前記分散データベースクラスタシステムを前記相手側の分散データベースクラスタシステムの代わりにマスター分散データベースクラスタシステムとする必要がある場合、前記第2の一貫性フィルタモジュール52を呼び出すように構成される。
前記第2の一貫性フィルタモジュール52は、
各第2のマスターデータベースに対応する同期テーブルを取得し、前記同期テーブルに基づいて各第2のマスターデータベースの直近に同期されたタイムスタンプを特定し、その中の最も早いタイムスタンプを切り替え基準時点として特定し、
直近に同期されたタイムスタンプが前記切り替え基準時点よりも遅い各第2のマスターデータベースに対しては、前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される。
例示的な実施形態として、前記第2の一貫性フィルタモジュール52は、
前記切り替え基準時点よりも後のデータベース操作命令に対して、リバースデータベース操作命令を生成し、前記リバースデータベース操作命令を実行し、
前記切り替え基準時点でグローバルトランザクション未提出状態にあるデータベース操作命令に対してリバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行する方式で、
前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される。
本実施例においてデータ同期の送信側の処理プロセスを説明する。図6は本開示の実施例3に係るデータ同期方法を示すフローチャートである。
このデータ同期方法は、複数の第1のデータベース群16を含む第1の分散データベースクラスタシステムに応用される。ここで、前記複数の第1のデータベース群16のうちの各第1のデータベース群16は1つの第1のマスターデータベースを含む。
図6に示すように、前記方法は、
前記第1の分散データベースクラスタシステムが、クロック同期命令を定期的に送信するステップS602と、
前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングして、前記第1の操作命令ブロックを送信するステップS604とを含む。
上記技術案によると、第1の分散データベースクラスタシステムがクロック同期命令を定期的に送信し、データ同期中に、第1の分散データベースクラスタシステムの各マスターデータベースに記録された操作命令に対して、いずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして送信することで、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保して、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保することができる。
如何に、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がどのような命令であるかを特定して、また、第1の操作命令ブロックにパッケージングするかについて、第1の分散データベースクラスタシステムの内部には、このような目的を実現できる態様が多くある。以下、簡単に実現でき且つ既存の分散データベースクラスタシステムの処理モードを多く変動させる必要がない実施形態を説明する。
例示的な実施形態として、前記第1の分散データベースクラスタシステムが定期的に各第1のマスターデータベースに前記クロック同期命令を送信する。前記第1の分散データベースクラスタシステムが各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングする前に、前記方法は、前記第1のマスターデータベースが、受信したデータベース操作命令を前記第1のマスターデータベースのログファイルに書き込み、受信した前記クロック同期命令を前記ログファイルに書き込むことをさらに含む。
前記第1の分散データベースクラスタシステムが各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングすることは、前記第1の分散データベースクラスタシステムが各第1のマスターデータベースの前記ログファイルをそれぞれ取得し、前記ログファイルにおいて2つのクロック同期命令の間に介在されたデータベース操作命令を前記第1の操作命令ブロックにパッケージングすることを含む。
このように、このような方式によると、マスターデータベースが受信したクロック同期命令と普通のデータベース操作命令をすべて正常にログファイルに書き込み、前記第1の分散データベースクラスタシステムは、ログファイルを読み取って、ログにおけるクロック同期命令に応じて、データベース操作命令を分割し、2つのクロック同期命令の間に介在されたデータベース操作命令を前記第1の操作命令ブロックにパッケージングすることができる。マスターデータベースによるログ記録の便宜を図るため、常用のデータベース操作ステートメントを用いてクロック同期命令を生成すしてもよく、これにより、マスターデータベースがこのクロック同期命令を普通のデータベース操作ステートメントと一緒にログファイルに簡単に書き込むことができる。
現在の分散データベースクラスタシステムの場合、相対的に好適なデータベース操作ステートメントはSQLであり、すなわち、同期クロックSQLステートメントをクロック同期命令として用いることができ、データベース操作命令もSQLステートメントを用いることができる。
上述のように、本実施例における技術案によると、各マスターデータベースに記録された操作命令に対して、いずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして送信することで、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保し、データベースの操作命令記録方面でグローバルな一貫性を実現する。データベースクラスタにおいて、処理タスクの分散が比較的に均一である場合、又は処理リソースの帯域幅が十分である場合、各操作命令の実行時間長が非常に小さく、且つ比較的に均一に分散されており、この時、データベース実行方面でも基本的にグローバルな一貫性を実現できる。実際の分散データベースクラスタシステムにおいてデータベースクラスタに処理タスクの分散が均一でないか、又は処理リソースの帯域幅が小さい場合もあることを考慮すると、この時、同一のデータベースクラスタにて異なる処理タスクの実行状態の差異がある可能性がある。
そこで、この時、以下のような2つの処理方式(最終的なグローバルな一貫性とリアルタイムなグローバルな一貫性)のうちの少なくとも1つによってデータベース実行方面のグローバルな一貫性を確保することができる。
<最終的なグローバルな一貫性態様>
この態様において、前記第1の分散データベースクラスタシステムが前記第1の操作命令ブロックを第2の分散データベースクラスタシステムに送信する。この時、第2の分散データベースクラスタシステムに送信する第1の操作命令ブロックは、マスターデータベースにおいて記録された、2つの同期クロック信号の間のデータベース操作命令であり、これらのデータベース操作命令に対しては一貫性フィルタを行わない。
第2の分散データベースクラスタシステムのデータ同期モジュールは正常に、そのデータベース操作命令を第2の分散データベースクラスタシステムの対応するマスターデータベースに同期させる。しかし、第2の分散データベースクラスタシステムは業務によるクラスタの切り替えが行われる時にグローバルな一貫性フィルタを1回行う。
この実施例は災害復旧システムにおいてRPO指標に対する要求が高い場合に適用され、データが効率的に相手側のクラスタに伝送されて永続化されることができ、RPOができるだけ小さくなるように確保する。この処理方式によって、業務によるクラスタの切り替えが行われる時に同期受信側でグローバルな一貫性フィルタを行う具体的な実施形態については、実施例8を参照することができる。
<リアルタイムなグローバルな一貫性態様>
このリアルタイムなグローバルな一貫性態様によると、前記第1の分散データベースクラスタシステムが前記第1の操作命令ブロックに対してグローバルな一貫性フィルタを行って、前記第1の操作命令ブロックにおけるフィルタ条件を満たすデータベース操作命令を第2の操作命令ブロックにパッケージングして、前記第2の操作命令ブロックを第2の分散データベースクラスタシステムに送信する。
ここで、前記フィルタ条件は、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含む。この態様によると、第1の操作命令ブロックから実行がまだ終了されていない(すなわち、グローバルトランザクション未提出状態にある)データベース操作命令を除去し、実行が終了されたデータベース操作命令のみを保留して第2の操作命令ブロックにパッケージングして第2の分散データベースクラスタシステムに送信し、これにより、第2の分散データベースクラスタシステムにおいて同期したのは、現在の第1の分散データベースクラスタシステムにおいて実行が終了されたデータであり、これにより、バックアップクラスタに同期されたデータが常に一貫状態となる。
この実施例は、災害復旧システムにおいてRTO指標に対する要求が高い場合に適用される。業務はいつでも相手側の分散データベースクラスタを引き取ることができ、RTOはゼロであることができる。この処理方式によって、同期開始側でリアルタイムにグローバルな一貫性フィルタを行う具体的な実施形態については、実施例8を参照することができる。
増分データのサブスクリプション、増分データの抽出において第2の分散データベースクラスタシステムが受信したデータを選別する必要があることを考慮すると、特定の条件を満たすデータ対象(データベース、テーブル等)のみを第2の分散データベースクラスタシステムに送信する必要がある。したがって、フィルタ条件を追加することができ、例えば前記フィルタ条件は、前記データベース操作命令が、前記第2の分散データベースクラスタシステムに対応するデータ対象フィルタルールに該当することをさらに含むことができる。
実行がまだ終了されていない(すなわち、グローバルトランザクション未提出状態にある)データベース操作命令に対して、前記第1の分散データベースクラスタシステムは、前記第1の操作命令ブロックにおけるグローバルトランザクション未提出状態にあるデータベース操作命令をバッファし、また、バッファした前記データベース操作命令を現在の第1のマスターデータベースに対応する次の第1の操作命令ブロックに付加してから前記次の第1の操作命令ブロックに対してグローバルな一貫性フィルタを行う。
第1の分散データベースクラスタシステムの内部で簡単にグローバルなトランザクション管理を行うことで、第1の分散データベースクラスタシステムが、簡単にデータベース操作命令が現在グローバルトランザクション提出済状態にあるかそれとも未提出状態にあるかを判断するために、第1の分散データベースクラスタシステムを改善してもよい。前記第1の分散データベースクラスタシステムは、グローバルトランザクションを一意に識別可能なグローバルトランザクション識別IDを管理し、各グローバルトランザクションの状態とライフサイクルを記録する。
前記第1の分散データベースクラスタシステムは、各第1のマスターデータベースの現在のアクティブトランザクションリストを定期的に要求し、前記現在のアクティブトランザクションリストと前記現在のアクティブトランザクションリストを取得したタイムスタンプとを前記第1のマスターデータベースに対応する同期テーブルに記録し、前記タイムスタンプ及び前記現在のアクティブトランザクションリストの情報を、前記第1のマスターデータベースへ送信する前記クロック同期命令に載せる。
前記第1の分散データベースクラスタシステムが前記第1の操作命令ブロックに対してグローバルな一貫性フィルタを行い、前記第1の操作命令ブロックにおけるフィルタ条件を満たすデータベース操作命令を第2の操作命令ブロックにパッケージングすることは、前記第1の分散データベースクラスタシステムが、現在の第1のマスターデータベースに対応する前記同期テーブルにおける直近に記録された前記現在のアクティブトランザクションリストを調べ、直近に記録された前記現在のアクティブトランザクションリストにおけるグローバルトランザクションIDに対応するデータベース操作命令を取り除き、残りのデータベース操作命令をグローバルトランザクション提出済状態にあるフィルタ条件を満たすデータベース操作命令として前記第2の操作命令ブロックにパッケージングする。
好適な実施形態として、データ同期処理を行う前に、相手側の第2の分散データベースクラスタシステムの現在の第1の分散データベースクラスタシステムとの同期位置を取得することができる。前記第1の分散データベースクラスタシステムが各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングする前に、この方法は、前記第1の分散データベースクラスタシステムが、第2の分散データベースクラスタシステムからの同期位置要求情報を受信することをさらに含む。
ここで、前記同期位置要求情報には前記第1の分散データベースクラスタシステムと前記第2の分散データベースクラスタシステムとの同期位置が載せられている。
また、前記第1の分散データベースクラスタシステムが各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングすることは、前記第1の分散データベースクラスタシステムが、前記同期位置要求情報に載せられた前記同期位置に基づいて各第1のマスターデータベースに記録されたデータベース操作命令に対するパッケージングを実行することを含む。
本実施例において記憶媒体をさらに提供し、前記記憶媒体にはコンピュータープログラムが記憶され、前記コンピュータープログラムは実行されると本実施例に記載の方法を実現するように構成される。
本実施例においてデータ同期の受信側の処理プロセスを説明する。図7は本開示の実施例4に係るデータ同期方法を示すフローチャートである。
このデータ同期方法は、複数の第2のデータベース群44を含む第2の分散データベースクラスタシステムに適用されることができる。ここで、前記複数の第2のデータベース群44のうちの各第2のデータベース群44は1つの第2のマスターデータベースを含む。前記方法は、以下のステップS702、S704を含む。
ステップS702において、前記第2の分散データベースクラスタシステムが、第1の分散データベースクラスタシステムから送信された操作命令ブロックを受信する。ここで、前記操作命令ブロックは第1の操作命令ブロック又は第2の操作命令ブロックを含み、前記第1の操作命令ブロックには前記第1の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がパッケージングされており、前記第2の操作命令ブロックには前記第1の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令のうちのフィルタ条件を満たすデータベース操作命令がパッケージングされており、前記フィルタ条件は、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含む。
ステップS704において、前記第2の分散データベースクラスタシステムが、受信した前記操作命令ブロックにおけるデータベース操作命令を実行する。
上記技術案によると、データ同期の受信側としての第2の分散データベースクラスタシステムがデータ同期の開始側の第1の分散データベースクラスタシステムからの操作命令ブロックに応じて実行することで、データ同期プロセスを完成することができる。送信された操作命令ブロックにおいて、第1の分散データベースクラスタシステムにおける各マスターデータベースに記録された操作命令に載せられたのがいずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令であるので、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保して、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保することができる
例示的な実施形態として、前記第2の分散データベースクラスタシステムが受信した前記操作命令ブロックにおけるデータベース操作命令を実行することは、
前記第2の分散データベースクラスタシステムが、前記操作命令ブロックにおける前記データベース操作命令を再生ファイルに永続化することと、
前記第2の分散データベースクラスタシステムが、前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行うことと、を含むことができる。
例示的な実施形態として、前記第2の分散データベースクラスタシステムが前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行うことは、
前記第2の分散データベースクラスタシステムが、テーブル名と主キーに応じて、前記操作命令ブロックにおける前記データベース操作命令を異なるデータ行に分割し、同一のデータ行の前記データベース操作命令は前後順で1つのトランザクションを構成することと、
前記第2の分散データベースクラスタシステムが、異なるトランザクションの前記データベース操作命令を異なるワーカースレッドに配置して処理を行うことと、を含むことができる。
再生に失敗した時にタスクに応答するために、例示的な実施形態として、前記第2の分散データベースクラスタシステムが受信した前記操作命令ブロックにおける前記データベース操作命令の実行に成功した後、前記第2の分散データベースクラスタシステムが、データベース操作命令の実行に成功した位置をファイルに永続化することをさらに含む。
最終的なグローバルな一貫性態様に対して、この第2の分散データベースクラスタシステムは、業務によるクラスタの切り替えが行われる時にグローバルな一貫性フィルタを1回行うことができる。
前記第2の分散データベースクラスタシステムをバックアップ分散データベースクラスタシステムとし、前記第2の分散データベースクラスタシステムを前記第1の分散データベースクラスタシステムの代わりにマスター分散データベースクラスタシステムとする必要がある場合、前記方法は、
前記第2の分散データベースクラスタシステムが、各第2のマスターデータベースに対応する同期テーブルを取得し、前記同期テーブルに基づいて各第2のマスターデータベースの直近に同期されたタイムスタンプを特定し、その中の最も早いタイムスタンプを切り替え基準時点として特定することと、
直近に同期されたタイムスタンプが前記切り替え基準時点よりも遅い各第2のマスターデータベースに対しては、前記第2の分散データベースクラスタシステムが、前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させることと、をさらに含むことができる。
例示的な実施形態として、前記第2の分散データベースクラスタシステムが前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させることは、
前記第2の分散データベースクラスタシステムが、前記切り替え基準時点よりも後のデータベース操作命令に対して、リバースデータベース操作命令を生成し、前記リバースデータベース操作命令を実行することと、
前記第2の分散データベースクラスタシステムが、前記切り替え基準時点でグローバルトランザクション未提出状態にあるデータベース操作命令に対してリバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行することと、を含む。
本実施例において記憶媒体をさらに提供し、前記記憶媒体にはコンピュータープログラムが記憶され、前記コンピュータープログラムは実行されると本実施例に記載の方法を実現するように構成される。
本実施例においてグローバルな一貫性を確保する分散データベースデータ同期装置及び方法を説明する。図8は本開示の実施例5に係るグローバルな一貫性を確保する分散データベースデータ同期装置の構成を示す図である。
図8に示すように、本開示による前記グローバルな一貫性を確保する分散データベースデータ同期装置は、以下の同期クロックモジュール82、グローバルトランザクション管理モジュール84、管理モジュール86、一貫性フィルタモジュール88を含む。
分散データベースクラスタは、複数のデータベース群80からなり、各データベース群80は複数の独立したデータベースノードからなり、群内のデータベースノードのデータは完全に一致し、群内のデータベースノードにおいて、1つのノードのみが外部向けに書き込みサービスを提供してマスターデータベースと呼ばれ、他のデータノードはデータベース間のコピー技術によって、データをローカルに同期させ、バックアップデータベースと呼ばれる。外部向けにデータサービスの形でアプリケーションにデータベース機能を提供し、アプリケーションに、例えばSQLインタフェース等の統一した標準インタフェースを提供する。
同期クロックモジュール82は、定期的に分散データベース内の各マスターデータノードへSQLステートメントを送信するように構成され、載せられる情報としては、同期クロックモジュール82のタイムスタンプ及び現在のグローバルなアクティブトランザクションリストがある。
グローバルトランザクション管理モジュール84は、分散型環境でのグローバルで一意的なトランザクションIDを統合管理するように構成され、グローバルトランザクションIDは、1つのグローバルトランザクションを一意に識別し、同時に、各グローバルトランザクションの状態とライフサイクルを記録する。クラスタ内の各トランザクションはいずれも、グローバルトランザクション管理モジュール84に一意的なトランザクションIDの構築を要求して、データ行に挿入する。
管理モジュール86は、分散データベースクラスタのネットワーク構成情報を統合管理するように構成される。
一貫性フィルタモジュール88は、グローバルのアクティブトランザクションIDを用いて、データに対してグローバルな一貫性フィルタを行い、フィルタルールに従って、所定のデータ対象(ベース、テーブル)を含むSQLステートメントをフィルタする。
データ同期モジュール810は、分散データベース内のマスターデータベースノードのログを収集し、ログを解析してSQLステートメントを生成し、SQLステートメントブロックメッセージをパック圧縮して伝送し、SQLメッセージを永続化し、SQLの行を並列して再生するように構成される。
以上の構成に基づいて、データ同期中に、まず主バックアップクラスタにおいて同期テーブルを構築し、同期テーブルには主に、タイムスタンプ情報とグローバルなアクティブトランザクションリストとの2つの情報が含まれる。同期クロックモジュール82は定期的にグローバルトランザクション管理モジュール84へ現在のアクティブトランザクションリストを要求して、グローバルトランザクション管理モジュール84の応答を得た後、マスタークラスタのすべてのマスターデータベースへ1つの挿入ステートメントを送信し、挿入して現在のアクティブグローバルトランザクションリストのタイムスタンプ及び現在のグローバルなアクティブトランザクションリスト情報を取得する。
マスタークラスタのデータ同期モジュール810は、定期的にマスタークラスタ内のマスターデータノードのログファイルを収集し、バックアップクラスタの同期要求を受信した後、ログファイルに対してリバース解析を行って、SQLステートメントを生成し、同期クロックを用いて、SQLステートメントストリームをブロックに分割し、また、一貫性モジュールによって、SQLステートメントに対して一貫性と所定のルールのフィルタを行い、最後に、フィルタ後のSQLステートメントブロックを圧縮して送信キューに入れる。
その後、スレッドを送信して、送信キューにおけるメッセージをバックアップクラスタのデータ同期モジュール810へ送信する。バックアップクラスタにおけるデータ同期モジュール810は、SQLブロックメッセージを受信した後、SQLメッセージを内部メモリの受信キューに入れて、書き込みスレッドを呼び出して、受信キューにおけるSQLステートメントブロックをファイルに永続化してから、再生スレッドを開始させてファイルにおけるステートメントブロックを幾つかのタスクに分割してワーカースレッドに渡して、データをバックアップクラスタのデータベースノードに同期させる。
以上のプロセスによって、マスタークラスタ内の各データノードのログファイルをクラスタの統一時間でスライスし、スライスにおけるトランザクションは業務の違いに応じて、マスター/バックアップクラスタで統合処理を行って同時に成功するか又は同時に失敗する。バックアップクラスタでのデータがリアルタイムに一致するか、又は最終的に一致するように確保する。これに基づいて、バックアップクラスタは、スライス内のトランザクションをテーブル名と主キー値に応じて配布し、マルチのスレッドを並列に実行して、並列送信の不足によって再生性能が低下する問題を解決する。
図9は本開示の実施例5に係るデータ同期方法の詳細な作業フローチャートである。
図9に示すように、このグローバルな一貫性を確保する分散データベースデータ同期方法は以下のステップS902、S904、S906、S908、S910、S912、S914、S916、S918を含む。
ステップS902において、マスタークラスタのデータ同期モジュール810がオンされると、初期化して定期的にメタデータタスクスレッドを取得して、データ同期モジュール810に接続されるデータベースノードがデータベース群80におけるマスターノードであるように確保する。スレッドを開始させて、定期的に管理ノードへ状態を報知する。バックアップクラスタのデータ同期モジュール810がオンされると、構成ファイルに応じて初期化してワーカースレッドプールを並行送信し、初期化メッセージをスレッドに書き込み、SQL再生スレッド及びガベージコレクションスレッドが開始されると、まずマスタークラスタのデータ同期モジュール810にログ同期位置を送信する。
ステップS904において、マスタークラスタのデータ同期モジュール810は、定期的に取得/同期クラスタネットワーク構成データ要求を管理モジュール86に送信し、管理モジュール86の応答を受信した後、内部メモリにおけるデータと比較する。データが空きであると、現在のデータによって内部メモリの構造を初期化し、データがあると、データベース群80順でデータが一致するか否かを比較し、一致すると処理せず、一致しないと、データベースノードに接続されたか否かに応じて、直ちにデータ情報を更新するかを決める。
ステップS906において、マスタークラスタのデータ同期モジュール810がオンされてクラスタネットワーク構成情報を同期させた後、バックアップクラスタのデータ同期モジュール810による同期位置要求情報のプッシュ通知を待機し、同期位置情報を受信した後、現在の位置に従って、新規のタスクを開始する。
ステップS908において、マスタークラスタのデータ同期モジュール810が、同期位置に従ってデータベースの接続を起こし、ログファイルを解析するために内部メモリを初期化し、データベースからプッシュ通知されたログ情報を循環受信し、その後、実施例6に示すSQLステートメントのブロック分割プロセスに移行する。実際の配置に応じて、SQLステートメントブロックを一貫性フィルタモジュール88に送信する。
ステップS910において、SQLステートメントブロックに対してグローバルな一貫性フィルタとルールによるフィルタを行う。具体的なプロセスについては実施例8の図12又は図13を参照することができる。
ステップS912において、マスタークラスタのデータ同期モジュール810は、バックアップクラスタのデータ同期モジュール810から送信されたSQLステートメントブロック要求を受信した時、まずメッセージを再送信する必要があるか否かを判断し、再送信する必要があれば、直接送信キューのメッセージを送信し、再送信する必要がなければ、送信バッファキューからメッセージを選択してバックアップクラスタのデータ同期モジュール810に送信する。
ステップS914において、バックアップクラスタのデータ同期モジュール810はメッセージパケットを受信した後、メッセージを受信リストに入れる。メッセージパケットのチェックを行う。その後、SQLステートメントブロックメッセージが書き込みキューに入れられ、書き込みスレッドによって、メッセージを書き込みキューからSQL再生ファイルに永続化し、その後、受信キューに詰まっているメッセージがあるか否かを検査し、あれば、中断されたスレッドを覚醒し、なければ、現在のメッセージ群が終了したか否かを判断し、データ同期位置を更新した後、書き込みキューを循環読み取りする。
ステップS916において、バックアップクラスタデータ同期モジュール810のSQL再生スレッドが、SQL再生ファイルを解析し、2つの同期クロック間のトランザクションステートメントブロックを解析して行単位で分割し、具体的な方法については実施例7に記載のSQL行並列処理(parallel processing of SQL statement lines)のプロセスを参照することができる。ステートメントブロックの行並列による再生に成功した後、再生に異常が発生して回復する際に用いるように、データ再生の位置をファイルに永続化する。
ステップS918において、バックアップクラスタのデータ同期モジュール810のデータクリーニングスレッドが、保存時間を超えており且つ再生に成功したデータを定期的にクリーニングする。
上述のように、この方法によると、同期クロックモジュール82によって、クラスタ全体に統一されたクロックを提供して、データを統一にスライス処理する。一貫性フィルタモジュール88によって、スライスされたデータに対してグローバルな一貫性フィルタを行うとともに、災害復元指標RPO(復元点目標、すなわちシステムが最大にどの程度のデータを失うことを許容するか)とRTO(復元時間目標、すなわち、システムが災害発生から復元まで実行される時間)の要求及び業務のデータフィルタと抽出に対するニーズを考慮して、同期クロックモジュール82、グローバルトランザクション管理モジュール84、一貫性フィルタモジュール88、データ同期モジュール810をさまざまに配列すると、1都市マルチタスク、遠隔地災害復旧、データのサブスクリプション及びデータの抽出等のさまざまな業務の状況を効率的に満たすことができるとともに、分散型環境でのデータクラスタ間のグローバルな一貫性を確保し、遠隔地にあるクラスタが急速に業務を引き取ることができ、非常に特別なハイライト機能であり、分散データベースの金融分野、インターネット分野、教育分野等での普及のために良好な促進作用を果たす。
図10は本開示の実施例6に係るSQLステートメント分割パケット(splitting and encapsulating of SQL statements)を示す図である。
図10に示すように、同期クロックモジュール82は定期的にデータベースへ同期クロックSQLステートメントを送信する。対応するステートメントは最終的にデータベースログに置かれる。
データ同期モジュール810は、データベースからプッシュ通知されたログを受信した後、ログに対して解析を行い、同期クロックSQLステートメントを用いてアプリケーションSQLに対して分割を行い、具体的な方法としては、2つの同期クロックSQL間のすべてのSQLを1つのメッセージブロックと見なして、1つのステートメントブロックにパッケージングすることである。
ステートメントブロックをフィルタした後、パックし圧縮して、送信バッファキューに入れ、その後、送信スレッドによってバッファキューからSQLステートメントメッセージを取り出して相手側データ同期モジュール810へ送信する。
図11は本開示の実施例7に係るSQLステートメント行並列処理を示すフローチャートである。
図11に示すように、SQLステートメントブロックはデータ行によって、複数のトランザクションに分割され、具体的な方法は以下の通りである。
テーブル名と主キーに応じてデータ行を選択し、同一のデータ行のSQLは前後順で1つのトランザクションを構成し、異なるデータ行のSQLを異なるワーカースレッドに渡して処理させる。
ワーカースレッドは再生に成功するように1組のSQLステートメントを並列処理し、その後、次のSQLステートメントブロックを読み取る。
本実施例においてリアルタイムなグローバルな一貫性フィルタと最終的なグローバルな一貫性フィルタとの2種類のフィルタ方式の具体的なプロセスを説明する。
図12は本開示の実施例8に係るリアルタイムなグローバルな一貫性フィルタを示すフローチャートであり、以下にそのプロセスを説明する。
ステップS1202において、まず、同期テーブルから直近の記録を探す。
ステップS1204において、この記録から直近に同期させた際のグローバルなアクティブトランザクションリストを取得する。
ステップS1206において、グローバルなアクティブトランザクションIDを用いて、SQLステートメントブロックに対してフィルタを行う。
ステップS1208において、ステートメントブロックにおけるグローバルな提出済のSQLステートメントに対して、配置データ対象フィルタルールがあるか否かを判定し、あれば、ステップS1210を実行し、なければ送信キューを提出する。
ステップS1210において、フィルタルールに従って、係るSQLステートメントをフィルタして、送信キューを提出する。
ステップS1212において、グローバルな未提出のSQLステートメントに対して、バッファキューに格納する。
ステップS1214において、次の組のステートメントのフィルタを行う前に、まず、バッファキューにおけるSQLステートメントをステートメントブロックに合併する。
図13は本開示の実施例8に係る最終的なグローバルな一貫性フィルタを示すフローチャートであり、以下にそのプロセスを説明する。
ステップS1302において、マスタークラスタとバックアップクラスタとの切り替えを行う必要があると、バックアップクラスタが、すべてのデータノードの同期テーブルから直近の同期クロック記録を探し出す。
ステップS1304において、すべての直近の同期クロック記録を比較して、タイムスタンプの最も早い同期クロック記録時間(T0)を探し出して切り替えの一致点とする。
ステップS1306において、時刻T0よりも後に同期クロックメッセージを受信したすべてのデータノードを探し出す。
ステップS1308において、ログファイルを解析して、時刻T0へ戻るすべてのリバースSQLステートメントを生成し、SQLステートメントを実行して、ノードデータを時刻T0の同期クロックメッセージを受信した時刻にロールバックし、これにより、クラスタ内のすべてのノードのデータがいずれも1つの時点(時刻T0)に揃えられる。
ステップS1310において、同期クロックテーブルにおけるこの時点(T0)の現在のグローバルなアクティブトランザクションIDを用いて、バックアップクラスタデータノードのログファイルにおける対応するSQLステートメントをフィルタし、これらのステートメントは単一の点で提出されたが、グローバルではトランザクション未提出状態にある。これらのトランザクションはグローバルなアクティブ状態にある。
ステップS1312において、リバースSQLステートメントを生成して実行し、最終的に分散データベースバックアップクラスタがグローバルな一貫性の状態になる。
以下、実施例9乃至12において本開示の方法を異なる状況に適用した場合の具体的な処理プロセスを説明する。
この実施例において分散データベースの非同期データの同期高性能モード(すなわち、最終的なグローバルな一貫性態様)を説明する。
図14は本開示の実施例9に係る分散データベースクラスタのデータ同期高性能モードでのシステム構成を示す図である。
図14に示すように、この実施例において2つのクラスタシステムがあり、マスター分散データベースクラスタによりデータをバックアップクラスタに同期させ、2つのクラスタのネットワーク構成は一致する。データ同期中には一貫性フィルタを行わず、業務によるクラスタの切り替えが行われる時のみにグローバルな一貫性フィルタを1回行う。分散データベースの非同期データの同期高性能モードでの処理プロセスは以下のステップを含む。
1.同期クロックモジュール82は、データベースへ同期SQLステートメントを送信する。
2.データベースは、定期的にログファイルをデータ同期モジュール810にプッシュ通知する。
3.データ同期モジュール810は、データベースからプッシュ通知されたログを受信した後、ログに対して解析を行い、2つの同期SQL間のすべてのSQLを1つのメッセージブロックと見なして、1つのステートメントブロックにパッケージングする。SQLステートメントブロックをパックし圧縮した後、送信バッファキューに入れ、その後、送信スレッドによってバッファキューからSQLステートメントメッセージを取り出して相手側データ同期モジュール810へ送信する。
4.バックアップクラスタのデータ同期モジュール810は、メッセージパケットを受信した後、メッセージを受信リストに入れる。メッセージパケットのチェックを行った後、SQLステートメントブロックメッセージがSQL再生ファイルに永続化され、その後、SQL再生スレッドによってSQL再生ファイルを解析し、2つの同期メッセージ間のトランザクションステートメントブロックを解析して行単位で分割し、SQLステートメントを並列再生して、データ同期の目的を達成する。
5.一貫性フィルタモジュール88は、マスタークラスタとバックアップクラスタとの切り替えを行う必要がある場合のみオンされる。フィルタステップについては図13を参照することができる。
この実施例は災害復旧システムにおいてRPO指標に対する要求が高い場合に適用され、データが効率的に相手側のクラスタに伝送されて永続化されることができ、RPOができるだけ小さくなるように確保する。
この実施例において分散データベースクラスタのデータ同期高性能モード(すなわち、リアルタイムなグローバルな一貫性態様)を説明する。
図15は本開示の実施例10に係る分散データベースクラスタのデータ同期高性能モードでのシステム構成を示す図である。
図15に示すように、この実施例において2つのデータベースクラスタシステムがあり、マスターデータベースクラスタによりデータをバックアップクラスタに同期させ、2つのクラスタのネットワーク構成は一致する。データ同期中には一貫性フィルタを行い、これにより、バックアップクラスタに同期されたデータが常に一貫状態にある。分散データベースクラスタのデータ同期高性能モードでの処理プロセスは以下のステップを含む。
1.同期クロックモジュール82が、データベースへ同期SQLステートメントを送信する。
2.データベースは、定期的にログファイルをデータ同期モジュール810にプッシュ通知する。
3.データ同期モジュール810は、データベースからプッシュ通知されたログを受信した後、ログに対して解析を行い、2つの同期SQL間のすべてのSQLを1つのメッセージブロックと見なして、1つのステートメントブロックにパッケージングする。
4.一貫性フィルタモジュール88は、グローバルなアクティブトランザクションIDを用いて、このステートメントブロックにおけるグローバルトランザクション提出済状態にあるステートメントをフィルタし、具体的なプロセスについては図12を参照することができる。
5.グローバルトランザクション提出済のSQLステートメントブロックをパックし圧縮した後、送信バッファキュー中に入れ、その後、送信スレッドによってバッファキューからSQLステートメントメッセージを取り出して相手側データ同期モジュール810へ送信する。
6.バックアップクラスタのデータ同期モジュール810は、メッセージパケットを受信した後、メッセージを受信リストに入れる。メッセージパケットのチェックを行った後、SQLステートメントブロックメッセージがSQL再生ファイルに永続化され、その後、SQL再生スレッドによってSQL再生ファイルを解析し、2つの同期メッセージ間のトランザクションステートメントブロックを解析して行単位で分割し、SQLステートメントを並列再生して、データ同期の目的を達成する。毎回同期されるSQLステートメントブロックはいずれもグローバルで一貫するので、バックアップクラスタデータベース内のデータが常にグローバルな一貫性の状態にある。
この実施例は、災害復旧システムにおいてRTO指標に対する要求が高い場合に適用される。業務はいつでも相手側の分散データベースクラスタを引き取ることができ、RTOはゼロであることができる。
この実施例において分散データベースに基づいて増分データをサブスクリプションする場合のデータ同期(準リアルタイムなバックアップ)を説明する。
図16は本開示の実施例11に係る分散データベースを準リアルタイムにバックアップするシステムの構成を示す図である。
図16に示すように、この実施例において2つのデータベースクラスタがあり、その中の遠隔データベースクラスタをサブスクリプション業務システムクラスタのデータベースクラスタとし、2つのクラスタのネットワーク構成は一致しないこともできる。分散データベースに基づいて増分データをサブスクリプションする場合の準リアルタイムなバックアッププロセスは以下のステップを含む。
1.同期クロックモジュール82は、定期的にデータベースへ同期SQLステートメントを送信する。
2.データベースは、定期的にログファイルをデータ同期モジュール810にプッシュ通知する。
3.データ同期モジュール810は、データベースからプッシュ通知されたログを受信した後、ログに対して解析を行い、2つの同期SQL間のすべてのSQLを1つのメッセージブロックと見なして、1つのステートメントブロックにパッケージングする。
4.一貫性フィルタモジュール88は、グローバルなアクティブトランザクションIDを用いて、このステートメントブロックにおけるグローバルなアクティブSQLステートメントをアクティブステートメントキューにバッファし、次のステートメントブロックのフィルタを行う時に、ステートメントブロックに合併する。このようにフィルタされたSQLステートメントはいずれもグローバルトランザクション提出済状態のステートメントである。その後、サブスクリプションルールに従って、係るデータ対象(データベース、テーブル)にフィルタを行う。
5.フィルタ後のグローバルトランザクション提出済のSQLステートメントブロックに対して、パックし圧縮した後、送信バッファキューに入れ、その後、送信スレッドによってバッファキューからSQLステートメントメッセージを取り出して相手側データ同期モジュール810へ送信する。
6.遠隔クラスタのデータ同期モジュール810は、メッセージパケットを受信した後、メッセージを受信リストに入れる。メッセージパケットのチェックを行った後、SQLステートメントブロックメッセージがSQL再生ファイルに永続化され、その後、SQL再生スレッドによってSQL再生ファイルを解析し、2つの同期メッセージ間のトランザクションステートメントブロックを解析して行単位で分割し、クラスタのネットワーク構成状況に応じて、SQLステートメントを並列再生して、準リアルタイムにデータをバックアップする目的を実現する。
この実施例において分散データベースの増分データに基づくデータ同期(データ抽出)を説明する。
図17は本開示の実施例12に係る分散データベースの増分データに基づくデータ抽出を示すシステム構成を示す図である。
図17に示すように、この実施例においてデータを発生するためのオンライントランザクション処理システム(OLTP)と主にデータ分析業務を行うオンライン分析システム(OLAP)やデータウェアハウスシステム(BI)との2種類の業務システムがあり、図面においてはデータをオンラインで分析するビッグデータプラットフォーム(例えば、Hadoopに基づくデータウェアハウス工具Hive、構造化データを処理するための汎用のクラスタ計算フレームワーク(Spark)素子Spark SQL、Hadoopの分散ファイルシステム(Hadoop Distribute File System、HDFSと略称)等を含む)を例にする。
OLTPシステムは、ビッグデータプラットフォームが分析して発掘するように、データをビッグデータプラットフォームに導入する。分散データベース増分データに基づくデータ抽出は以下のステップを含む。
1.同期クロックモジュール82は、定期的にデータベースへ同期SQLステートメントを送信する。
2.OLTPタイプ業務データベースクラスタは、定期的にログファイルをデータ同期モジュール810にプッシュ通知する。
3.データ同期モジュール810は、データベースからプッシュ通知されたログを受信した後、ログに対して解析を行い、2つの同期SQL間のすべてのSQLを1つのメッセージブロックと見なして、1つのステートメントブロックにパッケージングする。
4.一貫性フィルタモジュール88は、グローバルなアクティブトランザクションIDを用いて、このステートメントブロックにおけるグローバルなアクティブSQLステートメントをアクティブステートメントキューにバッファし、次のステートメントブロックのフィルタを行う時にステートメントブロックに合併する。このようにフィルタされたSQLステートメントはいずれもグローバルトランザクション提出済状態のステートメントである。その後、データ抽出ルールに従って、係るデータ対象(データベース、テーブル)にフィルタを行う。
5.抽出された後のグローバルトランザクション提出済のSQLステートメントブロックをパックし圧縮した後、送信バッファキューに入れ、その後、送信スレッドによってバッファキューからSQLステートメントメッセージを取り出してビッグデータプラットフォーム側のデータ同期モジュール810へ送信する。
6.ビッグデータプラットフォーム側のデータ同期モジュール810は、メッセージパケットを受信した後、メッセージを受信リストに入れる。メッセージパケットのチェックを行った後、SQLステートメントブロックメッセージがSQL再生ファイルに永続化され、その後、SQL再生スレッドによってSQL再生ファイルを解析し、2つの同期メッセージ間のトランザクションステートメントブロックを解析して行単位で分割し、ビッグデータプラットフォームのデータ計算レイヤに並列再生して、計算レイヤによってSQL計算を行って、データ計算結果をビッグデータプラットフォームの記憶システムに更新する。
上述のように、本開示による分散データベースクラスタシステムとデータ同期方法によると、分散データベースクラスタの教育、金融、政府及び企業、インターネットなどの分野での応用を拡張し、システム資源の投入を節約し、システムの性能を向上させ、データの一貫性を確保し、ユーザの使用体験を向上させることができる。分散データベースの普及のために良好な模範的な役割を果たすことになる。
上述した本開示の各モジュール又は各ステップを汎用の計算装置によって実現することができ、1つの計算装置に集中させることができ、又は複数の計算装置からなるネットワークに分布させることもでき、また、計算装置が実行可能なプログラムコードによって実現してそれを記憶装置に記憶して計算装置に実行させることもでき、場合によって、図示又は説明したステップをここに示す順とは異なる順で実行することもでき、又はそれぞれ集積回路モジュールに制作し、又はその中の複数のモジュール又はステップを1つの集積回路モジュールとすることができることを当業者は理解できる。このように、本開示は特定のハードウェアとソフトウェアとの組合せに限定されない。
以上は、本開示の好適な実施例に過ぎず、本開示を限定するものではなく、当業者であれば本開示にさまざまな修正や変形が可能である。本開示の原則内でのすべての修正、同等置換、改良などはいずれも本開示の保護範囲内に含まれる。
本発明は、分散データベース分野に関し、特に、分散データベースクラスタシステム、データ同期方法及び記憶媒体に関する。
近年、例えばMySQL(SQLはStructured Query Language、すなわち、構造化問合せ言語を表す)等のオープンソースデータベース製品を注目し利用する組織が増えている。業務及び技術の発展に伴い、データベース技術もクラスタ化へ発展している。クラスタ間のデータ同期技術は災害復旧の基礎技術として、2つのデータセンター間の効率的で一貫性のあるデータ同期方法の研究は重要で深遠な意義を持つ。
現在、分散データベース分野において、データクラスタ間のデータ同期は、主に、ポイントツーポイントのデータ移行に依頼する。しかし、サーバーやネットワークの差異等のさまざまな要因によって、クラスタ間の異なるデータノードによって同期されたデータが
時点でのグローバルな一貫性を実現することができないおそれがある。例えば、マスタークラスタ内のAとBとの2つのデータノードがデータをバックアップクラスタ内のA’とB’との2つのデータノードに同期させ、ある時刻において、A’はAの時刻T0でのデータに同期したが、B’はBの時刻T1でのデータに同期した。
この時に切り替えが行われると、業務をバックアップクラスタに移行しなければならないが、バックアップクラスタのデータがグローバルな一貫を保っていないので、業務を直ちにバックアップクラスタに切り替えることができない。そして、基準となる時点又はクロックがないので、業務データを一貫する時点に復元させることもできない。
マスターデータベースクラスタとバックアップデータベースクラスタとの間の切り替え状況以外に、例えば増分データのサブスクリプション、増分データの抽出を含むが、これらに限定されてはいないデータ同期に係る他の状況においても、クラスタ間の異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題がある。
本開示の実施例によると、少なくとも既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決する分散データベースクラスタシステム、データ同期方法及び記憶媒体を提供する。
本開示の一実施例によると、第1の同期クロックモジュールと、第1のデータ同期モジュールと、それぞれ1つの第1のマスターデータベースを含む複数の第1のデータベース群とを含み、前記第1の同期クロックモジュールは、クロック同期命令を定期的に送信するように構成され、前記第1のデータ同期モジュールは、各第1のマスターデータベースにおいて前記第1の同期クロックモジュールから送信された隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして前記第1の操作命令ブロックを送信するように構成される分散データベースクラスタシステムを提供する。
本開示の他の実施例によると、相手側の分散データベースクラスタシステムから送信された操作命令ブロックを受信し、受信した前記操作命令ブロックにおけるデータベース操作命令を実行するように構成される第2のデータ同期モジュールと、それぞれ1つの第2のマスターデータベースを含む複数の第2のデータベース群と、を含み、前記操作命令ブロックは第1の操作命令ブロック又は第2の操作命令ブロックを含み、前記第1の操作命令ブロックには、前記相手側の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がパッケージングされており、前記第2の操作命令ブロックには、前記相手側の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令のうち、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含むフィルタ条件を満たすデータベース操作命令がパッケージングされている分散データベースクラスタシステムを提供する。
本開示の他の一実施例によると、それぞれ1つの第1のマスターデータベースを含む複数の第1のデータベース群を含む第1の分散データベースクラスタシステムに適用されるデータ同期方法であって、前記第1の分散データベースクラスタシステムが、クロック同期命令を定期的に送信することと、前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングして前記第1の操作命令ブロックを送信することと、を含むデータ同期方法を提供する。
本開示の他の一実施例によると、それぞれ1つの第2のマスターデータベースを含む複数の第2のデータベース群を含む第2の分散データベースクラスタシステムに適用されるデータ同期方法であって、前記第2の分散データベースクラスタシステムが、第1の分散データベースクラスタシステムから送信された操作命令ブロックであって、前記第1の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がパッケージングされた第1の操作命令ブロック、又は前記第1の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令のうち、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含むフィルタ条件を満たすデータベース操作命令がパッケージングされた第2の操作命令ブロックを含む操作命令ブロックを受信することと、前記第2の分散データベースクラスタシステムが、受信した前記操作命令ブロックにおけるデータベース操作命令を実行することと、を含むデータ同期方法を提供する。
本開示の他の一実施例によると、コンピュータープログラムが記憶された記憶媒体であって、前記コンピュータープログラムは、実行されると、上述したいずれかの方法実施例におけるのステップを実行するように構成される記憶媒体を提供する。
本開示の他の一実施例によると、メモリとプロセッサとを含む電子機器であって、前記メモリにコンピュータープログラムが記憶され、前記プロセッサは前記コンピュータープログラムを実行することで上述したいずれかの方法実施例におけるステップを実行するように構成される電子機器を提供する。
本開示によると、分散データベースクラスタシステムの内部でクロック同期命令を定期的に送信し、データ同期中に、各マスターデータベースに記録された操作命令に対して、いずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして送信することで、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保して、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保することができる。
ここで説明する図面は本開示を一層理解させるためのもので、本願の一部を構成し、本開示に示す実施例及びその説明は本開示を解釈するものであり、本開示を不当に限定するものではない。
本開示の実施例1に係る分散データベースクラスタシステムの構成を示す図である。 本開示の実施例1に係る分散データベースクラスタシステムの第1の好適な構成を示す図である。 本開示の実施例1に係る分散データベースクラスタシステムの第2の好適な構成を示す図である。 本開示の実施例2に係る分散データベースクラスタシステムの構成を示す図である。 本開示の実施例2に係る分散データベースクラスタシステムの好適な構成を示す図である。 本開示の実施例3に係るデータ同期方法を示すフローチャートである。 本開示の実施例4に係るデータ同期方法を示すフローチャートである。 本開示の実施例5に係るグローバルな一貫性を確保する分散データベースデータ同期装置の構成を示す図である。 本開示の実施例5に係るデータ同期方法の詳細な作業フローチャートである。 本開示の実施例6に係るSQLステートメント分割パケットを示す図である。 本開示の実施例7に係るSQLステートメント行並列処理を示すフローチャートである。 本開示の実施例8に係るリアルタイムなグローバルな一貫性フィルタを示すフローチャートである。 本開示の実施例8に係る最終的なグローバルな一貫性フィルタを示すフローチャートである。 本開示の実施例9に係る分散データベースクラスタのデータ同期高性能モードでのシステム構成を示す図である。 本開示の実施例10に係る分散データベースクラスタのデータ同期高性能モードでのシステム構成を示す図である。 本開示の実施例11に係る分散データベースを準リアルタイムにバックアップするシステム構成を示す図である。 本開示の実施例12に係る分散データベースの増分データに基づくデータ抽出を示すシステム構成を示す図である。
分散データベースクラスタシステムは複数のデータベース群からなり、各データベース群は複数の独立したデータベースノードからなり、群内のデータベースノードのデータは完全に一致し、群内のデータベースノードにおいて、1つのノードのみが外部向けに書き込みサービスを提供してマスターデータベースと呼ばれ、他のデータノードはデータベース間のコピー技術によって、データをローカルに同期させ、バックアップデータベースと呼ばれる。外部向けにデータサービスの形でアプリケーションにデータベース機能を提供し、アプリケーションに、例えばSQLインタフェース等の統一した標準インタフェースを提供する。
例えばデータクラスタ間のデータ同期、増分データのサブスクリプション、増分データの抽出などの分散データベースクラスタシステム間の同期について、既存技術におけるデータ同期態様によると、グローバルな一貫性を提供できない問題や欠陥が存在する場合が多い。
上記問題について、本開示において分散データベースクラスタシステム、データ同期方法及び記憶媒体を提供する。以下、図面を参照しつつ実施例とともに本開示を詳しく説明する。なお、矛盾しない限り、本願の実施例及び実施例の特徴を互いに組み合わせることができる。
なお、本開示の明細書、特許請求の範囲及び上記図面における「第1」、「第2」等の用語は、特定の順又は前後順を限定するものではなく、類似する対象を区別するためものである。
この実施例において分散データベースクラスタシステムを提供する。図1は本開示の実施例1に係る分散データベースクラスタシステムの構成を示す図である。
図1に示すように、この分散データベースクラスタシステムは、第1の同期クロックモジュール12と、第1のデータ同期モジュール14と、複数の第1のデータベース群16と、を含むことができる。ここで、前記複数の第1のデータベース群16のうちの各第1のデータベース群16は1つの第1のマスターデータベース(未図示)を含む。
前記第1の同期クロックモジュール12は、クロック同期命令を定期的に送信するように構成される。
前記第1のデータ同期モジュール14は、各第1のマスターデータベースにおいて前記第1の同期クロックモジュール12から送信された隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングし、前記第1の操作命令ブロックを送信するように構成される。
上記技術案によると、分散データベースクラスタシステムにおいて第1の同期クロックモジュール12がクロック同期命令を定期的に送信し、第1のデータ同期モジュール14はデータ同期中に、各マスターデータベースに記録された操作命令に対して、いずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして送信することで、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保して、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保することができる。
第1のデータ同期モジュール14が、如何に、各第1のマスターデータベースにおいて前記第1の同期クロックモジュール12から送信された隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がどのような命令であるかを特定して、また、第1の操作命令ブロックにパッケージングするかについて、分散データベースクラスタシステムの内部には、このような目的を実現できる態様が多くある。以下、簡単に実現でき且つ既存の分散データベースクラスタシステムの処理モードを多く変動させる必要がない実施形態を説明する。
例示的な実施形態として、前記第1の同期クロックモジュール12は、定期的に各第1のマスターデータベースへ前記クロック同期命令を送信するように構成される。前記第1のマスターデータベースは、受信したデータベース操作命令を前記第1のマスターデータベースのログファイルに書き込み、受信した前記クロック同期命令を前記ログファイルに書き込むように構成される。前記第1のデータ同期モジュール14は、各第1のマスターデータベースの前記ログファイルをそれぞれ取得し、前記ログファイルにおいて隣接する2つのクロック同期命令の間に介在されたデータベース操作命令を前記第1の操作命令ブロックにパッケージングし、前記第1の操作命令ブロックを送信するように構成される。
このように、このような態様によると、マスターデータベースにおいて受信したクロック同期命令と普通のデータベース操作命令とをいずれも正常にログファイルに書き込み、前記第1のデータ同期モジュール14はログファイルを読み取って、ログにおけるクロック同期命令に基づいてデータベース操作命令を分割し、隣接する2つのクロック同期命令の間に介在されたデータベース操作命令を前記第1の操作命令ブロックにパッケージングする。マスターデータベースによるログ記録の便宜を図るため、常用のデータベース操作ステートメントを用いてクロック同期命令を生成してもよく、これにより、マスターデータベースがこのクロック同期命令を普通のデータベース操作ステートメントと一緒にログファイルに簡単に書き込むことができる。
現在の分散データベースクラスタシステムの場合、相対的に好適なデータベース操作ステートメントはSQLであり、すなわち、同期クロックSQLステートメントをクロック同期命令として用いることができ、データベース操作命令もSQLステートメントを用いることができる。
上述のように、本実施例における技術案によると、各マスターデータベースに記録された操作命令に対して、いずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして送信することで、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保し、データベースの操作命令の記録方面でグローバルな一貫性を実現する。
データベースクラスタにおいて、処理タスクの分散が比較的に均一である場合、又は処理リソースの帯域幅が十分である場合、各操作命令の実行時間長が非常に小さく、且つ比較的に均一に分散されており、この時、データベース実行方面でも基本的にグローバルな一貫性を実現できる。実際の分散データベースクラスタシステムにおいてデータベースクラスタに処理タスクの分散が均一でないか、又は処理リソースの帯域幅が小さい場合もあることを考慮すると、この時、同一のデータベースクラスタにて異なる処理タスクの実行状態の差異がある可能性がある。
そこで、この時、以下のような2つの処理方式(最終的なグローバルな一貫性とリアルタイムなグローバルな一貫性)のうちの少なくとも1つによってデータベース実行方面のグローバルな一貫性を確保することができる。
<最終的なグローバルな一貫性態様>
この態様において、前記第1のデータ同期モジュール14は、前記第1の操作命令ブロックを相手側の分散データベースクラスタシステムに送信するように構成される。この時、相手側の分散データベースクラスタシステムに送信する第1の操作命令ブロックは、マスターデータベースにおいて記録された、隣接する2つのクロック同期命令の間のデータベース操作命令であり、これらのデータベース操作命令に対しては一貫性フィルタを行わない。相手側の分散データベースクラスタシステムのデータ同期モジュールは、それを正常に相手側の分散データベースクラスタシステムの対応するマスターデータベースに同期させる。しかし、相手側の分散データベースクラスタシステムは、業務によるクラスタの切り替えが行われる時にグローバルな一貫性フィルタを行う。
この実施例は、災害復旧システムにおいてRPO指標に対する要求が高い場合に適用され、データが効率的に相手側のクラスタに伝送されて永続化されることができ、RPOができるだけ小さくなるように確保する。この処理方式によって、業務によるクラスタの切り替えが行われる時に同期受信側でグローバルな一貫性フィルタを行う具体的な実施形態について、は実施例8を参照することができる。
<リアルタイムなグローバルな一貫性態様>
このリアルタイムなグローバルな一貫性態様によると、分散データベースクラスタシステムに第1の一貫性フィルタモジュール22が追加される。図2は本開示の実施例1に係る分散データベースクラスタシステムの第1の好適な構成を示す図である。
図2に示すように、この分散データベースクラスタシステムは、第1の一貫性フィルタモジュール22をさらに含む。
前記第1のデータ同期モジュール14は、前記第1の操作命令ブロックを前記第1の一貫性フィルタモジュール22に送信するように構成される。前記第1の一貫性フィルタモジュール22は、前記第1のデータ同期モジュール14から送信された前記第1の操作命令ブロックを受信し、前記第1の操作命令ブロックにグローバルな一貫性フィルタを行い、前記第1の操作命令ブロックにおける、フィルタ条件を満たすデータベース操作命令を第2の操作命令ブロックにパッケージングし、前記第2の操作命令ブロックを相手側の分散データベースクラスタシステムに送信するように構成される。
ここで、前記フィルタ条件は前記データベース操作命令がグローバルトランザクション提出済状態にあることを含む。この態様によると、第1の操作命令ブロックから実行がまだ終了されていない(すなわち、グローバルトランザクション未提出状態にある)データベース操作命令を除去し、実行が終了されたデータベース操作命令のみを保留して第2の操作命令ブロックにパッケージングして相手側の分散データベースクラスタシステムに送信し、これにより、相手側の分散データベースクラスタシステムにおいて同期したのは、現在の分散データベースクラスタシステムにおいて実行が終了されたデータであり、これにより、バックアップクラスタに同期されたデータが常に一貫状態となる。
この実施例は、災害復旧システムにおいてRTO指標に対する要求が高い場合に適用される。業務はいつでも相手側の分散データベースクラスタを引き取ることができ、RTOはゼロであることができる。この処理方式によって、同期開始側でリアルタイムにグローバルな一貫性フィルタを行う具体的な実施形態については、実施例8を参照することができる。
増分データのサブスクリプション、増分データの抽出において、相手側の分散データベースクラスタシステムが受信したデータを選別する必要があり、特定の条件を満たすデータ対象(データベース、テーブル等)のみを相手側の分散データベースクラスタシステムに送信する必要があることを考慮すると、この時、このフィルタタスクをも前記第1の一貫性フィルタモジュール22に渡すことができる。フィルタ条件を追加することができ、例えば前記フィルタ条件は、前記データベース操作命令が、前記相手側の分散データベースクラスタシステムに対応するデータ対象フィルタルールに該当することをさらに含むことができる。
実行がまだ終了されていない(すなわち、グローバルトランザクション未提出状態にある)データベース操作命令に対して、前記第1の一貫性フィルタモジュール22は、さらに、前記第1の操作命令ブロックにおけるグローバルトランザクション未提出状態にあるデータベース操作命令をバッファし、また、次回に前記第1のデータ同期モジュール14から送信された、現在の第1のマスターデータベースに対応する前記第1の操作命令ブロックを受信すると、バッファした前記データベース操作命令を前記第1の操作命令ブロックに付加してから前記第1の操作命令ブロックに対してグローバルな一貫性フィルタを行う。
分散データベースクラスタシステムの内部で簡単にグローバルなトランザクション管理を行うことで、第1の一貫性フィルタモジュール22が、簡単にデータベース操作命令が現在グローバルトランザクション提出済状態にあるかそれとも未提出状態にあるかを判断するために、分散データベースクラスタシステムを改善してもよい。
図3は本開示の実施例1に係る分散データベースクラスタシステムの第2の好適な構成を示す図である。
図3に示すように、この分散データベースクラスタシステムはグローバルトランザクション管理モジュール32をさらに含み、前記グローバルトランザクション管理モジュール32はグローバルトランザクションを一意に識別可能なグローバルトランザクション識別IDを管理し、各グローバルトランザクションの状態とライフサイクルを記録するように構成される。
前記第1の同期クロックモジュール12は、各第1のマスターデータベースの現在のアクティブトランザクションリストを定期的に要求し、前記現在のアクティブトランザクションリストと前記現在のアクティブトランザクションリストを取得したタイムスタンプとを前記第1のマスターデータベースに対応する同期テーブルに記録し、前記タイムスタンプ及び前記現在のアクティブトランザクションリストの情報を、前記第1のマスターデータベースへ送信する前記クロック同期命令に載せるように構成される。
前記第1の一貫性フィルタモジュール22は、現在の第1のマスターデータベースに対応する前記同期テーブルにおける直近に記録された前記現在のアクティブトランザクションリストを調べ、直近に記録された前記現在のアクティブトランザクションリストにおけるグローバルトランザクションIDに対応するデータベース操作命令を取り除き、残りのデータベース操作命令をグローバルトランザクション提出済状態にあるフィルタ条件を満たすデータベース操作命令として前記第2の操作命令ブロックにパッケージングする。
好適な実施形態として、データ同期処理を行う前に、相手側の分散データベースクラスタシステムの現在の分散データベースクラスタシステムとの同期位置を取得してもよい。この時、前記第1のデータ同期モジュール14は、さらに、相手側の分散データベースクラスタシステムからの同期位置要求情報を受信し(ここで、前記同期位置要求情報に前記分散データベースクラスタシステムと前記相手側の分散データベースクラスタシステムと間の同期位置が載せられている)、また、前記同期位置要求情報に載せられた前記同期位置に基づいて、各第1のマスターデータベースに記録されたデータベース操作命令に対するパッケージングを実行するように構成される。
以上は分散データベースクラスタシステムがデータ同期の送信側である場合に各モジュールによって実行される機能を説明した。なお、分散データベースクラスタシステムは実際の応用においてその役柄がよく変更される必要があり、例えば分散データベースクラスタシステムが当時はマスター分散データベースクラスタシステムである可能性があり、この場合には、データ同期の送信側となる必要がある。しかし、故障した後、分散データベースクラスタシステムがバックアップ分散データベースクラスタシステムになってしまう可能性があり、この時、データ同期の受信側であるので、好適な実施形態として、分散データベースクラスタシステムの各モジュールはさらに以下の機能を有する。
データ同期の受信側として、送信側からのデータ同期パケットを受信して、同期パケットの内容を実行してデータ同期を完成しなければならないが、この時、前記第1のデータ同期モジュール14は、さらに、相手側の分散データベースクラスタシステムから送信された操作命令ブロックを受信し(ここで、前記操作命令ブロックは第1の操作命令ブロック又は第2の操作命令ブロックを含む)、また、受信した前記操作命令ブロックにおけるデータベース操作命令を実行するように構成される。
例示的な実施形態として、前記第1のデータ同期モジュール14は、
前記操作命令ブロックにおける前記データベース操作命令を再生ファイルに永続化し、
前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行う方式で、
受信した前記操作命令ブロックにおける前記データベース操作命令を実行するように構成される。
例示的な実施形態として、前記第1のデータ同期モジュール14は、
テーブル名と主キーに応じて、前記操作命令ブロックにおける前記データベース操作命令を異なるデータ行に分割し、同一のデータ行の前記データベース操作命令は前後順で1つのトランザクションを構成し、
異なるトランザクションの前記データベース操作命令を異なるワーカースレッドに配置して処理を行う方式で、
前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行う。
再生に失敗した時にタスクに応答するために、例示的な実施形態として、前記第1のデータ同期モジュール14は、さらに、受信した前記操作命令ブロックにおける前記データベース操作命令の実行に成功した後、データベース操作命令の実行に成功した位置をファイルに永続化するように構成される。
上述の最終的なグローバルな一貫性態様に記載されたように、相手側の分散データベースクラスタシステムは、業務によるクラスタ切り替えが行われる時にグローバルな一貫性フィルタを1回行う。前記分散データベースクラスタシステムを前記相手側の分散データベースクラスタシステムのバックアップ分散データベースクラスタシステムとする場合もあることを考慮すると、前記第1のデータ同期モジュール14は、前記分散データベースクラスタシステムを前記相手側の分散データベースクラスタシステムの代わりにマスター分散データベースクラスタシステムとする必要がある場合に、第1の一貫性フィルタモジュール22を呼び出すように構成されてもよい。
この例示的な実施形態において、前記第1の一貫性フィルタモジュール22は、 各第1のマスターデータベースに対応する同期テーブルを取得し、前記同期テーブルに基づいて各第1のマスターデータベースの直近に同期されたタイムスタンプを特定し、その中の最も早いタイムスタンプを切り替え基準時点として特定し、 直近に同期されたタイムスタンプが前記切り替え基準時点よりも遅い各第1のマスターデータベースに対しては、前記第1のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第1のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される。
例示的な実施形態として、前記第1の一貫性フィルタモジュール22は、
前記切り替え基準時点よりも後のデータベース操作命令に対して、リバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行し、
前記切り替え基準時点でグローバルトランザクション未提出状態にあるデータベース操作命令に対してリバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行する方式で、
前記第1のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第1のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される。
この実施例において他の分散データベースクラスタシステムを提供する。この分散データベースクラスタシステムをデータ同期の受信側とすることができ、もちろん、データ同期の送信側の機能も同時に与えられた場合にはデータ同期の送信側とすることもでき、この時、実施例1を参照することができる。
図4は本開示の実施例2に係る分散データベースクラスタシステムの構成を示す図である。
図4に示すように、この分散データベースクラスタシステムは、第2のデータ同期モジュール42と、複数の第2のデータベース群44とを含むことができる。ここで、前記複数の第2のデータベース群44のうちの各第2のデータベース群44は1つの第2のマスターデータベース(未図示)を含む。
前記第2のデータ同期モジュール42は、相手側の分散データベースクラスタシステムから送信された操作命令ブロックを受信し、
また、受信した前記操作命令ブロックにおけるデータベース操作命令を実行するように構成される。
ここで、前記操作命令ブロックは第1の操作命令ブロック又は第2の操作命令ブロックを含み、前記第1の操作命令ブロックには前記相手側の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がパッケージングされており、前記第2の操作命令ブロックには前記相手側の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令のうち、フィルタ条件を満たすデータベース操作命令がパッケージングされている。ここで、前記フィルタ条件は、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含む。
上記技術案によると、データ同期の受信側としての分散データベースクラスタシステムが前記第2のデータ同期モジュール42を介して、データ同期の送信側の分散データベースクラスタシステムからの操作命令ブロックに応じて実行することで、データ同期プロセスを完成することができる。
送信された操作命令ブロックにおいて、第1の分散データベースクラスタシステムにおける各マスターデータベースに記録された操作命令に載せられたのがいずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令であるので、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保して、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保することができる。
例示的な実施形態として、前記第2のデータ同期モジュール42は、
前記操作命令ブロックにおける前記データベース操作命令を再生ファイルに永続化し、
前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行う方式で、
受信した前記操作命令ブロックにおける前記データベース操作命令を実行するように構成される。
例示的な実施形態として、前記第2のデータ同期モジュール42は、
テーブル名と主キーに応じて、前記操作命令ブロックにおける前記データベース操作命令を異なるデータ行に分割し、同一のデータ行の前記データベース操作命令は前後順で1つのトランザクションを構成し、
異なるトランザクションの前記データベース操作命令を異なるワーカースレッドに配置して処理を行う方式で、
前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行うように構成される。
再生に失敗した時にタスクに応答するために、例示的な実施形態として、前記第2のデータ同期モジュール42は、さらに、受信した前記操作命令ブロックにおける前記データベース操作命令の実行に成功した後、データベース操作命令の実行に成功した位置をファイルに永続化するように構成される。
図5は本開示の実施例2に係る分散データベースクラスタシステムの好適な構成を示す図である。
最終的なグローバルな一貫性態様に対して、この分散データベースクラスタシステムは、業務によるクラスタの切り替えが行われる時にグローバルな一貫性フィルタを1回行うことができる。前記分散データベースクラスタシステムをバックアップ分散データベースクラスタシステムとする場合もあることを考慮すると、図5に示すように、この分散データベースクラスタシステムは第2の一貫性フィルタモジュール52をさらに含むことができる。
前記第2のデータ同期モジュール42は、前記分散データベースクラスタシステムを前記相手側の分散データベースクラスタシステムの代わりにマスター分散データベースクラスタシステムとする必要がある場合、前記第2の一貫性フィルタモジュール52を呼び出すように構成される。
前記第2の一貫性フィルタモジュール52は、
各第2のマスターデータベースに対応する同期テーブルを取得し、前記同期テーブルに基づいて各第2のマスターデータベースの直近に同期されたタイムスタンプを特定し、その中の最も早いタイムスタンプを切り替え基準時点として特定し、
直近に同期されたタイムスタンプが前記切り替え基準時点よりも遅い各第2のマスターデータベースに対しては、前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される。
例示的な実施形態として、前記第2の一貫性フィルタモジュール52は、
前記切り替え基準時点よりも後のデータベース操作命令に対して、リバースデータベース操作命令を生成し、前記リバースデータベース操作命令を実行し、
前記切り替え基準時点でグローバルトランザクション未提出状態にあるデータベース操作命令に対してリバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行する方式で、
前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される。
本実施例においてデータ同期の送信側の処理プロセスを説明する。図6は本開示の実施例3に係るデータ同期方法を示すフローチャートである。
このデータ同期方法は、複数の第1のデータベース群16を含む第1の分散データベースクラスタシステムに応用される。ここで、前記複数の第1のデータベース群16のうちの各第1のデータベース群16は1つの第1のマスターデータベースを含む。
図6に示すように、前記方法は、
前記第1の分散データベースクラスタシステムが、クロック同期命令を定期的に送信するステップS602と、
前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングして、前記第1の操作命令ブロックを送信するステップS604とを含む。
上記技術案によると、第1の分散データベースクラスタシステムがクロック同期命令を定期的に送信し、データ同期中に、第1の分散データベースクラスタシステムの各マスターデータベースに記録された操作命令に対して、いずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして送信することで、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保して、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保することができる。
如何に、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がどのような命令であるかを特定して、また、第1の操作命令ブロックにパッケージングするかについて、第1の分散データベースクラスタシステムの内部には、このような目的を実現できる態様が多くある。以下、簡単に実現でき且つ既存の分散データベースクラスタシステムの処理モードを多く変動させる必要がない実施形態を説明する。
例示的な実施形態として、前記第1の分散データベースクラスタシステムが定期的に各第1のマスターデータベースに前記クロック同期命令を送信する。前記第1の分散データベースクラスタシステムが各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングする前に、前記方法は、前記第1のマスターデータベースが、受信したデータベース操作命令を前記第1のマスターデータベースのログファイルに書き込み、受信した前記クロック同期命令を前記ログファイルに書き込むことをさらに含む。
前記第1の分散データベースクラスタシステムが各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングすることは、前記第1の分散データベースクラスタシステムが各第1のマスターデータベースの前記ログファイルをそれぞれ取得し、前記ログファイルにおいて隣接する2つのクロック同期命令の間に介在されたデータベース操作命令を前記第1の操作命令ブロックにパッケージングすることを含む。
このように、このような方式によると、マスターデータベースが受信したクロック同期命令と普通のデータベース操作命令をすべて正常にログファイルに書き込み、前記第1の分散データベースクラスタシステムは、ログファイルを読み取って、ログにおけるクロック同期命令に応じて、データベース操作命令を分割し、隣接する2つのクロック同期命令の間に介在されたデータベース操作命令を前記第1の操作命令ブロックにパッケージングすることができる。マスターデータベースによるログ記録の便宜を図るため、常用のデータベース操作ステートメントを用いてクロック同期命令を生成すしてもよく、これにより、マスターデータベースがこのクロック同期命令を普通のデータベース操作ステートメントと一緒にログファイルに簡単に書き込むことができる。
現在の分散データベースクラスタシステムの場合、相対的に好適なデータベース操作ステートメントはSQLであり、すなわち、同期クロックSQLステートメントをクロック同期命令として用いることができ、データベース操作命令もSQLステートメントを用いることができる。
上述のように、本実施例における技術案によると、各マスターデータベースに記録された操作命令に対して、いずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして送信することで、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保し、データベースの操作命令記録方面でグローバルな一貫性を実現する。データベースクラスタにおいて、処理タスクの分散が比較的に均一である場合、又は処理リソースの帯域幅が十分である場合、各操作命令の実行時間長が非常に小さく、且つ比較的に均一に分散されており、この時、データベース実行方面でも基本的にグローバルな一貫性を実現できる。実際の分散データベースクラスタシステムにおいてデータベースクラスタに処理タスクの分散が均一でないか、又は処理リソースの帯域幅が小さい場合もあることを考慮すると、この時、同一のデータベースクラスタにて異なる処理タスクの実行状態の差異がある可能性がある。
そこで、この時、以下のような2つの処理方式(最終的なグローバルな一貫性とリアルタイムなグローバルな一貫性)のうちの少なくとも1つによってデータベース実行方面のグローバルな一貫性を確保することができる。
<最終的なグローバルな一貫性態様>
この態様において、前記第1の分散データベースクラスタシステムが前記第1の操作命令ブロックを第2の分散データベースクラスタシステムに送信する。この時、第2の分散データベースクラスタシステムに送信する第1の操作命令ブロックは、マスターデータベースにおいて記録された、隣接する2つのクロック同期命令の間のデータベース操作命令であり、これらのデータベース操作命令に対しては一貫性フィルタを行わない。
第2の分散データベースクラスタシステムのデータ同期モジュールは正常に、そのデータベース操作命令を第2の分散データベースクラスタシステムの対応するマスターデータベースに同期させる。しかし、第2の分散データベースクラスタシステムは業務によるクラスタの切り替えが行われる時にグローバルな一貫性フィルタを1回行う。
この実施例は災害復旧システムにおいてRPO指標に対する要求が高い場合に適用され、データが効率的に相手側のクラスタに伝送されて永続化されることができ、RPOができるだけ小さくなるように確保する。この処理方式によって、業務によるクラスタの切り替えが行われる時に同期受信側でグローバルな一貫性フィルタを行う具体的な実施形態については、実施例8を参照することができる。
<リアルタイムなグローバルな一貫性態様>
このリアルタイムなグローバルな一貫性態様によると、前記第1の分散データベースクラスタシステムが前記第1の操作命令ブロックに対してグローバルな一貫性フィルタを行って、前記第1の操作命令ブロックにおけるフィルタ条件を満たすデータベース操作命令を第2の操作命令ブロックにパッケージングして、前記第2の操作命令ブロックを第2の分散データベースクラスタシステムに送信する。
ここで、前記フィルタ条件は、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含む。この態様によると、第1の操作命令ブロックから実行がまだ終了されていない(すなわち、グローバルトランザクション未提出状態にある)データベース操作命令を除去し、実行が終了されたデータベース操作命令のみを保留して第2の操作命令ブロックにパッケージングして第2の分散データベースクラスタシステムに送信し、これにより、第2の分散データベースクラスタシステムにおいて同期したのは、現在の第1の分散データベースクラスタシステムにおいて実行が終了されたデータであり、これにより、バックアップクラスタに同期されたデータが常に一貫状態となる。
この実施例は、災害復旧システムにおいてRTO指標に対する要求が高い場合に適用される。業務はいつでも相手側の分散データベースクラスタを引き取ることができ、RTOはゼロであることができる。この処理方式によって、同期開始側でリアルタイムにグローバルな一貫性フィルタを行う具体的な実施形態については、実施例8を参照することができる。
増分データのサブスクリプション、増分データの抽出において第2の分散データベースクラスタシステムが受信したデータを選別する必要があることを考慮すると、特定の条件を満たすデータ対象(データベース、テーブル等)のみを第2の分散データベースクラスタシステムに送信する必要がある。したがって、フィルタ条件を追加することができ、例えば前記フィルタ条件は、前記データベース操作命令が、前記第2の分散データベースクラスタシステムに対応するデータ対象フィルタルールに該当することをさらに含むことができる。
実行がまだ終了されていない(すなわち、グローバルトランザクション未提出状態にある)データベース操作命令に対して、前記第1の分散データベースクラスタシステムは、前記第1の操作命令ブロックにおけるグローバルトランザクション未提出状態にあるデータベース操作命令をバッファし、また、バッファした前記データベース操作命令を現在の第1のマスターデータベースに対応する次の第1の操作命令ブロックに付加してから前記次の第1の操作命令ブロックに対してグローバルな一貫性フィルタを行う。
第1の分散データベースクラスタシステムの内部で簡単にグローバルなトランザクション管理を行うことで、第1の分散データベースクラスタシステムが、簡単にデータベース操作命令が現在グローバルトランザクション提出済状態にあるかそれとも未提出状態にあるかを判断するために、第1の分散データベースクラスタシステムを改善してもよい。前記第1の分散データベースクラスタシステムは、グローバルトランザクションを一意に識別可能なグローバルトランザクション識別IDを管理し、各グローバルトランザクションの状態とライフサイクルを記録する。
前記第1の分散データベースクラスタシステムは、各第1のマスターデータベースの現在のアクティブトランザクションリストを定期的に要求し、前記現在のアクティブトランザクションリストと前記現在のアクティブトランザクションリストを取得したタイムスタンプとを前記第1のマスターデータベースに対応する同期テーブルに記録し、前記タイムスタンプ及び前記現在のアクティブトランザクションリストの情報を、前記第1のマスターデータベースへ送信する前記クロック同期命令に載せる。
前記第1の分散データベースクラスタシステムが前記第1の操作命令ブロックに対してグローバルな一貫性フィルタを行い、前記第1の操作命令ブロックにおけるフィルタ条件を満たすデータベース操作命令を第2の操作命令ブロックにパッケージングすることは、前記第1の分散データベースクラスタシステムが、現在の第1のマスターデータベースに対応する前記同期テーブルにおける直近に記録された前記現在のアクティブトランザクションリストを調べ、直近に記録された前記現在のアクティブトランザクションリストにおけるグローバルトランザクションIDに対応するデータベース操作命令を取り除き、残りのデータベース操作命令をグローバルトランザクション提出済状態にあるフィルタ条件を満たすデータベース操作命令として前記第2の操作命令ブロックにパッケージングする。
好適な実施形態として、データ同期処理を行う前に、相手側の第2の分散データベースクラスタシステムの現在の第1の分散データベースクラスタシステムとの同期位置を取得することができる。前記第1の分散データベースクラスタシステムが各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングする前に、この方法は、前記第1の分散データベースクラスタシステムが、第2の分散データベースクラスタシステムからの同期位置要求情報を受信することをさらに含む。
ここで、前記同期位置要求情報には前記第1の分散データベースクラスタシステムと前記第2の分散データベースクラスタシステムとの同期位置が載せられている。
また、前記第1の分散データベースクラスタシステムが各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングすることは、前記第1の分散データベースクラスタシステムが、前記同期位置要求情報に載せられた前記同期位置に基づいて各第1のマスターデータベースに記録されたデータベース操作命令に対するパッケージングを実行することを含む。
本実施例において記憶媒体をさらに提供し、前記記憶媒体にはコンピュータープログラムが記憶され、前記コンピュータープログラムは実行されると本実施例に記載の方法を実現するように構成される。
本実施例においてデータ同期の受信側の処理プロセスを説明する。図7は本開示の実施例4に係るデータ同期方法を示すフローチャートである。
このデータ同期方法は、複数の第2のデータベース群44を含む第2の分散データベースクラスタシステムに適用されることができる。ここで、前記複数の第2のデータベース群44のうちの各第2のデータベース群44は1つの第2のマスターデータベースを含む。前記方法は、以下のステップS702、S704を含む。
ステップS702において、前記第2の分散データベースクラスタシステムが、第1の分散データベースクラスタシステムから送信された操作命令ブロックを受信する。ここで、前記操作命令ブロックは第1の操作命令ブロック又は第2の操作命令ブロックを含み、前記第1の操作命令ブロックには前記第1の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がパッケージングされており、前記第2の操作命令ブロックには前記第1の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令のうちのフィルタ条件を満たすデータベース操作命令がパッケージングされており、前記フィルタ条件は、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含む。
ステップS704において、前記第2の分散データベースクラスタシステムが、受信した前記操作命令ブロックにおけるデータベース操作命令を実行する。
上記技術案によると、データ同期の受信側としての第2の分散データベースクラスタシステムがデータ同期の開始側の第1の分散データベースクラスタシステムからの操作命令ブロックに応じて実行することで、データ同期プロセスを完成することができる。送信された操作命令ブロックにおいて、第1の分散データベースクラスタシステムにおける各マスターデータベースに記録された操作命令に載せられたのがいずれも隣接する2つのクロック同期命令の間に記録されたデータベース操作命令であるので、各マスターデータベースが、データ同期のベースとなるデータパケットがいずれも同一の時間基準点を有するように確保して、既存技術において異なるデータノードによって同期されたデータが時点でのグローバルな一貫性を実現できない問題を解決し、異なるデータノードによって同期されたデータの記録が同一の時間基準点に基づいて行われ、記録データでのグローバルな一貫性を確保することができる
例示的な実施形態として、前記第2の分散データベースクラスタシステムが受信した前記操作命令ブロックにおけるデータベース操作命令を実行することは、
前記第2の分散データベースクラスタシステムが、前記操作命令ブロックにおける前記データベース操作命令を再生ファイルに永続化することと、
前記第2の分散データベースクラスタシステムが、前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行うことと、を含むことができる。
例示的な実施形態として、前記第2の分散データベースクラスタシステムが前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行うことは、
前記第2の分散データベースクラスタシステムが、テーブル名と主キーに応じて、前記操作命令ブロックにおける前記データベース操作命令を異なるデータ行に分割し、同一のデータ行の前記データベース操作命令は前後順で1つのトランザクションを構成することと、
前記第2の分散データベースクラスタシステムが、異なるトランザクションの前記データベース操作命令を異なるワーカースレッドに配置して処理を行うことと、を含むことができる。
再生に失敗した時にタスクに応答するために、例示的な実施形態として、前記第2の分散データベースクラスタシステムが受信した前記操作命令ブロックにおける前記データベース操作命令の実行に成功した後、前記第2の分散データベースクラスタシステムが、データベース操作命令の実行に成功した位置をファイルに永続化することをさらに含む。
最終的なグローバルな一貫性態様に対して、この第2の分散データベースクラスタシステムは、業務によるクラスタの切り替えが行われる時にグローバルな一貫性フィルタを1回行うことができる。
前記第2の分散データベースクラスタシステムをバックアップ分散データベースクラスタシステムとし、前記第2の分散データベースクラスタシステムを前記第1の分散データベースクラスタシステムの代わりにマスター分散データベースクラスタシステムとする必要がある場合、前記方法は、
前記第2の分散データベースクラスタシステムが、各第2のマスターデータベースに対応する同期テーブルを取得し、前記同期テーブルに基づいて各第2のマスターデータベースの直近に同期されたタイムスタンプを特定し、その中の最も早いタイムスタンプを切り替え基準時点として特定することと、
直近に同期されたタイムスタンプが前記切り替え基準時点よりも遅い各第2のマスターデータベースに対しては、前記第2の分散データベースクラスタシステムが、前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させることと、をさらに含むことができる。
例示的な実施形態として、前記第2の分散データベースクラスタシステムが前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させることは、
前記第2の分散データベースクラスタシステムが、前記切り替え基準時点よりも後のデータベース操作命令に対して、リバースデータベース操作命令を生成し、前記リバースデータベース操作命令を実行することと、
前記第2の分散データベースクラスタシステムが、前記切り替え基準時点でグローバルトランザクション未提出状態にあるデータベース操作命令に対してリバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行することと、を含む。
本実施例において記憶媒体をさらに提供し、前記記憶媒体にはコンピュータープログラムが記憶され、前記コンピュータープログラムは実行されると本実施例に記載の方法を実現するように構成される。
本実施例においてグローバルな一貫性を確保する分散データベースデータ同期装置及び方法を説明する。図8は本開示の実施例5に係るグローバルな一貫性を確保する分散データベースデータ同期装置の構成を示す図である。
図8に示すように、本開示による前記グローバルな一貫性を確保する分散データベースデータ同期装置は、以下の同期クロックモジュール82、グローバルトランザクション管理モジュール84、管理モジュール86、一貫性フィルタモジュール88を含む。
分散データベースクラスタは、複数のデータベース群80からなり、各データベース群80は複数の独立したデータベースノードからなり、群内のデータベースノードのデータは完全に一致し、群内のデータベースノードにおいて、1つのノードのみが外部向けに書き込みサービスを提供してマスターデータベースと呼ばれ、他のデータノードはデータベース間のコピー技術によって、データをローカルに同期させ、バックアップデータベースと呼ばれる。外部向けにデータサービスの形でアプリケーションにデータベース機能を提供し、アプリケーションに、例えばSQLインタフェース等の統一した標準インタフェースを提供する。
同期クロックモジュール82は、定期的に分散データベース内の各マスターデータノードへSQLステートメントを送信するように構成され、載せられる情報としては、同期クロックモジュール82のタイムスタンプ及び現在のグローバルなアクティブトランザクションリストがある。
グローバルトランザクション管理モジュール84は、分散型環境でのグローバルで一意的なトランザクションIDを統合管理するように構成され、グローバルトランザクションIDは、1つのグローバルトランザクションを一意に識別し、同時に、各グローバルトランザクションの状態とライフサイクルを記録する。クラスタ内の各トランザクションはいずれも、グローバルトランザクション管理モジュール84に一意的なトランザクションIDの構築を要求して、データ行に挿入する。
管理モジュール86は、分散データベースクラスタのネットワーク構成情報を統合管理するように構成される。
一貫性フィルタモジュール88は、グローバルのアクティブトランザクションIDを用いて、データに対してグローバルな一貫性フィルタを行い、フィルタルールに従って、所定のデータ対象(ベース、テーブル)を含むSQLステートメントをフィルタする。
データ同期モジュール810は、分散データベース内のマスターデータベースノードのログを収集し、ログを解析してSQLステートメントを生成し、SQLステートメントブロックメッセージをパック圧縮して伝送し、SQLメッセージを永続化し、SQLの行を並列して再生するように構成される。
以上の構成に基づいて、データ同期中に、まず主バックアップクラスタにおいて同期テーブルを構築し、同期テーブルには主に、タイムスタンプ情報とグローバルなアクティブトランザクションリストとの2つの情報が含まれる。同期クロックモジュール82は定期的にグローバルトランザクション管理モジュール84へ現在のアクティブトランザクションリストを要求して、グローバルトランザクション管理モジュール84の応答を得た後、マスタークラスタのすべてのマスターデータベースへ1つの挿入ステートメントを送信し、挿入して現在のアクティブグローバルトランザクションリストのタイムスタンプ及び現在のグローバルなアクティブトランザクションリスト情報を取得する。
マスタークラスタのデータ同期モジュール810は、定期的にマスタークラスタ内のマスターデータノードのログファイルを収集し、バックアップクラスタの同期要求を受信した後、ログファイルに対してリバース解析を行って、SQLステートメントを生成し、同期クロックを用いて、SQLステートメントストリームをブロックに分割し、また、一貫性モジュールによって、SQLステートメントに対して一貫性と所定のルールのフィルタを行い、最後に、フィルタ後のSQLステートメントブロックを圧縮して送信キューに入れる。
その後、スレッドを送信して、送信キューにおけるメッセージをバックアップクラスタのデータ同期モジュール810へ送信する。バックアップクラスタにおけるデータ同期モジュール810は、SQLブロックメッセージを受信した後、SQLメッセージを内部メモリの受信キューに入れて、書き込みスレッドを呼び出して、受信キューにおけるSQLステートメントブロックをファイルに永続化してから、再生スレッドを開始させてファイルにおけるステートメントブロックを幾つかのタスクに分割してワーカースレッドに渡して、データをバックアップクラスタのデータベースノードに同期させる。
以上のプロセスによって、マスタークラスタ内の各データノードのログファイルをクラスタの統一時間でスライスし、スライスにおけるトランザクションは業務の違いに応じて、マスター/バックアップクラスタで統合処理を行って同時に成功するか又は同時に失敗する。バックアップクラスタでのデータがリアルタイムに一致するか、又は最終的に一致するように確保する。これに基づいて、バックアップクラスタは、スライス内のトランザクションをテーブル名と主キー値に応じて配布し、マルチのスレッドを並列に実行して、並列送信の不足によって再生性能が低下する問題を解決する。
図9は本開示の実施例5に係るデータ同期方法の詳細な作業フローチャートである。
図9に示すように、このグローバルな一貫性を確保する分散データベースデータ同期方法は以下のステップS902、S904、S906、S908、S910、S912、S914、S916、S918を含む。
ステップS902において、マスタークラスタのデータ同期モジュール810がオンされると、初期化して定期的にメタデータタスクスレッドを取得して、データ同期モジュール810に接続されるデータベースノードがデータベース群80におけるマスターノードであるように確保する。スレッドを開始させて、定期的に管理ノードへ状態を報知する。バックアップクラスタのデータ同期モジュール810がオンされると、構成ファイルに応じて初期化してワーカースレッドプールを並行送信し、初期化メッセージをスレッドに書き込み、SQL再生スレッド及びガベージコレクションスレッドが開始されると、まずマスタークラスタのデータ同期モジュール810にログ同期位置を送信する。
ステップS904において、マスタークラスタのデータ同期モジュール810は、定期的に取得/同期クラスタネットワーク構成データ要求を管理モジュール86に送信し、管理モジュール86の応答を受信した後、内部メモリにおけるデータと比較する。データが空きであると、現在のデータによって内部メモリの構造を初期化し、データがあると、データベース群80順でデータが一致するか否かを比較し、一致すると処理せず、一致しないと、データベースノードに接続されたか否かに応じて、直ちにデータ情報を更新するかを決める。
ステップS906において、マスタークラスタのデータ同期モジュール810がオンされてクラスタネットワーク構成情報を同期させた後、バックアップクラスタのデータ同期モジュール810による同期位置要求情報のプッシュ通知を待機し、同期位置情報を受信した後、現在の位置に従って、新規のタスクを開始する。
ステップS908において、マスタークラスタのデータ同期モジュール810が、同期位置に従ってデータベースの接続を起こし、ログファイルを解析するために内部メモリを初期化し、データベースからプッシュ通知されたログ情報を循環受信し、その後、実施例6に示すSQLステートメントのブロック分割プロセスに移行する。実際の配置に応じて、SQLステートメントブロックを一貫性フィルタモジュール88に送信する。
ステップS910において、SQLステートメントブロックに対してグローバルな一貫性フィルタとルールによるフィルタを行う。具体的なプロセスについては実施例8の図12又は図13を参照することができる。
ステップS912において、マスタークラスタのデータ同期モジュール810は、バックアップクラスタのデータ同期モジュール810から送信されたSQLステートメントブロック要求を受信した時、まずメッセージを再送信する必要があるか否かを判断し、再送信する必要があれば、直接送信キューのメッセージを送信し、再送信する必要がなければ、送信バッファキューからメッセージを選択してバックアップクラスタのデータ同期モジュール810に送信する。
ステップS914において、バックアップクラスタのデータ同期モジュール810はメッセージパケットを受信した後、メッセージを受信リストに入れる。メッセージパケットのチェックを行う。その後、SQLステートメントブロックメッセージが書き込みキューに入れられ、書き込みスレッドによって、メッセージを書き込みキューからSQL再生ファイルに永続化し、その後、受信キューに詰まっているメッセージがあるか否かを検査し、あれば、中断されたスレッドを覚醒し、なければ、現在のメッセージ群が終了したか否かを判断し、データ同期位置を更新した後、書き込みキューを循環読み取りする。
ステップS916において、バックアップクラスタデータ同期モジュール810のSQL再生スレッドが、SQL再生ファイルを解析し、2つの同期クロック間のトランザクションステートメントブロックを解析して行単位で分割し、具体的な方法については実施例7に記載のSQL行並列処理(parallel processing of SQL statement lines)のプロセスを参照することができる。ステートメントブロックの行並列による再生に成功した後、再生に異常が発生して回復する際に用いるように、データ再生の位置をファイルに永続化する。
ステップS918において、バックアップクラスタのデータ同期モジュール810のデータクリーニングスレッドが、保存時間を超えており且つ再生に成功したデータを定期的にクリーニングする。
上述のように、この方法によると、同期クロックモジュール82によって、クラスタ全体に統一されたクロックを提供して、データを統一にスライス処理する。一貫性フィルタモジュール88によって、スライスされたデータに対してグローバルな一貫性フィルタを行うとともに、災害復元指標RPO(復元点目標、すなわちシステムが最大にどの程度のデータを失うことを許容するか)とRTO(復元時間目標、すなわち、システムが災害発生から復元まで実行される時間)の要求及び業務のデータフィルタと抽出に対するニーズを考慮して、同期クロックモジュール82、グローバルトランザクション管理モジュール84、一貫性フィルタモジュール88、データ同期モジュール810をさまざまに配列すると、1都市マルチタスク、遠隔地災害復旧、データのサブスクリプション及びデータの抽出等のさまざまな業務の状況を効率的に満たすことができるとともに、分散型環境でのデータクラスタ間のグローバルな一貫性を確保し、遠隔地にあるクラスタが急速に業務を引き取ることができ、非常に特別なハイライト機能であり、分散データベースの金融分野、インターネット分野、教育分野等での普及のために良好な促進作用を果たす。
図10は本開示の実施例6に係るSQLステートメント分割パケット(splitting and encapsulating of SQL statements)を
示す図である。
図10に示すように、同期クロックモジュール82は定期的にデータベースへ同期クロックSQLステートメントを送信する。対応するステートメントは最終的にデータベースログに置かれる。
データ同期モジュール810は、データベースからプッシュ通知されたログを受信した後、ログに対して解析を行い、同期クロックSQLステートメントを用いてアプリケーションSQLに対して分割を行い、具体的な方法としては、2つの同期クロックSQL間のすべてのSQLを1つのメッセージブロックと見なして、1つのステートメントブロックにパッケージングすることである。
ステートメントブロックをフィルタした後、パックし圧縮して、送信バッファキューに入れ、その後、送信スレッドによってバッファキューからSQLステートメントメッセージを取り出して相手側データ同期モジュール810へ送信する。
図11は本開示の実施例7に係るSQLステートメント行並列処理を示すフローチャートである。
図11に示すように、SQLステートメントブロックはデータ行によって、複数のトランザクションに分割され、具体的な方法は以下の通りである。
テーブル名と主キーに応じてデータ行を選択し、同一のデータ行のSQLは前後順で1つのトランザクションを構成し、異なるデータ行のSQLを異なるワーカースレッドに渡して処理させる。
ワーカースレッドは再生に成功するように1組のSQLステートメントを並列処理し、その後、次のSQLステートメントブロックを読み取る。
本実施例においてリアルタイムなグローバルな一貫性フィルタと最終的なグローバルな一貫性フィルタとの2種類のフィルタ方式の具体的なプロセスを説明する。
図12は本開示の実施例8に係るリアルタイムなグローバルな一貫性フィルタを示すフローチャートであり、以下にそのプロセスを説明する。
ステップS1202において、まず、同期テーブルから直近の記録を探す。
ステップS1204において、この記録から直近に同期させた際のグローバルなアクティブトランザクションリストを取得する。
ステップS1206において、グローバルなアクティブトランザクションIDを用いて、SQLステートメントブロックに対してフィルタを行う。
ステップS1208において、ステートメントブロックにおけるグローバルな提出済のSQLステートメントに対して、配置データ対象フィルタルールがあるか否かを判定し、あれば、ステップS1210を実行し、なければ送信キューを提出する。
ステップS1210において、フィルタルールに従って、係るSQLステートメントをフィルタして、送信キューを提出する。
ステップS1212において、グローバルな未提出のSQLステートメントに対して、バッファキューに格納する。
ステップS1214において、次の組のステートメントのフィルタを行う前に、まず、バッファキューにおけるSQLステートメントをステートメントブロックに合併する。
図13は本開示の実施例8に係る最終的なグローバルな一貫性フィルタを示すフローチャートであり、以下にそのプロセスを説明する。
ステップS1302において、マスタークラスタとバックアップクラスタとの切り替えを行う必要があると、バックアップクラスタが、すべてのデータノードの同期テーブルから直近の同期クロック記録を探し出す。
ステップS1304において、すべての直近の同期クロック記録を比較して、タイムスタンプの最も早い同期クロック記録時間(T0)を探し出して切り替えの一致点とする。
ステップS1306において、時刻T0よりも後に同期クロックメッセージを受信したすべてのデータノードを探し出す。
ステップS1308において、ログファイルを解析して、時刻T0へ戻るすべてのリバースSQLステートメントを生成し、SQLステートメントを実行して、ノードデータを時刻T0の同期クロックメッセージを受信した時刻にロールバックし、これにより、クラスタ内のすべてのノードのデータがいずれも1つの時点(時刻T0)に揃えられる。
ステップS1310において、同期クロックテーブルにおけるこの時点(T0)の現在のグローバルなアクティブトランザクションIDを用いて、バックアップクラスタデータノードのログファイルにおける対応するSQLステートメントをフィルタし、これらのステートメントは単一の点で提出されたが、グローバルではトランザクション未提出状態にある。これらのトランザクションはグローバルなアクティブ状態にある。
ステップS1312において、リバースSQLステートメントを生成して実行し、最終的に分散データベースバックアップクラスタがグローバルな一貫性の状態になる。
以下、実施例9乃至12において本開示の方法を異なる状況に適用した場合の具体的な処理プロセスを説明する。
この実施例において分散データベースの非同期データの同期高性能モード(すなわち、最終的なグローバルな一貫性態様)を説明する。
図14は本開示の実施例9に係る分散データベースクラスタのデータ同期高性能モードでのシステム構成を示す図である。
図14に示すように、この実施例において2つのクラスタシステムがあり、マスター分散データベースクラスタによりデータをバックアップクラスタに同期させ、2つのクラスタのネットワーク構成は一致する。データ同期中には一貫性フィルタを行わず、業務によるクラスタの切り替えが行われる時のみにグローバルな一貫性フィルタを1回行う。分散データベースの非同期データの同期高性能モードでの処理プロセスは以下のステップを含む。
1.同期クロックモジュール82は、データベースへ同期SQLステートメントを送信する。
2.データベースは、定期的にログファイルをデータ同期モジュール810にプッシュ通知する。
3.データ同期モジュール810は、データベースからプッシュ通知されたログを受信した後、ログに対して解析を行い、2つの同期SQL間のすべてのSQLを1つのメッセージブロックと見なして、1つのステートメントブロックにパッケージングする。SQLステートメントブロックをパックし圧縮した後、送信バッファキューに入れ、その後、送信スレッドによってバッファキューからSQLステートメントメッセージを取り出して相手側データ同期モジュール810へ送信する。
4.バックアップクラスタのデータ同期モジュール810は、メッセージパケットを受信した後、メッセージを受信リストに入れる。メッセージパケットのチェックを行った後、SQLステートメントブロックメッセージがSQL再生ファイルに永続化され、その後、SQL再生スレッドによってSQL再生ファイルを解析し、2つの同期メッセージ間のトランザクションステートメントブロックを解析して行単位で分割し、SQLステートメントを並列再生して、データ同期の目的を達成する。
5.一貫性フィルタモジュール88は、マスタークラスタとバックアップクラスタとの切り替えを行う必要がある場合のみオンされる。フィルタステップについては図13を参照することができる。
この実施例は災害復旧システムにおいてRPO指標に対する要求が高い場合に適用され、データが効率的に相手側のクラスタに伝送されて永続化されることができ、RPOができるだけ小さくなるように確保する。
この実施例において分散データベースクラスタのデータ同期高性能モード(すなわち、リアルタイムなグローバルな一貫性態様)を説明する。
図15は本開示の実施例10に係る分散データベースクラスタのデータ同期高性能モードでのシステム構成を示す図である。
図15に示すように、この実施例において2つのデータベースクラスタシステムがあり、マスターデータベースクラスタによりデータをバックアップクラスタに同期させ、2つのクラスタのネットワーク構成は一致する。データ同期中には一貫性フィルタを行い、これにより、バックアップクラスタに同期されたデータが常に一貫状態にある。分散データベースクラスタのデータ同期高性能モードでの処理プロセスは以下のステップを含む。
1.同期クロックモジュール82が、データベースへ同期SQLステートメントを送信する。
2.データベースは、定期的にログファイルをデータ同期モジュール810にプッシュ通知する。
3.データ同期モジュール810は、データベースからプッシュ通知されたログを受信した後、ログに対して解析を行い、2つの同期SQL間のすべてのSQLを1つのメッセージブロックと見なして、1つのステートメントブロックにパッケージングする。
4.一貫性フィルタモジュール88は、グローバルなアクティブトランザクションIDを用いて、このステートメントブロックにおけるグローバルトランザクション提出済状態にあるステートメントをフィルタし、具体的なプロセスについては図12を参照することができる。
5.グローバルトランザクション提出済のSQLステートメントブロックをパックし圧縮した後、送信バッファキュー中に入れ、その後、送信スレッドによってバッファキューからSQLステートメントメッセージを取り出して相手側データ同期モジュール810へ送信する。
6.バックアップクラスタのデータ同期モジュール810は、メッセージパケットを受信した後、メッセージを受信リストに入れる。メッセージパケットのチェックを行った後、SQLステートメントブロックメッセージがSQL再生ファイルに永続化され、その後、SQL再生スレッドによってSQL再生ファイルを解析し、2つの同期メッセージ間のトランザクションステートメントブロックを解析して行単位で分割し、SQLステートメントを並列再生して、データ同期の目的を達成する。毎回同期されるSQLステートメントブロックはいずれもグローバルで一貫するので、バックアップクラスタデータベース内のデータが常にグローバルな一貫性の状態にある。
この実施例は、災害復旧システムにおいてRTO指標に対する要求が高い場合に適用される。業務はいつでも相手側の分散データベースクラスタを引き取ることができ、RTOはゼロであることができる。
この実施例において分散データベースに基づいて増分データをサブスクリプションする場合のデータ同期(準リアルタイムなバックアップ)を説明する。
図16は本開示の実施例11に係る分散データベースを準リアルタイムにバックアップするシステムの構成を示す図である。
図16に示すように、この実施例において2つのデータベースクラスタがあり、その中の遠隔データベースクラスタをサブスクリプション業務システムクラスタのデータベースクラスタとし、2つのクラスタのネットワーク構成は一致しないこともできる。分散データベースに基づいて増分データをサブスクリプションする場合の準リアルタイムなバックアッププロセスは以下のステップを含む。
1.同期クロックモジュール82は、定期的にデータベースへ同期SQLステートメントを送信する。
2.データベースは、定期的にログファイルをデータ同期モジュール810にプッシュ通知する。
3.データ同期モジュール810は、データベースからプッシュ通知されたログを受信した後、ログに対して解析を行い、2つの同期SQL間のすべてのSQLを1つのメッセージブロックと見なして、1つのステートメントブロックにパッケージングする。
4.一貫性フィルタモジュール88は、グローバルなアクティブトランザクションIDを用いて、このステートメントブロックにおけるグローバルなアクティブSQLステートメントをアクティブステートメントキューにバッファし、次のステートメントブロックのフィルタを行う時に、ステートメントブロックに合併する。このようにフィルタされたSQLステートメントはいずれもグローバルトランザクション提出済状態のステートメントである。その後、サブスクリプションルールに従って、係るデータ対象(データベース、テーブル)にフィルタを行う。
5.フィルタ後のグローバルトランザクション提出済のSQLステートメントブロックに対して、パックし圧縮した後、送信バッファキューに入れ、その後、送信スレッドによってバッファキューからSQLステートメントメッセージを取り出して相手側データ同期モジュール810へ送信する。
6.遠隔クラスタのデータ同期モジュール810は、メッセージパケットを受信した後、メッセージを受信リストに入れる。メッセージパケットのチェックを行った後、SQLステートメントブロックメッセージがSQL再生ファイルに永続化され、その後、SQL再生スレッドによってSQL再生ファイルを解析し、2つの同期メッセージ間のトランザクションステートメントブロックを解析して行単位で分割し、クラスタのネットワーク構成状況に応じて、SQLステートメントを並列再生して、準リアルタイムにデータをバックアップする目的を実現する。
この実施例において分散データベースの増分データに基づくデータ同期(データ抽出)を説明する。
図17は本開示の実施例12に係る分散データベースの増分データに基づくデータ抽出を示すシステム構成を示す図である。
図17に示すように、この実施例においてデータを発生するためのオンライントランザクション処理システム(OLTP)と主にデータ分析業務を行うオンライン分析システム(OLAP)やデータウェアハウスシステム(BI)との2種類の業務システムがあり、図面においてはデータをオンラインで分析するビッグデータプラットフォーム(例えば、Hadoopに基づくデータウェアハウス工具Hive、構造化データを処理するための汎用のクラスタ計算フレームワーク(Spark)素子Spark SQL、Hadoopの分散ファイルシステム(Hadoop Distribute File System、HDFSと略称)等を含む)を例にする。
OLTPシステムは、ビッグデータプラットフォームが分析して発掘するように、データをビッグデータプラットフォームに導入する。分散データベース増分データに基づくデータ抽出は以下のステップを含む。
1.同期クロックモジュール82は、定期的にデータベースへ同期SQLステートメントを送信する。
2.OLTPタイプ業務データベースクラスタは、定期的にログファイルをデータ同期モジュール810にプッシュ通知する。
3.データ同期モジュール810は、データベースからプッシュ通知されたログを受信した後、ログに対して解析を行い、2つの同期SQL間のすべてのSQLを1つのメッセージブロックと見なして、1つのステートメントブロックにパッケージングする。
4.一貫性フィルタモジュール88は、グローバルなアクティブトランザクションIDを用いて、このステートメントブロックにおけるグローバルなアクティブSQLステートメントをアクティブステートメントキューにバッファし、次のステートメントブロックのフィルタを行う時にステートメントブロックに合併する。このようにフィルタされたSQLステートメントはいずれもグローバルトランザクション提出済状態のステートメントである。その後、データ抽出ルールに従って、係るデータ対象(データベース、テーブル)にフィルタを行う。
5.抽出された後のグローバルトランザクション提出済のSQLステートメントブロックをパックし圧縮した後、送信バッファキューに入れ、その後、送信スレッドによってバッファキューからSQLステートメントメッセージを取り出してビッグデータプラットフォーム側のデータ同期モジュール810へ送信する。
6.ビッグデータプラットフォーム側のデータ同期モジュール810は、メッセージパケットを受信した後、メッセージを受信リストに入れる。メッセージパケットのチェックを行った後、SQLステートメントブロックメッセージがSQL再生ファイルに永続化され、その後、SQL再生スレッドによってSQL再生ファイルを解析し、2つの同期メッセージ間のトランザクションステートメントブロックを解析して行単位で分割し、ビッグデータプラットフォームのデータ計算レイヤに並列再生して、計算レイヤによってSQL計算を行って、データ計算結果をビッグデータプラットフォームの記憶システムに更新する。
上述のように、本開示による分散データベースクラスタシステムとデータ同期方法によると、分散データベースクラスタの教育、金融、政府及び企業、インターネットなどの分野での応用を拡張し、システム資源の投入を節約し、システムの性能を向上させ、データの一貫性を確保し、ユーザの使用体験を向上させることができる。分散データベースの普及のために良好な模範的な役割を果たすことになる。
上述した本開示の各モジュール又は各ステップを汎用の計算装置によって実現することができ、1つの計算装置に集中させることができ、又は複数の計算装置からなるネットワークに分布させることもでき、また、計算装置が実行可能なプログラムコードによって実現してそれを記憶装置に記憶して計算装置に実行させることもでき、場合によって、図示又は説明したステップをここに示す順とは異なる順で実行することもでき、又はそれぞれ集積回路モジュールに制作し、又はその中の複数のモジュール又はステップを1つの集積回路モジュールとすることができることを当業者は理解できる。このように、本開示は特定のハードウェアとソフトウェアとの組合せに限定されない。
以上は、本開示の好適な実施例に過ぎず、本開示を限定するものではなく、当業者であれば本開示にさまざまな修正や変形が可能である。本開示の原則内でのすべての修正、同等置換、改良などはいずれも本開示の保護範囲内に含まれる。

Claims (36)

  1. 第1の同期クロックモジュールと、第1のデータ同期モジュールと、それぞれ1つの第1のマスターデータベースを含む複数の第1のデータベース群とを含む分散データベースクラスタシステムであって、
    前記第1の同期クロックモジュールは、クロック同期命令を定期的に送信するように構成され、
    前記第1のデータ同期モジュールは、各第1のマスターデータベースにおいて前記第1の同期クロックモジュールから送信された隣接する2つのクロック同期命令の間に記録されたデータベース操作命令を第1の操作命令ブロックにパッケージングして、前記第1の操作命令ブロックを送信するように構成される、分散データベースクラスタシステム。
  2. 前記第1の同期クロックモジュールは、定期的に各第1のマスターデータベースへ前記クロック同期命令を送信するように構成され、
    前記第1のマスターデータベースは、受信したデータベース操作命令を前記第1のマスターデータベースのログファイルに書き込み、受信した前記クロック同期命令を前記ログファイルに書き込むように構成され、
    前記第1のデータ同期モジュールは、各第1のマスターデータベースの前記ログファイルをそれぞれ取得し、前記ログファイルにおいて2つのクロック同期命令の間に介在されたデータベース操作命令を前記第1の操作命令ブロックにパッケージングし、前記第1の操作命令ブロックを送信するように構成される、請求項1に記載の分散データベースクラスタシステム。
  3. 前記第1のデータ同期モジュールは、前記第1の操作命令ブロックを相手側の分散データベースクラスタシステムに送信するように構成される、請求項1又は請求項2に記載の分散データベースクラスタシステム。
  4. 第1の一貫性フィルタモジュールをさらに含み、
    前記第1のデータ同期モジュールは、前記第1の操作命令ブロックを前記第1の一貫性フィルタモジュールに送信するように構成され、
    前記第1の一貫性フィルタモジュールは、前記第1のデータ同期モジュールから送信された前記第1の操作命令ブロックを受信し、前記第1の操作命令ブロックに対してグローバルな一貫性フィルタを行い、前記第1の操作命令ブロックにおける、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含むフィルタ条件を満たすデータベース操作命令を第2の操作命令ブロックにパッケージングし、前記第2の操作命令ブロックを相手側の分散データベースクラスタシステムに送信するように構成される、請求項1又は請求項2に記載の分散データベースクラスタシステム。
  5. 前記フィルタ条件は、前記データベース操作命令が前記相手側の分散データベースクラスタシステムに対応するデータ対象フィルタルールに該当することをさらに含む、請求項4に記載の分散データベースクラスタシステム。
  6. 前記第1の一貫性フィルタモジュールは、さらに、
    前記第1の操作命令ブロックにおけるグローバルトランザクション未提出状態にあるデータベース操作命令をバッファし、次回に前記第1のデータ同期モジュールから送信された、現在の第1のマスターデータベースに対応する前記第1の操作命令ブロックを受信すると、バッファした前記データベース操作命令を前記第1の操作命令ブロックに付加してから前記第1の操作命令ブロックに対してグローバルな一貫性フィルタを行うように構成される、請求項4又は請求項5に記載の分散データベースクラスタシステム。
  7. グローバルトランザクションを一意に識別可能なグローバルトランザクション識別IDを管理し、各グローバルトランザクションの状態とライフサイクルを記録するように構成されるグローバルトランザクション管理モジュールをさらに含み、
    前記第1の同期クロックモジュールは、各第1のマスターデータベースの現在のアクティブトランザクションリストを定期的に要求し、前記現在のアクティブトランザクションリストと前記現在のアクティブトランザクションリストを取得したタイムスタンプとを前記第1のマスターデータベースに対応する同期テーブルに記録し、前記タイムスタンプ及び前記現在のアクティブトランザクションリストの情報を、前記第1のマスターデータベースへ送信する前記クロック同期命令に載せるように構成され、
    前記第1の一貫性フィルタモジュールは、現在の第1のマスターデータベースに対応する前記同期テーブルにおける直近に記録された前記現在のアクティブトランザクションリストを調べ、直近に記録された前記現在のアクティブトランザクションリストにおけるグローバルトランザクションIDに対応するデータベース操作命令を取り除き、残りのデータベース操作命令を、グローバルトランザクション提出済状態にあるフィルタ条件を満たすデータベース操作命令として前記第2の操作命令ブロックにパッケージングする、請求項4乃至請求項6のうちのいずれか1項に記載の分散データベースクラスタシステム。
  8. 前記第1のデータ同期モジュールは、さらに、
    相手側の分散データベースクラスタシステムからの同期位置要求情報であって、前記分散データベースクラスタシステムと前記相手側の分散データベースクラスタシステムと間の同期位置が載せられている同期位置要求情報を受信し、
    前記同期位置要求情報に載せられた前記同期位置に基づいて、各第1のマスターデータベースに記録されたデータベース操作命令に対するパッケージングを実行するように構成される、請求項1に記載の分散データベースクラスタシステム。
  9. 前記第1のデータ同期モジュールは、さらに、
    相手側の分散データベースクラスタシステムから送信された、第1の操作命令ブロック又は第2の操作命令ブロックを含む操作命令ブロックを受信し、
    受信した前記操作命令ブロックにおけるデータベース操作命令を実行するように構成される、請求項1乃至請求項8のうちのいずれか1項に記載の分散データベースクラスタシステム。
  10. 前記第1のデータ同期モジュールは、
    前記操作命令ブロックにおける前記データベース操作命令を再生ファイルに永続化し、
    前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行う方式で、
    受信した前記操作命令ブロックにおける前記データベース操作命令を実行するように構成される、請求項9に記載の分散データベースクラスタシステム。
  11. 前記第1のデータ同期モジュールは、
    テーブル名と主キーに応じて、前記操作命令ブロックにおける前記データベース操作命令を異なるデータ行に分割し、同一のデータ行の前記データベース操作命令は前後順で1つのトランザクションを構成し、
    異なるトランザクションの前記データベース操作命令を異なるワーカースレッドに配置して処理を行う方式で、
    前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行うように構成される、請求項10に記載の分散データベースクラスタシステム。
  12. 前記第1のデータ同期モジュールは、さらに、
    受信した前記操作命令ブロックにおける前記データベース操作命令の実行に成功した後、データベース操作命令の実行に成功した位置をファイルに永続化するように構成される、請求項9乃至請求項11のうちのいずれか1項に記載の分散データベースクラスタシステム。
  13. 前記分散データベースクラスタシステムを前記相手側の分散データベースクラスタシステムのバックアップ分散データベースクラスタシステムとする場合、
    前記第1のデータ同期モジュールは、
    前記分散データベースクラスタシステムを前記相手側の分散データベースクラスタシステムの代わりにマスター分散データベースクラスタシステムとする必要がある場合に、第1の一貫性フィルタモジュールを呼び出すように構成され、
    前記第1の一貫性フィルタモジュールは、
    各第1のマスターデータベースに対応する同期テーブルを取得し、前記同期テーブルに基づいて各第1のマスターデータベースの直近に同期されたタイムスタンプを特定し、その中の最も早いタイムスタンプを切り替え基準時点として特定し、
    直近に同期されたタイムスタンプが前記切り替え基準時点よりも遅い各第1のマスターデータベースに対しては、前記第1のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第1のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される、請求項9乃至請求項11のうちのいずれか1項に記載の分散データベースクラスタシステム。
  14. 前記第1の一貫性フィルタモジュールは、
    前記切り替え基準時点よりも後のデータベース操作命令に対して、リバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行し、
    前記切り替え基準時点でグローバルトランザクション未提出状態にあるデータベース操作命令に対して、リバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行する方式で、
    前記第1のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第1のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される、請求項13に記載の分散データベースクラスタシステム。
  15. 相手側の分散データベースクラスタシステムから送信された操作命令ブロックを受信し、受信した前記操作命令ブロックにおけるデータベース操作命令を実行するように構成される第2のデータ同期モジュールと、
    それぞれ1つの第2のマスターデータベースを含む複数の第2のデータベース群と、を含む分散データベースクラスタシステムであって、
    前記操作命令ブロックは第1の操作命令ブロック又は第2の操作命令ブロックを含み、前記第1の操作命令ブロックには、前記相手側の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がパッケージングされており、前記第2の操作命令ブロックには、前記相手側の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令のうち、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含むフィルタ条件を満たすデータベース操作命令がパッケージングされている、分散データベースクラスタシステム。
  16. 前記第2のデータ同期モジュールは、
    前記操作命令ブロックにおける前記データベース操作命令を再生ファイルに永続化し、
    前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行う方式で、
    受信した前記操作命令ブロックにおける前記データベース操作命令を実行するように構成される、請求項15に記載の分散データベースクラスタシステム。
  17. 前記第2のデータ同期モジュールは、
    テーブル名と主キーに応じて、前記操作命令ブロックにおける前記データベース操作命令を異なるデータ行に分割し、同一のデータ行の前記データベース操作命令は前後順で1つのトランザクションを構成し、
    異なるトランザクションの前記データベース操作命令を異なるワーカースレッドに配置して処理を行う方式で、
    前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行うように構成される、請求項16に記載の分散データベースクラスタシステム。
  18. 前記第2のデータ同期モジュールは、さらに、
    受信した前記操作命令ブロックにおける前記データベース操作命令の実行に成功した後、データベース操作命令の実行に成功した位置をファイルに永続化するように構成される、請求項15乃至請求項17のうちのいずれか1項に記載の分散データベースクラスタシステム。
  19. 第2の一貫性フィルタモジュールをさらに含み、
    前記第2のデータ同期モジュールは、前記分散データベースクラスタシステムを前記相手側の分散データベースクラスタシステムの代わりにマスター分散データベースクラスタシステムとする必要がある場合、前記第2の一貫性フィルタモジュールを呼び出すように構成され、
    前記第2の一貫性フィルタモジュールは、
    各第2のマスターデータベースに対応する同期テーブルを取得し、前記同期テーブルに基づいて各第2のマスターデータベースの直近に同期されたタイムスタンプを特定し、その中の最も早いタイムスタンプを切り替え基準時点として特定し、
    直近に同期されたタイムスタンプが前記切り替え基準時点よりも遅い各第2のマスターデータベースに対しては、前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される、請求項15乃至請求項17のうちのいずれか1項に記載の分散データベースクラスタシステム。
  20. 前記第2の一貫性フィルタモジュールは、
    前記切り替え基準時点よりも後のデータベース操作命令に対して、リバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行し、
    前記切り替え基準時点でグローバルトランザクション未提出状態にあるデータベース操作命令に対して、リバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行する方式で、
    前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させるように構成される、請求項19に記載の分散データベースクラスタシステム。
  21. それぞれ1つの第1のマスターデータベースを含む複数の第1のデータベース群を含む第1の分散データベースクラスタシステムに適用されるデータ同期方法であって、
    前記第1の分散データベースクラスタシステムが、クロック同期命令を定期的に送信することと、
    前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングし、前記第1の操作命令ブロックを送信することと、を含む、データ同期方法。
  22. 前記第1の分散データベースクラスタシステムがクロック同期命令を定期的に送信することは、前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースへ定期的に前記クロック同期命令を送信することを含み、
    前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングする前に、
    前記第1のマスターデータベースが、受信したデータベース操作命令を前記第1のマスターデータベースのログファイルに書き込み、受信した前記クロック同期命令を前記ログファイルに書き込むことをさらに含み、
    前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングすることは、前記第1の分散データベースクラスタシステムが各第1のマスターデータベースの前記ログファイルをそれぞれ取得し、前記ログファイルにおいて2つのクロック同期命令の間に介在されたデータベース操作命令を前記第1の操作命令ブロックにパッケージングすることを含む、請求項21に記載の方法。
  23. 前記第1の分散データベースクラスタシステムが前記第1の操作命令ブロックを送信することは、
    前記第1の分散データベースクラスタシステムが、前記第1の操作命令ブロックを第2の分散データベースクラスタシステムに送信することを含む、請求項21又は請求項22に記載の方法。
  24. 前記第1の分散データベースクラスタシステムが前記第1の操作命令ブロックを送信することは、
    前記第1の分散データベースクラスタシステムが、前記第1の操作命令ブロックに対してグローバルな一貫性フィルタを行い、前記第1の操作命令ブロックにおける、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含むフィルタ条件を満たすデータベース操作命令を第2の操作命令ブロックにパッケージングし、前記第2の操作命令ブロックを第2の分散データベースクラスタシステムに送信することを含む、請求項21又は請求項22に記載の方法。
  25. 前記フィルタ条件は、前記データベース操作命令が前記第2の分散データベースクラスタシステムに対応するデータ対象フィルタルールに該当することをさらに含む、請求項24に記載の方法。
  26. 前記第1の分散データベースクラスタシステムは、前記第1の操作命令ブロックにおけるグローバルトランザクション未提出状態にあるデータベース操作命令をバッファし、バッファした前記データベース操作命令を現在の第1のマスターデータベースに対応する次の第1の操作命令ブロックに付加してから前記次の第1の操作命令ブロックに対してグローバルな一貫性フィルタを行うことをさらに含む、請求項24又は請求項25に記載の方法。
  27. 前記第1の分散データベースクラスタシステムが、グローバルトランザクションを一意に識別可能なグローバルトランザクション識別IDを管理し、各グローバルトランザクションの状態とライフサイクルを記録することと、
    前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースの現在のアクティブトランザクションリストを定期的に要求し、前記現在のアクティブトランザクションリストと前記現在のアクティブトランザクションリストを取得したタイムスタンプとを前記第1のマスターデータベースに対応する同期テーブルに記録し、前記タイムスタンプ及び前記現在のアクティブトランザクションリストの情報を、前記第1のマスターデータベースへ送信する前記クロック同期命令に載せることと、をさらに含み、
    前記第1の分散データベースクラスタシステムが、前記第1の操作命令ブロックに対してグローバルな一貫性フィルタを行い、前記第1の操作命令ブロックにおける、フィルタ条件を満たすデータベース操作命令を第2の操作命令ブロックにパッケージングすることは、前記第1の分散データベースクラスタシステムが、現在の第1のマスターデータベースに対応する前記同期テーブルにおける直近に記録された前記現在のアクティブトランザクションリストを調べ、直近に記録された前記現在のアクティブトランザクションリストにおけるグローバルトランザクションIDに対応するデータベース操作命令を取り除き、残りのデータベース操作命令をグローバルトランザクション提出済状態にあるフィルタ条件を満たすデータベース操作命令として前記第2の操作命令ブロックにパッケージングすることを含む、請求項24乃至26のうちのいずれか1項に記載の方法。
  28. 前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングする前に、前記第1の分散データベースクラスタシステムが、第2の分散データベースクラスタシステムからの同期位置要求情報であって、前記第1の分散データベースクラスタシステムと前記第2の分散データベースクラスタシステムの間の同期位置が載せられている同期位置要求情報を受信することをさらに含み、
    前記第1の分散データベースクラスタシステムが、各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令をそれぞれ第1の操作命令ブロックにパッケージングすることは、前記第1の分散データベースクラスタシステムが、前記同期位置要求情報に載せられた前記同期位置に基づいて、各第1のマスターデータベースに記録されたデータベース操作命令に対するパッケージングを実行することを含む、請求項21に記載の方法。
  29. それぞれ1つの第2のマスターデータベースを含む複数の第2のデータベース群を含む第2の分散データベースクラスタシステムに適用されるデータ同期方法であって、
    前記第2の分散データベースクラスタシステムが、第1の分散データベースクラスタシステムから送信された操作命令ブロックであって、前記第1の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令がパッケージングされた第1の操作命令ブロック、又は前記第1の分散データベースクラスタシステムの各第1のマスターデータベースにおいて隣接する2つのクロック同期命令の間に記録されたデータベース操作命令のうち、前記データベース操作命令がグローバルトランザクション提出済状態にあることを含むフィルタ条件を満たすデータベース操作命令がパッケージングされた第2の操作命令ブロックを含む操作命令ブロックを受信することと、
    前記第2の分散データベースクラスタシステムが、受信した前記操作命令ブロックにおけるデータベース操作命令を実行することと、を含む、データ同期方法。
  30. 前記第2の分散データベースクラスタシステムが、受信した前記操作命令ブロックにおけるデータベース操作命令を実行することは、
    前記第2の分散データベースクラスタシステムが、前記操作命令ブロックにおける前記データベース操作命令を再生ファイルに永続化することと、
    前記第2の分散データベースクラスタシステムが、前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行うことと、を含む、請求項29に記載の方法。
  31. 前記第2の分散データベースクラスタシステムが、前記再生ファイルを解析して、前記再生ファイルにおける前記データベース操作命令を行単位で分割して異なるワーカースレッドに配置して処理を行うことは、
    前記第2の分散データベースクラスタシステムが、テーブル名と主キーに応じて、前記操作命令ブロックにおける前記データベース操作命令を異なるデータ行に分割し、同一のデータ行の前記データベース操作命令は前後順で1つのトランザクションを構成することと、
    前記第2の分散データベースクラスタシステムが、異なるトランザクションの前記データベース操作命令を異なるワーカースレッドに配置して処理を行うことと、を含む、請求項30に記載の方法。
  32. 前記第2の分散データベースクラスタシステムが受信した前記操作命令ブロックにおける前記データベース操作命令の実行に成功した後、
    前記第2の分散データベースクラスタシステムが、データベース操作命令の実行に成功した位置をファイルに永続化することをさらに含む、請求項29乃至請求項31のうちのいずれか1項に記載の方法。
  33. 前記第2の分散データベースクラスタシステムを前記第1の分散データベースクラスタシステムの代わりにマスター分散データベースクラスタシステムとする必要がある場合、
    前記第2の分散データベースクラスタシステムが、各第2のマスターデータベースに対応する同期テーブルを取得し、前記同期テーブルに基づいて各第2のマスターデータベースの直近に同期されたタイムスタンプを特定し、その中の最も早いタイムスタンプを切り替え基準時点として特定することと、
    直近に同期されたタイムスタンプが前記切り替え基準時点よりも遅い各第2のマスターデータベースに対しては、前記第2の分散データベースクラスタシステムが、前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させることと、をさらに含む、請求項29乃至請求項31のうちのいずれか1項に記載の方法。
  34. 前記第2の分散データベースクラスタシステムが、前記第2のマスターデータベースのデータを前記切り替え基準時点で記録した状態にロールバックし、前記第2のマスターデータベースのデータをグローバルな一貫性の状態に復元させることは、
    前記第2の分散データベースクラスタシステムが、前記切り替え基準時点よりも後のデータベース操作命令に対して、リバースデータベース操作命令を生成し、前記リバースデータベース操作命令を実行することと、
    前記第2の分散データベースクラスタシステムが、前記切り替え基準時点でグローバルトランザクション未提出状態にあるデータベース操作命令に対してリバースデータベース操作命令を生成して、前記リバースデータベース操作命令を実行することと、を含む、請求項33に記載の方法。
  35. コンピュータープログラムが記憶された記憶媒体であって、
    前記コンピュータープログラムは、実行されると、請求項21乃至請求項34のうちのいずれか1項に記載の方法を実行するように構成される、記憶媒体。
  36. メモリとプロセッサとを含む電子機器であって、
    前記メモリにコンピュータープログラムが記憶され、前記プロセッサは前記コンピュータープログラムを実行することで請求項21乃至請求項34のうちのいずれか1項に記載の方法を実行するように構成される、電子機器。
JP2020565003A 2018-02-12 2019-02-03 分散データベースクラスタシステム、及びデータ同期方法 Active JP7090744B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
CN201810147335.4 2018-02-12
CN201810147335.4A CN110209726B (zh) 2018-02-12 2018-02-12 分布式数据库集群系统、数据同步方法及存储介质
PCT/CN2019/074699 WO2019154394A1 (zh) 2018-02-12 2019-02-03 分布式数据库集群系统、数据同步方法及存储介质

Publications (2)

Publication Number Publication Date
JP2021513715A true JP2021513715A (ja) 2021-05-27
JP7090744B2 JP7090744B2 (ja) 2022-06-24

Family

ID=67548760

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020565003A Active JP7090744B2 (ja) 2018-02-12 2019-02-03 分散データベースクラスタシステム、及びデータ同期方法

Country Status (4)

Country Link
EP (1) EP3754514B1 (ja)
JP (1) JP7090744B2 (ja)
CN (1) CN110209726B (ja)
WO (1) WO2019154394A1 (ja)

Families Citing this family (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110489491B (zh) * 2019-08-26 2023-07-04 湖南中车时代通信信号有限公司 一种适用于a/b网双集群的全量数据同步装置
CN110661857B (zh) * 2019-09-12 2021-12-07 京东数字科技控股有限公司 一种数据同步方法和装置
CN110795506A (zh) * 2019-10-23 2020-02-14 广州巨杉软件开发有限公司 基于分布式逻辑时间戳的分布式数据库管理方法及装置
CN110866009A (zh) * 2019-10-29 2020-03-06 广州西山居世游网络科技有限公司 一种实时并发同步服务的方法及系统
CN111209342B (zh) * 2020-01-13 2023-04-07 阿里巴巴集团控股有限公司 分布式系统、数据同步与节点管理方法、设备及存储介质
CN111930830B (zh) * 2020-06-22 2024-04-16 心有灵犀科技股份有限公司 一种基于共享数据库的分布式事务数据处理方法及系统
CN111796970A (zh) * 2020-06-23 2020-10-20 浙江大华技术股份有限公司 一种主备切换和数据同步方法、装置、设备及存储介质
CN111782634B (zh) * 2020-06-29 2024-06-14 京东科技控股股份有限公司 数据分布式存储方法、装置、电子设备及存储介质
CN112068994A (zh) * 2020-08-21 2020-12-11 苏州浪潮智能科技有限公司 存储集群运行时数据持久化的方法、装置、设备和介质
CN112052270A (zh) * 2020-08-26 2020-12-08 南京越扬科技有限公司 一种通过大数据进行用户画像深度分析的方法及系统
CN112231396A (zh) * 2020-09-15 2021-01-15 山东浪潮通软信息科技有限公司 一种跨数据库增量同步数据的方法
CN112131245A (zh) * 2020-09-23 2020-12-25 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 拟态防御架构的高性能数据访问系统及方法
CN112463762A (zh) * 2020-11-06 2021-03-09 苏州浪潮智能科技有限公司 跨集群实时数据迁移与同步的方法、系统、设备及介质
CN112434064B (zh) * 2020-11-19 2023-09-29 脸萌有限公司 数据处理方法、装置、介质及电子设备
CN112417043B (zh) * 2020-11-19 2024-08-27 百果园技术(新加坡)有限公司 数据处理系统及方法
CN113127436B (zh) * 2021-04-28 2023-07-25 北京奇艺世纪科技有限公司 一种数据同步方法、装置、服务器及存储介质
CN113254535B (zh) * 2021-06-08 2022-12-13 成都新潮传媒集团有限公司 一种mongodb到mysql的数据同步方法、装置及计算机可读存储介质
CN113596190B (zh) * 2021-07-23 2023-05-26 浪潮云信息技术股份公司 基于Kubernetes的应用分布式多活系统及方法
CN113641756A (zh) * 2021-07-26 2021-11-12 浪潮卓数大数据产业发展有限公司 一种分布式高并发的数据存储方法
CN113918657B (zh) * 2021-12-14 2022-03-15 天津南大通用数据技术股份有限公司 一种并行高性能增量同步方法
CN114301563B (zh) * 2021-12-24 2023-05-05 中国航发控制系统研究所 集群间多余度同步电路、总线系统及集群间同步的方法
CN114416872A (zh) * 2022-01-12 2022-04-29 山东浪潮科学研究院有限公司 基于cdc的集群间数据同步方法及系统
CN114528266B (zh) * 2022-01-28 2024-01-26 苏州浪潮智能科技有限公司 实现数据库和缓存一致性的方法、系统、设备和存储介质
CN114697346B (zh) * 2022-04-22 2024-06-11 厦门飞鱼科技有限公司 服务器节点之间数据同步的方法
CN114579671A (zh) * 2022-05-09 2022-06-03 高伟达软件股份有限公司 集群间数据同步方法及装置
CN114942965B (zh) * 2022-06-29 2022-12-16 北京柏睿数据技术股份有限公司 一种数据库主备同步操作的加速方法和系统
CN115544172A (zh) * 2022-11-28 2022-12-30 杭州欧若数网科技有限公司 一种一主多从的集群间数据实时同步的方法和系统
CN116991691B (zh) * 2023-09-26 2024-01-30 中国铁塔股份有限公司 数据库测试方法、装置、电子设备及可读存储介质
CN117093640B (zh) * 2023-10-18 2024-01-23 上海柯林布瑞信息技术有限公司 基于池化技术的数据抽取方法及装置
CN117112314B (zh) * 2023-10-24 2024-02-06 深圳市科力锐科技有限公司 业务数据切换方法、装置、设备及存储介质
CN117827981B (zh) * 2024-03-06 2024-07-19 北京万里开源软件有限公司 一种MySQL数据库集群的链路检测方法及系统
CN117992257B (zh) * 2024-04-07 2024-06-18 天津南大通用数据技术股份有限公司 一种分布式数据库并行数据采集处理方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030131025A1 (en) * 1998-12-24 2003-07-10 Zondervan Quinton Yves System and method for synchronizing data in multiple databases
JP2007183930A (ja) * 2006-01-03 2007-07-19 Internatl Business Mach Corp <Ibm> 異なるコピー技術を用いてデータをミラーリングするときの整合性の維持
JP2008181288A (ja) * 2007-01-24 2008-08-07 Hitachi Ltd リモートコピーシステム
JP2009123055A (ja) * 2007-11-16 2009-06-04 Hitachi Ltd ストレージシステム及びリモートコピー制御方法
JP2009532789A (ja) * 2006-04-06 2009-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージ・サブシステム全体にわたる整合的な更新のための方法、システム、およびコンピュータ・プログラム
CN102693324A (zh) * 2012-01-09 2012-09-26 西安电子科技大学 一种分布式数据库同步系统、同步方法和节点管理方法
WO2015008484A1 (ja) * 2013-07-16 2015-01-22 Mame・Design株式会社 バックアップ制御装置及びバックアップ制御方法

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6125368A (en) * 1997-02-28 2000-09-26 Oracle Corporation Fault-tolerant timestamp generation for multi-node parallel databases
US20070061379A1 (en) * 2005-09-09 2007-03-15 Frankie Wong Method and apparatus for sequencing transactions globally in a distributed database cluster
CN103902617B (zh) * 2012-12-28 2017-06-09 华为技术有限公司 分布式数据库同步方法和系统
CN104182441A (zh) * 2014-02-27 2014-12-03 无锡天脉聚源传媒科技有限公司 一种数据表同步方法及装置
CN105512171B (zh) * 2015-11-23 2019-05-21 北京奇虎科技有限公司 数据库同步的方法及装置
CN106484565B (zh) * 2016-09-22 2019-06-28 华为数字技术(成都)有限公司 多数据中心间的数据同步方法及相关设备
CN107391635A (zh) * 2017-06-30 2017-11-24 北京奇虎科技有限公司 数据同步系统及方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030131025A1 (en) * 1998-12-24 2003-07-10 Zondervan Quinton Yves System and method for synchronizing data in multiple databases
JP2007183930A (ja) * 2006-01-03 2007-07-19 Internatl Business Mach Corp <Ibm> 異なるコピー技術を用いてデータをミラーリングするときの整合性の維持
JP2009532789A (ja) * 2006-04-06 2009-09-10 インターナショナル・ビジネス・マシーンズ・コーポレーション ストレージ・サブシステム全体にわたる整合的な更新のための方法、システム、およびコンピュータ・プログラム
JP2008181288A (ja) * 2007-01-24 2008-08-07 Hitachi Ltd リモートコピーシステム
JP2009123055A (ja) * 2007-11-16 2009-06-04 Hitachi Ltd ストレージシステム及びリモートコピー制御方法
CN102693324A (zh) * 2012-01-09 2012-09-26 西安电子科技大学 一种分布式数据库同步系统、同步方法和节点管理方法
WO2015008484A1 (ja) * 2013-07-16 2015-01-22 Mame・Design株式会社 バックアップ制御装置及びバックアップ制御方法

Also Published As

Publication number Publication date
EP3754514A4 (en) 2020-12-23
CN110209726B (zh) 2023-10-20
CN110209726A (zh) 2019-09-06
EP3754514B1 (en) 2024-05-08
JP7090744B2 (ja) 2022-06-24
EP3754514A1 (en) 2020-12-23
WO2019154394A1 (zh) 2019-08-15

Similar Documents

Publication Publication Date Title
JP7090744B2 (ja) 分散データベースクラスタシステム、及びデータ同期方法
US10866967B2 (en) Multi-replica asynchronous table replication
US11068501B2 (en) Single phase transaction commits for distributed database transactions
KR101662212B1 (ko) 부분동기화 지원 데이터베이스 관리 시스템 및 데이터베이스 관리 시스템에서 부분동기화 방법
KR20200100173A (ko) 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치
JP2019036353A (ja) 索引更新パイプライン
JP5308403B2 (ja) データ処理の障害回復方法、システムおよびプログラム
US8762347B1 (en) Method and apparatus for processing transactional file system operations to enable point in time consistent file data recreation
CN105721582A (zh) 多节点文件备份系统
CN117677943A (zh) 用于混合数据处理的数据一致性机制
CN113779143B (zh) 双活数据中心和业务系统
US20230409442A1 (en) Techniques for maintaining data consistency during disaster recovery
KR20220086677A (ko) 블록체인 기반 백업 및 복구를 위한 시스템 및 방법
CN111522688B (zh) 分布式系统的数据备份方法及装置
WO2023244446A1 (en) Scalable and secure cross-region and optimized file system replication for cloud scale
CN106648980A (zh) 线下场所高可用服务器数据库备份与还原的方法和装置
CN117349384B (zh) 一种数据库同步的方法、系统及设备
US20240281413A1 (en) Techniques for replication checkpointing during disaster recovery
US20240134828A1 (en) Techniques for efficient encryption and decryption during file system cross-region replication
US20240086417A1 (en) Techniques for replication-aware resource management and task management of file systems
US20240104062A1 (en) Techniques for resolving snapshot key inter-dependency during file system cross-region replication
US20240094937A1 (en) Concurrent and non-blocking object deletion for cross-region replications
CN115168109A (zh) 一种数据恢复方法、装置、设备及存储介质
CN117131131A (zh) 跨机房的数据同步方法、装置、电子设备和存储介质
CN116841759A (zh) 数据处理方法、装置、计算机设备及计算机可读存储介质

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20201014

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201120

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210823

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211005

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220104

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220524

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220614

R150 Certificate of patent or registration of utility model

Ref document number: 7090744

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150