JP7481244B2 - データ同期システム、データ同期装置及びデータ同期方法 - Google Patents

データ同期システム、データ同期装置及びデータ同期方法 Download PDF

Info

Publication number
JP7481244B2
JP7481244B2 JP2020200535A JP2020200535A JP7481244B2 JP 7481244 B2 JP7481244 B2 JP 7481244B2 JP 2020200535 A JP2020200535 A JP 2020200535A JP 2020200535 A JP2020200535 A JP 2020200535A JP 7481244 B2 JP7481244 B2 JP 7481244B2
Authority
JP
Japan
Prior art keywords
data
synchronization
difference
acquisition module
difference acquisition
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2020200535A
Other languages
English (en)
Other versions
JP2022088221A (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.)
Hitachi Ltd
Original Assignee
Hitachi Ltd
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 Hitachi Ltd filed Critical Hitachi Ltd
Priority to JP2020200535A priority Critical patent/JP7481244B2/ja
Priority to US17/539,383 priority patent/US20220171788A1/en
Publication of JP2022088221A publication Critical patent/JP2022088221A/ja
Application granted granted Critical
Publication of JP7481244B2 publication Critical patent/JP7481244B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1748De-duplication implemented within the file system, e.g. based on file segments
    • G06F16/1756De-duplication implemented within the file system, e.g. based on file segments based on delta files
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2255Hash tables
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、データ同期システム、データ同期装置及びデータ同期方法に関する。
従来、複数の装置でデータを同期するため、特開2011-232866号公報(特許文献1)に記載の技術がある。この公報には、「第1データベース装置のデータを第2データベース装置に移行させるデータベース装置間のデータ移行方法において、前記第1データベース装置のデータのスナップショットデータ、及び前記第2データベース装置のデータのスナップショットデータを取得し、前記第1データベース装置のデータの前記スナップショットデータと前記第2データベース装置のデータのスナップショットデータとに基づいて、これらのスナップショットデータの差分データを取得し、前記差分データを前記第2データベース装置に書き込むようにしたことを特徴とする」という記載がある。
特開2011-232866号公報
特許文献1に代表される従来の技術のように差分データを取得して同期先の装置(特許文献1では第2データベース装置)に書き込みを行うことで、同期先の装置の負荷を減らすことができる。かかる同期において、差分データの取得などは、同期先の装置の外部で行うことで効率化を実現することが望ましい。また、同期元の装置の拘束時間についても短縮して効率化することが望まれている。
そこで、本発明では、データ同期を効率化することを目的とする。
上記目的を達成するために、代表的な本発明のデータ同期システム及びデータ同期装置の一つは、同期元となる第1の装置から同期対象として指定されたデータである同期対象データの全件を取得する全件取得部と、同期先である第2の装置が現に保持するデータを示す同期先データを予め格納するとともに、前記全件取得部により取得された同期対象データを格納する1又は複数の記憶部と、前記同期先データ及び前記同期対象データを用いて前記第2の装置に反映すべき差分を特定し、特定した差分を前記第2の装置に反映させ、該反映の後、前記同期対象データに基づいて前記同期先データを更新する差分取得部とを備えたことを特徴とする。
また、代表的な本発明のデータ同期方法の一つは、同期元となる第1の装置から同期対象として指定されたデータである同期対象データの全件を取得する全件取得ステップと、前記全件取得ステップにより取得された同期対象データを所定の記憶部に格納するステップと、同期先である第2の装置が現に保持するデータを示す同期先データと前記同期対象データとを用いて前記第2の装置に反映すべき差分を特定するステップと、特定した差分を前記第2の装置に反映させるステップと、前記反映の後、前記同期対象データに基づいて前記同期先データを更新するステップとを含むことを特徴とする。
本発明によれば、データ同期を効率化することができる。上記した以外の課題、構成及び効果は以下の実施の形態の説明により明らかにされる。
実施例1のシステム構成図 データ転送装置の機能構成図 同期処理の手順の説明図 全件取得モジュールによる全件取得処理の処理手順を示すフローチャート 差分取得モジュールによる差分取得処理の処理手順を示すフローチャート データ転送装置の構成図 実施例2における差分取得処理の処理手順を示すフローチャート 実施例2の前回データについての説明図 実施例3における差分取得処理の処理手順を示すフローチャート 実施例3の前回データについての説明図 実施例4における差分取得処理の処理手順を示すフローチャート 実施例4のデータ転送装置の構成図 チャンクサイズ管理の説明図 実施例5における差分取得処理の処理手順を示すフローチャート 実施例5におけるチャンクサイズ管理の説明図 複数の装置を協働させてデータ転送装置としての機能を実現する構成 同期の設定画面の具体例
以下、実施例を図面を用いて説明する。
図1は、実施例1のシステム構成図である。図1に示したソース装置102は、基幹系データソースのデータをソースDB(database)106に蓄積する装置である。ソース装置102は、データ転送装置203を介してシンク装置104に接続されており、シンク装置104のシンクDB107は、ソースDB106と同期する。シンクDB107は、データの解析などのデータ利活用105に提供される。
すなわち、ソース装置102は、同期元となる第1の装置であり、シンク装置104は、同期先である第2の装置である。そして、ソース装置102からシンク装置104への同期は、データ転送装置203により行われる。
図2は、データ転送装置203の機能構成図である。図2に示すようにデータ転送装置203は、全件取得モジュール231、差分取得モジュール232、スケジューラモジュール233、今回データ領域234及び前回データ領域235を有する。
今回データ領域は234、今回の同期で同期対象として指定された同期対象データを格納する記憶領域である。同期対象データを以降、今回データという。前回データ領域235は、前回の同期の結果、同期先である第2の装置が現に保持しているデータを示す同期先データを格納する記憶領域である。同期先データを以降、前回データという。
全件取得モジュール231は、ソース装置102から今回データの全件を取得する全件取得部である。全件取得モジュール231は、取得した今回データを今回データ領域234に格納する。
差分取得モジュール232は、前回データ領域235に予め格納された前回データと、全件取得モジュール231により今回データ領域234に新たに格納された今回データとを用い、シンク装置104に反映すべき差分を特定する。差分取得モジュール232は、特定した差分をシンク装置104に反映させ、その後、前回データを今回データで更新する。すなわち、差分取得モジュール232は、特許請求の範囲における差分取得部として動作する。
スケジューラモジュール233は、データ同期の実行を管理する機能部である。スケジューラモジュール233は、データ同期を実行するタイミングや、データ同期の対象とするデータテーブルを設定することができ、設定された内容に従ってデータ同期を開始する。
図3は、同期処理の手順の説明図である。図3に示すように、まず、スケジューラモジュール233が設定されたタイミングで同期処理301を開始する。同期処理301を開始したスケジューラモジュール233は、全件取得モジュール231に全件取得開始を指示する(302)。
全件取得モジュール231は、スケジューラモジュール233からの指示を受けて全件取得処理303を開始する。全件取得処理303を開始した全件取得モジュール231は、ソース装置102にクエリを渡してクエリ結果を受信することで、ソース装置102から今回データの全件を取得する。ソース装置102では、クエリを受けてクエリ結果を返すまでの読出処理304の間が拘束時間となる。
全件取得モジュール231は、ソース装置102から取得した今回データの全件を今回データ領域234に保存する(305)。その後、全件取得モジュール231は、差分取得モジュール232に差分取得の開始を指示する(306)。
差分取得モジュール232は、全件取得モジュール231からの指示を受けて、差分取得処理307を開始する。差分取得処理307を開始した差分取得モジュール232は、前回データ領域235から前回データを読み出して今回データと前回データを比較して差分を特定する(308)。差分取得モジュール232は、特定した差分が追加や更新が発生であればシンク装置104に差分を転送し(309)、特定した差分が削除であればシンク装置104から差分を削除して(310)、差分をシンク装置104に反映させる。
差分取得モジュール232は、差分をシンク装置104に反映した後、今回データ領域234から今回データの全件を読み出し(311)、読み出した今回データの全件を新たな前回データとして前回データ領域235に保存することで前回データの更新を行う(312)。その後、差分取得モジュール232は、差分取得の終了をスケジューラモジュール233に通知する(312)。スケジューラモジュール233は、差分取得終了の通知を受けて同期処理301を終了する。
図4は、全件取得モジュール231による全件取得処理303の処理手順を示すフローチャートである。全件取得モジュール231は、全件取得処理303を開始すると、全件取得開始の指示(302)から、ソースDBの取得対象の表名と主キーとソート列名を受け取る(401)。
全件取得モジュール231は、受け取った表名とソート列名を用いてクエリを組み立てる(402)。その後、全件取得モジュール231は、ソースDB106にクエリを渡し、クエリ結果を受信する(403)。
全件取得モジュール231は、ソース装置102の読出処理(304)に基づくクエリ結果を、受信した行から今回データ領域234に保存する(404)。全てのクエリ結果を保存した後、全件取得モジュール231は、差分取得モジュール232に対し、401で受け取った情報(ソースDBの取得対象の表名、主キー及びソート列名)と合わせて差分取得開始の依頼を行って(306)、全件取得処理を終了する。
図5は、差分取得モジュール232による差分取得処理307の処理手順を示すフローチャートである。差分取得モジュール232は、差分取得処理307を開始すると、今回データ領域234から対象表のデータを1行取得し(501)、前回データ領域235から主キー列及びソート列の値が等しい行を取得する(502)。
502の処理において、501で取得した行と主キー列及びソート列の値が等しい行が見つかり、かつ、501で取得した行と502で取得した行とが等しいならば(503;Y)、差分取得モジュール232は、504の処理に移行する。
502の処理において、501で取得した行と主キー列及びソート列の値が等しい行が見つからない場合や、501で取得した行と502で取得した行とが等しくない場合(503;N)、差分取得モジュール232は、501で取得した行をシンク装置104に転送し(531)、その後、504の処理に移行する。
504の処理では、差分取得モジュール232は、今回データ領域の末尾であるか否か、すなわち、今回データから全ての行を取得済みであるか否かを判定する。未取得の行が残っていれば(504;N)、差分取得モジュール232は、501の処理に戻る。全ての行を処理済みであれば(504:Y)、差分取得モジュール232は、505の処理に移行する。
505の処理では、差分取得モジュール232は、前回データ領域235から対象表のデータ1行取得する。その後、差分取得モジュール232は、取得した行と主キー列及びソート列の値が等しい行が今回データに含まれているか否かを取得する(506)。
506の処理において、505で取得した行と主キー列及びソート列の値が等しい行が今回データに含まれていれば、差分取得モジュール232は、507の処理に移行する。
506の処理において、505で取得した行と主キー列及びソート列の値が等しい行が今回データに含まれていなければ、差分取得モジュール232は、505で取得した行をシンク装置104から削除し(561)、その後、507の処理に移行する。
507の処理では、差分取得モジュール232は、前回データ領域の末尾であるか否か、すなわち、前回データから全ての行を取得済みであるか否かを判定する。未取得の行が残っていれば(507;N)、差分取得モジュール232は、505の処理に戻る。全ての行を処理済みであれば(507:Y)、差分取得モジュール232は、508の処理に移行する。
508の処理では、差分取得モジュール232は、今回データ領域234から前回データ領域235に対象表を移動する。その後、差分取得モジュール232は、スケジューラモジュール233に差分取得終了を通知して(312)、差分取得処理307を終了する。
図6は、データ転送装置203の構成図である。図6に示すように、データ転送装置203は、CPU(Central Processing Unit)601、主記憶602、二次記憶603及び通信インタフェース604をバス605で接続した構成を有するコンピュータである。
二次記憶603は、磁気記憶デバイスなどであり、全件取得モジュールプログラム631、差分取得モジュールプログラム632、スケジューラモジュールプログラム633を格納する。また、二次記憶603は、今回データ領域234及び前回データ領域235を有する。すなわち、二次記憶603は、特許請求の範囲における記憶部に対応する。
CPU601は、全件取得モジュールプログラム631を二次記憶603から読み出して主記憶602に展開し、実行することで、全件取得モジュール231としての機能を実現する。同様に、CPU601は、差分取得モジュールプログラム632を二次記憶603から読み出して主記憶602に展開し、実行することで、差分取得モジュール232としての機能を実現する。また、CPU601は、スケジューラモジュールプログラム633を二次記憶603から読み出して主記憶602に展開し、実行することで、スケジューラモジュール233としての機能を実現する。
上述してきたように、本実施例1によれば、データ転送装置203は、同期元となるソース装置102から同期対象として指定された今回データの全件を取得して今回データ領域234に格納し、前回データ領域235に予め格納した前回データと今回データを比較して特定した差分をシンク装置104に反映させ、今回データで前回データの更新を行なう。
シンク装置104は、例えばリレーショナルデータベースであり、データ転送装置203の今回データ領域234と前回データ領域235は例えば単純で安価なストレージデバイスである。一般に、リレーショナルデータベースへの書込みはストレージへの書込みよりも低速であるため、本実施例1のように、ソース装置102から取得した今回データの全件を今回データ領域234に格納することとすれば、シンク装置104に今回データの全件を書き込むよりソース装置102の拘束時間を大きく短縮することができる。
また、シンク装置104が現に保持するデータと同一のデータをデータ転送装置203に保持しておき、データ転送装置203が差分の特定を担うことで、シンク装置104の負荷を軽減することができる。
なお、本実施例1の構成では、今回データ領域234と前回データ領域235にそれぞれ同期対象データと同等の容量が求められる。今回データ領域234と前回データ領域235は、1の記憶部に設ける必要はなく、1又は複数の記憶デバイスで必要な容量を賄えばよい。
本実施例1では、特定した差分をシンク装置104に反映した後、今回データ領域234に格納した今回データを新たな前回データとして前回データ領域235に書き込む場合を例示したが、本発明は、かかる構成に限定されるものではない。例えば、2つのデータ領域に「今回データ」と「前回データ」のいずれであるかを示すフラグを対応付けて管理してもよい。この場合には、特定した差分をシンク装置104に反映した後、フラグを切り替えるだけで今回データを新たな前回データとすることができる。
本実施例2では、前回データ領域235に格納する前回データは、シンク装置104が現に保持するテーブルデータ(対象表)の行ごとに生成したハッシュデータである。このようにハッシュデータを前回データとすることで、前回データの格納に必要な容量を大きく削減することができる。
以降、本実施例2について、実施例1との相違点を中心に説明を行う。
図7は、実施例2における差分取得処理307の処理手順を示すフローチャートである。実施例2において、差分取得モジュール232は、差分取得処理307を開始すると、今回データ領域234から対象表のデータを1行取得し、ハッシュを計算する(701)。その後、差分取得モジュール232は、前回データ領域235から主キー列及びソート列の値が等しい行のハッシュを取得する(702)。
702の処理において、701で取得した行と主キー列及びソート列の値が等しい行が見つかり、かつ、701で取得した行と702で取得した行のハッシュが等しいならば(703;Y)、差分取得モジュール232は、704の処理に移行する。
702の処理において、701で取得した行と主キー列及びソート列の値が等しい行が見つからない場合や、701で取得した行と502で取得した行のハッシュが等しくない場合(703;N)、差分取得モジュール232は、701で取得した行をシンク装置104に転送し(531)、その後、504の処理に移行する。
504の処理では、差分取得モジュール232は、今回データ領域の末尾であるか否か、すなわち、今回データから全ての行を取得済みであるか否かを判定する。未取得の行が残っていれば(504;N)、差分取得モジュール232は、701の処理に戻る。全ての行を処理済みであれば(504:Y)、差分取得モジュール232は、505の処理に移行する。
505の処理では、差分取得モジュール232は、前回データ領域235から対象表のデータ1行取得する。その後、差分取得モジュール232は、取得した行と主キー列及びソート列の値が等しい行が今回データに含まれているか否かを取得する(506)。
506の処理において、505で取得した行と主キー列及びソート列の値が等しい行が今回データに含まれていれば、差分取得モジュール232は、507の処理に移行する。
506の処理において、505で取得した行と主キー列及びソート列の値が等しい行が今回データに含まれていなければ、差分取得モジュール232は、505で取得した行をシンク装置104から削除し(561)、その後、507の処理に移行する。
507の処理では、差分取得モジュール232は、前回データ領域の末尾であるか否か、すなわち、前回データから全ての行を取得済みであるか否かを判定する。未取得の行が残っていれば(507;N)、差分取得モジュール232は、505の処理に戻る。全ての行を処理済みであれば(507:Y)、差分取得モジュール232は、708の処理に移行する。
708の処理では、差分取得モジュール232は、今回データ領域234から今回データを読み出して各行のハッシュを求め、前回データ領域235に格納することで対象表を移動する。その後、差分取得モジュール232は、スケジューラモジュール233に差分取得終了を通知して(312)、差分取得処理307を終了する。
図8は、実施例2の前回データについての説明図である。実施例2の前回データは、行のソート列値801と、行の主キーの値802と、行のハッシュ値803の列を有するテーブルである。行の主キーの値802は、対象表において行を一意に特定可能することのできるユニークな値である。行のソート列値801は、対象表が有する列のうち、指定された特定の列の値である。行のハッシュ値は、対象表の行ごとに求めたものである。
行のソート列値801と行の主キーの値802は、組み合わせることで、今回データと前回データの同一行の識別に用いられる。行のハッシュ値は、同一行と識別された行の各列の値が完全に一致するか否かを判定するために用いられる。
本実施例2では、前回データは、シンク装置104が現に保持するデータから生成したハッシュデータであり、差分取得モジュール232は、差分をシンク装置104に反映させた後、今回データから生成したハッシュデータを新たな前回データとする。このため、実施例1と同様の効果に加え、前回データのサイズを削減することができる。
なお、本実施例2では、特定した差分をシンク装置104に反映した後、今回データからハッシュを求める構成を例示した。この場合には、反映直後から前回データの容量を圧縮することができる。特に、複数のデータテーブルを管理する場合には、データテーブルの数だけ容量削減の効果を得られることになる。
実施例2の変形例として、新たに今回データを取得するまでは前回データをハッシュ化せずに残しておき、新たに今回データを取得する直前に前回データをハッシュ化してもよい。この場合には、前回の同期と異なるソート列が変更されても対応することが可能である。特に、管理するデータテーブルが単一であれば、確保すべき記憶部の容量が大きくなるというデメリットも生じない。
本実施例3では、対象のデータテーブルに対して1又は複数の行を含むチャンクを設定し、チャンクに含まれる1又は複数の行から1のハッシュデータを生成して前回データとすることで、行ごとにハッシュを管理するよりもさらに前回データのサイズを削減する。
チャンクは、データテーブルのソート列の値の範囲(最大値と最小値)を指定することで設定し、チャンク番号を付与することで識別する。
以降、本実施例3について、実施例2との相違点を中心に説明を行う。
図9は、実施例3における差分取得処理307の処理手順を示すフローチャートである。実施例3において、差分取得モジュール232は、差分取得処理307を開始すると、前回データ領域235からn番目のチャンクを取得し(901)、取得したチャンクのソート列の値の最大値と最小値を取得する(902)。
その後、差分取得モジュール232は、今回データ領域234から、902の処理で取得した範囲のデータを取得して、ハッシュを計算する(903)。
差分取得モジュール232は、901の処理で取得したチャンクのハッシュと、903の処理で計算したハッシュとを比較する(904)。
比較の結果、ハッシュが一致すれば(904;Y)、905の処理に移行する。
ハッシュが不一致であれば(904;N)、差分取得モジュール232は、チャンクに含まれる全ての行をシンク装置104に転送して(941)、チャンク内で発生した追加、更新、削除を反映させ、905の処理に移行する。
905の処理では、差分取得モジュール232は、前回データ領域の末尾であるか否か、すなわち、前回データから全てのチャンクを取得済みであるか否かを判定する。未取得のチャンクが残っていれば(905;N)、差分取得モジュール232は、901の処理に戻る。全てのチャンクを取得済みであれば(905:Y)、差分取得モジュール232は、906の処理に移行する。
906の処理では、差分取得モジュール232は、今回データ領域234からソート列の値が前回データ領域の最小値よりも小さいものを取得する。その後の907の処理で、差分取得モジュール232は、今回データ領域234からソート列の値が前回データ領域の最大値よりも大きいものを取得する。
差分取得モジュール232は、906と907の処理で取得した行をシンク装置104に転送する(908)。この転送により、前回データの範囲を超えて追加された行がシンク装置104に反映されることになる。
908の処理の後、差分取得モジュール232は、今回データ領域234の今回データを用いて対象表のチャンクのハッシュを計算し、前回データ領域235に格納することで、前回データを更新する(909)。その後、差分取得モジュール232は、スケジューラモジュール233に差分取得終了を通知し(312)、差分取得処理を終了する。
図10は、実施例3の前回データについての説明図である。実施例3の前回データは、チャンク番号1001と、ソート列の最小値1002と、ソート列の最大値1003と、チャンクのハッシュ値1004とを有する。具体的には、チャンク番号「1」のチャンクは、ソート列の値が「1」~「110」である行を含み、チャンクに含まれる全ての行から1つのハッシュ値が計算されている。同様に、チャンク番号「2」のチャンクは、ソート列の値が「111」~「220」である行を含み、チャンクに含まれる全ての行から1つのハッシュ値が計算されている。
チャンクをソート列値の範囲で設定しているため、各チャンクに含まれる行数は同一である必要はない。そして、あるチャンクに行の挿入や削除が発生しても、他のチャンクに影響が及ぶことはない。
本実施例3では、差分取得モジュール232は、シンク装置104が現に保持するテーブルデータに対して1又は複数のチャンクを設定し、チャンクに含まれる1又は複数の行から1のハッシュデータを生成して前回データとする。このため、実施例1と同様の効果に加え、前回データのサイズを削減することができる。
また、差分取得モジュール232は、テーブルデータの所定の列について、当該列の値である列値の範囲を指定することでチャンクを設定するので、行の追加や削除が他のチャンクに影響を及ぼす事態を回避し、チャンク単位の差分の反映を効率的に行うことができる。
本実施例4では、チャンクのサイズを動的に変更する構成を示す。
以降、本実施例4について、実施例3との相違点を中心に説明を行う。
図11は、実施例4における差分取得処理307の処理手順を示すフローチャートである。901の処理から908の処理までは、実施例3と同様であるので、説明を省略する。
実施例4では、908の処理の後、1101の処理に移行する。
1101の処理において、差分取得モジュール232は、941の処理で行った転送の所要時間の中に、過去統計より+1σ以上大きいものがあるか否かを判定する。
所要時間の中に過去統計より+1σ以上大きいものがあるならば(1101;Y)、1102に移行する。
所要時間の中に過去統計より+1σ以上大きいものがなければ(1101;N)、差分取得モジュール232は、941の処理で行った転送の所要時間の中に、過去統計より-1σ以下の小さいものがあるか否かを判定する(1111)。
所要時間の中に過去統計より-1σ以下の小さいものがあるならば(1111;Y)、1112に移行する。
所要時間の中に過去統計より-1σ以下の小さいものがなければ(1111;N)、差分取得モジュール232は、今回データ領域234の使用量が閾値以上であるか否かを判定する(1113)。
今回データ領域234の使用量が閾値以上であれば(1113;Y)、1112の処理に移行し、今回データ領域234の使用量が閾値未満であれば(1113;N)、1104に移行する。
1102の処理では、差分取得モジュール232は、チャンクに含まれる行数が減るようにチャンクの範囲を変更し、1103の処理に移行する。
1112の処理では、差分取得モジュール232は、チャンクに含まれる行数が増えるようにチャンクの範囲を変更し、1103の処理に移行する。
一例として、チャンクの行数を増やすときは、チャンクの範囲を25%ずつ増やし、チャンクの行数を減らすときは、チャンクの範囲を25%ずつ減らす。
1103の処理では、所要時間の統計値をリセットし、1104に移行する。
1104の処理では、差分取得モジュール232は、今回の941の処理で行った転送の所要時間を用いて、統計を更新する。
1104の処理の後、差分取得モジュール232は、今回データ領域234の今回データを用いて対象表のチャンクのハッシュを計算し、前回データ領域235に格納することで、前回データを更新する(909)。その後、差分取得モジュール232は、スケジューラモジュール233に差分取得終了を通知し(312)、差分取得処理を終了する。
図12は、実施例4のデータ転送装置203の構成図である。図12に示すように、実施例4では、二次記憶603は、チャンクサイズ管理1201のデータをさらに保持している。このデータによりデータ転送装置203はチャンクのサイズを管理する。
図13は、チャンクサイズ管理の説明図である。図13に示すように、チャンクサイズの管理は、テーブルを特定する情報(DBサーバ名1301、DB名1302、スキーマ名1303、テーブル名1304)に対し、チャンクサイズを対応付けることで行われる。チャンクサイズは、各チャンクにおいて、ソート列値の値の範囲を示すものである。
本実施例4では、差分取得モジュール232は、シンク装置104の負荷状況や、今回データ領域234の空き容量に応じてチャンクのサイズを変更することができる。なお、本実施例4では、シンク装置104の負荷状況として転送の所要時間を用いる場合を例示したが、シンク装置104の負荷を示す任意のデータを用いてチャンクのサイズを変更することができる。同様に、今回データ領域234の空き容量に限定されることなく、データ転送装置203の状態を示す任意のデータを用いてチャンクのサイズを変更可能である。また、ソース装置102やネットワークの状況などを用いてチャンクのサイズを変更してもよい。
実施例4では、テーブルデータの全ての行をいずれかのチャンクに含める場合を示したが、テーブルデータの一部をチャンクの設定対象から除外してもよい。
例えば、売上管理データが対象である場合、新たな売上のデータが順次追加されるが、データの追加の発生頻度に比して変更や削除の発生頻度は低くなる。そして、変更や削除が発生する場合にも、新しい売上に対する変更や削除が主であり、古い売上に対する変更や削除が発生することは少ない。
このような特性を有するテーブルでは、売上の日時をソート列とし、日時が新しい側の所定範囲についてはチャンクの設定対象から除外して、行単位で差分の特定を行う方が、データの同期を効率的に行うことができる。
本実施例5では、テーブルデータにおいて行の追加が見込まれる所定範囲をチャンクの設定対象から除外し、当該所定範囲においては行単位で差分の特定を行う構成を示す。
以降、本実施例5について、実施例4との相違点を中心に説明を行う。
図14は、実施例5における差分取得処理307の処理手順を示すフローチャートである。実施例5において、差分取得モジュール232は、差分取得処理307を開始すると、前回チャンク数を取得する(1401)。前回チャンク数は、前回データに設定されたチャンクの数であり、実施例5ではチャンクサイズ管理1201のデータに含まれる。
1401の処理の後、差分取得モジュール232は、実施例4と同様に、901から904の処理と、941の処理を行う。
実施例5では、904の比較の結果、ハッシュが一致した場合(904;Y)、もしくは941の処理が終了した場合に、1402の処理に移行する。
1402の処理では、差分取得モジュール232は、前回のチャンクを全て取得したか否かを判定する。
未取得のチャンクが残っていれば(1402;N)、差分取得モジュール232は、901の処理に戻る。全てのチャンクを取得済みであれば(1402;Y)、差分取得モジュール232は、906の処理に進む。
906の処理では、差分取得モジュール232は、実施例3と同様に、今回データ領域234からソート列の値が前回データ領域の最小値よりも小さいものを取得する。その後、実施例3で示した907の処理は行わず、908の処理に進む。
908の処理で、差分取得モジュール232は、906の処理で取得した行をシンク装置104に転送する(908)。この転送により、前回データの範囲よりもソート列の値が小さい行がシンク装置104に反映されることになる。
908の処理の後、差分取得モジュール232は、701の処理に進む。701から703の処理、531の処理、504から507の処理、561の処理については、実施例2と同様である。
507の処理で前回データ領域の末尾となれば(507:Y)、差分取得モジュール232は、1101の処理に移行する。1101から1104までの処理は、実施例4と同様である。
1104の処理の後、差分取得モジュール232は、今回データ領域のソート列の最大値から最小値を引いた値を、チャンクサイズで除算し、その商を新たなチャンク数として前回チャンク数を更新する(1403)。
1403の処理の後、差分取得モジュール232は、今回データ領域234の対象表に対し、ソート列値の小さい側から、1403の処理で求めたチャンク数分のチャンクを設定し、各チャンクのハッシュを求めて前回データ領域235に移動させる(1404)。
1404の処理の後、差分取得モジュール232は、チャンクの設定対象から除外された行、すなわち、ソート列値の大きい側の非チャンクの行について、行ごとのハッシュを計算し、前回データ領域235に移動させる(1405)。
1405の処理の後、差分取得モジュール232は、スケジューラモジュール233に差分取得終了を通知し(312)、差分取得処理を終了する。
図15は、実施例5におけるチャンクサイズ管理の説明図である。図15に示すように、実施例5のチャンクサイズの管理は、テーブルを特定する情報(DBサーバ名1301、DB名1302、スキーマ名1303、テーブル名1304)に対し、チャンクサイズと前回チャンク数を対応付けることで行われる。チャンクサイズは、各チャンクにおいて、ソート列値の値の範囲を示すものであり、チャンク数は、前回データに設定したチャンクの数を示すものである。
本実施例5では、差分取得モジュール232は、テーブルデータにおいて行の追加が見込まれる所定範囲をチャンクの設定対象から除外し、当該所定範囲においては行単位で差分の特定を行うので、データの追加、変更、削除が所定範囲に集中する特性を有するデータテーブルの同期を効率的に行うことができる。
なお、本実施例5では、今回データ領域のソート列の最大値から最小値を引いた値を、チャンクサイズで除算し、除算の余を所定範囲とする場合を例示したが、所定範囲は任意に設定することができる。例えば、除算の余がゼロである場合には、チャンク数を1小さくしてもよい。もしくは、今回データ領域のソート列の最大値から最小値を減算するとともに、所定範囲の最低保証分をさらに減算したうえで、チャンクサイズで除算することとしてもよい。
(変形例)
上記実施例1~実施例5は、あくまで一例であり、本発明を限定するものではない。例えば、データ転送装置203は必ずしも一体に構成する必要はなく、複数の装置が協働してデータ転送装置203としての機能を実現してもよい。
図16は、複数の装置を協働させてデータ転送装置としての機能を実現する場合の構成例である。図16のシステムは、ソース装置102と通信接続するソース側転送装置としてのデータ転送装置A1601と、シンク装置104と通信接続するシンク側転送装置としてのデータ転送装置B1602とを備える。
また、データ転送装置A1601とデータ転送装置B1602とは、高遅延ネットワーク1603で接続されている。そして、データ転送装置A1601は、全件取得モジュール231、差分取得モジュール232、今回データ領域234及び前回データ領域235を有し、データ転送装置B1602は、スケジューラモジュール233を有する。
かかる構成では、高遅延ネットワークを介在したとても、ソース装置102の拘束時間を短縮し、シンク装置104の負荷を軽減することが可能である。また、データ転送装置A1601がネットワークに出すデータを減らすことができる。
図17は、同期の設定画面の具体例である。図17に示した設定画面1701は、データベースやユーザに関する項目に加え、更新設定項目1702、差分更新設定項目1703、主キー列名1704及びソート列名1705を有する。
更新設定項目1702は、表に対して既存データの更新(書き換え)が許可されているか否かを示す。差分更新設定項目1703は、同期の際に差分更新を行なうか否かを示す。
ここで、図17では、更新設定項目1702が既存データの更新を許可し、差分更新を行なう設定となっている。従来の技術では、差分更新は、既存データの更新を許可しないことを条件に選択可能とされているが、本実施例に開示するシステムでは、データ転送装置203が今回データの全件を取得して差分の特定を行うので、既存データの更新が許可された表についても差分更新を行なうことができる。
主キー列名1704及びソート列名1705は、差分更新を行なう際に、どの列を用いて前回データと今回データの対応関係を識別するかを設定する項目である。
上述の実施例1~実施例5並びに変形例は、本発明を限定するものではなく、本発明には様々な変形例が含まれる。例えば、上記した実施例等は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、かかる構成の削除に限らず、構成の置き換えや追加も可能である。
101:基幹系データソース、102:ソース装置、104:シンク装置、105:データ利活用、106:ソースDB、107:シンクDB、203:データ転送装置、231:全件取得モジュール、232:差分取得モジュール、233:スケジューラモジュール、234:今回データ領域、235:前回データ領域、601:CPU、602:主記憶、603:二次記憶、604:通信I/F、605:バス

Claims (6)

  1. 同期元となる第1の装置から同期対象として指定されたデータである同期対象データの全件を取得する全件取得部と、
    同期先である第2の装置が現に保持するデータを示す同期先データを予め格納するとともに、前記全件取得部により取得された同期対象データを格納する1又は複数の記憶部と、
    前記同期先データ及び前記同期対象データを用いて前記第2の装置に反映すべき差分を特定し、特定した差分を前記第2の装置に反映させ、該反映の後、前記同期対象データに基づいて前記同期先データを更新する差分取得部と
    を備え
    前記差分取得部は、
    前記第2の装置が現に保持するテーブルデータに対して1又は複数のチャンクを設定し、前記チャンクに含まれる1又は複数の行から1のハッシュデータを生成して前記同期先データとし、
    前記差分を前記第2の装置に反映させた後、前記同期対象データから生成したハッシュデータを新たな同期先データとするものであり、
    前記差分取得部は、前記第2の装置の負荷状況に応じて、又は前記記憶部の空き容量に応じて、前記チャンクのサイズを変更することを特徴とするデータ同期システム。
  2. 前記差分取得部は、前記テーブルデータの所定の列について、当該列の値である列値の範囲を指定することで前記チャンクを設定することを特徴とする請求項1に記載のデータ同期システム。
  3. 前記差分取得部は、前記テーブルデータにおいて行の追加が見込まれる所定範囲を前記チャンクの設定対象から除外し、当該所定範囲においては行単位で差分の特定を行うことを特徴とする請求項2に記載のデータ同期システム。
  4. 前記第1の装置と通信接続するソース側転送装置と、前記第2の装置と通信接続するシンク側転送装置とを備え、
    前記ソース側転送装置は、前記全件取得部及び前記記憶部を少なくとも有し、
    前記シンク側転送装置は、前記ソース側転送装置と所定のネットワークを介して接続されて、前記差分を前記第2の装置に反映する処理を実行する
    ことを特徴とする請求項1に記載のデータ同期システム。
  5. 同期元となる第1の装置から同期対象として指定されたデータである同期対象データの全件を取得する全件取得部と、
    同期先である第2の装置が現に保持するデータを示す同期先データを予め格納するとともに、前記全件取得部により取得された同期対象データを格納する1又は複数の記憶部と、
    前記同期先データ及び前記同期対象データを用いて前記第2の装置に反映すべき差分を特定し、特定した差分を前記第2の装置に反映させ、該反映の後、前記同期対象データに基づいて前記同期先データを更新する差分取得部と
    を備え
    前記差分取得部は、
    前記第2の装置が現に保持するテーブルデータに対して1又は複数のチャンクを設定し、前記チャンクに含まれる1又は複数の行から1のハッシュデータを生成して前記同期先データとし、
    前記差分を前記第2の装置に反映させた後、前記同期対象データから生成したハッシュデータを新たな同期先データとするものであり、
    前記差分取得部は、前記第2の装置の負荷状況に応じて、又は前記記憶部の空き容量に応じて、前記チャンクのサイズを変更することを特徴とするデータ同期装置。
  6. データ同期装置が、
    同期元となる第1の装置から同期対象として指定されたデータである同期対象データの全件を取得する全件取得ステップと、
    前記全件取得ステップにより取得された同期対象データを所定の記憶部に格納するステップと、
    同期先である第2の装置が現に保持するデータを示す同期先データと前記同期対象データとを用いて前記第2の装置に反映すべき差分を特定するステップと、
    特定した差分を前記第2の装置に反映させるステップと、
    前記反映の後、前記同期対象データに基づいて前記同期先データを更新するステップと
    を含み、
    前記同期先データは、前記第2の装置が現に保持するテーブルデータに対して1又は複数のチャンクを設定し、前記チャンクに含まれる1又は複数の行から1のハッシュデータを生成したものであり、
    前記差分を前記第2の装置に反映させた後、前記チャンクのサイズを、前記第2の装置の負荷状況に応じて、又は前記記憶部の空き容量に応じて変更するステップと、前記同期対象データから生成したハッシュデータを新たな同期先データとするステップとをさらに含むことを特徴とするデータ同期方法。
JP2020200535A 2020-12-02 2020-12-02 データ同期システム、データ同期装置及びデータ同期方法 Active JP7481244B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2020200535A JP7481244B2 (ja) 2020-12-02 2020-12-02 データ同期システム、データ同期装置及びデータ同期方法
US17/539,383 US20220171788A1 (en) 2020-12-02 2021-12-01 Data synchronization system, data synchronization apparatus, and data synchronization method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2020200535A JP7481244B2 (ja) 2020-12-02 2020-12-02 データ同期システム、データ同期装置及びデータ同期方法

Publications (2)

Publication Number Publication Date
JP2022088221A JP2022088221A (ja) 2022-06-14
JP7481244B2 true JP7481244B2 (ja) 2024-05-10

Family

ID=81751470

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020200535A Active JP7481244B2 (ja) 2020-12-02 2020-12-02 データ同期システム、データ同期装置及びデータ同期方法

Country Status (2)

Country Link
US (1) US20220171788A1 (ja)
JP (1) JP7481244B2 (ja)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006113783A (ja) 2004-10-14 2006-04-27 Hitachi Ltd 計算機システム
JP2006338298A (ja) 2005-06-01 2006-12-14 Sharp Corp マルチデータの分割管理方法およびそれを用いた情報端末装置
JP2009230523A (ja) 2008-03-24 2009-10-08 Nippon Hoso Kyokai <Nhk> ファイル同期装置、ファイル同期方法及びファイル同期プログラム
JP2010205100A (ja) 2009-03-05 2010-09-16 Nec Corp 管理サーバ、バックアップ方式、バックアップ方法、及び、プログラム
JP2011198385A (ja) 2005-09-29 2011-10-06 Research In Motion Ltd 代表的な情報を比較することによる効率的なデータベースの同期化
JP2013254400A (ja) 2012-06-08 2013-12-19 Hitachi Ltd 計算機システム、バックアップデータ生成方法、バックアップ計算機及びプログラム
JP2020190874A (ja) 2019-05-21 2020-11-26 株式会社医療情報技術研究所 文書管理システム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8869138B2 (en) * 2011-11-11 2014-10-21 Wyse Technology L.L.C. Robust firmware update with recovery logic
US9400800B2 (en) * 2012-11-19 2016-07-26 Palo Alto Research Center Incorporated Data transport by named content synchronization
US9355116B2 (en) * 2013-03-04 2016-05-31 Vmware, Inc. Cross-file differential content synchronization using cached patches
CN104239357B (zh) * 2013-06-21 2019-01-18 Sap欧洲公司 用于数据库事务的并发请求处理
JP6394259B2 (ja) * 2014-10-09 2018-09-26 富士通株式会社 認証システム、認証方法、および認証装置
JP6587953B2 (ja) * 2016-02-10 2019-10-09 東芝メモリ株式会社 ストレージコントローラ、ストレージ装置、データ処理方法およびプログラム

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006113783A (ja) 2004-10-14 2006-04-27 Hitachi Ltd 計算機システム
JP2006338298A (ja) 2005-06-01 2006-12-14 Sharp Corp マルチデータの分割管理方法およびそれを用いた情報端末装置
JP2011198385A (ja) 2005-09-29 2011-10-06 Research In Motion Ltd 代表的な情報を比較することによる効率的なデータベースの同期化
JP2009230523A (ja) 2008-03-24 2009-10-08 Nippon Hoso Kyokai <Nhk> ファイル同期装置、ファイル同期方法及びファイル同期プログラム
JP2010205100A (ja) 2009-03-05 2010-09-16 Nec Corp 管理サーバ、バックアップ方式、バックアップ方法、及び、プログラム
JP2013254400A (ja) 2012-06-08 2013-12-19 Hitachi Ltd 計算機システム、バックアップデータ生成方法、バックアップ計算機及びプログラム
JP2020190874A (ja) 2019-05-21 2020-11-26 株式会社医療情報技術研究所 文書管理システム

Also Published As

Publication number Publication date
US20220171788A1 (en) 2022-06-02
JP2022088221A (ja) 2022-06-14

Similar Documents

Publication Publication Date Title
US11023448B2 (en) Data scrubbing method and apparatus, and computer readable storage medium
CN108319654B (zh) 计算系统、冷热数据分离方法及装置、计算机可读存储介质
CN106462592B (zh) 优化对索引的多版本支持的系统和方法
CN108121782B (zh) 查询请求的分配方法、数据库中间件系统以及电子设备
US20200334207A1 (en) Synchronization of metadata in a distributed storage system
US9672244B2 (en) Efficient undo-processing during data redistribution
CN108509462B (zh) 一种同步活动事务表的方法及装置
KR101663215B1 (ko) 데이터 저장 방법 및 장치
US20160026699A1 (en) Method for Synchronization of UGC Master and Backup and System Thereof, and Computer Storage Medium
US11847034B2 (en) Database-level automatic storage management
EP3885929A1 (en) Data redistribution method, device, and system
CN106294205B (zh) 缓存数据处理方法及装置
US11675743B2 (en) Web-scale distributed deduplication
CN111386521B (zh) 在数据库集群中重分布表数据
CN112334891A (zh) 用于搜索服务器的集中式存储
CN112148736A (zh) 缓存数据的方法、设备及存储介质
US10430400B1 (en) User controlled file synchronization limits
JP7481244B2 (ja) データ同期システム、データ同期装置及びデータ同期方法
CN112187889A (zh) 一种数据同步方法、装置及存储介质
CN113901141B (zh) 一种分布式数据同步方法及系统
CN112115166B (zh) 数据缓存方法、装置、计算机设备和存储介质
US20110214130A1 (en) Data processing system, data processing method, and data processing program
CN113253924A (zh) 数据处理方法、装置、电子设备及计算机可读存储介质
US20150215404A1 (en) Replication device, replication method, and replication system
CN111190912B (zh) 一种基于行变更的面向大事务的分片执行方法和装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20230222

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20240125

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20240130

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20240326

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: 20240402

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20240425