JP6404892B2 - データベースシステムおよびデータ処理方法 - Google Patents
データベースシステムおよびデータ処理方法 Download PDFInfo
- Publication number
- JP6404892B2 JP6404892B2 JP2016245873A JP2016245873A JP6404892B2 JP 6404892 B2 JP6404892 B2 JP 6404892B2 JP 2016245873 A JP2016245873 A JP 2016245873A JP 2016245873 A JP2016245873 A JP 2016245873A JP 6404892 B2 JP6404892 B2 JP 6404892B2
- Authority
- JP
- Japan
- Prior art keywords
- query
- replication
- data
- master
- server device
- 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
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
この従来技術では、マスターサーバー装置側でのデータ更新頻度のみに基づいて半同期レプリケーションと非同期レプリケーションとを切り替えいるため、スレーブ装置側の負荷やネットワークの負荷は考慮されないという問題がある。また、スレーブサーバー装置がマスターサーバー装置への応答を行わないため、同期が完全ではないという問題がある。
この従来技術では、マスターサーバー装置側でデータ更新型の重いクエリーを実行したとき、スレーブサーバー装置側での同期完了に時間がかかり過ぎるという問題がある。この問題について、次に具体的に説明する。
マスターサーバー装置は、マスター側記憶部と、マスター側要求変換部と、マスター側命令実行部と、マスター側レプリケーション実行部とを持つ。マスター側記憶部は、データを記憶する。マスター側要求変換部は、要求されるクエリーを受信し、受信した前記クエリーが通常のクエリーであるか重いクエリーであるかを判定する。マスター側命令実行部は、前記マスター側要求変換部が受信した前記クエリーを実行して前記マスター側記憶部に記憶されている前記データを処理するとともに、前記クエリーの実行結果を前記スレーブサーバー装置側にレプリケーションするためのレプリケーションデータを生成する。マスター側レプリケーション実行部は、前記マスター側命令実行部によって生成された前記レプリケーションデータを前記スレーブサーバー装置側に転送する。
スレーブサーバー装置は、スレーブ側記憶部と、スレーブ側レプリケーション実行部とを持つ。スレーブ側記憶部は、前記マスター側記憶部が記憶する前記データのレプリケーションを記憶する。スレーブ側レプリケーション実行部は、前記マスター側レプリケーション実行部から転送された前記レプリケーションデータに基づき、前記スレーブ側記憶部に記憶された前記データのレプリケーションを更新する。
そして、マスター側レプリケーション実行部は、前記マスター側要求変換部が通常のクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行部が当該クエリーの実行を完了した後に前記スレーブサーバー装置側に転送するとともに、前記マスター側要求変換部が重いクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行部が当該クエリーの実行を完了したか否かに関わらず前記スレーブサーバー装置側に転送する。
なお、同図では、スレーブサーバー装置3が1台のみ存在する場合を示しているが、スレーブサーバー装置3が複数台存在する構成として、データベースシステム1を構成するようにしてもよい。
なお、図示するように、マスターサーバー装置2に接続されるクライアント装置を、クライアント装置102とする。また、スレーブサーバー装置3に接続されるクライアント装置を、クライアント装置103とする。
図1に示すように、マスターサーバー装置2は、要求変換部21(マスター側要求変換部)と、命令実行部22(マスター側命令実行部)と、レプリケーションデータ保持部23と、記憶部24(マスター側記憶部)と、レプリケーション実行部25と、を含んで構成される。これらの各機能は、電子回路を用いて実現される。また、情報を記憶するために、適宜、半導体メモリーや磁気ハードディスク等の情報記憶手段を用いる。なお、コンピュータープログラムを用いて上記各部の少なくとも一部を実現するようにしてもよい。
つまり、要求変換部21は、要求されるクエリーを受信し、受信したクエリーが通常のクエリーであるか重いクエリーであるかを判定する。
要求変換部21は、命令実行部22における処理が完了すると、クライアント装置102にレスポンスを返す。
つまり、命令実行部22は、要求変換部21が受信したクエリーを実行して記憶部24に記憶されているデータを処理(参照や更新)するとともに、クエリーの実行結果をスレーブサーバー装置3側にレプリケーションするためのレプリケーションデータを生成する。
そして、命令実行部22は、命令された処理の完了後に、要求変換部21にレスポンスを返す。
レプリケーションデータは、個々のクエリーに対応するものである。レプリケーションデータは、クエリーの実行結果であるデータの物理ログ、またはクエリーそのもののデータ(論理ログ)のいずれかの形態を取り得る。これらのいずれの形態であっても、レプリケーションデータは、クエリーによるデータ更新の結果を再現することができる情報である。
つまり、レプリケーション実行部25は、命令実行部22によって生成されたレプリケーションデータをスレーブサーバー装置3側に転送する。このレプリケーションデータの転送により、マスターサーバー装置2側でのクエリー(データ更新)の完全な情報が、スレーブサーバー装置3側に伝わる。
また、レプリケーション実行部25は、要求変換部21が通常のクエリーであると判定したクエリーに関するレプリケーションデータを、命令実行部22が当該クエリーの実行を完了した後にスレーブサーバー装置3側に転送するとともに、要求変換部21が重いクエリーであると判定したクエリーに関するレプリケーションデータを、命令実行部22が当該クエリーの実行を完了したか否かに関わらずスレーブサーバー装置3側に転送する。これにより、スレーブサーバー装置3側での重いクエリーの実行の遅延時間を減らすことができる。
要求変換部31は、命令実行部32における処理が完了すると、クライアント装置103にレスポンスを返す。
命令実行部32は、命令された処理の完了後に、要求変換部31にレスポンスを返す。
つまり、記憶部34は、マスターサーバー装置2側の記憶部24が記憶するデータのレプリケーションを記憶する。
(1)まず要求変換部21がクライアント装置側からクエリー(SQL)を受け取る。そして、要求変換部21は、クエリーの実行コスト(時間コスト)を見積り、通常クエリーであるか重いクエリーであるかを判定する。本図のケースでは、通常クエリーである場合を説明する。したがって、要求変換部21は、以下の処理において、通常の非同期レプリケーションを実行させる。
(2)次に、命令実行部22は、要求変換部21からの命令に基づき、レプリケーションデータ保持部23が保持するレプリケーションデータリストに、データを追加する。そして、命令実行部22は、要求変換部21から指示されたクエリーの処理を実行する。
(3)レプリケーション実行部25は、要求変換部21および命令実行部22の処理と並行して、レプリケーションデータリスト内のコミットデータリストを随時チェックし、コミットデータを取り出して、スレーブサーバー装置3側へのレプリケーションを実行する。
(1)まず要求変換部21がクライアント装置側からクエリー(SQL)を受け取る。そして、要求変換部21は、クエリーの実行コスト(時間コスト)を見積り、通常クエリーであるか重いクエリーであるかを判定する。本図のケースでは、重いクエリーである場合を説明する。この場合、要求変換部21は、レプリケーション実行部25がすぐにレプリケーションを実行するよう、命令実行部22に指示する。
(2)次に、命令実行部22は、レプリケーション実行部25に、上記の重いクエリーまでを含めた同期をすぐに実行するように命令する。そして、命令実行部22は、要求変換部21から指示されたクエリー(重いクエリー)の処理を実行する。
(3)レプリケーション実行部25は、コミットデータリスト内のすべてのデータのレプリケーションを実行する。即ち、レプリケーション実行部25は、それらのデータをすべてコミットする。そして、その完了後に、レプリケーション実行部25は、上記の重いクエリーをスレーブサーバー装置3側でも実行するよう、スレーブサーバー装置3側に送信する。
なお、転送されたクエリーは、スレーブサーバー装置3側で実行される。
このような処理により、重いクエリーに関しても、非同期レプリケーションによる同期を所定の目標遅延時間内に完了させることが可能となる。つまり、システム全体のレイテンシーおよびスループットを改善することが可能となる。
同図の処理例では、時刻T1とT2の間に、クライアント装置側からUpdate文のクエリーの実行が要求される。マスターサーバー装置2内の要求変換部21は、このUpdate文を解析することによってこのクエリーの実行時間を見積り、このクエリーが重いクエリーであると判断する。すると、マスターサーバー装置2は、自装置内でそのクエリーの実行が完了する前に、そのクエリーをスレーブサーバー装置3側にも転送する。そして、時刻T1とT2の間に、マスターサーバー装置2側とスレーブサーバー装置3側との両方で、それぞれ、そのクエリーの実行が開始される。図中では、クエリー実行時間と記載した矢印で、そのクエリーの実行にかかる時間を示している。実際には、クエリー実行時間の長さは、TINTよりも少し長い。そして、時刻T2とT3の間で、マスターサーバー装置2側およびスレーブサーバー装置3側のそれぞれにおいて、Updateクエリーの実行が終了する。なお、マスターサーバー装置2側でそのUpdateクエリーの実行が終了した時点で、クライアント装置に対するレスポンスが返される。そして、マスターサーバー装置2とスレーブサーバー装置3との間で同期を行う。
そして、また、マスターサーバー装置2上で、2つのクエリーのうちの後のほうのクエリーの実行が完了した後、マスターサーバー装置2は、スレーブサーバー装置3に対して同期を指示する。これを受けたスレーブサーバー装置3は、スレーブサーバー装置3での後のほうのクエリーの実行が完了した後、スレーブサーバー装置3側での同期処理を行う。なお、図7に示す例では、マスターサーバー装置2上で実行された後のほうのクエリーの処理よりも、転送先であるスレーブサーバー装置3上で実行されたそのクエリーの処理のほうが先に完了している。
つまり、重いクエリーであるクエリー1、クエリー2に関しては、コミットやロールバックが発生した場合にそのことを同期時のデータで通知する。また、通常のクエリーであるクエリー3、クエリー4に関しては、WALログを同期時のデータとして送る。
つまり、スレーブサーバー装置3が同期時に受信したデータを順次適用していくとき、まずクエリー1を確定させ、次にクエリー3のWALを適用する。そして、次に、マスターサーバー装置2側から受信したデータによると、クエリー2を確定させるべきであるが、その時点ではスレーブサーバー装置3におけるクエリー2の処理が完了していない。したがって、スレーブサーバー装置3におけるクエリー2の処理が完了するまで、クエリー2を確定する処理が待たされる。これは、時刻T3とT4の間において「停止」と記した時間帯における待機である。そして、スレーブサーバー装置3におけるクエリー2の処理が完了すると、スレーブサーバー装置3は、クエリー2を確定させ、最後にクエリー4のWALを適用する。
Claims (7)
- マスターサーバー装置と、
スレーブサーバー装置と、
を備えるデータベースシステムであって、
前記マスターサーバー装置は、
データを記憶するマスター側記憶部と、
要求されるクエリーを受信し、受信した前記クエリーが通常のクエリーであるか重いクエリーであるかを判定するマスター側要求変換部と、
前記マスター側要求変換部が受信した前記クエリーを実行して前記マスター側記憶部に記憶されている前記データを処理するとともに、前記クエリーの実行結果を前記スレーブサーバー装置側にレプリケーションするためのレプリケーションデータを生成するマスター側命令実行部と、
前記マスター側命令実行部によって生成された前記レプリケーションデータを前記スレーブサーバー装置側に転送するマスター側レプリケーション実行部と、
を備え、
前記スレーブサーバー装置は、
前記マスター側記憶部が記憶する前記データのレプリケーションを記憶するスレーブ側記憶部と、
前記マスター側レプリケーション実行部から転送された前記レプリケーションデータに基づき、前記スレーブ側記憶部に記憶された前記データのレプリケーションを更新するスレーブ側レプリケーション実行部と、
を備え、
前記マスター側レプリケーション実行部は、
前記マスター側要求変換部が通常のクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行部が当該クエリーの実行を完了した後に前記スレーブサーバー装置側に転送するとともに、
前記マスター側要求変換部が重いクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行部が当該クエリーの実行を完了したか否かに関わらず前記スレーブサーバー装置側に転送し、
前記スレーブ側レプリケーション実行部は、前記マスター側要求変換部が重いクエリーであると判定した前記クエリーに関して、マスター側命令実行部での当該クエリーの実行の完了を待たずに、前記スレーブ側記憶部に記憶された前記データに対して当該クエリーを実行させるものであり、
前記マスター側レプリケーション実行部は、重いクエリーであると判定されたクエリーに関する前記レプリケーションデータを前記スレーブサーバー装置側に転送する前に、その時点で未転送のコミット済データのレプリケーションデータを先に前記スレーブサーバー装置側に転送し、
前記スレーブ側レプリケーション実行部は、先に転送された前記レプリケーションデータに基づいて前記スレーブ側記憶部に記憶された前記データのレプリケーションを更新して同期を実行してから、前記重いクエリーであると判定されたクエリーを実行させる、
データベースシステム。 - 前記マスター側命令実行部は、
前記マスター側要求変換部が通常のクエリーであると判定した前記クエリーに関して、前記クエリーの実行結果であるデータの物理ログを前記レプリケーションデータとして生成し、
前記マスター側要求変換部が重いクエリーであると判定した前記クエリーに関して、前記クエリーそのものを前記レプリケーションデータとして生成する、
請求項1に記載のデータベースシステム。 - 前記スレーブ側レプリケーション実行部は、重いクエリーであると判定された前記クエリーに関して前記クエリーそのものを前記レプリケーションデータとして前記マスター側レプリケーション実行部から受信した場合には、通常のクエリーであると判定された前記クエリーに関して前記マスター側レプリケーション実行部から受信済みであった前記物理ログに基づく前記データのレプリケーションの更新をすべて実行した後で、前記重いクエリーであると判定された前記クエリーに基づく前記データのレプリケーションの更新を実行する、
請求項2に記載のデータベースシステム。 - 前記スレーブ側レプリケーション実行部は、複数の前記クエリーに対応する前記レプリケーションデータを時系列に並べて管理するとともに、この時系列にしたがって前記レプリケーションデータに基づく前記データのレプリケーションの更新を実行する、
請求項2または請求項3に記載のデータベースシステム。 - 前記スレーブ側レプリケーション実行部は、重いクエリーであると判定された前記クエリーに対応する前記レプリケーションデータに基づくデータのレプリケーションの更新が完了するまでは、当該重いクエリーに後続する他のクエリーに対応する前記レプリケーションデータに基づくデータのレプリケーションの更新の処理を待機する、
請求項4に記載のデータベースシステム。 - 前記スレーブ側レプリケーション実行部は、更新型の2つのクエリーが互いにデータ資源について競合しない場合には、これら2つのクエリーを並列に実行する、
請求項1から5までのいずれか一項に記載のデータベースシステム。 - マスターサーバー装置と、
スレーブサーバー装置と、
を備えるデータベースシステムにおけるデータ処理方法であって、
前記マスターサーバー装置は、
データを記憶するマスター側記憶部を備えるとともに、
要求されるクエリーを受信し、受信した前記クエリーが通常のクエリーであるか重いクエリーであるかを判定するマスター側要求変換過程と、
前記マスター側要求変換過程が受信した前記クエリーを実行して前記マスター側記憶部に記憶されている前記データを処理するとともに、前記クエリーの実行結果を前記スレーブサーバー装置側にレプリケーションするためのレプリケーションデータを生成するマスター側命令実行過程と、
前記マスター側命令実行過程によって生成された前記レプリケーションデータを前記スレーブサーバー装置側に転送するマスター側レプリケーション実行過程と、
を実行し、
前記スレーブサーバー装置は、
前記マスター側記憶部が記憶する前記データのレプリケーションを記憶するスレーブ側記憶部を備えるとともに、
前記マスター側レプリケーション実行過程で転送された前記レプリケーションデータに基づき、前記スレーブ側記憶部に記憶された前記データのレプリケーションを更新するスレーブ側レプリケーション実行過程、
を実行し、
前記マスター側レプリケーション実行過程は、
前記マスター側要求変換過程が通常のクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行過程が当該クエリーの実行を完了した後に前記スレーブサーバー装置側に転送するとともに、
前記マスター側要求変換過程が重いクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行過程が当該クエリーの実行を完了したか否かに関わらず前記スレーブサーバー装置側に転送し、
前記スレーブ側レプリケーション実行過程は、前記マスター側要求変換過程が重いクエリーであると判定した前記クエリーに関して、マスター側命令実行過程での当該クエリーの実行の完了を待たずに、前記スレーブ側記憶部に記憶された前記データに対して当該クエリーを実行させるものであり、
前記マスター側レプリケーション実行部は、重いクエリーであると判定されたクエリーに関する前記レプリケーションデータを前記スレーブサーバー装置側に転送する前に、その時点で未転送のコミット済データのレプリケーションデータを先に前記スレーブサーバー装置側に転送し、
前記スレーブ側レプリケーション実行部は、先に転送された前記レプリケーションデータに基づいて前記スレーブ側記憶部に記憶された前記データのレプリケーションを更新して同期を実行してから、前記重いクエリーであると判定されたクエリーを実行させる、
データ処理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016245873A JP6404892B2 (ja) | 2016-12-19 | 2016-12-19 | データベースシステムおよびデータ処理方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016245873A JP6404892B2 (ja) | 2016-12-19 | 2016-12-19 | データベースシステムおよびデータ処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2018101217A JP2018101217A (ja) | 2018-06-28 |
JP6404892B2 true JP6404892B2 (ja) | 2018-10-17 |
Family
ID=62715432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016245873A Active JP6404892B2 (ja) | 2016-12-19 | 2016-12-19 | データベースシステムおよびデータ処理方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP6404892B2 (ja) |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4689137B2 (ja) * | 2001-08-08 | 2011-05-25 | 株式会社日立製作所 | リモートコピー制御方法、及びストレージシステム |
JP6000608B2 (ja) * | 2012-04-12 | 2016-09-28 | 株式会社東芝 | レプリケーション実行装置 |
JP6036470B2 (ja) * | 2013-03-26 | 2016-11-30 | 富士通株式会社 | 情報処理システム、情報処理装置、情報処理方法、及び情報処理プログラム |
JPWO2016117322A1 (ja) * | 2015-01-22 | 2017-11-02 | 日本電気株式会社 | 処理要求装置、処理装置、データベースシステム、データベース更新方法およびプログラム |
-
2016
- 2016-12-19 JP JP2016245873A patent/JP6404892B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP2018101217A (ja) | 2018-06-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2020224374A1 (zh) | 数据复制方法、装置、计算机设备及存储介质 | |
EP4030315A1 (en) | Database transaction processing method and apparatus, and server and storage medium | |
US8868492B2 (en) | Method for maximizing throughput and minimizing transactions response times on the primary system in the presence of a zero data loss standby replica | |
US9515878B2 (en) | Method, medium, and system for configuring a new node in a distributed memory network | |
US6823347B2 (en) | Propagating commit times | |
US7480654B2 (en) | Achieving cache consistency while allowing concurrent changes to metadata | |
US7653668B1 (en) | Fault tolerant multi-stage data replication with relaxed coherency guarantees | |
US8838919B2 (en) | Controlling data lag in a replicated computer system | |
US7693882B2 (en) | Replicating data across the nodes in a cluster environment | |
US11263236B2 (en) | Real-time cross-system database replication for hybrid-cloud elastic scaling and high-performance data virtualization | |
US10180812B2 (en) | Consensus protocol enhancements for supporting flexible durability options | |
US20110010392A1 (en) | Checkpoint-Free In Log Mining For Distributed Information Sharing | |
US20150347250A1 (en) | Database management system for providing partial re-synchronization and partial re-synchronization method of using the same | |
US20190155937A1 (en) | Multi-region, multi-master replication of database tables | |
CN108509462B (zh) | 一种同步活动事务表的方法及装置 | |
JP7220807B2 (ja) | データ読み取り方法、装置、コンピュータ装置及びコンピュータプログラム | |
CN110196856A (zh) | 一种分布式数据读取方法及装置 | |
CN102073739A (zh) | 带有快照功能的分布式文件系统中的数据读与数据写方法 | |
US20120278429A1 (en) | Cluster system, synchronization controlling method, server, and synchronization controlling program | |
KR20090059859A (ko) | 분산파일 시스템에서의 비동기식 데이터 복제 방법 및 그에따른 분산파일 시스템 | |
CN110807039A (zh) | 一种云计算环境下数据一致性维护系统及方法 | |
US7197519B2 (en) | Database system including center server and local servers | |
US11893041B2 (en) | Data synchronization between a source database system and target database system | |
CN110196788B (zh) | 一种数据读取方法、装置、系统及存储介质 | |
WO2021189283A1 (zh) | 数据处理方法、装置、电子装置及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180327 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180523 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180605 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20180727 |
|
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: 20180814 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180913 |
|
R151 | Written notification of patent or utility model registration |
Ref document number: 6404892 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R151 |