JP6404892B2 - データベースシステムおよびデータ処理方法 - Google Patents

データベースシステムおよびデータ処理方法 Download PDF

Info

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
Application number
JP2016245873A
Other languages
English (en)
Other versions
JP2018101217A (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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2016245873A priority Critical patent/JP6404892B2/ja
Publication of JP2018101217A publication Critical patent/JP2018101217A/ja
Application granted granted Critical
Publication of JP6404892B2 publication Critical patent/JP6404892B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明の実施形態は、データベースシステムおよびデータ処理方法に関する。
分散データベース技術においては、複数のサーバー装置が、それぞれ記憶手段を備えている。そして、その記憶手段上のデータが更新される際には、適宜、それら複数のサーバー間で記憶されているデータを同期させることにより、データの整合性を維持している。通常、それら複数のサーバー装置のうち、特定の一つのサーバー装置がマスターサーバー装置として機能し、他のサーバー装置はスレーブサーバー装置として機能する。そして、クライアント装置側からデータの更新を要求された場合、まずマスターサーバー装置上のデータを更新し、所定のタイミングでその更新がスレーブサーバー装置にも反映される。このマスターサーバー装置におけるデータの変更をスレーブサーバー装置側にも反映させることを、レプリケーションと呼ぶ。
レプリケーションには、大別して2種類の方式が存在する。それらは、非同期レプリケーションと同期レプリケーションである。
非同期レプリケーションにおいては、クライアント装置からマスターサーバー装置にデータ更新の要求があった場合、マスターサーバー装置は、マスターサーバー装置上のデータを更新した後、すぐにクライアント装置へのレスポンスを返す。マスターサーバー装置は、クライアント装置へのレスポンスを返した後で、更新データをスレーブ装置側に送信する。非同期レプリケーションは、スレーブサーバー装置でのデータの書き込み完了を待たずにレスポンスを返すため高速であるというメリットがある反面、障害時にデータを損失してしまい、マスター側とスレーブ側とでデータが一致しなくなるというリスクがある。また、非同期レプリケーションは、ある一時点において、マスター側とスレーブ側とでデータがずれている(同期していない)というデメリットもある。
同期レプリケーションにおいては、クライアント装置からマスターサーバー装置にデータ更新の要求があった場合、マスターサーバー装置は、スレーブサーバー装置側でもデータの更新が完了するのを待ってからクライアント装置へのレスポンスを返す。同期レプリケーションは、マスター側とスレーブ側とで常にデータの同期が取れているというメリットがある反面、クライアントへの応答が遅いというデメリットもある。また、コミットメントの単位でマスター側とスレーブ側との同期を行うため、同期に要する時間もより多くかかるというデメリットもある。
つまり、非同期レプリケーションにおいては、レプリケーションするデータがたまってしまうという問題がある。また、同期レプリケーションにおいては、個々のデータ更新において余計に時間がかかるため、クライアント装置側から見た性能に問題が生じ得るという問題がある。
これらの問題を解決するため、従来技術では、マスターサーバー装置側でのデータ更新頻度に基づいて、半同期レプリケーションと非同期レプリケーションとを切り替えることを行う。この方式では、マスターサーバー装置側からスレーブサーバー装置側にデータを送信する際に、スレーブサーバー装置側から応答を受け取らずにマスターサーバー装置が継続動作するため、完全な同期レプリケーションではない。
この従来技術では、マスターサーバー装置側でのデータ更新頻度のみに基づいて半同期レプリケーションと非同期レプリケーションとを切り替えいるため、スレーブ装置側の負荷やネットワークの負荷は考慮されないという問題がある。また、スレーブサーバー装置がマスターサーバー装置への応答を行わないため、同期が完全ではないという問題がある。
また、他の従来技術では、マスターサーバー装置側での実行結果により、マスターサーバー装置側からスレーブサーバー装置側に、物理ログを転送する方法と論理ログを転送する方法を切り替えている。ここで、物理ログを転送する方式は、変更されたデータそのものをログとして記録する方式である。また、論理ログを転送する方式は、データベースをどのように更新したかを示す情報(典型的には、実行されたSQL文)をログとして記録する方式である。なお、SQLは「ストラクチャードクエリー言語(Structured Query Language)」の略である。
この従来技術では、マスターサーバー装置側でデータ更新型の重いクエリーを実行したとき、スレーブサーバー装置側での同期完了に時間がかかり過ぎるという問題がある。この問題について、次に具体的に説明する。
マスターサーバー装置側とスレーブサーバー装置側でのデータのずれを所定範囲内におさえるために、同期間隔の時間が設定される。この同期間隔をTINTとする。マスターサーバー装置側で時刻Tから(T+TINT)までの間に実行されたデータ更新は、スレーブサーバー装置側においても時刻(T+2・TINT)までには完了することが望ましい。このように、分散データベースシステムとして、スレーブ装置側にデータが反映されるための遅延の目標が設定されていることにより、データベースを利用するアプリケーションでの性能設計が容易になる。しかしながら、データ更新型の重いクエリーがデータベースシステムに要求された場合、そのクエリーの実行自体にTINT以上の時間を要する場合がある。従来技術では、マスターサーバー装置側でその重いクエリーの実行を完了してからスレーブサーバー装置側に当該クエリーの実行を命令する。すると、マスターサーバー装置側でのクエリー実行完了時からスレーブサーバー装置側でのクエリー実行完了時までに、TINT以上の時間がかかり、つまり、上記の遅延の目標が達成されないという問題が生じ得る。
特開2006−318020号公報 特開2013−218635号公報
本発明が解決しようとする課題は、データ更新型の重いクエリーを実行する際にも、マスターからスレーブへのデータ反映の遅延を所定の目標遅延時間内に抑えることができるデータベースシステムおよびデータ処理方法を提供することである。
実施形態のデータベースシステムは、マスターサーバー装置と、スレーブサーバー装置とを持つ。
マスターサーバー装置は、マスター側記憶部と、マスター側要求変換部と、マスター側命令実行部と、マスター側レプリケーション実行部とを持つ。マスター側記憶部は、データを記憶する。マスター側要求変換部は、要求されるクエリーを受信し、受信した前記クエリーが通常のクエリーであるか重いクエリーであるかを判定する。マスター側命令実行部は、前記マスター側要求変換部が受信した前記クエリーを実行して前記マスター側記憶部に記憶されている前記データを処理するとともに、前記クエリーの実行結果を前記スレーブサーバー装置側にレプリケーションするためのレプリケーションデータを生成する。マスター側レプリケーション実行部は、前記マスター側命令実行部によって生成された前記レプリケーションデータを前記スレーブサーバー装置側に転送する。
スレーブサーバー装置は、スレーブ側記憶部と、スレーブ側レプリケーション実行部とを持つ。スレーブ側記憶部は、前記マスター側記憶部が記憶する前記データのレプリケーションを記憶する。スレーブ側レプリケーション実行部は、前記マスター側レプリケーション実行部から転送された前記レプリケーションデータに基づき、前記スレーブ側記憶部に記憶された前記データのレプリケーションを更新する。
そして、マスター側レプリケーション実行部は、前記マスター側要求変換部が通常のクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行部が当該クエリーの実行を完了した後に前記スレーブサーバー装置側に転送するとともに、前記マスター側要求変換部が重いクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行部が当該クエリーの実行を完了したか否かに関わらず前記スレーブサーバー装置側に転送する。
第1の実施形態のデータベースシステムの概略機能構成を示すブロック図。 第1の実施形態のマスターサーバー装置の通常時の動作のシーケンスを示す概略図。 第1の実施形態のマスターサーバー装置において、重いクエリーが発生したときの動作のシーケンスを示す概略図。 第1の実施形態のデータベースシステムに更新型の重いクエリーの実行が要求されたときの処理の流れの例を示す概略図。 第1の実施形態のデータベースシステムに更新型の重いクエリーの実行が要求されたときの処理の別の例を示す概略図。 第1の実施形態のデータベースシステムに、複数の更新型の重いクエリーの実行が同時期に要求されたときの処理の別の例を示す概略図。 第1の実施形態のデータベースシステムに、複数の更新型の重いクエリーの実行が同時期に要求されたときの処理の別の例(スレーブ側の並列実行)を示す概略図。 第1の実施形態のマスターサーバー装置側でのクエリーの実行と、マスターサーバー装置からスレーブサーバー装置に対して同期時に送信されるデータとを示す概略図。 第1の実施形態において、マスターサーバー装置側から送信されるデータを受信したスレーブサーバー装置側での処理例の概要を示す概略図。 第1の実施形態において、マスターサーバー装置側から送信されるデータを受信したスレーブサーバー装置側での、別の処理例の概要を示す概略図。
以下、実施形態のデータベースシステムおよびデータ処理方法を、図面を参照して説明する。
図1は、本実施形態によるデータベースシステムの概略機能構成を示すブロック図である。図示するように、データベースシステム1は、マスターサーバー装置2と、スレーブサーバー装置3と、を含んで構成される。
なお、同図では、スレーブサーバー装置3が1台のみ存在する場合を示しているが、スレーブサーバー装置3が複数台存在する構成として、データベースシステム1を構成するようにしてもよい。
データベースシステム1は、このように複数のサーバー装置で構成される分散データベースシステムである。一例として、データベースシステム1は、リレーショナル形式のデータベースである。ただし、データベースシステム1が、他の形態のデータベース(例えば、XMLデータベースやオブジェクト指向データベース等)であってもよい。なお、XMLは、「Extensible Markup Language」(拡張マークアップ言語)の略である。以下では、データベースシステム1がリレーショナルデータベースである場合を説明するが、本実施形態の技術は、他の形態のデータベースにも適用可能である。
データベースシステム1は、マスター/スレーブ式の分散データベースシステムである。マスターサーバー装置2は、マスターデータベースの機能を備える。また、スレーブサーバー装置3は、スレーブデータベースの機能を備える。マスターサーバー装置2は、分散データベースシステムにおける主たるデータを内部に保持し、管理する。一方、スレーブサーバー装置3は、分散データベースシステムにおける従たるデータを内部に保持し、管理する。
データベースシステム1は、マスター/スレーブレプリケーション(複製)を行うことにより、マスターサーバー装置2とスレーブサーバー装置3との間でデータを同期させる。つまり、データベースシステム1がデータベースへの書き込み要求を受けたとき、マスターサーバー装置2側だけではなく、スレーブサーバー装置3側にもデータを書き込む。これにより、スレーブサーバー装置3は、マスターサーバー装置2のバックアップとして機能することが可能となる。つまり、故障等の理由によってマスターサーバー装置2が機能しなくなったときに、スレーブサーバー装置3がマスターに昇格してサービスを引き継ぐことが可能となる。また、読み出しのみのクエリーについては、スレーブサーバー装置3でも行うようにすることで、サーバー全体としての負荷を分散させることが可能となる。
クライアント装置は、マスターサーバー装置2またはスレーブサーバー装置3に対してSQL文を送り、クエリーを実行させ、クエリーの実行結果を受け取る。マスターサーバー装置2は、データの更新を行うクエリー(SQLのInsert文やUpdate文やDelete文)を含み、あらゆる種類のクエリーを受け取って実行することができる。一方、スレーブサーバー装置3は、前述の通り読み出しのみ(read−only)のクエリー(SQLのSelect文等)を受け取って実行することができる。クライアント装置は、クエリーの種類に応じて適宜接続先のサーバー装置(マスターサーバー装置2またはスレーブサーバー装置3)を選択する。あるいは、データベースシステム1のフロントエンドに位置するミドルウェア機能が、クエリーの種類に応じて、クライアント装置からのクエリーを、マスターサーバー装置2またはスレーブサーバー装置3のいずれか適切な側に振り分けるようにしてもよい。
なお、図示するように、マスターサーバー装置2に接続されるクライアント装置を、クライアント装置102とする。また、スレーブサーバー装置3に接続されるクライアント装置を、クライアント装置103とする。
本実施形態では、マスター/スレーブレプリケーションとして、非同期レプリケーションの方式を用いる。つまり、データ更新を伴うクエリーが要求されたとき、マスターサーバー装置2は、マスターサーバー装置2側でのデータ更新が完了すると、スレーブサーバー装置3側でのデータ更新の完了を待たずに、クライアント装置へのレスポンスを返す。マスターサーバー装置2からスレーブサーバー装置3へのデータの送信は、その後で行われる。例えば、一定時間ごとにマスターサーバー装置2からスレーブサーバー装置3へのデータ送信を行ったり、データベースシステム1の負荷が低いときに一定時間ごとにマスターサーバー装置2からスレーブサーバー装置3へのデータ送信を行ったりする。なお、マスターサーバー装置2とスレーブサーバー装置3との間でのデータ更新のタイミングのずれを所定の範囲内に抑えるため、同期遅延時間が適宜設定される。データベースシステム1においては、この同期遅延時間を超える更新タイミングのずれが生じないようにすることが、性能目標の一つである。
なお、レプリケーションを行う方式の一例として、マスターサーバー装置2からスレーブサーバー装置3に、WALログを転送する。なお、WALは、「Write Ahead Logging」(ログ先行書き込み)の略である。WALログは、物理ログと論理ログの2つに分類される。物理ログは、変更を行ったデータそのもの(変更されたページそのもののデータや、変更したレコードのデータとページを特定する情報とページ内におけるレコード位置を特定する情報の組み合わせなど)を、保持するログである。一方、論理ログは、データベースをどのように変更したかを表す情報を保持するログである。論理ログの典型例としては、実行されたSQL文をログとして記録する。スレーブサーバー装置3側では、受け取ったWALログ(物理ログまたは論理ログ)を用いて、データを更新する。
次に各装置の詳細な機能構成について説明する。
図1に示すように、マスターサーバー装置2は、要求変換部21(マスター側要求変換部)と、命令実行部22(マスター側命令実行部)と、レプリケーションデータ保持部23と、記憶部24(マスター側記憶部)と、レプリケーション実行部25と、を含んで構成される。これらの各機能は、電子回路を用いて実現される。また、情報を記憶するために、適宜、半導体メモリーや磁気ハードディスク等の情報記憶手段を用いる。なお、コンピュータープログラムを用いて上記各部の少なくとも一部を実現するようにしてもよい。
要求変換部21は、クライアント装置102から送られるSQL文によるデータアクセス要求(クエリー)を受けとり、その要求を命令実行部22が実行可能な形式の命令に変換する。また、要求変換部21は、クライアント装置102からのSQL文を受け取った際に、そのSQL文と、その時点でのデータベースの状態とを解析し、そのクエリーを実行するために要する時間コストを見積もる。ここで、データベースの状態とは、データベース上の各テーブルのデータ量や、各テーブルがどのキーによるインデックスを有しているかといった情報などである。なお、クエリーを実行するために要する時間コストを見積もる技術自体は、既存の技術である。また、要求変換部21は、見積もった時間コストと所定の閾値とに基づいて、そのクエリーが通常クエリーであるか、重いクエリーであるかを判別する。そして要求変換部21は、その判別結果に応じた処理を、命令実行部22に実行させる。
つまり、要求変換部21は、要求されるクエリーを受信し、受信したクエリーが通常のクエリーであるか重いクエリーであるかを判定する。
要求変換部21は、命令実行部22における処理が完了すると、クライアント装置102にレスポンスを返す。
なお、重いクエリーの典型例は、条件節(Where節)を含まずある程度以上のサイズのテーブルの全レコードを更新する全件Updateや、同じく条件節を含まずある程度以上のサイズのテーブルの全レコードを削除する全件Deleteである。また、多数のレコードをあるテーブルから読み込んで、他のテーブルに挿入するSelect Insertも、重いクエリーの典型例である。
命令実行部22は、要求変換部21によってSQL文から変換された命令を実行する機能を有する。その命令は、マスターサーバー装置2の記憶部24が保持するデータを参照したり更新したりするものである。また、命令実行部22は、レプリケーション実行部25に、レプリケーションの処理を命令する。具体的には、命令実行部22は、要求変換部21における判別結果(通常のクエリーであるか、重いクエリーであるか)により、異なるレプリケーションのしかたをレプリケーション実行部25に実行させる。通常のクエリーの場合には、命令実行部22は、レプリケーションデータ保持部23内のレプリケーションデータリストにレプリケーションデータを書き込み、レプリケーション実行部25に通常の非同期レプリケーションを実行させる。一方、重いクエリーの場合には、命令実行部22は、レプリケーションデータ保持部23内のレプリケーションデータリストにレプリケーションデータを書き込み、レプリケーション実行部25にスレーブサーバー装置との同期処理をすぐに実行させる。
つまり、命令実行部22は、要求変換部21が受信したクエリーを実行して記憶部24に記憶されているデータを処理(参照や更新)するとともに、クエリーの実行結果をスレーブサーバー装置3側にレプリケーションするためのレプリケーションデータを生成する。
そして、命令実行部22は、命令された処理の完了後に、要求変換部21にレスポンスを返す。
また、本実施形態では、命令実行部22は、要求変換部21が通常のクエリーであると判定したクエリーに関して、クエリーの実行結果であるデータの物理ログをレプリケーションデータとして生成し、要求変換部21が重いクエリーであると判定したクエリーに関して、クエリーそのものを前記レプリケーションデータとして生成する。これにより、通常のクエリーについてはスレーブ側でのレプリケーション実行効率を優先させることができる。また、重いクエリーについては大量のレプリケーションデータの転送を避ける、即ち、レプリケーションデータの転送コスト(時間、通信量)の低下を優先させることができる。
レプリケーションデータ保持部23は、レプリケーションデータリストを保持する。レプリケーションデータリストは、先入先出(FIFO)方式のリストであり、複数のレプリケーションデータを含む。命令実行部22がレプリケーションデータリストへの書き込みを行う。また、レプリケーション実行部25が、レプリケーションデータリストからレプリケーションデータを読み出すとともに、読み出して処理済みのデータを削除する。
レプリケーションデータは、個々のクエリーに対応するものである。レプリケーションデータは、クエリーの実行結果であるデータの物理ログ、またはクエリーそのもののデータ(論理ログ)のいずれかの形態を取り得る。これらのいずれの形態であっても、レプリケーションデータは、クエリーによるデータ更新の結果を再現することができる情報である。
また、レプリケーションデータ保持部23は、コミットデータリストをも保持する。コミットデータリストは、複数のコミットデータを含む。コミットデータは、データの更新をコミット(commitment)する処理に対応する。データベースの更新を行う際、マスターサーバー装置2とスレーブサーバー装置3との間で、物理的にはデータの内容が異なる状況が生じ得る。しかし、コミットデータに基づいてコミット制御(コミットしたりロールバックしたり)することにより、マスターサーバー装置2とスレーブサーバー装置3との間でのデータの整合を図ることができる。
記憶部24は、データベースシステムに含まれるテーブルのデータや、索引のデータや、各種の管理のためのデータを記憶するものである。
レプリケーション実行部25は、レプリケーションデータ保持部23からレプリケーションデータリストを読み出し、レプリケーションを実行する。通常時においては、レプリケーションデータ保持部23は、レプリケーションデータリスト内のコミットデータを随時チェックし、レプリケーションを実行する。要求変換部21が重いクエリーを受け取ったと判断した場合には、レプリケーション実行部25は、コミットデータリストにあるデータをすべてコミットしてから、それらのコミットメントが完了してから重いクエリーのレプリケーションを実行する。
つまり、レプリケーション実行部25は、命令実行部22によって生成されたレプリケーションデータをスレーブサーバー装置3側に転送する。このレプリケーションデータの転送により、マスターサーバー装置2側でのクエリー(データ更新)の完全な情報が、スレーブサーバー装置3側に伝わる。
また、レプリケーション実行部25は、要求変換部21が通常のクエリーであると判定したクエリーに関するレプリケーションデータを、命令実行部22が当該クエリーの実行を完了した後にスレーブサーバー装置3側に転送するとともに、要求変換部21が重いクエリーであると判定したクエリーに関するレプリケーションデータを、命令実行部22が当該クエリーの実行を完了したか否かに関わらずスレーブサーバー装置3側に転送する。これにより、スレーブサーバー装置3側での重いクエリーの実行の遅延時間を減らすことができる。
また、スレーブサーバー装置3は、要求変換部31と、命令実行部32と、記憶部34(スレーブ側記憶部)と、レプリケーション実行部35(スレーブ側レプリケーション実行部)と、を含んで構成される。これらの各機能も、マスターサーバー装置2のそれらと同様に、電子回路を用いて実現される。また、情報を記憶するために、適宜、半導体メモリーや磁気ハードディスク等の情報記憶手段を用いる。なお、コンピュータープログラムを用いて上記各部の少なくとも一部を実現するようにしてもよい。
要求変換部31は、クライアント装置103から送られるSQL文によるデータアクセス要求(クエリー)を受けとり、その要求を命令実行部32が実行可能な形式の命令に変換する。なお、前述の通り、要求変換部31がクライアント装置103から受け取るクエリーは、データの読出しのみ(SQLのSelect文等)のクエリーである。
要求変換部31は、命令実行部32における処理が完了すると、クライアント装置103にレスポンスを返す。
命令実行部32は、要求変換部31によってSQL文から変換された命令を実行する機能を有する。その命令は、スレーブサーバー装置3の記憶部34が保持するデータを参照するものである。
命令実行部32は、命令された処理の完了後に、要求変換部31にレスポンスを返す。
記憶部34は、データベースシステムに含まれるテーブルのデータや、索引のデータや、各種の管理のためのデータを記憶するものである。基本的に、記憶部34が保持するテーブルのデータは、マスターサーバー装置2側からレプリケーションされるデータである。つまり、レプリケーション実行部35が、マスターサーバー装置2側から受け取ったレプリケーションデータに基づき、記憶部34を更新する。
つまり、記憶部34は、マスターサーバー装置2側の記憶部24が記憶するデータのレプリケーションを記憶する。
レプリケーション実行部35は、マスター側からのレプリケーションを実行する。つまり、レプリケーション実行部35は、レプリケーション実行部25から受け取ったレプリケーションデータに基づいて、記憶部34上のデータを更新する。なお、ここで言う「更新」は、SQLのUpdate文やInsert文やDelete文に対応するデータ処理である。つまり、レプリケーション実行部35は、マスターサーバー装置2側のレプリケーション実行部25から転送されたレプリケーションデータに基づき、記憶部34に記憶されたデータのレプリケーションを更新する。
また、レプリケーション実行部35は、重いクエリーであると判定されたクエリーに関してクエリーそのものをレプリケーションデータとしてマスターサーバー装置2側のレプリケーション実行部25から受信した場合には、通常のクエリーであると判定されたクエリーに関してレプリケーション実行部25から受信済みであった物理ログに基づくデータのレプリケーションの更新をすべて実行した後で、当該重いクエリーであると判定されたクエリーに基づくデータのレプリケーションの更新を実行する。これにより、データ更新の際のデータの整合性が維持される。
また、レプリケーション実行部35は、複数のクエリーに対応するレプリケーションデータを時系列に並べて管理するとともに、この時系列にしたがってレプリケーションデータに基づくデータの更新を実行する。これにより、データ更新の際のデータの整合性が維持される。
また、レプリケーション実行部35は、重いクエリーであると判定されたクエリーに対応するレプリケーションデータに基づくデータのレプリケーションの更新が完了するまでは、当該重いクエリーに後続する他のクエリーに対応するレプリケーションデータに基づくデータのレプリケーションの更新の処理を待機する。これにより、データ更新の際のデータの整合性が維持される。
次に、図2および図3を参照しながら、マスターサーバー装置2の、通常時の動作および重いクエリーが発生したときの動作についてそれぞれ説明する。
図2は、マスターサーバー装置2の通常時の動作のシーケンスを示す概略図である。以下、番号順に、このシーケンスを説明する。
(1)まず要求変換部21がクライアント装置側からクエリー(SQL)を受け取る。そして、要求変換部21は、クエリーの実行コスト(時間コスト)を見積り、通常クエリーであるか重いクエリーであるかを判定する。本図のケースでは、通常クエリーである場合を説明する。したがって、要求変換部21は、以下の処理において、通常の非同期レプリケーションを実行させる。
(2)次に、命令実行部22は、要求変換部21からの命令に基づき、レプリケーションデータ保持部23が保持するレプリケーションデータリストに、データを追加する。そして、命令実行部22は、要求変換部21から指示されたクエリーの処理を実行する。
(3)レプリケーション実行部25は、要求変換部21および命令実行部22の処理と並行して、レプリケーションデータリスト内のコミットデータリストを随時チェックし、コミットデータを取り出して、スレーブサーバー装置3側へのレプリケーションを実行する。
図3は、マスターサーバー装置2において、重いクエリーが発生したときの動作のシーケンスを示す概略図である。以下、番号順に、このシーケンスを説明する。
(1)まず要求変換部21がクライアント装置側からクエリー(SQL)を受け取る。そして、要求変換部21は、クエリーの実行コスト(時間コスト)を見積り、通常クエリーであるか重いクエリーであるかを判定する。本図のケースでは、重いクエリーである場合を説明する。この場合、要求変換部21は、レプリケーション実行部25がすぐにレプリケーションを実行するよう、命令実行部22に指示する。
(2)次に、命令実行部22は、レプリケーション実行部25に、上記の重いクエリーまでを含めた同期をすぐに実行するように命令する。そして、命令実行部22は、要求変換部21から指示されたクエリー(重いクエリー)の処理を実行する。
(3)レプリケーション実行部25は、コミットデータリスト内のすべてのデータのレプリケーションを実行する。即ち、レプリケーション実行部25は、それらのデータをすべてコミットする。そして、その完了後に、レプリケーション実行部25は、上記の重いクエリーをスレーブサーバー装置3側でも実行するよう、スレーブサーバー装置3側に送信する。
なお、転送されたクエリーは、スレーブサーバー装置3側で実行される。
以上説明したように、図3に示した処理では、マスターサーバー装置2側での重いクエリーの完了を待たずに、並行して、スレーブサーバー装置3側で同一のクエリーの実行を開始させる。言い換えれば、マスターサーバー装置2上での実行の前に、スレーブサーバー装置3側にもクエリーを転送する。これにより、マスターサーバー装置2側でのクエリーの完了と、スレーブサーバー装置3側でのクエリーの完了との時間差を、所定の時間内とすることが可能となる。ただし、未同期のコミットデータとの間の不整合を回避するために、現在残っている(溜まっている)コミットデータをすべて適用した後、重いクエリーをマスターサーバー装置2側からスレーブサーバー装置3側に転送するようにしている。
このような処理により、重いクエリーに関しても、非同期レプリケーションによる同期を所定の目標遅延時間内に完了させることが可能となる。つまり、システム全体のレイテンシーおよびスループットを改善することが可能となる。
次に、データベースシステム1の動作例を説明する。
図4は、データベースシステム1に更新型の重いクエリーの実行が要求されたときの処理の流れの例を示す概略図である。同図において、横軸は時間軸である。また、同図では縦の破線で同期間隔を区切って示している。同期間隔の長さはTINTである。つまり、時刻T1、T2、T3、T4、T5に関して、T2−T1=T3−T2=T4−T3=T5−T4=TINTである。
同図の処理例では、時刻T1とT2の間に、クライアント装置側からUpdate文のクエリーの実行が要求される。マスターサーバー装置2内の要求変換部21は、このUpdate文を解析することによってこのクエリーの実行時間を見積り、このクエリーが重いクエリーであると判断する。すると、マスターサーバー装置2は、自装置内でそのクエリーの実行が完了する前に、そのクエリーをスレーブサーバー装置3側にも転送する。そして、時刻T1とT2の間に、マスターサーバー装置2側とスレーブサーバー装置3側との両方で、それぞれ、そのクエリーの実行が開始される。図中では、クエリー実行時間と記載した矢印で、そのクエリーの実行にかかる時間を示している。実際には、クエリー実行時間の長さは、TINTよりも少し長い。そして、時刻T2とT3の間で、マスターサーバー装置2側およびスレーブサーバー装置3側のそれぞれにおいて、Updateクエリーの実行が終了する。なお、マスターサーバー装置2側でそのUpdateクエリーの実行が終了した時点で、クライアント装置に対するレスポンスが返される。そして、マスターサーバー装置2とスレーブサーバー装置3との間で同期を行う。
図4に例示したように、データベースシステム1は、重いクエリーであると判断した場合に、マスターサーバー装置側でのクエリーの完了を待たずに、スレーブサーバー装置側でもそのクエリーを実行させる。これにより、クエリー実行時間が同期間隔TINTよりも長い場合にも、マスターサーバー装置2におけるクエリー終了時刻とスレーブサーバー装置3におけるクエリー終了時刻と差を、TINT以下にすることが可能である。
図5は、データベースシステム1に更新型の重いクエリーの実行が要求されたときの処理の流れの別の例を示す概略図である。同図に示す例では、重いと判定されるクエリーをマスターサーバー装置2側からスレーブサーバー装置3側に転送する前に、未転送のコミット済データを先にスレーブサーバー装置3側に転送する。なお、同期間隔の長さTINTと時刻T1、T2、T3、T4、T5との関係は、図4で説明した場合と同様であり、T2−T1=T3−T2=T4−T3=T5−T4=TINTである。
同図において、マスターサーバー装置2側の左端部分に描かれている2本の下向き矢印(太枠に囲まれている「その他のコミット済データ」)は、マスターサーバー装置2側でのコミット済データである。このコミット済データは、その時点ではまだスレーブサーバー装置3側に転送されていない。そして、同図に示すケースでは、このタイミングでクライアント装置からUpdateクエリーの実行を要求され、要求変換部21によってそのクエリーが重いクエリーであると判定される。すると、マスターサーバー装置2のレプリケーション実行部25は、コミットデータリストをチェックし、コミット済データのレプリケーションを実行する。このようにして未転送であった更新データの同期をまず実行する。その後、マスターサーバー装置2は、重いクエリーをスレーブサーバー装置3側に転送する。また、マスターサーバー装置2側とスレーブサーバー装置3側の両方で、それぞれ、そのクエリーを実行する。その後の処理の流れは、図4で説明した処理と同様である。
図5に例示したように、重いクエリーをマスターサーバー装置2側からスレーブサーバー装置3側に転送する前に、その時点で残っているコミット済データを先にスレーブサーバー装置3側に転送することで、データの整合性が維持される。
図6は、データベースシステム1に、複数の更新型の重いクエリーの実行が同時期に(近いタイミングで)要求されたときの処理の流れの別の例を示す概略図である。同図においても、同期間隔の長さTINTと時刻T1、T2、T3、T4、T5との関係は、T2−T1=T3−T2=T4−T3=T5−T4=TINTである。同図に示す例では、時刻T1とT2の間に、2つのクエリーの実行要求がクライアント装置からマスターサーバー装置2に送られている。なお、これら2つのクエリーの実行要求は、同一のクライアント装置から送られるものであってもよいし、別々のクライアント装置から送られるものであってもよい。これら2つのクエリーの各々は、マスターサーバー装置2上の要求変換部21で重いクエリーであると判定されると、マスターサーバー装置2上での実行の完了を待たずにスレーブサーバー装置3に転送される。そして、スレーブサーバー装置3上では、これら転送されてきた2つのクエリーは、直列に実行される。また、マスターサーバー装置2上で、2つのクエリーのうちの後のほうのクエリーの実行が完了した後、マスターサーバー装置2は、スレーブサーバー装置3に対して同期を指示する。これを受けたスレーブサーバー装置3は、スレーブサーバー装置3での後のほうのクエリーの実行が完了した後、スレーブサーバー装置3側での同期処理を行う。
図6に例示したように、複数の重いクエリーがマスターサーバー装置2側で同時期に発生した場合でも、スレーブサーバー装置3上でのクエリーの実行の遅延を所定範囲内に抑えるとともに、データの整合性を維持できる。
図7は、データベースシステム1に、複数の更新型の重いクエリーの実行が同時期に(近いタイミングで)要求されたときの処理の流れの別の例を示す概略図である。同図においても、同期間隔の長さTINTと時刻T1、T2、T3、T4、T5との関係は、T2−T1=T3−T2=T4−T3=T5−T4=TINTである。同図に示す例では、時刻T1とT2の間に、2つのクエリーの実行要求がクライアント装置からマスターサーバー装置2に送られている。なお、これら2つのクエリーの実行要求は、同一のクライアント装置から送られるものであってもよいし、別々のクライアント装置から送られるものであってもよい。これら2つのクエリーの各々は、マスターサーバー装置2上の要求変換部21で重いクエリーであると判定されると、マスターサーバー装置2上での実行の完了を待たずにスレーブサーバー装置3に転送される。そして、本図の場合には、スレーブサーバー装置3上では、これら転送されてきた2つのクエリーは、並列に実行される。なお、更新型の2つのクエリーが互いにデータ資源(データベースで管理されているデータ)について競合しない場合には、これら2つのクエリーを並列に実行することができる。例えば、2つのクエリーの各々が排他制御の目的で更新対象のテーブルをロックしてから処理を実行する場合、これら2つのテーブルが別の2つのテーブルを更新対象とする限りにおいて、これら2つのクエリーを並列に実行できる。また、例えば、2つのクエリーの各々が排他制御の目的で更新対象のデータを行単位でロックしてから処理を実行する場合、同一の行がロック対象となっていない限り、これら2つのクエリーを並列に実行できる。
そして、また、マスターサーバー装置2上で、2つのクエリーのうちの後のほうのクエリーの実行が完了した後、マスターサーバー装置2は、スレーブサーバー装置3に対して同期を指示する。これを受けたスレーブサーバー装置3は、スレーブサーバー装置3での後のほうのクエリーの実行が完了した後、スレーブサーバー装置3側での同期処理を行う。なお、図7に示す例では、マスターサーバー装置2上で実行された後のほうのクエリーの処理よりも、転送先であるスレーブサーバー装置3上で実行されたそのクエリーの処理のほうが先に完了している。
図7に例示したように、複数の重いクエリーがマスターサーバー装置2側で同時期に発生し、それらのクエリーをスレーブサーバー装置3上で並列して実行する場合でも、スレーブサーバー装置3側の遅延を所定範囲内に抑えることができる。また、データの整合性を維持できる。
次に、図8,図9,図10を参照しながら、スレーブサーバー装置3側での整合性確保についてさらに説明する。
図8は、マスターサーバー装置2側でのクエリーの実行と、マスターサーバー装置2からスレーブサーバー装置3に対して同期時に送信されるデータとを示す概略図である。同図において、横方向が時間軸であり、左側が古い時刻、右側が新しい時刻である。同期間隔の長さTINTと時刻T1、T2、T3との関係は、T2−T1=T3−T2=TINTである。図示する例において、クエリー2は、テーブル1を更新するためのクエリーである。また、クエリー1とクエリー3とクエリー4とは、テーブル2を更新するためのクエリーである。クエリー1とクエリー3とクエリー4は、同一のテーブルを更新するクエリーであり、直列に実行される。そして、テーブル1のみを更新するクエリーとテーブル2のみを更新するクエリーとは、並列に実行させることが可能である。そして、クエリー1とクエリー2とは、要求変換部21によって重いクエリーと判定されたクエリーである。また、クエリー3とクエリー4とは、要求変換部21によって通常のクエリーと判定されたクエリーである。既に述べたとおり、重いクエリーに関しては、マスターサーバー装置2側での処理完了を待たずに、スレーブサーバー装置3へのクエリーの転送が行われる。
そして、図示する例では、クエリー1は、T1より前に開始され、T2とT3との間に完了する。クエリー2は、T1とT2との間に開始され、T2とT3との間に完了する。クエリー3は、T2とT3との間に開始され且つ完了する。クエリー4もまた、T2とT3との間に開始され且つ完了する。なお、クエリー2の処理が完了するのは、クエリー4の処理開始後且つクエリー4の処理完了前である。
同期時にマスターサーバー装置2がスレーブサーバー装置3に対して送信するデータは、マスターサーバー装置2側とスレーブサーバー装置3側とで、更新順序に関する整合性を保証するように順番付けが行われる。即ち、図示するように、旧い側から順に、クエリー1の完了を表すデータ、クエリー3のWALログ、クエリー2の完了を表すデータ、クエリー4のWALログである。
つまり、重いクエリーであるクエリー1、クエリー2に関しては、コミットやロールバックが発生した場合にそのことを同期時のデータで通知する。また、通常のクエリーであるクエリー3、クエリー4に関しては、WALログを同期時のデータとして送る。
図9は、図8の処理によってマスターサーバー装置2側から送信されるデータを受信したスレーブサーバー装置3側での処理例の概要を示す概略図である。つまり、図9に示すスレーブサーバー装置3側の処理は、図8で説明したマスターサーバー装置2側の処理に対応するものである。なお、図9において、横方向が時間軸であり、左側が古い時刻、右側が新しい時刻である。同期間隔の長さTINTと時刻T1、T2、T3、T4との関係は、T2−T1=T3−T2=T4−T3=TINTである。
図9において、同期時にスレーブサーバー装置3が受信するデータは、図8で示した同期時のデータと同一である。つまり、クエリー1およびクエリー2は、マスターサーバー装置2側から転送されてきたクエリーであり、マスターサーバー装置2での処理の完了の前に、スレーブサーバー装置もこれらクエリー1およびクエリー2を実行する。なお、クエリー1およびクエリー2は、それぞれ別のテーブルに対する更新処理を行うものである。したがって、スレーブサーバー装置3は、クエリー1およびクエリー2を並列に実行させる。
そして、スレーブサーバー装置3は、同期時に受信するデータを、順次、適用していく。この同期適用の処理は、図示する例では、時刻T3からT4の間に行われる。なお、スレーブサーバー装置3は、これらの同期の適用の処理を直列に行う。
つまり、スレーブサーバー装置3は、まずクエリー1を確定させる(クエリー1の処理自体は時刻T2とT3との間に完了済み)。次に、スレーブサーバー装置3は、クエリー3のWALを適用する。次に、スレーブサーバー装置3は、まずクエリー2を確定させる(クエリー2の処理自体は時刻T2とT3との間に完了済み)。そしえ最後に、スレーブサーバー装置3は、クエリー4のWALを適用する。即ち、同期時のデータをマスターサーバー装置2から受信したスレーブサーバー装置3は、そのデータによって示される順序で、クエリーの処理結果を適用していく。そして、スレーブサーバー装置3側で重いクエリーの実行が完了していない場合には、その実行完了を待つ。
図10は、図8の処理によってマスターサーバー装置2側から送信されるデータを受信したスレーブサーバー装置3側での、図9とは別の処理例の概要を示す概略図である。つまり、図10に示すスレーブサーバー装置3側の処理は、図8で説明したマスターサーバー装置2側の処理に対応するものである。なお、図10において、横方向が時間軸であり、左側が古い時刻、右側が新しい時刻である。同期間隔の長さTINTと時刻T1、T2、T3、T4との関係は、T2−T1=T3−T2=T4−T3=TINTである。
図10に示す処理の特徴は、スレーブサーバー装置3側で実行されるクエリー2の処理に時間を要するために、クエリー2よりも後に適用されるクエリー4が待たされる点である。つまり、図10に示す例では、スレーブサーバー装置3側におけるクエリー2の処理の完了は、図9に示した場合よりも遅く、時刻T3とT4との間である。
つまり、スレーブサーバー装置3が同期時に受信したデータを順次適用していくとき、まずクエリー1を確定させ、次にクエリー3のWALを適用する。そして、次に、マスターサーバー装置2側から受信したデータによると、クエリー2を確定させるべきであるが、その時点ではスレーブサーバー装置3におけるクエリー2の処理が完了していない。したがって、スレーブサーバー装置3におけるクエリー2の処理が完了するまで、クエリー2を確定する処理が待たされる。これは、時刻T3とT4の間において「停止」と記した時間帯における待機である。そして、スレーブサーバー装置3におけるクエリー2の処理が完了すると、スレーブサーバー装置3は、クエリー2を確定させ、最後にクエリー4のWALを適用する。
上記の実施形態では、データベースシステム1がリレーショナル型のデータベースであるものとしたが、他の形態のモデルによるデータベースであってもよい。例えば、データベースシステム1が、オブジェクト指向型データベースやネットワーク型データベースやXMLデータベース等であってもよい。リレーショナル型データベース以外のデータベースについては、クエリーが、SQL以外の形態で表される場合もある。クエリーが、SQL以外で表される場合であっても、データの読み出しのみを行うクエリーである場合と、データの書き込み(更新)を伴うクエリーである場合とがある。データの更新を伴うクエリーに関しては、上の実施形態と同様に、マスターとスレーブとの間で同期が図られる。つまり、マスター側でのデータ更新と同様に、スレーブ側でもデータ更新が行われる。そして、データベースシステムはクエリーが通常のクエリーであるか重いクエリーであるかを判別し、重いクエリーである場合には、マスターサーバー装置側でのデータ更新の完了を待たずに、そのクエリーはスレーブサーバー装置側に転送され実行される。その他の処理についても、リレーショナルデータベースの場合と同様に、レプリケーションが行われる。
以上説明した少なくともひとつの実施形態によれば、マスターサーバー装置2側のレプリケーション実行部25は、通常のクエリーであると判定されたクエリーに関するレプリケーションデータを、マスターサーバー装置2側の命令実行部22が当該クエリーの実行を完了した後にスレーブサーバー装置3側に転送する。また、レプリケーション実行部25は、重いクエリーであると判定されたクエリーに関するレプリケーションデータを、命令実行部22が当該クエリーの実行を完了したか否かに関わらずスレーブサーバー装置3側に転送する。後者の場合、マスターサーバー装置2側でのクエリーの実行が完了する前に、スレーブサーバー装置3側でもクエリーが実行される。つまり、マスターサーバー装置2側とスレーブサーバー装置3側とで、当該クエリーが並列に実行される。これにより、マスターサーバー装置2とスレーブサーバー装置3との間の同期遅延の時間を抑えることができる。つまり、重いクエリーのスレーブ側での実行遅延時間を減らすことができる。
なお、上述した実施形態におけるマスターサーバー装置やスレーブサーバー装置や端末装置の機能の少なくとも一部をコンピューターで実現するようにしても良い。その場合、これらの機能を実現するためのプログラムをコンピューター読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピューターシステムに読み込ませ、実行することによって実現しても良い。なお、ここでいう「コンピューターシステム」とは、OSや周辺機器等のハードウェアを含むものとする。また、「コンピューター読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM、CD−ROM等の可搬媒体、コンピューターシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに「コンピューター読み取り可能な記録媒体」とは、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを送信する場合の通信線のように、短時間の間、動的にプログラムを保持するもの、その場合のサーバーやクライアントとなるコンピューターシステム内部の揮発性メモリーのように、一定時間プログラムを保持しているものも含んでも良い。また上記プログラムは、前述した機能の一部を実現するためのものであっても良く、さらに前述した機能をコンピューターシステムにすでに記録されているプログラムとの組み合わせで実現できるものであっても良い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
1…データベースシステム、2…マスターサーバー装置、3…スレーブサーバー装置、21…要求変換部(マスター側要求変換部)、22…命令実行部(マスター側命令実行部)、23…レプリケーションデータ保持部、24…記憶部(マスター側記憶部)、25…レプリケーション実行部(マスター側レプリケーション実行部)、31…要求変換部、32…命令実行部、34…記憶部(スレーブ側記憶部)、35…レプリケーション実行部(スレーブ側レプリケーション実行部)、102,103…クライアント装置

Claims (7)

  1. マスターサーバー装置と、
    スレーブサーバー装置と、
    を備えるデータベースシステムであって、
    前記マスターサーバー装置は、
    データを記憶するマスター側記憶部と、
    要求されるクエリーを受信し、受信した前記クエリーが通常のクエリーであるか重いクエリーであるかを判定するマスター側要求変換部と、
    前記マスター側要求変換部が受信した前記クエリーを実行して前記マスター側記憶部に記憶されている前記データを処理するとともに、前記クエリーの実行結果を前記スレーブサーバー装置側にレプリケーションするためのレプリケーションデータを生成するマスター側命令実行部と、
    前記マスター側命令実行部によって生成された前記レプリケーションデータを前記スレーブサーバー装置側に転送するマスター側レプリケーション実行部と、
    を備え、
    前記スレーブサーバー装置は、
    前記マスター側記憶部が記憶する前記データのレプリケーションを記憶するスレーブ側記憶部と、
    前記マスター側レプリケーション実行部から転送された前記レプリケーションデータに基づき、前記スレーブ側記憶部に記憶された前記データのレプリケーションを更新するスレーブ側レプリケーション実行部と、
    を備え、
    前記マスター側レプリケーション実行部は、
    前記マスター側要求変換部が通常のクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行部が当該クエリーの実行を完了した後に前記スレーブサーバー装置側に転送するとともに、
    前記マスター側要求変換部が重いクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行部が当該クエリーの実行を完了したか否かに関わらず前記スレーブサーバー装置側に転送し、
    前記スレーブ側レプリケーション実行部は、前記マスター側要求変換部が重いクエリーであると判定した前記クエリーに関して、マスター側命令実行部での当該クエリーの実行の完了を待たずに、前記スレーブ側記憶部に記憶された前記データに対して当該クエリーを実行させるものであり
    前記マスター側レプリケーション実行部は、重いクエリーであると判定されたクエリーに関する前記レプリケーションデータを前記スレーブサーバー装置側に転送する前に、その時点で未転送のコミット済データのレプリケーションデータを先に前記スレーブサーバー装置側に転送し、
    前記スレーブ側レプリケーション実行部は、先に転送された前記レプリケーションデータに基づいて前記スレーブ側記憶部に記憶された前記データのレプリケーションを更新して同期を実行してから、前記重いクエリーであると判定されたクエリーを実行させる、
    データベースシステム。
  2. 前記マスター側命令実行部は、
    前記マスター側要求変換部が通常のクエリーであると判定した前記クエリーに関して、前記クエリーの実行結果であるデータの物理ログを前記レプリケーションデータとして生成し、
    前記マスター側要求変換部が重いクエリーであると判定した前記クエリーに関して、前記クエリーそのものを前記レプリケーションデータとして生成する、
    請求項1に記載のデータベースシステム。
  3. 前記スレーブ側レプリケーション実行部は、重いクエリーであると判定された前記クエリーに関して前記クエリーそのものを前記レプリケーションデータとして前記マスター側レプリケーション実行部から受信した場合には、通常のクエリーであると判定された前記クエリーに関して前記マスター側レプリケーション実行部から受信済みであった前記物理ログに基づく前記データのレプリケーションの更新をすべて実行した後で、前記重いクエリーであると判定された前記クエリーに基づく前記データのレプリケーションの更新を実行する、
    請求項2に記載のデータベースシステム。
  4. 前記スレーブ側レプリケーション実行部は、複数の前記クエリーに対応する前記レプリケーションデータを時系列に並べて管理するとともに、この時系列にしたがって前記レプリケーションデータに基づく前記データのレプリケーションの更新を実行する、
    請求項2または請求項3に記載のデータベースシステム。
  5. 前記スレーブ側レプリケーション実行部は、重いクエリーであると判定された前記クエリーに対応する前記レプリケーションデータに基づくデータのレプリケーションの更新が完了するまでは、当該重いクエリーに後続する他のクエリーに対応する前記レプリケーションデータに基づくデータのレプリケーションの更新の処理を待機する、
    請求項4に記載のデータベースシステム。
  6. 前記スレーブ側レプリケーション実行部は、更新型の2つのクエリーが互いにデータ資源について競合しない場合には、これら2つのクエリーを並列に実行する、
    請求項1から5までのいずれか一項に記載のデータベースシステム。
  7. マスターサーバー装置と、
    スレーブサーバー装置と、
    を備えるデータベースシステムにおけるデータ処理方法であって、
    前記マスターサーバー装置は、
    データを記憶するマスター側記憶部を備えるとともに、
    要求されるクエリーを受信し、受信した前記クエリーが通常のクエリーであるか重いクエリーであるかを判定するマスター側要求変換過程と、
    前記マスター側要求変換過程が受信した前記クエリーを実行して前記マスター側記憶部に記憶されている前記データを処理するとともに、前記クエリーの実行結果を前記スレーブサーバー装置側にレプリケーションするためのレプリケーションデータを生成するマスター側命令実行過程と、
    前記マスター側命令実行過程によって生成された前記レプリケーションデータを前記スレーブサーバー装置側に転送するマスター側レプリケーション実行過程と、
    を実行し、
    前記スレーブサーバー装置は、
    前記マスター側記憶部が記憶する前記データのレプリケーションを記憶するスレーブ側記憶部を備えるとともに、
    前記マスター側レプリケーション実行過程で転送された前記レプリケーションデータに基づき、前記スレーブ側記憶部に記憶された前記データのレプリケーションを更新するスレーブ側レプリケーション実行過程、
    を実行し、
    前記マスター側レプリケーション実行過程は、
    前記マスター側要求変換過程が通常のクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行過程が当該クエリーの実行を完了した後に前記スレーブサーバー装置側に転送するとともに、
    前記マスター側要求変換過程が重いクエリーであると判定した前記クエリーに関する前記レプリケーションデータを、マスター側命令実行過程が当該クエリーの実行を完了したか否かに関わらず前記スレーブサーバー装置側に転送し、
    前記スレーブ側レプリケーション実行過程は、前記マスター側要求変換過程が重いクエリーであると判定した前記クエリーに関して、マスター側命令実行過程での当該クエリーの実行の完了を待たずに、前記スレーブ側記憶部に記憶された前記データに対して当該クエリーを実行させるものであり
    前記マスター側レプリケーション実行部は、重いクエリーであると判定されたクエリーに関する前記レプリケーションデータを前記スレーブサーバー装置側に転送する前に、その時点で未転送のコミット済データのレプリケーションデータを先に前記スレーブサーバー装置側に転送し、
    前記スレーブ側レプリケーション実行部は、先に転送された前記レプリケーションデータに基づいて前記スレーブ側記憶部に記憶された前記データのレプリケーションを更新して同期を実行してから、前記重いクエリーであると判定されたクエリーを実行させる、
    データ処理方法。
JP2016245873A 2016-12-19 2016-12-19 データベースシステムおよびデータ処理方法 Active JP6404892B2 (ja)

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)

* Cited by examiner, † Cited by third party
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 日本電気株式会社 処理要求装置、処理装置、データベースシステム、データベース更新方法およびプログラム

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