JP6008947B2 - データベースの管理方法、データベースシステム、及び、プログラム - Google Patents

データベースの管理方法、データベースシステム、及び、プログラム Download PDF

Info

Publication number
JP6008947B2
JP6008947B2 JP2014511024A JP2014511024A JP6008947B2 JP 6008947 B2 JP6008947 B2 JP 6008947B2 JP 2014511024 A JP2014511024 A JP 2014511024A JP 2014511024 A JP2014511024 A JP 2014511024A JP 6008947 B2 JP6008947 B2 JP 6008947B2
Authority
JP
Japan
Prior art keywords
database
master node
update
index
transaction 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
JP2014511024A
Other languages
English (en)
Other versions
JPWO2013157099A1 (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 JPWO2013157099A1 publication Critical patent/JPWO2013157099A1/ja
Application granted granted Critical
Publication of JP6008947B2 publication Critical patent/JP6008947B2/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/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • G06F16/2329Optimistic concurrency control using versioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing

Landscapes

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

Description

本発明は、データベースの管理方法、特に複数のマスタノードがネットワークにより階層的に接続されているデータベースの管理方法に関する。
本出願人は、トランザクションログを用いてデータベースを管理する技術に着目し、特開2006−293910号公報(特許文献1)において、1対1のマスタ・スレーブ方式のデータ同期方法について提案している。また、本出願人は、その後、国際公開第2010/106991号(特許文献2)において、1対N個(Nは正整数)のマスタ・スレーブ方式のデータ同期方法の提案を行っている。
ここで、トランザクションログとは、データベースに加えられた変更の履歴を示すデータである。当該トランザクションログをデータベースの記録領域とは異なる領域に記録することにより、変更の永続性を維持しながら同時に操作の高速性を実現することが可能となる。
特許文献1は、トランザクションログを利用してレプリケーションシステムを実現する点に着目している。一方、特許文献2は、クライアントより検索指示を受領したスレーブノードがマスタノードにリクエストメッセージを送信し、所定時間以内にマスタノードから返信メッセージを受領しなかったときに、マスタノードに対してマスタデータベースの更新にかかる最新バージョンまでのトランザクションログを要求し、該要求を受領したマスタノードは、スレーブノードへ該トランザクションログを送信し、このログを参照してスレーブノードは自身のレプリカデータベースを更新するものであった。
特開2006−293910号公報 国際公開第2010/106991号
ところで、前記特許文献2では、そのノード構成が単一のマスタノードに対して複数のミラーノードを備えたネットワーク構成であることが前提だった。
そのため、複数のミラーノードそれぞれは、独自にデータ更新命令(INSERT、UPDATE、DELETE)を実行することはなく、マスタノードからのトランザクションログを参照して自身のデータベースをアップデートすればよかった。
一方、データベースの多様化・複雑化にともなって、マスタノードを複数有する所謂マルチマスタ方式が注目されるようになってきている。この点について、マスタノード同士に対称性があるネットワーク構成(マスタノード同士が並列関係にあるとき)では、マスタノード間の更新情報に順位付けを行い、マスタノード間の同期をとるための理論等が提案されているが全ノードの同期をとるための手続きが複雑となり、競合時の解決策が現実的でなかった。
本発明者はこのような点に鑑みて本発明をなし得たものであり、複数のマスタノードが階層的に構築されるとともに、その階層構造を利用して、複数のマスタノードそれぞれにおける、データベースと当該データベースの検索のためのインデックスとを確実かつ効率的に更新することができるデータベースの管理方法を実現することを技術的課題とする。
本発明の第1形態は、レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースの管理方法であって、前記上記と下位のマスタノードは、それぞれ、データベースと、前記データベースの検索のためのインデックスとを含み、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成し、上位マスタノードに対して生成した当該書込セットを送信するステップと、前記上位マスタノードのデータベース処理部が、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、前記上位マスタノードのデータベース処理部が、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新するとともに、前記上位マスタノードのトランザクションログ処理部がこの更新記録をトランザクションログとして生成するステップと、前記上位マスタノードが、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信するステップと、前記下位マスタノードのトランザクションログ処理部は、受信した前記トランザクションログに基づいて自身のデータベースと当該データベースのインデックスを更新するステップと、を含むデータベースの管理方法である。
また、本発明の第2形態は、前記下位マスタノードにおける書込セットのシャドウコピーは、新規の追加行のみで構成される、第1形態のデータベースの管理方法である。
また、本発明の第3形態は、前記上位マスタノードのトランザクションログ処理部は、前記データベースに係る更新記録のみを示すトランザクションログを生成し、前記下位マスタノードのトランザクションログ処理部は、受信した前記トランザクションログにより示される前記データベースの更新記録から前記インデックスの更新内容を特定し、特定した当該更新内容に基づいて自身のインデックスを更新する、第1形態又は第2形態のデータベースの管理方法である。
また、本発明の第4形態は、前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのデータベースに検索処理が実行されたとき、前記下位マスタノードのデータベース処理部は、前記データベースのインデックスを参照し、前記検索処理の対象となる前記データベースの該当行を抽出するステップと、前記書込セットに含まれるヒープタプルマップを1行ずつ参照して、抽出した前記該当行の行番号がエントリされているか否かを判定し、エントリされていないときには抽出した前記該当行を検索結果に含め、エントリされているときには抽出した前記該当行を当該検索結果から除外するステップと、前記書込セットに含まれるシャドウインデックスを参照し、前記検索処理の対象となるシャドウコピーのエントリを抽出し、抽出した当該エントリを前記検索結果に含めるステップと、を実行する第1形態から第3形態のいずれかの形態に係るデータベースの管理方法である。
また、本発明の第5形態は、前記下位マスタノードにおいて書込セットが生成されたときに、これらを登録する下位マスタノード内のバックエンドメモリの領域は、少なくとも上位マスタノードから配信されたトランザクションログによる更新命令を実行する、前記下位マスタノードのトランザクションログ処理部が参照できるようにし、前記下位マスタノードのトランザクションログ処理部は、前記バックエンドメモリを参照して、この更新命令によって更新しようとしている該当行が前記書込セットのヒープタプルマップに含まれている場合には、当該ヒープタプルマップを生成しているトランザクションをアボートさせる、第1形態から第4形態のいずれかの形態に係るデータベースの管理方法である。
また、本発明の第6形態は、レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースにおける当該上位マスタノードのデータベース管理方法であって、前記上記と下位のマスタノードは、それぞれ、データベースと、前記データベースの検索のためのインデックスとを含み、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成した当該書込セットを受信するステップと、前記上位マスタノードのデータベース処理部が、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、前記上位マスタノードのデータベース処理部が、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新するステップと、を含む上位マスタノードにおけるデータベースの管理方法である。
また、本発明の第7形態は、前記上位マスタノードは、新規の追加行のみで構成されたシャドウコピーを含む前記書込セットを受信する、第6形態の上位マスタノードにおけるデータベースの管理方法である。
また、本発明の第8形態は、レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースにおける当該下位マスタノードのデータベースの管理方法であって、前記上記と下位のマスタノードは、それぞれ、データベースと、前記データベースの検索のためのインデックスとを含み、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成し、前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証させ、前記更新がなされているときには当該書込セットをアボートさせ、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新させ、この更新記録をトランザクションログとして生成させ、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信させるために当該書込セットを前記上位マスタノードに送信するステップと、前記下位マスタノードのトランザクションログ処理部が、前記トランザクションログを受信したときに、当該トランザクションログに基づいて自身のデータベースと当該データベースのインデックスを更新するステップと、を含む下位マスタノードのデータベースの管理方法である。
また、本発明の第9形態は、前記下位マスタノードにおける書込セットのシャドウコピーは、新規の追加行のみで構成される、第8形態の下位マスタノードのデータベースの管理方法である。
また、本発明の第10形態は、前記上位マスタノードにおいて、前記データベースに係る更新記録のみを示すトランザクションログが生成され、前記下位マスタノードのトランザクションログ処理部は、受信した前記トランザクションログにより示される前記データベースの更新記録から前記インデックスの更新内容を特定し、特定した当該更新内容に基づいて自身のインデックスを更新する、第8形態又は第9形態の下位マスタノードのデータベースの管理方法である。
また、本発明の第11形態は、前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのマスタデータベースに検索処理が実行されたとき、前記下位マスタノードのデータベース処理部は、前記データベースのインデックスを参照し、前記検索処理の対象となる前記データベースの該当行を抽出するステップと、前記書込セットに含まれるヒープタプルマップを1行ずつ参照して、抽出した前記該当行の行番号がエントリされているか否かを判定し、エントリされていないときには抽出した前記該当行を検索結果に含め、エントリされているときには抽出した前記該当行を当該検索結果から除外するステップと、前記書込セットに含まれるシャドウインデックスを参照し、前記検索処理の対象となるシャドウコピーのエントリを抽出し、抽出した当該エントリを前記検索結果に含めるステップと、を実行する第8形態から第10形態のいずれかの形態に係る下位マスタノードのデータベースの管理方法である。
また、本発明の第12形態は、前記下位マスタノードにおいて書込セットが生成されたときに、これらを登録する下位マスタノード内のバックエンドメモリの領域は、少なくとも上位マスタノードから配信されたトランザクションログによる更新命令を実行する、前記下位マスタノードのトランザクションログ処理部が参照できるようにし、前記下位マスタノードのトランザクションログ処理部は、前記バックエンドメモリを参照して、この更新命令によって更新しようとしている該当行が前記書込セットのヒープタプルマップに含まれている場合には、当該ヒープタプルマップを生成しているトランザクションをアボートさせる、第8形態から第11形態のいずれかの形態に係る下位マスタノードのデータベースの管理方法である。
なお、上記各形態に係るデータベースの管理方法の別の形態として、以上の各構成を実現するデータベースシステムであってもよいし、プログラムであってもよいし、このようなプログラムを記録したコンピュータその他装置、機械等が読み取り可能な記憶媒体であってもよい。ここで、コンピュータ等が読み取り可能な記録媒体とは、プログラム等の情報を、電気的、磁気的、光学的、機械的、又は、化学的作用によって蓄積する媒体である。なお、データベースシステムは、1又は複数のコンピュータによって実現されてもよい。
例えば、本発明の第13形態は、レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースシステムであって、前記上記と下位のマスタノードは、それぞれ、データベースと、前記データベースの検索のためのインデックスとを含み、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該更新命令が生じた下位マスタノードにおいて、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成し、上位マスタノードに対して生成した当該書込セットを送信する手段と、前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証する手段と、前記上位マスタノードにおいて、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新するとともに、この更新記録をトランザクションログとして生成する手段と、前記上位マスタノードにおいて、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信する手段と、前記下位マスタノードにおいて、受信した前記トランザクションログに基づいて自身のデータベースと当該データベースのインデックスを更新する手段と、を備える。
また、例えば、本発明の第14形態は、データベースと当該データベースの検索のためのインデックスをそれぞれ含む、レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースにおける当該上位マスタノードに、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成した当該書込セットを受信するステップと、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新するステップと、を実行させるためのプログラムである。
また、例えば、本発明の第15形態は、データベースと当該データベースの検索のためのインデックスをそれぞれ含む、レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースにおける当該下位マスタノードに、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成し、前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証させ、前記更新がなされているときには当該書込セットをアボートさせ、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新させ、この更新記録をトランザクションログとして生成させ、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信させるために当該書込セットを前記上位マスタノードに送信するステップと、前記トランザクションログを受信したときに、当該トランザクションログに基づいて自身のデータベースと当該データベースのインデックスを更新するステップと、を実行させるためのプログラムである。
本発明によれば、マスタノードが階層的に構築されるマルチマスタ環境において、下位マスタノードは、自身のメモリ上に展開されたシャドウコピーとヒープタプルマップとシャドウインデックスとを書込セットとして上位マスタノードに送信する。これを受信した上位マスタノードは、当該行が既に別の書込セットによって更新されているか否かを検証して、更新されていない時には前記シャドウコピーとヒープタプルマップとシャドウインデックスとを用いてデータベース及びインデックスの更新処理を行う。そして、本発明によれば、その更新記録をトランザクションログとして下位マスタノードに送信することで、下位マスタノードから上位マスタノード、更に、上位マスタノードから配下の下位マスタノードに対して効率的に矛盾のないデータベース更新が可能となる。
図1は、実施の形態に係る階層的マスタノードのデータベース構造を例示する。 図2は、実施の形態に係るマスタノードの機能ブロックを例示する。 図3は、実施の形態に係るマスタノードを例示する。 図4は、実施の形態に係る下位マスタノードのデータベースのページと生成される書込みセット(ヒープタプルマップ(HTM)とシャドウコピー(SC)とシャドウインデックス(SI))の関係を例示する。 図5は、実施の形態の上位マスタノードにおける、下位マスタノードから送信された書込セットに含まれるヒープタプルマップ(HTM)と自身のマスタデータベースとの比較処理を例示する。 図6は、実施の形態の上位マスタノードにおける、下位マスタノードから送信された書込セットに含まれるヒープタプルマップ(HTM)と自身のマスタデータベースとの比較処理を例示する。 図7は、実施の形態において、下位マスタノードから送信された書込セットに含まれるシャドウコピー(SC)を用いて上位マスタノードのデータベースを更新する処理を例示する。 図8は、実施の形態において、下位マスタノードから送信された書込セットに含まれるシャドウインデックス(SI)を用いて上位マスタノードのインデックスを更新する処理を例示する。 図9は、実施の形態において、上位マスタノードで生成されるトランザクションログを例示する。 図10は、下位マスタノードで書込みセットが生成されている段階で当該下位マスタノードのデータベースに検索処理が実行される場面を例示する。
以下、本発明の一側面に係る実施の形態(以下、「本実施形態」とも表記する)を、図面に基づいて説明する。ただし、以下で説明する本実施形態は、あらゆる点において本発明の例示に過ぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。つまり、本発明の実施にあたって、それぞれの実施形態に応じた具体的構成が適宜採用されてもよい。
なお、本実施形態において登場するデータを自然言語により説明しているが、より具体的には、コンピュータが認識可能な疑似言語、コマンド、パラメタ、マシン語等で指定される。
図1は、本実施形態に係る階層的マスタノードの構造を例示する。同図に示されるように、上位マスタノード(MS101)の下に階層的に下位マスタノード(MS201、MS202、・・・、MS20nや、MS301、MS302、・・・、MS30m)を有するノード構成となっている。各マスタノード(情報処理装置)は、データベースと、当該データベースの検索のためのインデックスを有している。また、上位マスタノード(MS101)は、スレーブ(SL)を有しているが、他のマスタノードも、当該スレーブを有していてもよい。このような、マスタ・スレーブ構成における両者間のデータベースの更新には、本出願人によるPCT/JP2010/054311(本出願人による特許文献2に係る先行出願)に記載された更新管理技術が適用されてもよい。なお、nは、1以上の自然数である。また、mは、0以上の自然数である。マスタノード(MS201、MS202、・・・、MS20n)それぞれの配下となるマスタノードの数は異なっていてもよい。また、マスタノード(MS201、MS202、・・・、MS20n)は、それぞれ、上位マスタノード(MS101)と下位マスタノード(MS301、MS302、・・・、MS30m等)との間に存在するため、中位マスタノードと呼ばれてもよい。
上記特許文献2がマスタノードのトランザクションログを下位のノードに複製(レプリケーション)すればよかったのに対して、本実施形態では、階層的なマルチマスタノードで構成されている下位マスタノードでもアップデート命令が実行されていた場合、上位マスタノードからのトランザクションログの参照だけでは全下位マスタノードの整合性を保つことができない点に着目した点が特徴である。以下に説明する。
図2は、上位マスタノード(MS101)の機能ブロックを例示する。ただし、下位マスタノード(MS201,MS202・・・MS20nや、MS301,MS302・・・MS30m)も上位マスタノード(MS101)と同様の構成を有する。
図2に示されるように、クライアント(CL)からデータベースの更新命令が入力されると、データベース処理部(11b)は、メインメモリ(MM)上に構築されたバックエンドメモリ(BEM)上で書込セットを生成する。この書込セットは、後述する図4に示されるように、当該更新命令によるデータベースの更新内容を示すシャドウコピー(SC)と、当該更新命令の対象となる行を示すヒープタプルマップ(HTM)と、インデックスにおいてデータベースの更新により追加されることになる内容を示すシャドウインデックス(SI)とを含む。
データベース処理部11bは、マスタデータベース(11a)及びインデックス(11e)を参照しながら、当該マスタデータベース(11a)及びインデックス(11e)に直接書き込まず、バックエンドメモリ(BEM)で生成された書込セットを通信モジュール(11d)より上位マスタノードに送信する。
このような処理は、上位マスタノード(MS101)においても、下位マスタノード(MS201,MS202・・・MS20nや、MS301,MS302・・・MS30m)においても同様である。
図3は、前記機能を実現するためのハードウェア構成を例示する。上位マスタノード(MS101)は、例えば、汎用の情報処理装置であり、中央処理装置(CPU)およびメインメモリ(MM)を中心にバス(BUS)で接続された大規模記憶装置(HD)、マスタデータベース(11a)、外部との通信の為の通信インタフェース(I/O)を有している。なお、当該バス(BUS)又は通信インタフェース(I/O)を介してクライアント端末(CL)が接続されており、命令を受け付けるようになっている。なお、マスタデータベース(11a)は、大規模記憶装置(HD)上に構築されてもよいし、メインメモリ(MM)上に構築されてもよい。つまり、マスタデータベース(11a)の構築場所は限定されるものではない。また、インデックス(11e)は、メインメモリ(MM)上で保持されてもよいし、大規模記憶装置(HD)上に記憶されてもよい。
大規模記憶装置(HD)には、オペレーティングシステム(OS)とともに、アプリケーションプログラム(APL)が格納されており、当該プログラムをバス(BUS)および主記憶装置(MM)を介して中央処理装置(CPU)が読み込んで順次実行処理することによって、前述のマスタノードとしての機能が実現される。なお、下位マスタノード(MS201,MS202・・・MS20nや、MS301,MS302・・・MS30m)も同様の構成である。
次に、図4を用いて、データベース処理部(11b)による処理を詳細に説明する。図4は、下位マスタノード(MS201)におけるマスタデータベース(11a)及びインデックス(11e)と、書込セットとの関係を例示する。図4は、行番号2のタプルを削除(DELETE)し、行番号4のタプルをAフィールドの値を維持したままで新たな命令内容に書き換え(sc1にUPDATE)、行番号7のタプルをAフィールドの値を変えた上で新たな命令内容に書き換え(sc2にUPDATE)、新たなタプルを追加(sc3をINSERT)する場面を例示する。
マスタデータベース(11a)は、行番号と、値が付与されるAフィールドを有する命令内容と、ポインタとを含み、新たな命令がクライアント端末(CL)からなされる毎にタプルが追加されていく追記型データベースである。図4では、マスタデータベース(11a)は、テーブル形式で表現されており、テーブルの1つの行データが、1つのタプルに相当する。
インデックス(11e)は、マスタデータベース(11a)に含まれるタプルへのアクセスの効率を高めるために用いられるデータである。図4では、インデックス(11e)の各エントリは、対象タプルのAフィールドの値と行番号とを含み、Aフィールドの値で昇順に整列している。なお、図4では、インデックス(11e)は、リスト構造で表現されている。しかしながら、インデックス(11e)のデータ構造は、例えば、B木(または、B+木、B*木)、ハッシュ等であってもよく、各実施形態において適宜選択されてもよい。
なお、本実施形態に係るインデックス(11e)は、Aフィールドの値についてのインデックスを例示している。ただし、Aフィールドはタプルの命令内容を例示するに過ぎず、インデックス(11e)は、マスタデータベース(11a)に含まれるタプルについてのいずれの内容に係るインデックスであってよい。本実施形態は、インデックス(11e)が対象とするタプルの命令内容によって限定されるものではない。
下位マスタノード(MS201)においてクライアント端末(CL)からの命令によりマスタデータベースに対してこのような更新命令がなされると、前述のように、バックエンドメモリ(BEM)上でヒープタプルマップ(HTM、ヒープファイル)と、シャドウコピー(SC)と、シャドウインデックス(SI)を含む書込セットが生成される。
ヒープタプルマップ(HTM)には、元の行番号(ctid)と、新しい行番号(sctid)とが関係付けられて登録されるようになっている。このように、ヒープタプルマップ(HTM)は、データベースの更新ごとに追加生成されていく。なお、行番号4及び7の命令内容が書き込まれるタプルの行番号はこの段階ではまだ不明であるため、sctidにはそれぞれ仮の行番号(sc1及びsc2)が書き込まれる。
また、シャドウコピー(SC)には、マスタデータベース(11a)の更新内容が登録されるようになっている。具体的には、シャドウコピー(SC)には、書き換えられるタプルの内容が登録される。なお、マスタデータベース(11a)に新たに追加されるタプル行番号はこの段階では不明であるため、追加されるタプルの内容を示すエントリには、それぞれ、仮の行番号(sc1、sc2、及び、sc3)が書き込まれる。
なお、この段階で、下位マスタノード(MS201)のデータベース処理部(11b)は、生成されたヒープタプルマップ(HTM)により、DELETE命令が適用される行番号2のタプルと、UPDATE命令が適用される更新元のタプルである行番号4及び7のタプルと、が削除されることを認識可能である。そのため、シャドウコピー(SC)には、行番号2、4、及び、7に係るタプルについてのエントリは書き込まれなくてもよい。すなわち、シャドウコピー(SC)は、新規に追加される行(sc1、sc2、及び、sc3)に係るエントリのみで構成されてもよい。
更に、シャドウインデックス(SI)には、インデックス(11e)の更新内容が登録されるようになっている。具体的には、シャドウインデックス(SI)には、追加されるエントリの内容が登録される。なお、マスタデータベース(11a)に新たに追加されるタプル行番号はこの段階では不明であるため、各エントリには、それぞれ、仮の行番号(sc1、sc2、及び、sc3)が書き込まれる。
このようにして生成された書込セットは、当該下位マスタノード(MS201)から上位マスタノード(MS101)に送信される。なお、書込セットは、階層構造に沿って上位マスタノード(MS101)に送信されてもよいし、階層構造に沿わずに上位マスタノード(MS101)に送信されてもよい。例えば、書込セットがMS301で生成された場合に、当該書込セットは、MS201を経由してMS101に送信されてもよいし、MS301から直接MS101に送信されてもよい。
上位マスタノード(MS101)において、データベース処理部11b(中央処理装置(CPU))は、前記下位マスタノード(MS201)から前記書込セットを受信すると、前記更新命令に伴ってトランザクションログ処理部(11c)を起動して、トランザクションログの生成を開始する。また、データベース処理部(11b)は、受信した前記書込セットからヒープタプルマップ(HTM)を読み出して、自身のマスタデータベース(11a)と比較する。
図5及び6は、それぞれ、当該比較処理を例示する。上位マスタノード(MS101)のデータベース処理部(11b)は、ターゲットとなっているタプル(ここでは行番号2、4及び7に係るタプル)の内容がマスタデータベース(11a)上で更新されているか否かを検証する。
図5により例示される場面では、行番号4に係るタプルが別の書込セットで更新済み(削除済み)であり、ターゲットとなっているタプル(行番号4に係るタプル)に削除ポインタが付与されている。このとき、当該書込セットによる処理は中断され、当該書込セットはアボートされる。
一方、図6により例示される場面では、行番号1及び6に係るタプルが別の書込セットで更新済み(削除済み)であるが、ターゲットとなっているタプル(行番号2、4及び7に係るタプル)は未更新である。このとき、データベース処理部(11b)は、書込セットに含まれるシャドウコピー(SC)とシャドウインデックス(SI)とを用いて、自身のマスタデータベース(11a)とインデックス(11e)とを更新する。
図7及び8は、当該更新処理を例示する。図7は、書込セットに含まれるシャドウコピー(SC)を用いてマスタデータベース(11a)を更新する処理を例示する。また、図8は、書込セットに含まれるシャドウインデックス(SI)を用いてインデックス(11e)を更新する処理を例示する。
図4等で例示される書込セットを受信した場合、図7に例示されるように、上位マスタノード(MS101)のデータベース処理部(11b)は、自身のマスタデータベース(11a)において、DELETE命令の対象である行番号2のタプルに対しては、削除ポインタを付与する。また、データベース処理部(11b)は、UPDATE命令の対象である行番号4及び7のタプルに対しては、更新元のタプル(行番号4及び7のタプル)に削除ポインタを付与し、行番号10及び11のタプルに更新後のタプルとしてそれぞれ新しいタプル(sc1及びsc2に係るタプル)の命令内容を書き込む。更に、データベース処理部(11b)は、INSERT命令に係るタプル(sc3に係るタプル)の命令内容を行番号12のタプルに書き込む。
なお、シャドウコピー(SC)は、新規に追加される行(sc1、sc2、及び、sc3)に係るエントリのみで構成される場合がある。この場合、データベース処理部(11b)は、ヒープタプルマップ(HTM)から、削除ポインタを付与するタプルを特定する。
また、図8に例示されるように、データベース処理部(11b)は、受信した書込セットに含まれるシャドウインデックス(SI)を用いて、インデックス(11e)を更新する。具体的には、データベース処理部(11b)は、シャドウインデックス(SI)の各エントリのAフィールドの値を参照し、インデックス(11e)の適切な箇所に当該各エントリを追加する。図8の場合、インデックス(11e)の各エントリは、Aフィールドの値に整列している。そのため、データベース処理部(11b)は、sc1及びsc3に係るエントリをインデックス(11e)のAフィールドの値が12の箇所に追加する。また、データベース処理部(11b)は、sc2に係るエントリをインデックス(11e)のAフィールドの値が20の箇所に追加する。その際、エントリが示す行番号は、仮の行番号(sc1、sc2及びsc3)ではなく、実際の行番号(10、11、及び、12)に書き換えられる。
図9は、上位マスタノード(MS101)のマスタデータベース(11a)が上記により更新されたときにトランザクションログ処理部(11c)で生成されるトランザクションログの一例である。このトランザクションログは、少なくとも命令とトランザクション内容(行番号とそれに対する実行処理内容)が時系列で連続的に記録されたファイルである。
図9に示されるように、トランザクションログ処理部(11c)では、トランザクションの開始命令(XB1)に続いて、命令番号と行番号とが対になったログが順次生成される。例えば、最初にDELETE命令として行番号2を削除したログ(D2)が生成される。次に、UPDATE命令として行番号4に係るタプルを削除し行番号10に係るタプルを追加したログ(U4・10)が生成され、当該タプルの追加に伴ってAフィールドの値12で行番号10のエントリをインデックス(11e)に追加したログ(II・12・10)が生成される。また、UPDATE命令として行番号7に係るタプルを削除し行番号11に係るタプルを追加したログ(U7・11)が生成され、当該タプルの追加に伴ってAフィールドの値20で行番号11のエントリをインデックス(11e)に追加したログ(II・20・11)が生成される。続いて、INSERT命令として行番号12に係るタプルを追加したログ(I12)が生成され、当該タプルの追加に伴ってAフィールドの値12で行番号12のエントリをインデックス(11e)に追加したログ(II・12・12)が生成される。最後に、これらのコミット命令(XC1)が発行される。
このトランザクションログは、通信モジュール(11d)より前記送信元の下位マスタノード(MS201)をはじめ、すべての下位マスタノード(MS202・・・MS20nや、MS301,MS302・・・MS30m)に対して配信される。そして、前記トランザクションログを受信した下位マスタノードでは、当該トランザクションログを自身のデータベースに複製(レプリケーション)する。
具体的には、下位マスタノード(たとえばM202)が図9で例示されるトランザクションログを通信モジュール(11d)で受信すると、トランザクションログ処理部(11c)を起動してこのトランザクションログを自身のマスタデータベース(11a)にレプリケーションする。この結果、当該下位マスタノードのマスタデータベース(11a)では、行番号2、4、及び、7に係るタプルに削除ポインタが付与され、新たな行番号10〜12に係るタプルが追加される。また、当該下位マスタノードのインデックス(11e)では、マスタデータベース(11a)で追加された新たな行番号10〜12のタプルに係るエントリが追加される。
このように、下位マスタノードでは、上位マスタノードから送信されるトランザクションログのレプリケーションによって統一的にデータベースが管理されることになる。
なお、当該下位マスタノードのトランザクションログ処理部(11c)は、マスタデータベース(11a)にタプルを追加することを示すログ(上記例では、U4・10、U7・11、II・12・12)から、インデックス(11e)に追加するエントリの内容を特定することができる。そのため、上位マスタノード(MS101)のトランザクションログ処理部(11c)は、インデックス(11e)の更新に係るログを除外して、トランザクションログを作成してもよい。すなわち、上位マスタノード(MS101)のトランザクションログ処理部(11c)は、マスタデータベース(11a)に係る更新記録のみを示すトランザクションログを生成してもよい。このとき、下位マスタノードのトランザクションログ処理部(11c)は、受信したトランザクションログ処理部により示されるデータベースの更新記録からインデックスの更新内容を特定し、特定した当該更新内容に基づいて自身のインデックス(11e)を更新してもよい。
以上、本発明を実施形態に基づいて説明したが、本発明はこれに限定されるものではない。以下、その変形例について説明する。
<上位マスタノードMS101でデータベースの更新が行われる場合>
下位マスタノード(たとえばMS201)でマスタデータベースの更新命令が発生した場合の処理については、図2で説明したように、バックエンドメモリ(BEM)上でヒープタプルマップ(HTM、ヒープファイル)とシャドウコピー(SC)とシャドウインデックス(SI)とを含む書込セットが生成されるが、上位マスタノード(MS101)でマスタデータベースの更新命令が発生した場合には、上位ノードに通知する必要がないため、書込セットは生成されない。すなわち、このような場合、上位マスタノード(MS101)では、図7及び8それぞれの左図に示されるようにマスタデータベース(11a)及びインデックス(11e)に対して直接更新データの書込が行われるとともに、図9に示されるトランザクションログが生成される。このトランザクションログは下位マスタノードに配信され、前記トランザクションログを受信した下位マスタノードでは、当該トランザクションログを自身のマスタデータベースにレプリケーションする。
<下位マスタノードで書込セットを生成している段階で検索処理が実行されたとき>
下位マスタノード(たとえばMS201)において、図4に示すような書込セットを生成している段階で、当該下位マスタノードのマスタデータベースに対して検索が実行されたとき、書込セットの生成された行番号以外の行番号を対象とした検索であれば問題はないが、該当行(ここでは行番号2、4、及び、7)に対する検索が実行された場合、これらの行番号は既に削除されているため、検索対象にはできない。このような場合に対応するため、当該下位マスタノードにおいて検索処理が実行される場合、以下のように処理される。
図10は、下位マスタノードで書込みセットが生成されている段階で当該下位マスタノードのデータベースに検索処理が実行される場面を例示する。例えば、図10に示されるように、当該検索処理では、Aフィールドの値が「12」であるタプルが検索されているとする。
この場合、まず、データベース処理部(11b)は、マスタデータベース(11a)のインデックス(11e)を参照し、当該検索処理の対象となるマスタデータベース(11a)の該当行(タプル)を抽出する。図10に示される例では、インデックス(11e)において5つのエントリがヒットし、マスタデータベース(11a)において、行番号2、3、4、7、及び、9に係るタプルが抽出される。
そして、データベース処理部(11b)は、書込セットに含まれるヒープタプルマップ(HTM)を1行ずつ参照し、マスタデータベース(11a)において抽出した該当行の行番号がエントリされているか否かをチェックする。そして、データベース処理部(11b)は、エントリされていないときには抽出した該当行を検索結果に含め、エントリされているときには抽出した該当行を検索結果から除外する。図10に示される例では、行番号2、4、及び、7に係るエントリがヒープタプルマップ(HTM)に存在するため、当該行番号2、4、及び、7に係るタプルが検索結果から除外される。他方、行番号3及び9に係るエントリはヒープタプルマップ(HTM)には存在しないため、当該行番号3及び9に係るタプルが検索結果に含められる。
また、マスタデータベース(11a)には登録されていないが、マスタデータベース(11a)の更新命令が受け付けられ、検索対象(本例ではAフィールドの値が「12」)となるエントリがシャドウコピーに登録されている場合がある。この場合に対処するため、データベース処理部(11b)は、書込セットに含まれるシャドウインデックス(SI)を参照し、上記検索処理の対象となるシャドウコピー(SC)のエントリを抽出する。そして、データベース処理部(11b)は、抽出したエントリを検索結果に含める。図10に示される例では、シャドウコピー(SC)における行番号sc1及びsc3に係るエントリが検索結果として抽出される。つまり、本例では、マスタデータベース(11a)から行番号3及び9のタプルが、シャドウコピー(SC)から行番号sc1及びsc3に係るエントリが検索結果として抽出される。
<下位マスタノードで上位マスタノードからのトランザクションログによる更新が行われているときの競合が生じた場合>
上位マスタノードから配信されたトランザクションログによって下位マスタノードのデータベースにレプリケーションが行われているときに、該当行に対して下位マスタノードのデータベースの更新命令が実行されている場合、競合が発生することになる。
具体的には、下位マスタノードへの更新命令に基づいて行番号2と4と7とを更新しているときに、上位マスタノートから行番号4がエントリされたトランザクションログが配信されてきたときがこれに該当する。
このような場合には、下位マスタノードで作成された書込セットが上位マスタノードに送信されたとしても、上位マスタノードでは既に該当行に関するトランザクションログが配信されているため、前記書込セットは上位マスタノードで競合が検出されてアボートされることになる。したがって、当該下位マスタノードにおける競合は無視して差し支えない。
一方、このような下位マスタノードでの競合を解決する別の方法としては、下位マスタノードにおいて書込セット(ヒープタプルマップ(HTM)とシャドウコピー(SC)とシャドウインデックス(SI))を生成したときに、これらを当該下位マスタノード内のバックエンドメモリ(BEM)上に登録し、これらの領域を2以上のプロセス(具体的にはレプリケーションプロセスと書込セットの生成プロセス)から参照できるようにしておいてもよい。つまり、下位マスタノードにおいて、書込セット、さらに限定すればヒープタプルマップのみを共有メモリに配置しておくことが望ましい。
この場合には、下位マスタノードがマスタデータベース(11a)のレプリケーションを実行する際に、バックエンドメモリ(BEM)上の書込セットを参照することによって、更新命令と矛盾する書込セットを下位マスタノードの段階でアボートさせることができる。具体的には、トランザクションログ処理部(11c)は、前記バックエンドメモリ(BEM)を参照して、この更新命令によって更新しようとしている該当行がヒープタプルマップ(HTM)に含まれている場合には、当該ヒープタプルマップ(HTM)を生成しているトランザクションをアボートさせる。
このように、ヒープタプルマップ(HTM)を共有メモリに配置して、複数プロセスから参照できるようにしたことにより、マルチマスタ方式のデータベースにおいても下位マスタノードの段階で、競合を防止できる。さらに、ヒープタプルマップ(HTM)のみを共有メモリに配置しておけばよいので、貴重な共有メモリを占有してしまうこともない。
MS101…上位マスタノード
SL…スレーブ
MS201、MS202、・・・、MS20n…下位マスタノード
MS301、MS302、・・・、MS30m…下位マスタノード
CL…クライアント端末
11a…マスタデータベース
11b…データベース処理部
11c…トランザクションログ処理部
11d…通信モジュール
11e…インデックス
CPU…中央処理装置
MM…主記憶装置
BUS…バス
HD…大規模記憶装置
I/O…通信インタフェース
HTM…ヒープタプルマップ
SC…シャドウコピー
SI…シャドウインデックス

Claims (15)

  1. レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースの管理方法であって、
    前記上位と下位のマスタノードは、それぞれ、データベースと、前記データベースの検索のためのインデックスとを含み、
    いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成し、上位マスタノードに対して生成した当該書込セットを送信するステップと、
    前記上位マスタノードのデータベース処理部が、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、
    前記上位マスタノードのデータベース処理部が、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新するとともに、前記上位マスタノードのトランザクションログ処理部がこの更新記録をトランザクションログとして生成するステップと、
    前記上位マスタノードが、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信するステップと、
    前記下位マスタノードのトランザクションログ処理部は、受信した前記トランザクションログに基づいて自身のデータベースと当該データベースのインデックスを更新するステップと、
    を含むデータベースの管理方法。
  2. 前記下位マスタノードにおける書込セットのシャドウコピーは、新規の追加行のみで構成される、
    請求項1記載のデータベースの管理方法。
  3. 前記上位マスタノードのトランザクションログ処理部は、前記データベースに係る更新記録のみを示すトランザクションログを生成し、
    前記下位マスタノードのトランザクションログ処理部は、受信した前記トランザクションログにより示される前記データベースの更新記録から前記インデックスの更新内容を特定し、特定した当該更新内容に基づいて自身のインデックスを更新する、
    請求項1又は2に記載のデータベースの管理方法。
  4. 前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのデータベースに検索処理が実行されたとき、
    前記下位マスタノードのデータベース処理部は、前記データベースのインデックスを参照し、前記検索処理の対象となる前記データベースの該当行を抽出するステップと、
    前記書込セットに含まれるヒープタプルマップを1行ずつ参照して、抽出した前記該当行の行番号がエントリされているか否かを判定し、エントリされていないときには抽出した前記該当行を検索結果に含め、エントリされているときには抽出した前記該当行を当該検索結果から除外するステップと、
    前記書込セットに含まれるシャドウインデックスを参照し、前記検索処理の対象となるシャドウコピーのエントリを抽出し、抽出した当該エントリを前記検索結果に含めるステップと、
    を実行する請求項1から3のいずれか1項に記載のデータベースの管理方法。
  5. 前記下位マスタノードにおいて書込セットが生成されたときに、これらを登録する下位マスタノード内のバックエンドメモリの領域は、少なくとも上位マスタノードから配信されたトランザクションログによる更新命令を実行する、前記下位マスタノードのトランザクションログ処理部が参照できるようにし、
    前記下位マスタノードのトランザクションログ処理部は、前記バックエンドメモリを参照して、この更新命令によって更新しようとしている該当行が前記書込セットのヒープタプルマップに含まれている場合には、当該ヒープタプルマップを生成しているトランザクションをアボートさせる、
    請求項1から4のいずれか1項に記載のデータベースの管理方法。
  6. レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースにおける当該上位マスタノードのデータベース管理方法であって、
    前記上位と下位のマスタノードは、それぞれ、データベースと、前記データベースの検索のためのインデックスとを含み、
    いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成した当該書込セットを受信するステップと、
    前記上位マスタノードのデータベース処理部が、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、
    前記上位マスタノードのデータベース処理部が、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新するステップと、
    を含む上位マスタノードにおけるデータベースの管理方法。
  7. 前記上位マスタノードは、新規の追加行のみで構成されたシャドウコピーを含む前記書込セットを受信する、
    請求項6記載の上位マスタノードにおけるデータベースの管理方法。
  8. レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースにおける当該下位マスタノードのデータベースの管理方法であって、
    前記上位と下位のマスタノードは、それぞれ、データベースと、前記データベースの検索のためのインデックスとを含み、
    いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成し、前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証させ、前記更新がなされているときには当該書込セットをアボートさせ、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新させ、この更新記録をトランザクションログとして生成させ、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信させるために当該書込セットを前記上位マスタノードに送信するステップと、
    前記下位マスタノードのトランザクションログ処理部が、前記トランザクションログを受信したときに、当該トランザクションログに基づいて自身のデータベースと当該データベースのインデックスを更新するステップと、
    を含む下位マスタノードのデータベースの管理方法。
  9. 前記下位マスタノードにおける書込セットのシャドウコピーは、新規の追加行のみで構成される、
    請求項8記載の下位マスタノードのデータベースの管理方法。
  10. 前記上位マスタノードにおいて、前記データベースに係る更新記録のみを示すトランザクションログが生成され、
    前記下位マスタノードのトランザクションログ処理部は、受信した前記トランザクションログにより示される前記データベースの更新記録から前記インデックスの更新内容を特定し、特定した当該更新内容に基づいて自身のインデックスを更新する、
    請求項8又は9に記載の下位マスタノードのデータベースの管理方法。
  11. 前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのマスタデータベースに検索処理が実行されたとき、
    前記下位マスタノードのデータベース処理部は、前記データベースのインデックスを参照し、前記検索処理の対象となる前記データベースの該当行を抽出するステップと、
    前記書込セットに含まれるヒープタプルマップを1行ずつ参照して、抽出した前記該当行の行番号がエントリされているか否かを判定し、エントリされていないときには抽出した前記該当行を検索結果に含め、エントリされているときには抽出した前記該当行を当該検索結果から除外するステップと、
    前記書込セットに含まれるシャドウインデックスを参照し、前記検索処理の対象となるシャドウコピーのエントリを抽出し、抽出した当該エントリを前記検索結果に含めるステップと、
    を実行する請求項8から10のいずれか1項に記載の下位マスタノードのデータベースの管理方法。
  12. 前記下位マスタノードにおいて書込セットが生成されたときに、これらを登録する下位マスタノード内のバックエンドメモリの領域は、少なくとも上位マスタノードから配信されたトランザクションログによる更新命令を実行する、前記下位マスタノードのトランザクションログ処理部が参照できるようにし、
    前記下位マスタノードのトランザクションログ処理部は、前記バックエンドメモリを参照して、この更新命令によって更新しようとしている該当行が前記書込セットのヒープタプルマップに含まれている場合には、当該ヒープタプルマップを生成しているトランザクションをアボートさせる、
    請求項8から11のいずれか1項に記載の下位マスタノードのデータベースの管理方法。
  13. レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースシステムであって、
    前記上位と下位のマスタノードは、それぞれ、データベースと、前記データベースの検索のためのインデックスとを含み、
    いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該更新命令が生じた下位マスタノードにおいて、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成し、上位マスタノードに対して生成した当該書込セットを送信する手段と、
    前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証する手段と、
    前記上位マスタノードにおいて、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新するとともに、この更新記録をトランザクションログとして生成する手段と、
    前記上位マスタノードにおいて、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信する手段と、
    前記下位マスタノードにおいて、受信した前記トランザクションログに基づいて自身のデータベースと当該データベースのインデックスを更新する手段と、
    を備えるデータベースシステム。
  14. データベースと当該データベースの検索のためのインデックスをそれぞれ含む、レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースにおける当該上位マスタノードに、
    いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成した当該書込セットを受信するステップと、
    前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、
    前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新するステップと、
    を実行させるためのプログラム。
  15. データベースと当該データベースの検索のためのインデックスをそれぞれ含む、レコード更新が可能な上位と下位のマスタノードを階層的に有するデータベースにおける当該下位マスタノードに、
    いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、自身のメモリ上に展開された、前記更新命令によるデータベースの更新内容を示すシャドウコピーと、前記更新命令の対象となる行を示すヒープタプルマップと、前記インデックスにおいて前記データベースの更新により追加されることになる内容を示すシャドウインデックスと、を含む書込セットを生成し、前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証させ、前記更新がなされているときには当該書込セットをアボートさせ、更新がなされていないときには前記シャドウコピーと前記シャドウインデックスとを用いて自身のデータベースと当該データベースのインデックスを更新させ、この更新記録をトランザクションログとして生成させ、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信させるために当該書込セットを前記上位マスタノードに送信するステップと、
    前記トランザクションログを受信したときに、当該トランザクションログに基づいて自身のデータベースと当該データベースのインデックスを更新するステップと、
    を実行させるためのプログラム。
JP2014511024A 2012-04-18 2012-04-18 データベースの管理方法、データベースシステム、及び、プログラム Active JP6008947B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2012/060496 WO2013157099A1 (ja) 2012-04-18 2012-04-18 データベースの管理方法、データベースシステム、及び、プログラム

Publications (2)

Publication Number Publication Date
JPWO2013157099A1 JPWO2013157099A1 (ja) 2015-12-21
JP6008947B2 true JP6008947B2 (ja) 2016-10-19

Family

ID=49383084

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014511024A Active JP6008947B2 (ja) 2012-04-18 2012-04-18 データベースの管理方法、データベースシステム、及び、プログラム

Country Status (4)

Country Link
US (1) US20150039558A1 (ja)
EP (1) EP2840501A4 (ja)
JP (1) JP6008947B2 (ja)
WO (1) WO2013157099A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9807169B2 (en) * 2015-05-04 2017-10-31 Sap Se Distributed tagging of data in a hybrid cloud environment
CN105095417A (zh) * 2015-07-13 2015-11-25 小米科技有限责任公司 存储业务数据的方法、装置及数据库节点
US10599672B2 (en) * 2015-11-24 2020-03-24 Cisco Technology, Inc. Cursor-based state-collapse scheme for shared databases
US10452631B2 (en) * 2017-03-15 2019-10-22 International Business Machines Corporation Managing large scale association sets using optimized bit map representations
US10255103B2 (en) * 2017-04-04 2019-04-09 Arm Limited Transaction handling

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH08235040A (ja) * 1995-02-27 1996-09-13 Hitachi Ltd データファイル管理システム
JPH1185597A (ja) * 1997-09-04 1999-03-30 Fuji Electric Co Ltd 階層化された複数オブジェクトのロック制御方法
JP3476349B2 (ja) * 1997-11-12 2003-12-10 三菱電機株式会社 データ処理装置
JP2002149459A (ja) * 2000-11-10 2002-05-24 Mitsubishi Electric Corp 冗長化データベース管理・検索システム
JP4156855B2 (ja) * 2002-03-29 2008-09-24 富士通株式会社 電子帳票管理方法及びプログラム
US7500020B1 (en) * 2003-12-31 2009-03-03 Symantec Operating Corporation Coherency of replicas for a distributed file sharing system
JP2006293910A (ja) 2005-04-14 2006-10-26 Kokolink:Kk 安全で高速なデータベース・レプリケーション技術
US20080140734A1 (en) * 2006-12-07 2008-06-12 Robert Edward Wagner Method for identifying logical data discrepancies between database replicas in a database cluster
JP5079561B2 (ja) * 2008-03-21 2012-11-21 株式会社野村総合研究所 データベースシステム及びデータベースシステムにおけるレプリカデータの更新方法
KR101335101B1 (ko) 2009-03-19 2013-12-03 가부시키가이샤 무라쿠모 데이터의 복제 관리 방법 및 시스템
JP5069337B2 (ja) * 2010-05-26 2012-11-07 日本電信電話株式会社 分散データ管理システム、データサーバ、トランザクションサーバ、分散データ管理方法、プログラム
US9323775B2 (en) * 2010-06-19 2016-04-26 Mapr Technologies, Inc. Map-reduce ready distributed file system
JP5727258B2 (ja) * 2011-02-25 2015-06-03 ウイングアーク1st株式会社 分散型データベースシステム
US9047331B2 (en) * 2011-04-21 2015-06-02 International Business Machines Corporation Scalable row-store with consensus-based replication

Also Published As

Publication number Publication date
WO2013157099A1 (ja) 2013-10-24
EP2840501A4 (en) 2015-12-09
EP2840501A1 (en) 2015-02-25
US20150039558A1 (en) 2015-02-05
JPWO2013157099A1 (ja) 2015-12-21

Similar Documents

Publication Publication Date Title
US9020916B2 (en) Database server apparatus, method for updating database, and recording medium for database update program
JP6008947B2 (ja) データベースの管理方法、データベースシステム、及び、プログラム
JP4951154B1 (ja) データベースの管理方法
JP2012238061A (ja) トランザクション処理装置、トランザクション処理方法およびトランザクション処理プログラム
US11151157B2 (en) Database management method
JP6239697B2 (ja) データベースの管理方法
JP2013037669A (ja) データベースの管理方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160524

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160715

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160913

R150 Certificate of patent or registration of utility model

Ref document number: 6008947

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