説明

データベースの管理方法

【課題】リソースの効率的な活用が可能なマルチマスタノード形式のデータベース管理技術を実現する。
【解決手段】下位マスタノードのセッションにおいて、データベースのシャドウコピーとメモリ上に展開されたヒープタプルマップと、実行中のトランザクションが参照するスナップショットのトランザクション最小値とを書込セットとして上位マスタノードに対して送信するステップと、トランザクション最小値がクラスタ最小値と等しいか大きい場合には、ターゲットとして登録されているタプルのデータベースにおける更新の有無を検証し、更新がなされているときには当該書込セットをアボートし、更新がない場合は前記シャドウコピーを用いて自身のデータベースを更新するステップと、トランザクション最小値がクラスタ最小値より小さい場合はアボートするステップと該最小値を有するトランザクションを廃棄するステップとを有する管理方法。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データベースの管理方法、特に複数のマスタノードがネットワークにより階層的に接続されているデータベースの管理方法に関する。
【背景技術】
【0002】
PostgreSQLのような追記型のデータベースといえども、リソースを有効活用するためには、タプルを削除した後に一定時間経過したら当該タプルを完全消去(vacuum)することが望ましい。
【0003】
しかし、トランザクションは実行開始から終了までを単一のスナップショットで管理するため、あるトランザクションによって特定のタプルが削除されたとしても、そのことによって即座に全てのトランザクションから当該タプルが参照されなくなるとは限らない。そのため、当該タプルを参照する一連のトランザクションが全てコミットされない限りそのタプルは完全消去されないことが原則である。もしそのタプルが削除されたとしても、その時点で実行中の他のスナップショット上では当該タプルが参照できるようにしておかなければならないのである。
【0004】
そのため、PostgreSQLでは、トランザクション毎に付与されているトランザクションIDを利用して、各トランザクションのスナップショットからみてすでにコミットされているトランザクションIDを参照しながらどこまで完全消去すればよいかを判断する仕組みを採用していた。すなわち、各トランザクションのスナップショットで実行中とみなされているトランザクションIDのうち最小の値を計算し、その最小値のIDに合わせて完全消去する運用をしていたわけである。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2006−293910号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
以上述べた運用はシングルノード構成のデータベースでの運用であるが、これをマルチマスタノードに適用した場合にはシングルノードシステムでは予期すらできない以下のような課題が発生することが本発明者によって見出された。
【0007】
すなわち、マルチマスタノードシステムは、階層的に構築された膨大な数のノードで構成され、かつそのノード上で並列に同時実行される膨大なトランザクションを有している。そのため、ノード間の処理能力にばらつきがあった場合、一つのノードの処理遅延が全体の処理能力に影響を与えてしまうことになる。
【0008】
そのため、マルチマスタノード構成のデータベースの場合、いつまでたっても完全消去できる最小値IDの値が大きくならず、そのためにノード全体の完全消去処理の実効性が確保できなかった。
【0009】
このため、強制的に最小値IDをある程度の大きさの値に設定して完全消去処理を行ってしまう方法が考えられる。
ところで、この種のマルチマスタノード形式のデータベースにおいて、本発明者はその更新を効率的に矛盾無く行うために、下位のマスタノードのデータベースのシャドウコピ
ーと自身のメモリ上に展開されたヒープタプルマップとを書き込みセットとして上位マスタノードに送信してノード全体のデータベースの更新処理を統一する技術を提案している(特願2010−239713)。
【0010】
ところで、この下位ノードで書き込みセットを生成して上位ノードに向けて送信している間に、書き込みセットの更新対象になっているタプルに対する完全消去命令が上位ノードから下位ノードに対して送信された場合、その後に前記書き込みセットを受信した上位ノードでは、既に完全消去されたはずのタプルを書き込みセットの内容に基づいて更新してしまう可能性があった。
【0011】
そのため、マルチマスタノード形式のデータベースにおいても、データベース全体の整合性を崩すことなく、トランザクションの廃棄処理を行う必要があった。
【課題を解決するための手段】
【0012】
前記課題を解決するために、本発明では以下の手段を採用した。
【0013】
本発明の第1形態は、レコード更新が可能な上位と下位のマスタノードを階層的に有する追記型データベースの管理方法であって、いずれかの下位マスタノードのセッションにおいて、上位マスタノードに対して、当該下位のマスタノードのデータベースのシャドウコピーと、自身のメモリ上に展開されたヒープタプルマップと、実行中のトランザクションが参照するスナップショットのトランザクション最小値とを書き込みセットとして送信するステップと、前記上位マスタノードにおいて、前記下位マスタノードから受信した書き込みセット中のトランザクション最小値と上位マスタノードが保持するクラスタ最小値とを比較して、トランザクション最小値がクラスタ最小値と等しいか大きい場合には、当該書き込みセット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているタプルのデータベースにおける更新の有無を検証し、更新がなされているときには当該書き込みセットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するとともに、この更新記録をトランザクションログとして生成するステップと、前記でトランザクション最小値がクラスタ最小値よりも小さい場合には、当該書き込みセットをアボートするステップと、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信するステップと、前記下位マスタノードにおいて、前記で受信したトランザクションログに基づいて自身のデータベースを更新するステップと、前記上位マスタノードが保持するクラスタ最小値を下位マスタノードに通知して、該クラスタ最小値よりも小さいトランザクション最小値を有するトランザクションを廃棄させるステップと、からなるマスタノードを階層的に有する追記型データベースの管理方法である。
【0014】
また、本発明の第2形態は、前記下位マスタノードは、実行中のトランザクションを時系列に記録した複数のスナップショット間のトランザクション最小値同士を比較して最も小さい値をノード最小値とし、このノード最小値をツリー最小値として上位マスタノードに通知し、前記上位マスタノードは、自身のノード最小値と、前記1または2以上の下位マスタノードから通知されたツリー最小値とから選択的にクラスタ最小値を決定・保持する前記第1形態記載の追記型データベースの管理方法である。
【0015】
また、本発明の第3形態は、前記上位マスタノードと前記下位マスタノードとの間の階層に中位マスタノードを有しており、前記下位マスタノードは、実行中のトランザクションを時系列に記録した複数のスナップショット間のトランザクション最小値同士を比較して最も小さい値をノード最小値とし、このノード最小値をツリー最小値として中位マスタノードに通知し、前記中位マスタノードは、自身のノード最小値と、前記1または2以上の下位マスタノードから通知されたツリー最小値とを比較して最も小さい値を当該中位マ
スタノードのツリー最小値として上位マスタノードに通知し、上位マスタノードは、自身のノード最小値と、前記1または2以上の中位マスタノードから通知されたツリー最小値とから選択的にクラスタ最小値を決定・保持する第1形態記載の追記型データベースの管理方法である。
【0016】
また、本発明の第4形態は、前記中位マスタノードはさらに2階層以上のツリー構造を有している第3形態記載の追記型データベースの管理方法である。
【0017】
また、本発明の第5形態、前記上位マスタノードが保持するクラスタ最小値の下位マスタノードへの通知は、前記トランザクションログの下位マスタノードへの通知とは非同期で行われる第1形態記載の追記型データベースの管理方法である。
【0018】
この方法によれば、レプリケーション管理プロセスと非同期にクラスタ最小値を下位マスタノードに通知することにより、効率的なトランザクションIDの廃棄処理ができる。
【0019】
また、本発明の第6形態は、前記上位マスタノードが保持するクラスタ最小値の下位マスタノードへの通知は、前記トランザクションログに当該クラスタ最小値を含めて行われる第1形態記載の追記型データベースの管理方法である。
【0020】
この方法によれば、レプリケーション管理プロセスの中にクラスタ最小値を含めることによって、通知順を強制することができるため、矛盾のないトランザクションIDの廃棄が可能になる。
【0021】
また、本発明の第7形態は、前記書込セットは、下位マスタノードの代わりに中位マスタノードで生成され、少なくとも当該中位マスタノードで実行中のトランザクションが参照するスナップショットのトランザクション最小値が書き込まれている第3形態または第4形態記載の追記型データベースの管理方法である。
【0022】
本発明の第8形態は、ノードを階層的に有する上位マスタノードにおける追記型データベースの管理方法であって、いずれかの下位マスタノードのセッションにおいて、当該下位マスタノードのデータベースのシャドウコピーと、下位マスタノードのメモリ上に展開されたヒープタプルマップと、実行中のトランザクションが参照するスナップショットのトランザクション最小値とを書込セットとして上位マスタノードに対して送信させるステップと、前記で受信した書込セット中のトランザクション最小値と上位マスタノードが保持するクラスタ最小値とを比較して、トランザクション最小値がクラスタ最小値と等しいか大きい場合には、当該書き込みセット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているタプルのデータベースにおける更新の有無を検証し、更新がなされているときには当該書き込みセットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するステップと、前記でトランザクション最小値がクラスタ最小値よりも小さい場合には、当該書き込みセットをアボートするステップと、前記上位マスタノードが保持するクラスタ最小値を下位マスタノードに通知して、該最小値よりも小さいトランザクション最小値を有するトランザクションを廃棄させるステップと、からなる下位マスタノードを階層的に有する上位マスタノードにおける追記型データベースの管理方法である。
【0023】
本発明の第9形態は、レコード更新が可能な上位と下位のマスタノードを階層的に有する追記型データベースにおける下位マスタノードのデータベース管理方法であって、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が上位マスタノードに対して、自身のメモリ上に展開されたデータベースのシャドウコピーと、ヒープタプルマップと、実行中のトランザクションが参
照するスナップショットのトランザクション最小値とを書込セットとして生成する際に、それを受信する前記上位マスタノードに対して、前記下位マスタノードから受信した書込セット中のトランザクション最小値と上位マスタノードが保持するクラスタ最小値とを比較して、トランザクション最小値がクラスタ最小値と等しいか大きいときに前記シャドウコピーを用いて上位マスタノードのデータベースを更新させ、この更新記録をトランザクションログとして生成させ、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信させるために、前記書込セットを上位マスタノードに送信するステップと、前記下位マスタノードのトランザクションログ処理部は、前記トランザクションログを受信したときに、当該トランザクションログに基づいて自身のデータベースを更新するステップと、下位マスタノードにおいて、前記上位マスタノードが保持するクラスタ最小値を受信して、該最小値よりも小さいトランザクション最小値を有するトランザクションを廃棄するステップと、からなる下位マスタノードのデータベースの管理方法である。
【0024】
本発明の第10形態は、前記下位マスタノードは、実行中のトランザクションを時系列に記録した複数のスナップショット間のトランザクション最小値同士を比較して最も小さい値をノード最小値とし、このノード最小値をツリー最小値として上位マスタノードに通知し、前記上位マスタノードは、自身のノード最小値と、前記1または2以上の下位マスタノードから通知されたツリー最小値とから選択的にクラスタ最小値を決定・保持する第8形態または第9形態記載の追記型データベースの管理方法である。
【0025】
本発明の第11形態は、前記上位マスタノードと前記下位マスタノードとの間の階層に中位マスタノードを有しており、前記下位マスタノードは、実行中のトランザクションを時系列に記録した複数のスナップショット間のトランザクション最小値同士を比較して最も小さい値をノード最小値とし、このノード最小値をツリー最小値として中位マスタノードに通知し、前記中位マスタノードは、自身のノード最小値と、前記1または2以上の下位マスタノードから通知されたツリー最小値とを比較して最も小さい値を当該中位マスタノードのツリー最小値として上位マスタノードに通知し、上位マスタノードは、自身のノード最小値と、前記1または2以上の中位マスタノードから通知されたツリー最小値とから選択的にクラスタ最小値を決定・保持する第8形態または第9形態記載の追記型データベースの管理方法である。
【0026】
本発明の第12形態は、前記中位マスタノードはさらに2階層以上のツリー構造を有している第11形態記載の追記型データベースの管理方法である。
【0027】
本発明の第13形態は、前記上位マスタノードが保持するクラスタ最小値の下位マスタノードへの通知は、前記トランザクションログの下位マスタノードへの通知とは非同期で行われる第8形態記載の追記型データベースの管理方法である。
【0028】
本発明の第14形態は、前記上位マスタノードが保持するクラスタ最小値の下位マスタノードへの通知は、前記トランザクションログに当該クラスタ最小値を含めて行われる第8形態記載の追記型データベースの管理方法である。
【0029】
本発明の第15形態は、前記書込セットは、下位マスタノードの代わりに中位マスタノードで生成され、少なくとも当該中位マスタノードで実行中のトランザクションが参照するスナップショットのトランザクション最小値が書き込まれている第11形態または第12形態記載の追記型データベースの管理方法である。
【0030】
本発明の第16形態は、更新が可能な上位と1または2以上の下位のマスタノードを階層的に有する追記型データベースの管理方法であって、前記各下位マスタノードにおいて
、実行中のトランザクションが参照するスナップショットのトランザクション最小値同士を比較して最も小さい値であるノード最小値を前記上位マスタノードに送信するステップと、前記各下位マスタノードからのノード最小値を受信した上位マスタノードが、自身のノード最小値を読み出して前記で受信したノード最小値と比較して、これらの各ノード最小値の範囲内で上位マスタノードが保持するクラスタ最小値を決定・更新するステップと、前記上位マスタノードで更新されたクラスタ最小値を各下位マスタノードに通知して、該最小値よりも小さいトランザクション最小値を有するトランザクションを廃棄させるステップと、からなるマスタノードを階層的に有する追記型データベースの管理方法である。
【0031】
本発明の第17形態は、前記上位マスタノードと下位マスタノードとの2階層である第16形態記載のマスタノードを階層的に有する追記型データベースの管理方法である。
【0032】
本発明の第18形態は、前記上位マスタノードと、1階層以上の中位マスタノードと、下位マスタノードとからなる少なくとも3階層以上であり、前記中位マスタノードも自身のノード最小値を前記上位マスタノードに送信するステップを実行するとともに、上位マスタノードは、前記各下位マスタノードと中位マスタノードからのノード最小値を受信して、自身のノード最小値を読み出して前記で受信したノード最小値と比較して、これらの各ノード最小値の範囲内で上位マスタノードが保持するクラスタ最小値を決定・更新するステップを実行する第16形態記載のマスタノードを階層的に有する追記型データベースの管理方法である。
【0033】
本発明の第19形態は、レコード更新が可能な上位と下位のマスタノードを階層的に有する追記型データベースの管理方法であって、いずれかの下位マスタノードのセッションにおいて、上位マスタノードに対して、当該下位のマスタノードのデータベースのシャドウコピーと、自身のメモリ上に展開されたヒープタプルマップと、実行中のトランザクションが参照するスナップショットのトランザクション最小値と、ノード内のトランザクション最小値同士を比較して、最も小さい値であるノード最小値とを書き込みセットとして送信するステップと、前記上位マスタノードおいて、前記各書込セットから読み出したノード最小値と、自身が保持するノード最小値と比較して、これらの各ノード最小値の範囲内の値で上位マスタノードが保持するクラスタ最小値を決定・更新するステップと、前記上位マスタノードにおいて、前記下位マスタノードから受信した書き込みセット中のトランザクション最小値と上位マスタノードが保持するクラスタ最小値とを比較して、トランザクション最小値がクラスタ最小値と等しいか大きい場合には、当該書き込みセット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているタプルのデータベースにおける更新の有無を検証し、更新がなされているときには当該書き込みセットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するとともに、この更新記録をトランザクションログとして生成するステップと、前記でトランザクション最小値がクラスタ最小値よりも小さい場合には、当該書き込みセットをアボートするステップと、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信するステップと、前記下位マスタノードにおいて、前記で受信したトランザクションログに基づいて自身のデータベースを更新するステップと、前記上位マスタノードが保持するクラスタ最小値を下位マスタノードに通知して、該最小値よりも小さいトランザクション最小値を有するトランザクションを廃棄させるステップと、からなるマスタノードを階層的に有する追記型データベースの管理方法である。
【0034】
本発明の第20形態は前記上位マスタノードと下位マスタノードとの間に、1階層以上の中位マスタノードを有しており、いずれかの中位マスタノードのセッションにおいて、上位マスタノードに対して、当該中位マスタノードのデータベースのシャドウコピーと、
自身のメモリ上に展開されたヒープタプルマップと、実行中のトランザクションが参照するスナップショットのトランザクション最小値と、ノード内のトランザクション最小値同士を比較して、最も小さい値であるノード最小値を書き込みセットとして送信するステップとをさらに含む第19形態記載のマスタノードを階層的に有する追記型データベースの管理方法である。
【0035】
本発明の第21形態は、更新が可能な上位と下位のマスタノードを階層的に有する追記型データベースの管理方法であって、いずれかの下位マスタノードのセッションにおいて、実行中のトランザクションが参照するスナップショットのトランザクション最小値を含む下位データベース更新情報を上位マスタノードに送信するステップと、前記下位データベース更新情報を受信した上位マスタノードにおいて、前記トランザクション最小値と上位マスタノードが保持するクラスタ最小値とを比較して、トランザクション最小値がクラスタ最小値と等しいか大きい場合には、前記下位データベース更新情報に基づいて上位マスタノードのデータベースを更新するステップと、前記でトランザクション最小値がクラスタ最小値よりも小さい場合には、当該下位データベース更新情報をアボートするステップと、前記上位マスタノードの更新記録をトランザクションログとして生成するステップと、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信するステップと、前記下位マスタノードにおいて、前記で受信したトランザクションログに基づいて自身のデータベースを更新するステップと、前記上位マスタノードが保持するクラスタ最小値を下位マスタノードに通知して、該最小値よりも小さいトランザクション最小値を有するトランザクションを廃棄させるステップと、からなる下位マスタノードを階層的に有する上位マスタノードにおける追記型データベースの管理方法である。
【0036】
本発明の第22形態は、前記下位データベース更新情報は、下位マスタノードのデータベースのシャドウコピーと、自身のメモリ上に展開されたヒープタプルマップと、実行中のトランザクションが参照するスナップショットのトランザクション最小値とからなる書込セットであり、上位マスタノードが前記書込セットを受信すると、トランザクション最小値と上位マスタノードが保持するクラスタ最小値とを比較して、トランザクション最小値がクラスタ最小値と等しいか大きい場合には、当該書き込みセット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているタプルのデータベースにおける更新の有無を検証し、更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するステップと、前記でトランザクション最小値がクラスタ最小値よりも小さい場合には、当該書き込みセットをアボートするステップと、からなる第21形態記載の追記型データベースの管理方法である。
【0037】
本発明の第23形態は、上記に加えて、上位と下位のマスタノードの間に1階層以上の中位マスタノードを有しており、いずれかの中位マスタノードのセッションにおいて、上位マスタノードに対して、当該中位マスタノードのデータベースの更新対象となったトランザクション最小値を含む中位データベース更新情報を上位マスタノードに送信するステップと、前記中位データベース更新情報を受信した上位マスタノードにおいて、前記トランザクション最小値と上位マスタノードが保持するクラスタ最小値とを比較して、トランザクション最小値がクラスタ最小値と等しいか大きい場合には、前記中位データベース更新情報に基づいて上位マスタノードのデータベースを更新するステップと、を含む第21形態または第22形態記載の追記型データベースの管理方法である。
【発明の効果】
【0038】
本発明によれば、マルチマスタノード形式のデータベースにおいても、データベース全体の整合性を崩すことなく、より大きな最小値IDレベルでツリー全体の完全消去を実現することができる。
【図面の簡単な説明】
【0039】
【図1】本願発明のマルチノード形式のデータベース構造を示す説明図
【図2】データベース制御部の構成を示すブロック図
【図3】書込みセットの内容を示す図
【図4】上位マスタノードにおける書込みセットの処理を示す説明図
【図5】トランザクションログデータの構成を示す説明図
【図6】マルチノード形式のデータベースツリー構造とトランザクション最小値とツリー最小値とノード最小値との関係を示す図
【図7】クラスタ最小値の更新と、そのクラスタ最小値を用いたトランザクションの廃棄処理の説明図
【図8】スナップショットの内容を示す図
【図9】書込セットの変形例を示す図
【発明を実施するための形態】
【0040】
以下、本発明の実施の形態を図面を参照して説明する。
【実施例】
【0041】
図1は、本実施形態の階層的マスタノードの構造を示している。同図に示すように、上位マスタノード(MS101)の下に階層的に中位マスタノード(MS201,MS202・・・MS20n)や、下位マスタノード(MS301,MS302・・・MS30n)を有するノード構成となっている。各ノード(情報処理装置)にはデータベースを有している。また上位マスタノード(MS101)にはスレーブを有しているが、他の下位マスタノードにもスレーブを有していてもよい。このようなマスタ・スレーブ構成の場合には両者間のデータベースの更新には本出願人によるPCT/JP2010/054311(本出願人による未公開先行出願)に記載された更新管理技術を適用することができる。
【0042】
図2は、下位マスタノード(MS201)の機能ブロック図であるが、上位マスタノード(MS101)も同様の機能を有している。
同図に示すように、クライアント(CL)からデータベースの更新命令が入力されるとデータベース処理部(11b)は、メモリ(MM)上に構築されたバックエンドメモリ(BEM)上に下位データベース更新情報を示す書込セットを生成する。この書込セットは図4に示すようにヒープタプルマップ(HTM)とシャドウコピー(SC)とトランザクション最小値(Xmin)とで構成される。ここでは、マスタデータベース(101a)の行番号4を削除(DELETE)し、行番号5を新たな値(sc1)に書き換える(UPDATE)する更新命令が入力されたものと仮定する。
【0043】
このとき、データベース処理部11bは、マスタデータベース(11a)を参照しながら当該マスタデータベース(11a)に直接書き込むことは行わずに、バックエンドメモリ(BEM)で生成された書込セットを通信モジュール(11d)より上位マスタに送信する。
このような処理は上位マスタノード(MS101)においても、下位マスタノード(MS201,MS202・・・MS20nや、MS301,MS302・・・MS30n)においても同様である。
【0044】
図8は、各ノード(上位ノード、中位ノードまたは下位ノード)におけるトランザクションとそのスナップショットとの関係を示している。各ノードでは複数のトランザクションが並行して実行されており、複数のそれぞれの時点での時系列にトランザクションの実行状態を示すスナップショットが複数保持されている。
【0045】
同図においてこのノードでは、トランザクションID=2,4,5,6および9が実行中である。また、トランザクションID=1,3,7,8および10はコミットされている。また、トランザクションID=11は未実行状態である。この時点でのスナップショットには、実行中またはコミットされたトランザクションの最大値をトランザクション最大値(ここではXmax=10)として、実行中のトランザクションの最小値をトランザクション最小値(ここではXmin=2)として記録されている。
【0046】
このようなスナップショットは、前述のバックエンドメモリ(BEM)に記録されるようになっている。
これらのスナップショット間の複数のトランザクション最小値の中で、最も小さい値がノード最小値となる。同図では、スナップショット701のトランザクション最小値が2(Xmin=2)であり、スナップショット702のトランザクション最小値が4(Xmin=4)であるので、ノード最小値は2(Nmin=2)となる。なお、下位マスタノードにさらに下位のノードが無い場合には、当該ノード最小値(Nmin=2)がツリー最小値(Tmin=2)となる。
【0047】
下位マスタノード(たとえばMS301)で生成されたノード最小値(Nmin)、すなわちツリー最小値(Tmin)は、後述する書込セットとは非同期で随時中位ノード(たとえばMS201)に通知される。この中位マスタノード(MS201)ではそれぞれの下位マスタノード(MS301−MS30n)から受信したツリー最小値(Tmin)と自身のスナップショット中のノード最小値(Nmin)とを比較して、より小さい値を自身のツリー最小値(Tmin)として更新する。
【0048】
次に、それぞれの中位マスタノード(MS201−MS20n)のツリー最小値(Tmin)は上位マスタノード(MS101)に通知される。
上位マスタノード(MS101)では、それぞれの中位マスタノード(MS201−MS20n)から受信したツリー最小値(Tmin)を受信すると、自身のスナップショット中のノード最小値(Nmin)とを比較して、いずれかの最小値またはその最小値間の値を採用して自身のツリー最小値(Tmin)を更新する。そして、このツリー最小値(Tmin)とその時点でのクラスタ最小値(Cmin)を比較して、その間の値をとって新たなクラスタ最小値(Cmin)を決定・更新する。
【0049】
次に、図6を用いて下位マスタノードE,Fのノード最小値(Nmin)すなわちツリー最小値(Tmin)、中位マスタノードB,C,D,Eのツリー最小値(Tmin)および上位マスタノードAのツリー最小値(Tmin)とクラスタ最小値(Cmin)とが更新される状態を説明する。
【0050】
ここで、下位マスタノードFのトランザクション最小値(Xmin)同士を比較した結果、ノード最小値(Nmin)が3、下位マスタノードGの最小値(Nmin)が4の場合、これらの下位マスタノードF,Gにはさらに下の階層が無いので、これらのノード最小値(Nmin)がそれぞれのツリー最小値(Tmin)となる。
【0051】
これらのツリー最小値(Tmin=3,Tmin=4)がそれぞれ中位マスタノードDに通知される。
中位マスタノードDでは、ノード最小値として4を有しており、これらが比較されて最も低い値(ここでは3)が中位ノードDのツリー最小値として設定される(Tmin=3)。
【0052】
一方、中位マスタノードEでは、ノード最小値(Nmin)が5であり、このノードは下位マスタノードを有していないため、当該ノード最小値(Nmin=5)がツリー最小
値(Tmin=5)として設定される。
【0053】
中位マスタノードCでは、中位マスタノードDからのツリー最小値(Tmin=3)と中位マスタノードEからのツリー最小値(Tmin=5)とを受信する。一方、中位マスタノードCでは自身のノード最小値(Nmin)として4を有しており、これらを比較して最も小さい値である3を自身のツリー最小値(Tmin=3)として更新する。そしてこのツリー最小値は上位マスタノードAに通知される。
【0054】
一方、同図では、前記中位マスタノードCと並列な中位マスタノードBが存在しているが、この中位マスタノードBには下の階層のマスタノードが無いため、自身のノード最小値(Nmin=6)がそのままツリー最小値(Tmin=6)として上位マスタノードAに通知される。
【0055】
上位マスタノードAでは、中位マスタノードBからのツリー最小値(Tmin=6)と、中位マスタノードCからのツリー最小値(Tmin=3)とを受信して、自身のノード最小値(Nmin=7)と比較して、これらの中で最も小さい値を上位マスタノードAにおけるツリー最小値(Tmin=3)として更新する。
【0056】
そしてマスタノードAでは、自身のノード最小値(Nmin=7)と、更新されたツリー最小値(Tmin=3)との間の数値をクラスタ最小値(Cmin)として設定する。
このときのクラスタ最小値(Cmin)の決定基準としては、クラスタ最小値をより小さい値(たとえばCmin=3)とすれば、全てのノードのスナップショット上のトランザクション最小値が3以上になるので、下位・中位マスタノードで生成される書込セットが上位マスタノードに到達したときにアボートされる確率は低くなり、無駄になる書込セットが少なくなり各ノードでの負荷は低減される。一方、完全消去の基準が小さい値となってしまうために、ノード全体の完全消去による効率的運用は図りにくくなる。
【0057】
それとは逆に、クラスタ最小値(Cmin)をより大きな値(たとえばCmin=7)とすれば、完全消去の効率は良くなるが、中位・下位マスタノードで生成された書込セットが上位マスタノードに到着したときにアボートされる確率が高くなり、中位・下位マスタノードにおける書込セットの負荷は大きくなる。
【0058】
このようなクラスタ最小値(Cmin)の設定方法は、あらかじめノード最小値(Nmin)とツリー最小値(Tmin)との規定差分値を定めておき、この規定差分値を越えた場合には強制的に規定差分内となるような基準値に制御してもよい。
【0059】
このようにクラスタ最小値(Cmin)が設定されると、このクラスタ最小値(Cmin)に基づいてタプルの完全消去が行われる。つまり、上位マスタノードにおいて、このクラスタ最小値(Cmin)より小さいトランザクションIDを持つトランザクションによって削除されたタプルを完全消去することができる。そして上位マスタノードで完全消去されたタプルは、以下で説明するトランザクションの廃棄と書き込みセットのアボート処理とによって、中位・下位マスタノードでも安全に完全消去できることになる。
【0060】
なお、以上の説明では、中位マスタノードB−Eまたは下位マスタノードF,Gがノード最小値(Nmin)同士を比較してツリー最小値を更新しながら上位マスタノードAに通知される例で説明したが、これに限定されることなく、各中位マスタノードB−Eまたは下位マスタノードF,Gがそれぞれ自身のノード最小値(Nmin)を直接上位マスタノードAに通知するようにしてもよい。上位マスタノードAはこのようにして通知されたノード最小値(Nmin)を自身が保持するノード最小値(Nmin)と比較して、これらの範囲内で新たな値を決定してそれをクラスタ最小値(Cmin)として更新すること
ができる。
【0061】
このように各中位・下位マスタノードB−Gがそれぞれのノード最小値(Nmin)を直接上位マスタノードAに通知することにより、各階層でツリー最小値(Tmin)を更新しながら上位マスタノードAに通知する方式よりも複雑な処理が必要なく通知システムを簡略化できる。
さらに、中位マスタノードB−Eまたは下位マスタノードF,Gのそれぞれで書込セットを生成するときにヒープタプルマップ(HTM)、シャドウコピー(SC)、トランザクション最小値(Xmin)とともにノード最小値(Nmin)を登録させるようにしてもよい(図9参照)。このように書込セット中にノード最小値(Nmin)を登録して上位マスタノードAに通知させることによって、上位マスタノードAに対して書込セット以外の別の通知システムが不要となりシステムを簡略化できる。
【0062】
この場合、上位マスタノードAは、各中位マスタノードB−Eおよび下位マスタノードF,Gから直接送信されたそれぞれの書込セットからノード最小値(Nmin)を読み出して、自身が保持するノード最小値(Nmin)と比較して、これらの範囲内で新たな値を決定してそれをクラスタ最小値(Cmin)として更新してもよい。
【0063】
上位マスタノードAにおいて、以上のようにクラスタ最小値(Cmin)を更新した後は、前述と同じ処理が行われる。すなわち、前記上位マスタノードAにおいて、前記中位マスタノードB−Eまたは下位マスタノードF,Gから受信した書き込みセット中のトランザクション最小値(Xmin)と上位マスタノードAが保持するクラスタ最小値(Cmin)とを比較して、トランザクション最小値(Xmin)がクラスタ最小値(Cmin)と等しいか大きい場合には、当該書き込みセット中のヒープタプルマップ(HTM)と自身のデータベースとを比較して、ターゲットとして登録されているタプルのデータベースにおける更新の有無を検証し、更新がなされているときには当該書き込みセットをアボートし、更新がなされていないときには前記シャドウコピー(SC)を用いて自身のデータベースを更新するとともに、この更新記録をトランザクションログとして生成する。一方、トランザクション最小値(Xmin)がクラスタ最小値(Cmin)よりも小さい場合には、当該書き込みセットをアボートする。
【0064】
上位マスタノードAで設定・更新されたクラスタ最小値(たとえばCmin=6)は、図7に示すように、中位マスタノードB,C,D,Eおよび下位マスタノードF,Gに通知される。このクラスタ最小値(Cmin=6)を受信した各ノードでは、この値(Cmin=6)よりも小さいトランザクション最小値を持つスナップショットを参照しているトランザクションを全て廃棄する。これによって、各ノードでのトランザクション最小値(Xmin)、ノード最小値(Nmin)、それらに基づくツリー最小値(Tmin)は必ず6よりも大きな値をとる。したがって、クラスタ最小値(Cmin)の通知後は完全消去されたタプルを参照するトランザクションは存在しなくなる。
【0065】
なお、図6および図7では、上位マスタノードA、2階層の中位マスタノードB,C,D,E、下位マスタノードE,Fからなる4階層のツリー構造を有するマルチマスタノードで説明したが、上位マスタノードと下位マスタノードの2階層構造、または中位マスタノードが3階層以上すなわち全体で5階層以上のツリー構造を有していてもよい。
【0066】
次に、図3を用いて書込セットの生成およびそれを用いた更新について説明する。
同図は、下位マスタノード(一例としてM301)におけるマスタデータベース(11a)と、書込セットとの関係を示している。マスタデータベース(11a)は行番号と、命令内容と、ポインタとによって構成されており、新たな命令がクライアント端末(CL)からなされる毎に行番号が追加されていく追記型のデータベースである。同図の場合、
前記で説明したように、行番号4を削除(DELETE)し、行番号5を新たな命令内容に書き換える(sc1にUPDATE)する場合を示している。
【0067】
下位マスタノード(MS301)においてクライアント端末(CL)からの命令によりマスタデータベースに対してこのような更新命令がなされると、前述のように、バックエンドメモリ(BEM)上でヒープタプルマップ(HTM、ヒープファイル)とシャドウコピー(SC)とトランザクション最小値(Xmin)からなる書込セットが生成される。
【0068】
ヒープタプルマップ(HTM)には、元の行番号(ctid)と、新しい行の行番号(sctid)が関係付けられて登録されるようになっている。このようにヒープタプルマップ(HTM)はデータベースの更新毎に追加生成されていく。なお、行番号5の命令内容(sc1)が書き込まれる行番号はこの段階ではまだ不明であるため、sctidには新しい命令(sc1)を書き込んでおく。
【0069】
一方、シャドウコピー(SC)には、マスタデータベース(11a)を参照して書き換えられるべき行番号のシャドウコピーを生成する。このとき、新たに追加される行番号はこの段階では不明であるので、行番号には新たな命令(sc1)を書き込んでおく。
【0070】
なお、この段階で下位マスタノード(MS301)のデータベース処理部(11b)は、ヒープタプルマップ(HTM)の生成によりDELETE命令が適用される行番号4と、UPDATE命令が適用される旧行番号5は削除されることが既にわかるため、シャドウコピー(SC)としては新たな命令(sc1)だけを書き込んでおいてもよい。
【0071】
さらに、書込セットに付加されるトランザクション最小値(Xmin)は、前記で説明したように実行中のトランザクションが参照しているスナップショット上に記録されているトランザクション最小値(Xmin)をそのまま書き込む。
【0072】
このようにして生成された書込セットは、当該下位マスタノード(MS301)から中位マスタノード(たとえばMS201)、さらに上位マスタノード(MS101)に送信される。
【0073】
上位マスタノード(MS101)において、データベース処理部11b(中央処理装置(CPU))は、前記で受信した書込セットからトランザクション最小値(Xmin)を読み出す。そして、このトランザクション最小値(Xmin)と上位マスタノード(MS101)のバックエンドメモリ(BEM)に保持されたクラスタ最小値(Cmin)と比較する。このとき、トランザクション最小値(Xmin)がクラスタ最小値(Cmin)と等しいか大きいときには、トランザクションログ処理部(11c)を起動してトランザクションログデータの生成を開始した後に、以下の処理を行う。
【0074】
まず、ヒープタプルマップ(HTM)を読み出して、自身のマスタデータベース11aと比較する。ここで、ターゲットとなっているタプル(ここでは行番号4,5および7)の内容がデータベース(11a)上で更新されているか否かを検証する。図4では、行番号4−6については未更新であるため、行番号4に削除ポインタを付与し、書き換えられる旧番号5にも削除ポインタを付与する。そして、新たな行番号7に新しい命令(sc1)が書き込まれる。
【0075】
下位マスタノード(M301)からの書込セット中のヒープタプルマップ(HTM)と自身のデータベースを比較して、上位マスタノード(M101)において既に別の書込セットによって当該行が更新されているときには、当該書込セットによる処理はアボート(中断)される。
【0076】
一方、書込セット内のトランザクション最小値(Xmin)とクラスタ最小値(Cmin)と比較して、トランザクション最小値(Xmin)がクラスタ最小値(Cmin)よりも小さいときには、当該書込セットをアボートする。
【0077】
このように書込セットをアボート処理する理由を以下に説明する。
書込セットの中にはクラスタ最小値(Cmin)よりも小さいトランザクションIDを持つトランザクションが削除したタプルが更新対象となっている可能性がある。このようなタプルは上位マスタノードのクラスタ最小値(Cmin)の設定に基づいて、既に廃棄されている可能性が高い。その場合、ヒープタプルマップを用いてこのタプルに対する整合性検出ができないので、上位マスタノードに矛盾を生じてしまう。そのため、クラスタ最小値(Cmin)よりも小さいトランザクション最小値(Xmin)を有する書込セットをアボートして係る矛盾の発生を防止しているわけである。
【0078】
クラスタ最小値(Cmin)の通知によるトランザクションの廃棄が中位・下位マスタノードで完了すれば、このような書込セットは生成されない。しかし、クラスタ最小値(Cmin)を上位マスタノードから下位マスタノードに通知している間に中位・下位マスタノードで生成された書込セットは、クラスタ最小値(Cmin)より小さいトランザクション最小値を持つ可能性があるので、書込セットを上位マスタノードで適用する際にチェックする必要がある。そこで前述のように、書込セットに登録されたトランザクション最小値(Xmin)とクラスタ最小値(Cmin)とを比較して、トランザクション最小値(Xmin)が小さい場合には書込セットをアボートするようにして解決しているわけである。
【0079】
このように、クラスタ最小値(Cmin)の通知により、完全消去されたタプルを参照するトランザクションを全て廃棄することができ、前記通知(Cmin)の通知と入れ違いに作成された書き込みセットもクラスタ最小値(Cmin)を基準にアボートできる。したがって、中位・下位ノードでもデータベースの整合性を損なわずにタプルを完全消去することができる。
【0080】
図5は、上位マスタノード(MS101)のマスタデータベース(11a)が上記により更新されたときにトランザクションログ処理部(11c)で生成されるトランザクションログデータの一例である。このトランザクションログは、少なくとも命令とトランザクション内容(行番号とそれに対する実行処理内容)が時系列で連続的に記録されたファイルである。
【0081】
同図によればトランザクションの開始命令(XB1)に続いて、命令番号と行番号とが対になったログが順次生成されている。たとえば、最初にDELETE命令(D1)として行番号4を削除し(D14)、次にUPDATE命令(U1)として行番号5を削除し行番号7を追加し(U157)次にこれらのコミット命令(XC1)を発行する。なお、このトランザクションログデータには、クラスタ最小値(Cmin=6)を追加してもよい。このようにクラスタ最小値(Cmin=6)を含めることによって、中位マスタノードB,C,D,Eまたは下位マスタノードF,Gにおけるトランザクションの廃棄順を制御することが可能となる。
【0082】
なお、前述したようにこのトランザクションログデータとは非同期にクラスタ最小値(Cmin=6)を中位マスタノードB,C,D,Eおよび下位マスタノードF,Gに通知する場合には、前述のトランザクションログデータの生成・送信を待つことなく効率的なトランザクションの廃棄処理が可能となる。
【0083】
このトランザクションログデータは、通信モジュール(11d)より中位マスタノード(MS201)をはじめ、すべての下位マスタノード(MS302・・・MS30n)に対して配信される。
【0084】
前記トランザクションログデータを受信した中位・下位マスタノードでは、当該トランザクションログデータを自身のデータベースに複製(レプリケーション)する。
具体的には、下位マスタノード(たとえばM302)が図5に示したトランザクションログデータを通信モジュール11dで受信すると、トランザクションログ処理部11cを起動してこのトランザクションログデータを自身のマスタデータベース11aにレプリケーションする。この結果、行番号4と5に削除ポインタが付与され、新たな行番号7が追加される。そして、このトランザクションログデータにクラスタ最小値(Cmin=6)が追記されている場合には、各マスタノードにおいて、このクラスタ最小値(Cmin=6)よりも小さいトランザクション最小値(Xmin)を持つスナップショットを参照するトランザクションが全て廃棄される。
【0085】
このように、中位・下位マスタノードでは上位マスタノードから送信されるトランザクションログデータのレプリケーションによって統一的にデータベースが管理されることになる。
【0086】
以上、本発明を実施形態に基づいて説明したが、本発明はこれに限定されるものではない。以下、その変形例について説明する。
(上位マスタノードMS101でデータベースの更新が行われる場合)
下位マスタノード(たとえばMS301)でマスタデータベースの更新命令が発生した場合の処理については、図2で説明したように、バックエンドメモリ(BEM)上でヒープタプルマップ(HTM、ヒープファイル)とシャドウコピー(SC)とからなる書込セットが生成されるが、上位マスタノード(MS101)でマスタデータベースの更新命令が発生した場合には、上位ノードに通知する必要がないため、書込セットは生成されない。すなわち、このような場合、上位ノード(MS101)では、図4の左図に示すようにマスタデータベース(11a)に対して直接更新データの書込が行われるとともに、図5に示すトランザクションログデータが生成される。このトランザクションログデータは下位マスタノードに配信され、前記トランザクションログデータを受信した下位マスタノードでは、当該トランザクションログデータを自身のマスタデータベースにレプリケーションする。
【0087】
(下位マスタノードで書込セットを生成している段階で検索処理が実行されたとき)
下位マスタノード(たとえばMS101)において、図3に示すような書込セットを生成している段階で、当該下位マスタノードのマスタデータベースに対して検索が実行されたとき、書込セットの生成された行番号以外の行番号を対象とした検索であれば問題はないが、該当行(ここでは行番号4および行番号5)に対する検索である場合、これらの行番号に対しては既に実質的な更新処理が行われているため、マスタデータベースの該当行を検索したとしても正確な検索結果は得られない。
【0088】
このような場合、データベース処理部(11b)は、まずヒープタプルマップ(HTM)を参照して、検索該当行番号がエントリされているか否かをチェックする。たとえば図3に示す例で、検索対象が行番号3である場合、データベース処理部(11b)は、メモリ(MM)上に構築されたバックエンドメモリ(BEM)上の書込セット内のヒープタプルマップ(HTM)を参照して、該当行(行番号3)がエントリされているか否かを判定する。図3の例では、該当行はエントリされていない。その場合には、マスタデータベース11aに直接アクセスして該当行(行番号3)を検索する。
【0089】
一方、図3に示す例で、検索対象が行番号4である場合、データベース処理部(11b)は書込セット内のヒープタプルマップ(HTM)を参照したときに、該当行(行番号4)がエントリされていることを検出することになる。この場合、マスタデータベース11aにアクセスしても、残存する該当行は既に削除する更新命令が実行されているため、検索対象としても意味がない。この場合、データベース処理部(11b)は、ヒープタプルマップ(HTM)を参照して該当行(行番号4)が削除されていることを検出する。このように、検索対象行が削除されているため、データベース処理部(11b)は該当行を検索対象とはしない。
【0090】
一方、図3に示す例で、検索対象が行番号5である場合、上記と同様に、ヒープタプルマップ(HTM)を参照して該当行(行番号5)に対応するシャドウコピー(SC1)が作成されていることを検出する。
【0091】
このとき、データベース処理部(11b)は、シャドウコピー(SC1)を参照して、行番号5を書き換えた内容を検索対象とすればよい。
以上の説明では、1行毎にヒープタプルマップ(HTM)を参照する場合で説明したが、このような処理方法に限らず、検索を行う際にデータベース処理部(11b)は、まず一括的にヒープタプルマップ(HTM)を参照して、ここにエントリされている行番号の全てを削除されたものとしてこれらを除外してマスタデータベース(11a)を検索しその後、再度ヒープタプルマップ(HTM)を参照してそのエントリに基づいて該当行を検索対象から除外したり(行番号4の場合)、シャドウコピー(SC1)を検索対象としてもよい。
【0092】
(下位マスタノードで上位マスタノードからのトランザクションログデータによる更新が行われているときの競合が生じた場合)
上位マスタノードから配信されたトランザクションログデータによって下位マスタノードのデータベースにレプリケーションが行われているときに、該当行に対して下位マスタノードのデータベースの更新命令が実行されている場合、競合が発生することになる。
【0093】
具体的には、下位マスタノードへの更新命令に基づいて行番号4と5とを更新しているときに、上位マスタノードから行番号5に関するトランザクションログデータが配信されてきたときがこれに該当する。
【0094】
このような場合には、下位マスタノードで作成された書込セットが上位マスタノードに送信されたとしても、上位マスタノードでは既に該当行に関するトランザクションログデータが配信されているため、前記書込セットは上位マスタノードで競合が検出されてアボートされることになる。したがって、当該下位マスタノードにおける競合は無視して差し支えない。この方法によれば、上位マスタノードにおいて本来アボートされるのがわかっているような書込セットでも上位マスタノードに送信しなければならず、上位マスタノードおよび下位マスタノードでのそれぞれの負担は増加するものの、上位マスタノードからのトランザクションログデータを下位マスタノードでレプリケーションする段階で一々競合のチェックを行わなくてよいため、処理が高速化できるという利点がある。
【0095】
一方、このような下位マスタノードでの競合を解決する別の方法としては、下位マスタノードにおいてヒープタプルマップ(HTM)を生成したときに、これを当該下位マスタノード内のメモリに登録し、このメモリを共有メモリとして、他の下位マスタノードからアクセス可能な状態としておく。このような他の下位ノードマスタ間のアクセスは、それぞれの下位マスタノードのデータベース処理部11bが行う。この方法によれば、ヒープタプルマップ(HTM)の生成時に競合をチェックするため、トランザクションログデータによるレプリケーションが遅延する可能性はあるものの、競合の問題を下位マスタノー
ド間だけで解決できるので、上位マスタノードに負担をかけない。
【0096】
以上、本発明を実施形態に基づいて説明したがこれらに限定されるものではない。
たとえば、書込セットは下位マスタノード(MS301)で生成する場合で説明したがこれに限らず中位マスタノード(MS201)で生成してもよいことは勿論である。
【産業上の利用可能性】
【0097】
本発明は、階層構造を備えたマルチマスタノード構造のデータベース管理システムに利用できる。
【符号の説明】
【0098】
MS101 上位マスタノード
SL スレーブ
MS201,MS202・・・MS20n 中位マスタノード
MS301,MS302・・・MS30n 下位マスタノード
CL クライアント端末
11a マスタデータベース
11b データベース処理部
11c トランザクションログ処理部
11d 通信モジュール
BEM バックエンドメモリ
HTM ヒープタプルマップ
SC シャドウコピー
Cmin クラスタ最小値
Xmin トランザクション最小値

【特許請求の範囲】
【請求項1】
ノードを階層的に有する上位マスタノードにおける追記型データベースの管理方法であって、
いずれかの下位マスタノードのセッションにおいて、当該下位マスタノードのデータベースのシャドウコピーと、下位マスタノードのメモリ上に展開されたヒープタプルマップと、実行中のトランザクションが参照するスナップショットのトランザクション最小値とを書込セットとして上位マスタノードに対して送信させるステップと、
前記で受信した書込セット中のトランザクション最小値と上位マスタノードが保持するクラスタ最小値とを比較して、トランザクション最小値がクラスタ最小値と等しいか大きい場合には、当該書き込みセット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているタプルのデータベースにおける更新の有無を検証し、更新がなされているときには当該書き込みセットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するステップと、
前記でトランザクション最小値がクラスタ最小値よりも小さい場合には、当該書き込みセットをアボートするステップと、
前記上位マスタノードが保持するクラスタ最小値を下位マスタノードに通知して、該最小値よりも小さいトランザクション最小値を有するトランザクションを廃棄させるステップと、
からなる下位マスタノードを階層的に有する上位マスタノードにおける追記型データベースの管理方法。
【請求項2】
レコード更新が可能な上位と下位のマスタノードを階層的に有する追記型データベースにおける下位マスタノードのデータベース管理方法であって、
いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が上位マスタノードに対して、自身のメモリ上に展開されたデータベースのシャドウコピーと、ヒープタプルマップと、実行中のトランザクションが参照するスナップショットのトランザクション最小値とを書込セットとして生成する際に、
それを受信する前記上位マスタノードに対して、前記下位マスタノードから受信した書込セット中のトランザクション最小値と上位マスタノードが保持するクラスタ最小値とを比較して、トランザクション最小値がクラスタ最小値と等しいか大きいときに前記シャドウコピーを用いて上位マスタノードのデータベースを更新させ、この更新記録をトランザクションログとして生成させ、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信させるために、前記書込セットを上位マスタノードに送信するステップと、
前記下位マスタノードのトランザクションログ処理部は、前記トランザクションログを受信したときに、当該トランザクションログに基づいて自身のデータベースを更新するステップと、
下位マスタノードにおいて、前記上位マスタノードが保持するクラスタ最小値を受信して、該最小値よりも小さいトランザクション最小値を有するトランザクションを廃棄するステップと、
からなる下位マスタノードのデータベースの管理方法。
【請求項3】
前記下位マスタノードは、実行中のトランザクションを時系列に記録した複数のスナップショット間のトランザクション最小値同士を比較して最も小さい値をノード最小値とし、このノード最小値をツリー最小値として上位マスタノードに通知し、
前記上位マスタノードは、自身のノード最小値と、前記1または2以上の下位マスタノードから通知されたツリー最小値とから選択的にクラスタ最小値を決定・保持する請求項1または2記載の追記型データベースの管理方法。
【請求項4】
前記上位マスタノードと前記下位マスタノードとの間の階層に中位マスタノードを有しており、
前記下位マスタノードは、実行中のトランザクションを時系列に記録した複数のスナップショット間のトランザクション最小値同士を比較して最も小さい値をノード最小値とし、このノード最小値をツリー最小値として中位マスタノードに通知し、
前記中位マスタノードは、自身のノード最小値と、前記1または2以上の下位マスタノードから通知されたツリー最小値とを比較して最も小さい値を当該中位マスタノードのツリー最小値として上位マスタノードに通知し、
上位マスタノードは、自身のノード最小値と、前記1または2以上の中位マスタノードから通知されたツリー最小値とから選択的にクラスタ最小値を決定・保持する請求項1または2記載の追記型データベースの管理方法。
【請求項5】
前記中位マスタノードはさらに2階層以上のツリー構造を有している請求項4記載の追記型データベースの管理方法。
【請求項6】
前記上位マスタノードが保持するクラスタ最小値の下位マスタノードへの通知は、前記トランザクションログの下位マスタノードへの通知とは非同期で行われる請求項1記載の追記型データベースの管理方法。
【請求項7】
前記上位マスタノードが保持するクラスタ最小値の下位マスタノードへの通知は、前記トランザクションログに当該クラスタ最小値を含めて行われる請求項1記載の追記型データベースの管理方法。
【請求項8】
前記書込セットは、下位マスタノードの代わりに中位マスタノードで生成され、少なくとも当該中位マスタノードで実行中のトランザクションが参照するスナップショットのトランザクション最小値が書き込まれている請求項4または5記載の追記型データベースの管理方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate


【公開番号】特開2013−33439(P2013−33439A)
【公開日】平成25年2月14日(2013.2.14)
【国際特許分類】
【出願番号】特願2012−13837(P2012−13837)
【出願日】平成24年1月26日(2012.1.26)
【分割の表示】特願2012−10434(P2012−10434)の分割
【原出願日】平成24年1月20日(2012.1.20)
【出願人】(301014269)株式会社Murakumo (23)