JP6557720B2 - データベースシステム、装置、方法およびプログラム - Google Patents

データベースシステム、装置、方法およびプログラム Download PDF

Info

Publication number
JP6557720B2
JP6557720B2 JP2017509083A JP2017509083A JP6557720B2 JP 6557720 B2 JP6557720 B2 JP 6557720B2 JP 2017509083 A JP2017509083 A JP 2017509083A JP 2017509083 A JP2017509083 A JP 2017509083A JP 6557720 B2 JP6557720 B2 JP 6557720B2
Authority
JP
Japan
Prior art keywords
database
update
node
transaction log
log
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
JP2017509083A
Other languages
English (en)
Other versions
JPWO2016157466A1 (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.)
Murakumo Corp
Original Assignee
Murakumo 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 Murakumo Corp filed Critical Murakumo Corp
Publication of JPWO2016157466A1 publication Critical patent/JPWO2016157466A1/ja
Application granted granted Critical
Publication of JP6557720B2 publication Critical patent/JP6557720B2/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/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures

Landscapes

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

Description

本開示は、データベースの更新に関する。
従来、複数のマスターノードが階層的に構成されたマルチマスターデータベースシステムにおいて、下位マスターノードが、下位マスターノードのデータベースのシャドウコピーとメモリ上に展開されたヒープタプルマップとを書込セット(write set)として上位マスターノードに対して送信し、書込セットを受信した上位マスターノードが、書込セットに基づいて上位マスターノードのデータベースを更新して、その更新記録をトランザクションログとして下位マスターノードに送信することで、下位マスターノードから上位マスターノードに対して、更に上位マスターノードから配下の下位マスターノードに対して、効率的に矛盾のないデータベース更新を行う技術が提案されている(特許文献1を参照)。
国際公開第2012/056786号
上述した従来技術では、上位マスターノードが、書込セットを上位マスターノードのデータベースに反映し、この際に生成されたトランザクションログを下位マスターノードに送信する。ここで、上位マスターノードが行う処理には、データベースの読出、更新、トランザクションログの生成、といった処理負荷の大きい処理が含まれる。このため、上述した従来技術では、一度に大量の書込セットが上位マスターノードに送られた場合、上位マスターノードの処理用キューが詰まってしまう可能性がある。
本開示にかかる技術は、上記した問題に鑑み、複数のデータベース間で更新内容をレプリケーションする際の処理負荷の集中を回避可能なデータベースシステムを提供することを課題とする。
本開示では、上記した課題を解決するために、以下の手段を採用した。即ち、本開示に係るデータベースシステムは、複数のノードを備えるデータベースシステムであって、前記複数のノードのうち、第一のノードは、他のノードのデータベースと同期される第一のデータベースを管理する第一のデータベース管理手段と、前記第一のデータベースに対する更新命令を受け付ける更新命令受付手段と、前記更新命令に基づく更新を前記第一のデータベースに加えることなく、該更新命令に基づく該第一のデータベースの更新内容および該第一のデータベースにおいて更新対象となるデータ単位を把握可能な情報を含む書込セットを生成する書込セット生成手段と、前記書込セットを、前記複数のノードのうちの第二のノードに送信する書込セット送信手段と、を備え、前記第二のノードは、他のノードのデータベースと同期される第二のデータベースを管理する第二のデータベース管理手段と、前記第一のノードから送信された前記書込セットを受信する書込セット受信手段と、前記書込セットに基づく変更が前記第二のデータベースに加えられる前に、該書込セットに基づいて該第二のデータベースに加えられる変更の仮の履歴を示す仮トランザクションログを生成する更新前ログ生成手段と、前記第二のデータベースに更新が加えられた後に、前記第二のデータベースに加えられた変更の履歴を示す確定トランザクションログを生成する更新後ログ生成手段と、を備える、データベースシステムである。
本開示に係る技術によれば、複数のデータベース間で更新内容をレプリケーションする際の処理負荷の集中を回避可能なデータベースシステムを提供することが可能となる。
実施形態に係るデータベースシステムにおける、マスターノードの階層構造を例示する図である。 実施形態に係るノードのハードウェア構成の概略を示す図である。 実施形態に係るノードの機能構成の概略を示す図である。 実施形態において生成される書込セットの構造を示す図である。 実施形態におけるレプリケーション処理の流れを示すフローチャートAである。 実施形態におけるレプリケーション処理の流れを示すフローチャートBである。 実施形態におけるレプリケーション処理の流れを示すフローチャートCである。 実施形態における遅延対応処理の流れを示すフローチャートである。
以下、本開示に係るシステム、情報処理装置、方法およびプログラムの実施の形態を、図面に基づいて説明する。但し、以下に説明する実施の形態は、実施形態を例示するものであって、本開示に係るシステム、情報処理装置、方法およびプログラムを以下に説明する具体的構成に限定するものではない。実施にあたっては、実施の態様に応じた具体的構成が適宜採用され、また、種々の改良や変形が行われてよい。
<システムの構成>
以下、複数のノードを有するデータベースシステムにおいて、1のノードが更新命令を受信した場合に、当該更新命令に係る更新内容を、データベースシステムに属する複数のノードが管理する夫々のデータベースに対してレプリケーションする技術を説明する。本開示に係るレプリケーション技術は、本実施形態において例示されたシステムに限らず、複数のノードを有するデータベースシステムに適用可能である。なお、本実施形態では、本開示に係るレプリケーション技術を階層型マルチマスターデータベースシステムに適用する例について説明する。
図1は、本実施形態に係るデータベースシステムにおける、マスターノードの階層構造を例示する図である。本実施形態に係るデータベースシステムでは、複数の情報処理装置(ノード)が互いに通信可能に接続されている。これら複数のノードは、何れも、クエリを受け付けて実行することが可能なノードである。そして、図1に示されるように、本実施形態に係るデータベースシステムは、上位マスターノードMS101の下に階層的に下位マスターノードMS201、MS202・・・MS20nや、MS301、MS302・・・MS30mを有するノード構成を有している。これら複数のノードは、夫々、自身が管理するデータベースを有しており、これらのデータベースは、後述するレプリケーション技術によって同期されている。
本開示では、レプリケーションにおいて、更新命令を受信したノードを「第一のノード」と称し、第一のノードから書込セットを受信するノードを「第二のノード」と称する。本実施形態に係る階層型マルチマスターデータベースシステムでは、更新命令を受信する下位マスターノードが第一のノードに相当し、下位マスターノードから書込セットを受信する上位マスターノードが第二のノードに相当する。また、本実施形態において、更新内容は、データベースに加えられた変更の履歴を示す確定トランザクションログ(fixed transaction log)または仮の履歴を示す仮トランザクションログ(provisional transaction log)が、上位マスターノード(第二のノード)によって生成され、第一のノードを含む下位マスターノードへ送信されることで、システムに属する複数のノードに伝播される。
図2は、本実施形態に係るノード1のハードウェア構成の概略を示す図である。ノード1は、CPU(Central Processing Unit)11、RAM(Random Access Memory)12およびROM(Read Only Memory)13等からなる制御部10と、ストレージ(補助記憶装置)14と、通信インターフェース15と、を備えるコンピューターである。但し、ノード1の具体的なハードウェア構成に関しては、実施の態様に応じて適宜省略や置換、追加が可能である。また、ノード1は、単一の装置に限定されない。ノード1は、所謂クラウドや分散コンピューティングの技術等を用いた、複数の装置によって実現されてよい。また、ノード1には、ネットワーク等を介してユーザー端末9が接続されている。なお、各ノード1が管理するデータベースは、ストレージ14上に構築されてもよいし、RAM12上に構築されてもよく、データベースの構築場所は限定されない。
ストレージ14には、オペレーティングシステムとともに、アプリケーションプログラムが格納されており、当該プログラムをバスおよびRAM12を介してCPU11が読み込んで順次実行処理することによって、前述のマスターノードとしての機能が実現される。なお、上位マスターノードMS101、下位マスターノードMS201,MS202・・・MS20n、MS301,MS302・・・MS30mは、何れも同様のハードウェア構成を有する。
図3は、本実施形態に係るマスターノード1の機能構成の概略を示す図である。本実施形態に係るマスターノード1は、夫々、更新命令受付部21、データベース管理部22、識別情報管理部23、ログ送信部24、クエリ受付部25、クエリ処理部26、書込セット生成部31、書込セット送信部32、仮決定部33、識別情報取得部34、追加情報送信部35、書込セット受信部41、追加情報受信部42、更新データ単位情報蓄積部43、競合判定部44、衝突判定部45、更新後ログ生成部46、更新前ログ生成部47、最新識別情報保持部48、遅延判定部49、未反映識別情報保持部50およびログ受信部51を備える。なお、上位マスターノードMS101、下位マスターノードMS201,MS202・・・MS20n、MS301,MS302・・・MS30mは、何れも同様の機能構成を有する。
更新命令受付部21、データベース管理部22、識別情報管理部23、ログ送信部24、クエリ受付部25およびクエリ処理部26は、ノード1が第一のノードとして動作する場合、および第二のノードとして動作する場合の、何れの場合においても機能する。
更新命令受付部21は、データベースに対する更新命令を受け付ける。なお、更新命令受付部21によって更新命令を受け付けたマスターノード1は、以降、当該更新命令に係る更新内容の、当該マスターノード1のデータベースへの反映および他のマスターノード1へのレプリケーションが完了するまで、第一のノードとして動作する。
データベース管理部22は、他のノード1のデータベースと同期されるデータベースを管理する。また、データベース管理部22は、書込セット、確定トランザクションログまたは仮トランザクションログに基づいて、管理対象のデータベースの更新処理を行う。書込セット、確定トランザクションログまたは仮トランザクションログの生成方法、およびこれらの情報に基づいたデータベースの具体的な更新方法については、書込セット生成部31、更新後ログ生成部46、更新前ログ生成部47および後述するフローチャートの説明において後述する。
ノード1が第一のノードとして動作する場合、データベース管理部22は、確定トランザクションログまたは仮トランザクションログに基づいて、第一のノードが管理するデータベース(以下、「第一のデータベース」と称する)を更新する。また、ノード1が下位マスターノードとして動作する場合、データベース管理部22は、確定トランザクションログまたは仮トランザクションログに基づいて、当該下位マスターノードが管理するデータベースを更新する。
ノード1が第二のノードとして動作する場合、データベース管理部22によるデータベースの更新方法は、後述する衝突判定部45による判定結果に応じて異なる。ここで、本実施形態に係るデータベースでは、1のブロックは、所定のデータサイズを有し、複数のタプルを配置可能なデータ領域であり、ブロック番号を用いて識別される。このため、前記所定のデータサイズを超えるサイズを有するテーブルは、複数のブロックで構成される。衝突判定部45によって、仮決定されたブロックにおいて更新が衝突する可能性が有ると判定された場合、第二のノードのデータベース管理部22は、書込セットに基づいて、第二のノードが管理するデータベース(以下、「第二のデータベース」と称する)を更新する。一方、衝突判定部45によって、仮決定されたブロックにおいて更新が衝突する可能性が有ると判定されなかった場合、第二のノードのデータベース管理部22は、仮トランザクションログに基づいて第二のデータベースを更新する。以下、衝突判定部45によって仮決定されたブロックにおいて更新が衝突する可能性が有ると判定された場合に、書込セットに基づいて、第二のデータベースが更新される処理ルートを、「更新後ログ生成ルート」と称する。一方、衝突判定部45によって仮決定されたブロックにおいて更新が衝突する可能性が有ると判定されなかった場合に、仮トランザクションログに基づいて第二のデータベースが更新される処理ルートを、「更新前ログ生成ルート」と称する。
識別情報管理部23は、確定トランザクションログおよび仮トランザクションログに係る命令の時系列上の順序を把握可能な識別情報を管理する。本実施形態では、このような識別情報として、LSN(Log Sequence Number)が用いられる。また、識別情報管理部23は、LSNの付与対象が確定トランザクションログであるか仮トランザクションログであるかを区別せずに、同一の番号体系に基づいて、確定トランザクションログおよび仮トランザクションログにLSNを付与する。このため、LSNを参照することで、確定トランザクションログと仮トランザクションログとの間でも、前後関係を把握することが可能である。
ログ送信部24は、データベースに加えられた変更の履歴を示す確定トランザクションログまたは仮の履歴を示す仮トランザクションログを、より下位のマスターノード1に対して送信する。
クエリ受付部25は、ユーザー端末9から送信された、データベースに対するクエリを受け付ける。
クエリ処理部26は、クエリ受付部25によって受け付けられたクエリを処理する。
書込セット生成部31、書込セット送信部32、仮決定部33、識別情報取得部34および追加情報送信部35は、ノード1が第一のノード(本実施形態では、更新命令を受信した下位マスターノード)として動作する場合に機能する。
書込セット生成部31は、更新命令に基づく更新を第一のデータベースに加えることなく、シャドウコピーおよびヒープタプルマップを含む書込セットを生成する。ここで、シャドウコピーは、当該更新命令に基づく当該第一のデータベースの更新内容である。また、ヒープタプルマップは、当該第一のデータベースにおいて更新対象となるタプルを把握可能な情報である。但し、書込セットは、更新命令に基づく当該第一のデータベースの更新内容、および当該第一のデータベースにおいて更新対象となるタプルを把握可能な情報を含んでいればよく、これらの情報は、本実施形態において説明するシャドウコピーおよびヒープタプルマップに限定されない。
図4は、本実施形態において生成される書込セットの構造を示す図である。書込セットは、自身のRAM12上に展開された、シャドウコピーおよびヒープタプルマップを含む情報である。書込セットは、更新命令に基づく更新の対象となるタプルを含むブロックをRAM12上に読み出して、当該ブロックに対して更新命令に基づく操作を行うことで生成される。但し、本実施形態に係るデータベースシステムでは、第一のノードの書込セット生成部31によって書込セットが生成される時点では、第一のデータベース自体は更新されない。第一のデータベースは、第二のノードによって生成された確定トランザクションログまたは仮トランザクションログに従って更新される。第二のノードによる確定/仮トランザクションログの生成については、後述する。
図4には、タプル番号4および7の情報を書換するUPDATE命令、新たなタプルを1行追加するINSERT命令、およびタプル番号2を削除するDELETE命令(但し、本実施形態に係るデータベースは追記型データベースであるため、データは実際には消去されず、無効フラグの設定によって無効化される)、を含む更新命令に基づいて生成された書込セットが示されている。
ヒープタプルマップは、更新命令の対象となる行を示す情報である。具体的には、ヒープタプルマップには、元のタプル番号(図4に「タプル番号」で示された情報)と、追加されるタプルの番号を示す追加タプル番号とが関係付けられて登録される。ヒープタプルマップには、データベースの更新ごとに登録が追加される。但し、更新命令によってデータベースに新たに追加されるタプルのタプル番号はこの段階では不明である。このため、更新命令がUPDATE命令である場合、追加タプル番号にはそれぞれ、シャドウコピーにおいて設定された仮のタプル番号(図4に示す例では、sc1およびsc2)が書き込まれる。また、更新命令がINSERT命令である場合、元のタプルは存在しないため、INSERT命令に係る情報はヒープタプルマップには記録されない。なお、更新命令がDELETE命令である場合、追加されるタプルは無いため、元のタプル番号に対応する追加タプル番号は設定されない(図4に示す例では、追加タプル番号として「×」が設定される)。
シャドウコピーは、更新命令によるデータベースの更新内容が、データベースと同一または類似するデータフォーマットで示された情報である。即ち、シャドウコピーは、更新命令による更新後のタプルのコピーであってよい。但し、本実施形態では、書込セットの生成時点においてデータベースは実際には更新されていないため、シャドウコピーは、データベースが更新されたと仮定した場合の、更新後の更新対象タプルのコピーである。このため、更新命令がUPDATE命令またはINSERT命令である場合、上述の通り、データベースに新たに追加されるタプルのタプル番号はこの段階では不明であり、シャドウコピー中の、追加されるタプルの内容を示すエントリには、仮のタプル番号(図4に示す例では、sc1、sc2およびsc3)が書き込まれる。
なお、本実施形態に係るデータベースシステムにおいて、タプル番号は、データベースを構成するファイルの物理的な位置にリンクした情報ではないため、データベースの実体を見ることなく、上位マスターノードが設定してよい。このため、本実施形態では、ここで設定される仮のタプル番号には、一の書込セット内で識別可能な番号が設定される。データベースに反映される際に用いる実際のタプル番号は、上位マスターノードにおいて新たに採番される。また、ブロック番号についても、追加されるタプルについては確定していないため、追加されるタプルの内容を示すエントリには、仮ブロック番号が付される。図4に示す例では、仮のタプル番号sc1、sc2およびsc3が設定されたエントリには、仮ブロック番号が付されている。なお、本実施形態に係るデータベースシステムにおいて、ブロック番号は、データベースを構成するファイルの物理的な位置にリンクした、トランザクションログの作成に不可欠な情報であり、追加タプルを配置可能な空き状況のブロックを指定する必要がある。このため、本実施形態では、仮ブロック番号には、データベースの実体が参照された上で、実際に採用され得る番号が採番され、問題がない場合に、上位ノードにおいて確定される。
更に、更新命令がUPDATE命令またはDELETE命令である場合、UPDATE前のタプルおよびDELETE対象のタプルは無効化されるため、該当するタプルには、当該タプルが無効であることを示すフラグ(図4に示す例では、「×」)が設定される。
但し、書込セットの具体的な構成、フォーマットまたは生成方法は、上述した例に限定されない。例えば、上記説明した例では、DELETE命令はヒープタプルマップおよびシャドウコピーの双方に記載されるが、DELETE命令は更新に際して新たなタプルが追加されない命令であるため、ヒープタプルマップおよびシャドウコピーの何れか一方に記載されれば、命令の内容を把握可能である。即ち、DELETE命令については、無効フラグが設定されたタプルのシャドウコピーが生成されるのみであってもよいし(この場合、ヒープタプルマップには記載されない)、または、ヒープタプルマップに追加タプル番号が無いことが示されるのみであってもよい(この場合、シャドウコピーは生成されない)。
書込セット送信部32は、書込セットを、複数のノード1のうちの第二のノード(上位ノード)に送信する。
仮決定部33は、書込セットが生成される際に、書込セット中で指定されたタプルのうち、データベースに追加されるタプルの夫々について、当該タプルの更新が反映されるブロックを仮決定する。上述の通り、本実施形態に係るデータベースシステムでは、第一のノードによって書込セットが生成される時点では、第一のデータベース自体は更新されず、第一のデータベースは、第二のノードによって生成された確定/仮トランザクションログに従って更新される。上記説明した特許文献1に係る技術では、上位マスターノード(本開示の第二のノードに相当)のデータベースに更新を反映した後(即ち、更新が反映されるブロックが決定された後)にトランザクションログを生成していたが、本開示では、上述した「更新前ログ生成ルート」によって処理される場合、第二のノードのデータベースに更新が反映される前に仮トランザクションログを生成するため、追加されるタプルをデータベース内の何れのブロックに配置するかという問題が生じる。このため、本実施形態では、第一のノードは、書込セットを作成する際に、追加されるタプルを配置するブロックを仮決定し、当該ブロックの番号を、仮ブロック番号として採番する。
識別情報取得部34は、第一のノードの識別情報管理部23によって管理されているLSNのうち、ブロックの仮決定が行われた時点における、最新のLSNを取得する。より具体的には、第一のノードの識別情報取得部34は、仮決定部33が仮ブロック番号を採番した時点で確定/仮トランザクションログの反映(Redo)が完了しているLSN(以下、「RedoLSN」と称する)を取得する。即ち、RedoLSNとは、第一のノードにおけるレプリケーションの進行度合いを示す情報であり、第一のノードがどこまで確定/仮トランザクションログのRedoを完了しているかを示す情報である。なお、本実施形態では、ブロックの仮決定が行われた時点における最新のLSNとしてRedoLSNが取得されるが、ブロックの仮決定が行われた時点における最新のLSNは、少なくとも当該ブロックにおける最新のLSNまたはそれよりも新しいLSNであればよく、例えば、ブロックLSN(ブロックが最後に更新された際のLSN)であってもよい。
追加情報送信部35は、書込セットの送信と併せて、仮決定されたブロックを識別可能な情報および最新のLSNを送信する。より具体的には、第一のノードの追加情報送信部35は、仮決定部33によって採番された仮ブロック番号と、識別情報取得部34によって取得されたRedoLSNとを、第二のノードに通知する。なお、仮ブロック番号および最新のLSNの具体的な通知方法は、本実施形態において説明された例に限定されない。例えば、本実施形態では、仮ブロック番号は、上述の通り書込セット内のシャドウコピーに設定されることで第二のノードに通知されるが、仮ブロック番号は、書込セット内のヒープタプルマップに設定されることで通知されてもよいし、書込セットとは別に通知されてもよい。
書込セット受信部41、追加情報受信部42、更新データ単位情報蓄積部43、競合判定部44、衝突判定部45、更新後ログ生成部46、更新前ログ生成部47、最新識別情報保持部48、遅延判定部49および未反映識別情報保持部50は、ノード1が第二のノード(本実施形態では、書込セットを受信して確定/仮トランザクションログを生成する上位ノード)として動作する場合に機能する。
書込セット受信部41は、第一のノードから送信された書込セットを受信する。
追加情報受信部42は、仮決定されたブロックを識別可能な情報および最新のLSNを受信する。本実施形態では、第二のノードの追加情報受信部42は、第一のノードの追加情報送信部35によって送信された仮ブロック番号およびRedoLSNを受信する。
更新データ単位情報蓄積部43は、第二のデータベースにおいて更新されたデータ単位(本実施形態では、更新されたタプル)を示す情報として、コミットされたトランザクションで更新されたタプルのタプル番号(何れのタプルが何れの時点で更新されたか、を把握可能な情報)を蓄積する。これは、次にコミットしようとするトランザクションが同じ番号のタプルを更新しようとしていないかをチェックする、競合判定を行うためである。なお、本実施形態では、データベースにおいて個々のレコードとして扱われるデータ単位をタプルと称して説明しているが、本開示を適用可能なデータベースシステムは、リレーショナルデータベースに限定されない。
競合判定部44は、書込セット受信部41によって受信された書込セットに含まれる、ヒープタプルマップ(第一のデータベースにおいて更新対象となるタプルを把握可能な情報)と、更新データ単位情報蓄積部43によって蓄積されたタプル番号(第二のデータベースにおいて更新されたタプルを示す情報)とを比較し、一致するタプル番号が存在するか否かを確認することで、更新対象タプルの競合の有無を判定する。競合判定部44によって更新対象タプルの競合が有ると判定された場合、書込セットに基づく第二のデータベースの更新は中止される。
衝突判定部45は、第二のノードの識別情報管理部23によって管理されているLSNのうち仮決定されたブロックに係る最新のLSN(例えば、更新が行われた際のブロックLSN)と、受信された最新のLSNとを比較することで、仮決定されたブロックにおいて更新が衝突する可能性を判定する。
更新後ログ生成部46および更新前ログ生成部47は、確定トランザクションログまたは仮トランザクションログを生成する。ここで、確定トランザクションログは、データベースの更新後に、更新結果に基づいて生成される、データベースの変更履歴である。また、仮トランザクションログは、データベースの変更前に、書込セットに基づいて生成される、データベースの仮の変更履歴であり、確定トランザクションログと同様のデータフォーマットに従って生成され、所定のタイミングで確定トランザクションログとなる。具体的には、確定/仮トランザクションログは、少なくとも命令とトランザクション内容(タプル番号とそれに対する実行処理内容)が時系列で連続的に記録されたファイルである。本実施形態では、確定/仮トランザクションログは、更新するタプルの内容および更新対象のブロック番号を含むため、確定/仮トランザクションログの生成には、更新対象のブロック番号が必要である。データベースシステムでは、トランザクションログをデータベースの記録領域とは異なる領域に記録することにより、変更の永続性を維持しながら同時に操作の高速性を実現することを可能としている。
更新後ログ生成部46は、第二のノードのデータベース管理部22によるデータベースの更新結果に基づいて、第二のデータベースに加えられた変更の履歴を示す確定トランザクションログを生成する。
更新前ログ生成部47は、衝突判定部45によって仮決定されたブロックにおいて更新が衝突する可能性が有ると判定されなかった場合(更新前ログ生成ルート)に、書込セットに基づく変更が第二のデータベースに加えられる前に、当該書込セットに基づいて当該第二のデータベースに加えられる変更の仮の履歴を示す仮トランザクションログを生成する。
最新識別情報保持部48は、第二のデータベースに含まれるブロック毎に、当該ブロックの最新の更新に係るLSNを保持する。即ち、第二のノードは、上記競合判定のためのタプル更新情報に加えて、何れのブロックが何れの時点で更新されたか、を把握可能な情報(例えば、確定/仮トランザクションログのLSN)を保持しておく。なお、本実施形態では、仮トランザクションログのLSNについても、仮トランザクションログが生成された時点で最新識別情報保持部48によって保持される。このため、仮トランザクションログの反映に遅延が発生している場合、最新識別情報保持部48によって保持されるブロック毎のLSNは、夫々のブロックに保持されている反映済のLSNよりも新しい番号となる。
遅延判定部49は、クエリ処理部26によってクエリが処理される前に、更新前ログ生成部47によって生成された仮トランザクションログであって、第二のノードのデータベース管理部22によって第二のデータベースに未反映の仮トランザクションログの有無を判定する。
未反映識別情報保持部50は、未反映の仮トランザクションログに係るLSNを保持する。本実施形態では、未反映の仮トランザクションログに係るLSNは、スキップ情報として保持される。
ログ受信部51は、ノード1が第一のノードを含む下位マスターノード1として動作する場合に機能する。
ログ受信部51は、第二のノードから送信された確定/仮トランザクションログを受信する。
<処理の流れ>
次に、本実施形態に係る処理の詳細を説明する。なお、本実施形態において説明される処理の具体的な内容および順序等は、実施する上での一例である。具体的な処理内容および順序等は、実施の態様に応じて適宜選択されてよい。
図5、図6および図7は、本実施形態におけるレプリケーション処理の流れを示すフローチャートである。図5のフローチャートに示された処理は、データベースシステムに属する何れかのマスターノード1によって、更新命令が受信されたことを契機として開始され、更新命令単位で処理される。
ステップS101およびステップS102では、更新命令が受信され、ブロックが仮決定される。更新命令受付部21は、第一のデータベースに対する更新命令を受け付ける(ステップS101)。そして、仮決定部33は、書込セットが生成される際に、第一のデータベースの実体を参照して、ブロックの空き状況を確認する。そして、仮決定部33は、データベースに追加されるタプルの夫々が配置されるブロックとして、追加タプルを配置可能な空き状況のブロックのうちの何れかを仮決定し、夫々の追加タプルに対して、仮ブロック番号を採番する(ステップS102)。但し、更新命令がDELETE命令である場合、追加されるタプルは無いため、仮ブロック番号の採番は行われない。その後、処理はステップS103へ進む。
ステップS103では、LSNが取得される。識別情報取得部34は、第一のノードの識別情報管理部23によって管理されているLSNのうち、ブロックの仮決定が行われた時点における、最新のLSNを取得する。その後、処理はステップS104へ進む。
ステップS104では、書込セットが生成される。書込セット生成部31は、更新命令に基づく更新を第一のデータベースに加えることなく、シャドウコピーおよびヒープタプルマップを含む書込セットを生成する。その後、処理はステップS105へ進む。
ステップS105およびステップS106では、書込セットが送受信される。書込セット送信部32は、書込セットを、複数のノード1のうちの第二のノード(本実施形態では、階層型マルチマスターデータベースシステムにおける上位ノード)に送信する。また、追加情報送信部35は、書込セットの送信と併せて、仮決定されたブロックを識別可能な情報および最新のLSNを送信する(ステップS105)。書込セット受信部41は、第一のノードから送信された書込セットを受信する。また、追加情報受信部42は、仮決定されたブロックを識別可能な情報および最新のLSNを受信する(ステップS106)。その後、本フローチャートに示された処理は終了し、図6および図7に示された処理が実行される。
図6および図7のフローチャートに示された処理は、第二のノードによって書込みセット等が受信されたことを契機として開始され、書込セットに含まれるタプル単位で処理される。
ステップS201では、競合判定が行われる。競合判定部44は、書込セット受信部41によって第一のノードから受信された書込セットに含まれる、ヒープタプルマップ(第一のデータベースにおいて更新対象となるタプルを把握可能な情報)と、第二のノードの更新データ単位情報蓄積部43によって蓄積されたタプル番号(第二のデータベースにおいて更新されたタプルを示す情報)とを比較し、一致するタプル番号が存在するか否かを確認することで、更新対象タプルの競合の有無を判定する。ここで参照されるタプル番号は、本フローチャートに係るレプリケーション処理が以前に実行された際に、後述するステップS206において蓄積されたものである。競合判定の結果、受信タプル番号と競合判定用のタプル番号とが競合する(一致するタプル番号が存在する)と判定された場合、処理はステップS202へ進む。一方、競合判定の結果、受信タプル番号と競合判定用のタプル番号とが競合しない(一致するタプル番号が存在しない)と判定された場合、処理はステップS206へ進む。なお、更新命令がINSERT命令である場合、当該命令は既存のタプルを変更するものでは無いため、競合判定は行われない。即ち、更新命令がINSERT命令である場合、処理は自動的にステップS206へ進んでよい。
ステップS202からステップS205では、更新中断のための処理が行われる。ステップS201の競合判定において更新対象タプルが競合すると判定された場合、該当するタプルを含む書込セットに基づく、第二のデータベースの更新が中止される。具体的には、第二のノードにおけるデータベースの更新が中断されると(ステップS202)、更新中断通知が第一のノードに送信される(ステップS203)。そして、第一のノードは、第二のノードから送信された更新中断通知を受信し(ステップS204)、ステップS104で生成された書込セットに係るデータベースの更新を中断する(ステップS205)。なお、更新中断の対象となった書込セットについて、下位マスターノードに対して既に送信された確定/仮トランザクションログがある場合には、下位マスターノード全体に対して、送信済の確定/仮トランザクションログのアボート通知を送信する。その後、本フローチャートに示された処理は終了する。また、確定/仮トランザクションログの送信についてはステップS224およびステップS234の説明において後述する。
ステップS206では、競合判定用のタプル番号が登録される。更新データ単位情報蓄積部43は、第二のデータベースにおいて更新されたタプルを示す情報として、更新されたタプルのタプル番号を蓄積する。ここで蓄積されたタプル番号は、本フローチャートに係るレプリケーション処理が次回以降実行された際に、ステップS201で参照される。その後、処理はステップS220へ進む。
ステップS220では、衝突判定が行われる。衝突判定部45は、仮決定されたブロックの第二のノードにおける最新のLSNと、受信された最新のLSNとを比較することで、仮決定されたブロックにおいて更新が衝突する可能性を判定する。なお、ここで、第二のノードにおけるブロック毎の最新のLSNは、最新識別情報保持部48によって保持されている情報が参照されることで取得される。本ステップにおける判定は、書込セットに含まれる更新対象のタプル毎に行われる。これは、タプル毎に仮決定されたブロックの更新状況が異なるためである。
衝突判定の結果、受信LSNがブロック毎の最新LSN情報より古いと判定された場合、仮ブロック番号に係るブロックの内容が、第一のノードで仮ブロック番号が採番された状態から変更されている可能性がある。この場合、仮ブロック番号を採用すると、更新が衝突し、例えば、当該ブロックにタプルを挿入するスペースが存在しない等の問題が生じ得る。このため、受信LSNがブロック毎の最新LSN情報より古いと判定された追加タプルを含む更新命令については、仮ブロック番号を破棄して書込セットによるデータベース更新を行うための処理ルート(更新後ログ生成ルート)が採用され、処理はステップS221へ進む。一方、衝突判定の結果、受信LSNがブロック毎の最新LSN情報より古いと判定された追加タプルを含まない更新命令については、仮ブロック番号を採用しても、更新は衝突しないため、仮ブロック番号を採用してデータベースの更新前に仮トランザクションログを生成する処理ルート(更新前ログ生成ルート)が採用され、処理はステップS231へ進む。なお、上述の通り、更新命令がDELETE命令である場合、追加されるタプルは無いため、仮ブロック番号の採番は行われていない。このため、処理対象のタプルがDELETE命令に係るタプルである場合には、衝突判定は行われず、処理はステップS231へ進む。即ち、DELETE命令に係るタプルについては、自動的に更新前ログ生成ルートを採用することが出来る。
ステップS221では、書込セットに基づいてデータベースが更新される。第二のノードのデータベース管理部22は、書込セットに含まれるヒープタプルマップおよびシャドウコピー等に基づいて第二のデータベース中のタプルを書換/追加することで、第二のデータベースを更新する(更新後ログ生成ルート)。この際、仮ブロック番号は破棄され、第二のデータベースの状況に基づいて、新たなブロック番号が採番される。
仮決定されたブロックにおいて更新が衝突する可能性が有ると判定された場合(更新後ログ生成ルート)、第二のノードのデータベース管理部22は、ヒープタプルマップを参照して元のタプル番号を特定し、第二のデータベースにおける、当該タプル番号のタプルを、対応するシャドウコピーの内容で更新する。また、ヒープタプルマップに、追加タプル番号が設定されている場合、第二のノードのデータベース管理部22は、第二のデータベースに、新しい追加タプル番号を採番してタプルを追加し、当該タプルを、対応するシャドウコピーの内容(仮のタプル番号を除く)で更新する。その後、処理はステップS222へ進む。
ステップS222では、確定トランザクションログが生成される。更新後ログ生成部46は、第二のノードのデータベース管理部22による更新結果に基づいて、第二のデータベースに加えられた変更の履歴を示す確定トランザクションログを生成する。その後、処理はステップS223へ進む。
ステップS223およびステップS224では、ブロック毎の最新LSN情報が更新され、確定トランザクションログが送信される。最新識別情報保持部48は、第二のデータベースに含まれるブロックの、最新の更新に係るLSNを保持する(ステップS223)。ログ送信部24は、第二のデータベースに加えられた変更の履歴を示す確定トランザクションログを、第一のノードを含む1または複数の下位マスターノード(例えば、下位マスターノードMS201,MS202・・・MS20n、MS301,MS302・・・MS30m)に対して送信する(ステップS224)。その後、本フローチャートに示された処理は終了する。
ステップS231では、書込セットに基づいて仮トランザクションログが生成される。ここでは、ステップS220の衝突判定において、仮決定されたブロックにおいて更新が衝突する可能性が有ると判定されなかったため、仮ブロック番号を採用可能である。このため、更新前ログ生成部47は、書込セットに基づく変更が第二のデータベースに加えられる前に、当該書込セットに基づいて当該第二のデータベースに加えられる変更の仮の履歴を示す仮トランザクションログを生成し、当該仮トランザクションのためのLSNを採番する(更新前ログ生成ルート)。その後、処理はステップS232へ進む。
ステップS232では、スキップ情報が登録される。未反映識別情報保持部50は、未反映の仮トランザクションログに係るLSNを、スキップ情報として保持する。スキップ情報は、後述する遅延対応処理において参照される。その後、処理はステップS233へ進む。なお、本ステップに係る処理は、後述するステップS233よりも後に実行されてもよい。
ステップS233およびステップS234では、ブロック毎の最新LSN情報が更新され、仮トランザクションログが送信される。処理の詳細は、送信される情報が確定トランザクションログではなく仮トランザクションログである点を除いてステップS223およびステップS224の説明で上述したものと同様であるため、説明を省略する。仮トランザクションログが第一のノードを含む1または複数の下位マスターノード(例えば、下位マスターノードMS201,MS202・・・MS20n、MS301,MS302・・・MS30m)に送信されることについても、ステップS223およびステップS224と同様である。その後、処理はステップS235へ進む。
ステップS235では、仮トランザクションログに基づいてデータベースが更新される。第二のノードのデータベース管理部22は、仮トランザクションログに基づいて第二のデータベース中のタプルを書換/追加することで、第二のデータベースを更新する。上述の通り、仮トランザクションログは、少なくとも命令とトランザクション内容(タプル番号とそれに対する実行処理内容)が時系列で連続的に記録されたファイルである。このため、第二のノードのデータベース管理部22は、仮トランザクションログに記録された処理を、時系列順に第二のノードにおいて再現することで、第二のデータベースを更新する。仮トランザクションログに基づいたトランザクションの再現については、データベース管理において一般的な、トランザクションログに基づいたトランザクションの再現技術と同様であるため、詳細な説明については省略する。この際、データの反映が行われたブロックには、当該トランザクションに係るLSNが記録される。その後、処理はステップS236へ進む。
ステップS236およびステップS237では、スキップ情報が削除され、仮トランザクションログが確定される。未反映識別情報保持部50は、ステップS235で反映された仮トランザクションログに係るLSNを、スキップ情報から削除する(ステップS236)。そして、第二のノードは、ステップS235で反映された仮トランザクションログを、確定トランザクションログとする(ステップS237)。その後、本フローチャートに示された処理は終了する。
なお、ステップS235からステップS237の処理は、第二のノードにおける処理負荷に応じて遅延させてもよい。また、ステップS235からステップS237の処理を意図的に遅延させることで、第二のノード処理負荷を分散させることが出来る。例えば、ステップS235からステップS237の処理を実行するプロセスを、他のステップを実行するプロセスとは別のプロセスとし、バックグラウンドで動作させることで、第二のノード処理負荷を分散させることとしてもよい。ステップS235からステップS237の処理が遅延している場合のクエリへの対応については、後述する。
ステップS241およびステップS242では、確定/仮トランザクションログが受信され、確定/仮トランザクションログに基づいてデータベースが更新される。第一のノードを含む1または複数の下位マスターノードのログ受信部51は、ステップS224またはステップS234において第二のノードから送信された確定/仮トランザクションログを受信する(ステップS241)。そして、第一のノードを含む1または複数の下位マスターノードのデータベース管理部22は、確定/仮トランザクションログに基づいて、夫々のノード1が管理するデータベースを更新する(ステップS242)。
ここで、データベース管理部22は、確定/仮トランザクションログに記録された処理を、時系列順に再現することで、当該ノードのデータベースを更新する。確定/仮トランザクションログに基づいたトランザクションの再現については、データベース管理において一般的な、トランザクションログに基づいたトランザクションの再現技術と同様であるため、詳細な説明については省略する。なお、第一のノードは、ステップS104において書込セットを生成し、また仮ブロック番号の採番を行っているが、これらの情報は第一のデータベースを実際に更新する際には参照されない。第一のノードにおいても、データベースの更新は、受信された確定/仮トランザクションログに従って行われる。その後、本フローチャートに示された処理は終了する。
確定/仮トランザクションログを受信したノード(例えば、下位マスターノードMS201,MS202・・・MS20n)に、より下位のマスターノード(例えば、下位マスターノードMS301,MS302・・・MS30m)が従属している場合、確定/仮トランザクションログを受信したノード1のログ送信部24は、第二のデータベースに加えられた変更の履歴(または仮の履歴)を示す確定/仮トランザクションログを、より下位のマスターノード1に対して送信(転送)する(図示は省略する)。そして、確定/仮トランザクションログは、最も下位のマスターノード1に到達するまで、より下位のマスターノード1に対して転送される。確定/仮トランザクションログを受信したマスターノード1は、確定/仮トランザクションログに基づいて、当該ノード1が管理するデータベースを更新する(ステップS241およびステップS242を参照)。このようにして、本実施形態に係る階層型マルチマスターデータベースシステムでは、データベースシステムに属する複数のマスターノード1に、更新内容を伝播する。
図8は、本実施形態における遅延対応処理の流れを示すフローチャートである。本フローチャートに示された処理は、第二のノードによって、クエリが受信されたことを契機として開始される。
ステップS301およびステップS302では、クエリが受信され、クエリに関連するブロックが読み出される。クエリ受付部25は、ユーザー端末9から送信された、データベースに対するクエリを受け付ける(ステップS301)。そして、クエリ処理部26は、受信されたクエリの処理に必要なブロックを、第二のデータベースから読み出す(ステップS302)。その後、処理はステップS303へ進む。
ステップS303では、遅延判定が行われる。遅延判定部49は、クエリ処理部26によってクエリが処理される前に、クエリの処理に必要となるブロックにおいて、データベースへの反映が遅延している仮トランザクションログが存在するか否かを判定する。
具体的には、遅延判定部49は、遅延判定部49は、クエリの処理に係るブロックに係るスキップ情報が蓄積されているか否かに基づいて、未反映の仮トランザクションログの有無を判定する。遅延判定の結果、未反映の仮トランザクションログが有ると判定された場合、処理はステップS304へ進む。一方、遅延判定の結果、未反映の仮トランザクションログがないと判定された場合、処理はステップS306へ進む。
なお、未反映の仮トランザクションログの有無は、その他の方法で判定されてもよい。例えば、遅延判定部49は、クエリを処理するにあたって必要なブロックについて、ステップS302で読み出されたブロックの最新の更新に係るLSNと、読み出されたブロックに記録されているLSNとを比較することで、未反映の仮トランザクションログの有無を判定してもよい。なお、ここで、第二のノードにおけるブロック毎の最新の更新に係るLSNは、最新識別情報保持部48によって保持されている情報が参照されることで取得される。最新識別情報保持部48によって保持されているLSNが、読み出されたブロックに記録されているLSNよりも新しいと判定された場合、遅延判定部49は、未反映の仮トランザクションログが有ると判定する。また、ブロック毎にスキップ情報の有無を示すフラグを設定しておき、遅延判定部49は、このフラグを参照することで、未反映の仮トランザクションログの有無を判定してもよい。
ステップS304およびステップS305では、対応する仮トランザクションログが特定され、特定された仮トランザクションログに基づいてデータベースが更新される。遅延判定部49によって未反映の仮トランザクションログが有ると判定された場合、遅延判定部49は、スキップ情報中の、ブロックが最後に更新された際のLSNよりも新しいLSNに係る仮トランザクションログを特定する(ステップS304)。そして、第二のノードのデータベース管理部22は、当該未反映の仮トランザクションログに基づいて、第二のデータベースのうち、クエリを処理するにあたって必要なブロックを更新する(ステップS305)。その後、処理はステップS306へ進む。
ステップS306では、クエリに関連する全てのブロックの読み出しが行われたか否かが判定される。クエリに関連するブロックで未だ読み出しされていないブロックがある場合、処理はステップS302へ進む。即ち、本フローチャートに示された処理では、クエリの処理に必要なブロックの全てについて、遅延判定が行われ、データベース反映の遅延が検出された場合、仮トランザクションログに基づくデータベース更新が行われる。一方、クエリに関連する全てのブロックの読み出しが行われた場合、処理はステップS307へ進む。
ステップS307では、クエリが実行される。クエリ処理部26は、クエリ受付部25によって受け付けられたクエリを処理する。その後、本フローチャートに示された処理は終了する。
<効果>
従来、複数のマスターノードが階層的に構成されたマルチマスターデータベースシステムにおいて、下位マスターノードが、下位マスターノードのデータベースのシャドウコピーとメモリ上に展開されたヒープタプルマップとを書込セットとして上位マスターノードに対して送信し、書込セットを受信した上位マスターノードが、書込セットに基づいて上位マスターノードのデータベースを更新して、その更新記録をトランザクションログ(本実施形態における確定トランザクションログに相当)として下位マスターノードに送信し、下位マスターノードのデータベースが当該トランザクションログに基づいて下位マスターノードのデータベースを更新する技術があった(更新後ログ生成ルート)。
しかし、上述した従来技術では、書込セットを上位マスターノードのデータベースに反映してトランザクションログを生成する処理が、ボトルネックになりやすく、一度に大量の書込セットが上位マスターノードに送られた場合、上位マスターノードの処理用キューが詰まってしまう可能性がある。
上記説明した実施形態によれば、上記「更新後ログ生成ルート」に加えて、第二のノードのデータベースへの反映をスキップして仮トランザクションログに変換する「更新前ログ生成ルート」を用意し、更新前ログ生成ルートで処理可能な書込セットを更新前ログ生成ルートで処理することで、複数のデータベース間で更新内容をレプリケーションする際の処理負荷の集中を回避することが可能となる。

Claims (13)

  1. 複数のノードを備えるデータベースシステムであって、
    前記複数のノードのうち、第一のノードは、
    他のノードのデータベースと同期される第一のデータベースを管理する第一のデータベース管理手段と、
    前記第一のデータベースに対する更新命令を受け付ける更新命令受付手段と、
    前記更新命令に基づく更新を前記第一のデータベースに加えることなく、該更新命令に基づく該第一のデータベースの更新内容および該第一のデータベースにおいて更新対象となるデータ単位を把握可能な情報を含む書込セットを生成する書込セット生成手段と、
    前記書込セットを、前記複数のノードのうちの第二のノードに送信する書込セット送信手段と、を備え、
    前記第二のノードは、
    他のノードのデータベースと同期される第二のデータベースを管理する第二のデータベース管理手段と、
    前記第一のノードから送信された前記書込セットを受信する書込セット受信手段と、
    前記書込セットに基づく変更が前記第二のデータベースに加えられる前に、該書込セットに基づいて該第二のデータベースに加えられる変更の仮の履歴を示す仮トランザクションログを生成する更新前ログ生成手段と、
    前記第二のデータベースに更新が加えられた後に、前記第二のデータベースに加えられた変更の履歴を示す確定トランザクションログを生成する更新後ログ生成手段と、
    を備える、
    データベースシステム。
  2. 前記第一のノードは、
    前記確定トランザクションログおよび前記仮トランザクションログに係る命令の時系列上の順序を把握可能な識別情報を管理する第一の識別情報管理手段と、
    前記書込セットが生成される際に、前記更新に係るデータ単位が配置される領域を仮決定する仮決定手段と、
    前記第一の識別情報管理手段によって管理されている前記識別情報のうち、前記仮決定が行われた時点における、少なくとも前記領域に係る最新の識別情報を取得する識別情報取得手段と、
    前記書込セットの送信と併せて、前記仮決定された領域を識別可能な情報および前記最新の識別情報を送信する追加情報送信手段と、を更に備え、
    前記第二のノードは、
    前記確定トランザクションログおよび前記仮トランザクションログに係る命令の時系列上の順序を把握可能な識別情報を管理する第二の識別情報管理手段と、
    前記第二のデータベースに含まれる前記領域毎に、最新の更新に係る前記識別情報を保持する最新識別情報保持手段と、
    前記仮決定された領域を識別可能な情報および前記最新の識別情報を受信する追加情報受信手段と、
    前記仮決定された領域の前記第二のデータベースにおける最新の更新に係る識別情報と、前記第一のノードから受信された前記最新の識別情報とを比較することで、前記仮決定された領域において更新が衝突する可能性を判定する衝突判定手段と、を更に備え、
    前記更新前ログ生成手段は、前記衝突判定手段によって前記仮決定された領域において更新が衝突する可能性が有ると判定されなかった場合に、前記書込セットに基づく変更が前記第二のデータベースに加えられる前に前記仮トランザクションログを生成する、
    請求項1に記載のデータベースシステム。
  3. 前記第二のデータベース管理手段は、前記衝突判定手段によって前記仮決定された領域において更新が衝突する可能性が有ると判定された場合に、前記書込セットに基づいて、前記第二のデータベースを更新し、
    前記更新後ログ生成手段は、前記第二のデータベース管理手段による更新結果に基づいて、前記確定トランザクションログを生成する、
    請求項2に記載のデータベースシステム。
  4. 前記第二のノードは、
    前記第二のデータベースにおいて更新されたデータ単位を示す情報を蓄積する更新データ単位情報蓄積手段と、
    前記書込セット受信手段によって受信された書込セットに含まれる、前記第一のデータベースにおいて更新対象となるデータ単位を把握可能な情報と、前記更新データ単位情報蓄積手段によって蓄積された、前記第二のデータベースにおいて更新されたデータ単位を示す情報とを比較することで、更新対象データ単位の競合の有無を判定する競合判定手段と、を更に備え、
    前記競合判定手段によって更新対象データ単位の競合が有ると判定された場合に、前記書込セットに基づく前記第二のデータベースの更新が中止される、
    請求項1から3の何れか一項に記載のデータベースシステム。
  5. 前記第二のノードは、
    前記確定トランザクションログまたは前記仮トランザクションログを、前記第一のノードに対して送信するログ送信手段を更に備え、
    前記第一のノードは、
    前記第二のノードから送信された前記確定トランザクションログまたは前記仮トランザクションログを受信するログ受信手段を更に備え、
    前記第一のデータベース管理手段は、前記確定トランザクションログまたは前記仮トランザクションログに基づいて前記第一のデータベースを更新する、
    請求項1から4の何れか一項に記載のデータベースシステム。
  6. 前記第二のデータベース管理手段は、前記仮トランザクションログに基づいて前記第二のデータベースを更新する、
    請求項1から5の何れか一項に記載のデータベースシステム。
  7. 前記第二のノードは、
    前記第二のデータベースに対するクエリを受け付けるクエリ受付手段と、
    前記クエリを処理するクエリ処理手段と、
    前記クエリ処理手段によってクエリが処理される前に、前記更新前ログ生成手段によって生成された仮トランザクションログであって、前記第二のデータベース管理手段によって前記第二のデータベースに未反映の仮トランザクションログの有無を判定する遅延判定手段と、を更に備え、
    前記第二のデータベース管理手段は、前記遅延判定手段によって未反映の仮トランザクションログが有ると判定された場合に、該未反映の仮トランザクションログに基づいて前記第二のデータベースを更新する、
    請求項6に記載のデータベースシステム。
  8. 前記第二のノードは、
    前記第二のデータベースに対するクエリを受け付けるクエリ受付手段と、
    前記クエリを処理するクエリ処理手段と、
    前記クエリ処理手段によってクエリが処理される前に、前記更新前ログ生成手段によって生成された仮トランザクションログであって、前記第二のデータベース管理手段によって前記第二のデータベースに未反映の仮トランザクションログの有無を判定する遅延判定手段と、を更に備え、
    前記遅延判定手段は、前記クエリを処理するにあたって必要な前記領域について、前記未反映の仮トランザクションログの有無を判定し、
    前記第二のデータベース管理手段は、前記遅延判定手段によって未反映の仮トランザクションログが有ると判定された場合に、該未反映の仮トランザクションログに基づいて、前記第二のデータベースのうち、前記クエリを処理するにあたって必要な前記領域を更新する、
    請求項2又は3に記載のデータベースシステム。
  9. 前記第二のノードは、
    前記確定トランザクションログおよび前記仮トランザクションログに係る命令の時系列上の順序を把握可能な識別情報のうち、前記未反映の仮トランザクションログに係る前記識別情報を保持する未反映識別情報保持手段を更に備え、
    前記遅延判定手段は、前記未反映識別情報保持手段によって保持される前記未反映の仮トランザクションログに係る前記識別情報を参照することで、前記未反映の仮トランザクションログの有無を判定する、
    請求項8に記載のデータベースシステム。
  10. 前記第二のデータベースの前記領域の夫々には、前記確定トランザクションログおよび前記仮トランザクションログに係る命令の時系列上の順序を把握可能な識別情報のうち、該領域に反映済のトランザクションに係る該識別情報が記録され、
    前記遅延判定手段は、前記クエリに係る前記領域の最新の更新に係る前記識別情報と、該領域に記録されている前記反映済トランザクションに係る前記識別情報とを比較することで、前記未反映の仮トランザクションログの有無を判定する、
    請求項8に記載のデータベースシステム。
  11. 複数のノードを備えるデータベースシステムにノードとして属する情報処理装置であって、
    他のノードによって管理される第一のデータベースと同期される第二のデータベースを管理するデータベース管理手段と、
    前記他のノードから送信された、前記第一のデータベースに対する更新命令に基づく更新内容および更新対象となるデータ単位を把握可能な情報を含む書込セットを受信する書込セット受信手段と、
    前記書込セットに基づく変更が前記第二のデータベースに加えられる前に、該書込セットに基づいて該第二のデータベースに加えられる変更の仮の履歴を示す仮トランザクションログを生成する更新前ログ生成手段と、を備える、
    情報処理装置。
  12. 複数のノードを備えるデータベースシステムにおいて実行される方法であって、
    前記複数のノードのうち、他のノードのデータベースと同期される第一のデータベースを管理する第一のノードが
    前記第一のデータベースに対する更新命令を受け付ける更新命令受付ステップと、
    前記更新命令に基づく更新を前記第一のデータベースに加えることなく、該更新命令に基づく該第一のデータベースの更新内容および該第一のデータベースにおいて更新対象となるデータ単位を把握可能な情報を含む書込セットを生成する書込セット生成ステップと、
    前記書込セットを、前記複数のノードのうちの第二のノードに送信する書込セット送信ステップと、を実行し、
    他のノードのデータベースと同期される第二のデータベースを管理する前記第二のノードが
    前記第一のノードから送信された前記書込セットを受信する書込セット受信ステップと、
    前記書込セットに基づく変更が前記第二のデータベースに加えられる前に、該書込セットに基づいて該第二のデータベースに加えられる変更の仮の履歴を示す仮トランザクションログを生成する更新前ログ生成ステップと、を実行する、
    方法。
  13. 複数のノードを備えるデータベースシステムにノードとして属し、他のノードによって管理される第一のデータベースと同期される第二のデータベースを管理する情報処理装置のコンピューターに
    前記他のノードから送信された、前記第一のデータベースに対する更新命令に基づく更新内容および更新対象となるデータ単位を把握可能な情報を含む書込セットを受信する書込セット受信ステップと、
    前記書込セットに基づく変更が前記第二のデータベースに加えられる前に、該書込セットに基づいて該第二のデータベースに加えられる変更の仮の履歴を示す仮トランザクションログを生成する更新前ログ生成ステップと、を実行させる、
    プログラム。
JP2017509083A 2015-03-31 2015-03-31 データベースシステム、装置、方法およびプログラム Active JP6557720B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2015/060298 WO2016157466A1 (ja) 2015-03-31 2015-03-31 データベースシステム、装置、方法およびプログラム

Publications (2)

Publication Number Publication Date
JPWO2016157466A1 JPWO2016157466A1 (ja) 2018-01-25
JP6557720B2 true JP6557720B2 (ja) 2019-08-07

Family

ID=57006640

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017509083A Active JP6557720B2 (ja) 2015-03-31 2015-03-31 データベースシステム、装置、方法およびプログラム

Country Status (2)

Country Link
JP (1) JP6557720B2 (ja)
WO (1) WO2016157466A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11256714B1 (en) 2020-10-26 2022-02-22 Coupang Corp. Systems and methods for managing event storage

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2012056734A1 (ja) * 2010-10-26 2012-05-03 株式会社Murakumo データベースの管理方法

Also Published As

Publication number Publication date
WO2016157466A1 (ja) 2016-10-06
JPWO2016157466A1 (ja) 2018-01-25

Similar Documents

Publication Publication Date Title
JP4699516B2 (ja) 名前空間複製プログラム、名前空間複製装置、名前空間複製方法
JP4414381B2 (ja) ファイル管理プログラム、ファイル管理装置、ファイル管理方法
US20130124470A1 (en) Asynchronous distributed garbage collection for replicated storage clusters
JP5186390B2 (ja) ノードの番号付けによるファイル・システムのダンプ/復元のための方法、システム、およびデバイス
JP6361223B2 (ja) トランザクションシステム
KR20210058118A (ko) CaseDB: 엣지컴퓨팅을 위한 저비용 Put-Intensive 키-벨류 저장장치
CN107870954A (zh) 一种分布式数据库的扩展方法及装置
CN105376269B (zh) 虚拟机存储系统及其实现方法和装置
JP6293709B2 (ja) ストレージシステムおよびストレージシステム用プログラム
CN112965939A (zh) 一种文件合并方法、装置和设备
CN102779088A (zh) 事务处理设备、事务处理方法及事务处理程序
CN110352410A (zh) 跟踪索引节点的访问模式以及预提取索引节点
US20180011897A1 (en) Data processing method having structure of cache index specified to transaction in mobile environment dbms
JP6557720B2 (ja) データベースシステム、装置、方法およびプログラム
US20230376470A1 (en) Moving Window Data Deduplication in Distributed Storage
JP5960798B2 (ja) データベースの管理方法
CN106528876B (zh) 分布式系统的信息处理方法及分布式信息处理系统
CN110019130A (zh) 一种数据库更新的方法及装置
US8615769B2 (en) Data processing system, data processing method, and data processing program
US10452492B2 (en) Method, apparatus, and computer program stored in computer readable medium for recovering block in database system
US20200249876A1 (en) System and method for data storage management
JP2010224672A (ja) データ処理方法、システム、およびプログラム
JP6239697B2 (ja) データベースの管理方法
JP2005293323A (ja) 異種rdbms間での差分配信レコード反映システム
US20230273728A1 (en) Storage control apparatus and method

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180313

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190219

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190409

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190712

R150 Certificate of patent or registration of utility model

Ref document number: 6557720

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250