"マスタノードを階層的に有する追記型データベースにおける上位マスタノードのデータベース管理方法であって、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、上位マスタノードは、当該下位マスタノードのデータベース処理部によって自身のメモリ上に展開されたデータベースのシャドウコピーとヒープタプルマップとから生成された書込セットを受信するステップと、前記上位マスタノードが、前記で受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するステップと、からなる上位マスタノードにおけるデータベースの管理方法。前記上位マスタノードは、前記下位マスタノードにおいて新規の追加行のみで構成されたシャドウコピーを前記書込セットとして受信する請求項1記載の上位マスタノードにおけるデータベースの管理方法。ところで、前記未公開先行出願では、そのノード構成が単一のマスタノードに対して複数のミラーノードを備えたネットワーク構成であることが前提だった。そのためミラーノードが独自にデータ更新命令INSERT、UPDATE、DELETEを実行することはないため、マスタノードからのトランザクションログを参照して自身のデータベースをアップデートしてやればよかった。一方、データベースの多様化複雑化にともなって、マスタノードを複数有する所謂マルチマスタ方式が注目されるようになってきている。この点について、マスタノード同士に対称性があるネットワーク構成マスタノード同士が並列関係にあるときでは、マスタノード間の更新情報に順位付けを行い、マスタノード間の同期をとるための理論等が提案されているが全ノードの同期をとるための手続きが複雑となり、競合時の解決策が現実的でなかった。本発明者はこのような点に鑑みて本発明をなし得たものであり、マスタノードを階層的に構築するとともに、その階層構造を利用してノード間の更新を確実かつ効率的に行うことのできるデータベースの管理方法を実現することを技術的課題とする。本発明は、前記課題を解決するために、以下の手段を採用した。本発明の請求項1は、マスタノードを階層的に有する追記型データベースにおける上位マスタノードのデータベース管理方法であって、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、上位マスタノードは、当該下位マスタノードのデータベース処理部によって自身のメモリ上に展開されたデータベースのシャドウコピーとヒープタプルマップとから生成された書込セットを受信するステップと、前記上位マスタノードが、前記で受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するステップと、からなる上位マスタノードにおけるデータベースの管理方法である。本発明の請求項2は、前記上位マスタノードは、前記下位マスタノードにおいて新規の追加行のみで構成されたシャドウコピーを前記書込セットとして受信する請求項1記載の上位マスタノードにおけるデータベースの管理方法である。本発明によれば、マルチマスタノードを階層的に構築し、下位マスタノードから上位マスタノードに対しては、自身のメモリ上に展開されたシャドウコピーとヒープタプルマップとを書込セットとして送信し、これを受信した上位マスタノードでは、当該行が既に別の書き込みセットによって更新されているか否かを検証して、更新されていないときには前記シャドウコピーとヒープタプルマップとを用いてデータベースの更新処理を行う。そして、その更新記録をトランザクションログとして下位マスタノードに送信することで、下位マスタノードから上位マスタノード、さらに上位マスタノードから配下の下位マスタノードに対して効率的に矛盾のないデータベース更新が可能となる。本発明を図に基づいて説明する。図1は、本実施形態の階層的マスタノードの構造を示している。同図に示すように、上位マスタノードMS101の下に階層的に下位マスタノードMS201,MS202MS20nや、MS301,MS302MS30nを有するノード構成となっている。各ノード情報処理装置にはデータベースを有している。また上位マスタノードMS101にはスレーブを有しているが、他の下位マスタノードにもスレーブを有していてもよい。このようなマスタスレーブ構成の場合には両者間のデータベースの更新には本出願人によるPCT/JP2010/054311本出願人による未公開先行出願に記載された更新管理技術を適用することができる。上記未公開先行出願がマスタノードのトランザクションログデータを下位のノードに複製レプリケーションすればよかったのに対して、本実施形態では、階層的なマルチマスタノードで構成されており下位マスタノードでもアップデート命令が実行されていた場合、上位からのトランザクションログの参照だけでは全下位ノードの整合性を保つことができない点に着目した点が特徴である。以下に説明する。図2は、下位マスタノードMS201の機能ブロック図であるが、上位マスタノードMS101も同様の機能を有している。同図に示すように、クライアントCLからデータベースの更新命令が入力されるとデータベース処理部11bは、メインメモリMM上に構築されたバックエンドメモリBEM上で書込セットを生成する。この書込セットは図4に示すようにヒープタプルマップHTMとシャドウコピーSCとで構成される。ここでは、マスタデータベース101aの行番号4を削除DELETEし、行番号5を新たな値sc1に書き換えるUPDATEする更新命令が入力されたものと仮定する。このとき、データベース処理部11bは、マスタデータベース11aを参照しながら当該マスタデータベース11aに直接書き込むことは行わずに、バックエンドメモリBEMで生成された書込セットを通信モジュール11dより上位マスタに送信する。このような処理は上位マスタノードMS101においても、下位マスタノードMS201,MS202MS20nや、MS301,MS302MS30nにおいても同様である。図3は、前記機能を実現するためのハードウエア構成を示している。上位マスタノードMS101は汎用の情報処理装置であり、中央処理装置CPUおよびメインメモリMMを中心にバスBUSで接続された大規模記憶装置HD、マスタデータベース11a、外部との通信のための通信インターフェースI/O通信モジュール11dを有している。なお、当該バスBUS又は通信インターフェースI/Oを介してクライアント端末CLが接続されており、命令を受け付けるようになっている。大規模記憶装置HDには、オペレーティングシステムOSとともに、アプリケーションプログラムAPLが格納されており、当該プログラムをバスBUSおよび主記憶装置MMを介して中央処理装置CPUが読み込んで順次実行処理することによって、前述のマスタノードとしての機能が実現される。なお、説明は省略するが、下位マスタノードMS201,MS202MS20nや、MS301,MS302MS30nも同様の構成である。次に、図2で説明したデータベース処理部11bによる処理を図4を用いてさらに詳細に説明する。同図は、下位マスタノードMS201におけるマスタデータベース11aと、書込セットとの関係を示している。マスタデータベース201aは行番号と、命令内容と、ポインタとによって構成されており、新たな命令がクライアント端末CLからなされる毎に行番号が追加されていく追記型のデータベースである。同図の場合、前記で説明したように、行番号4を削除DELETEし、行番号5を新たな命令内容に書き換えるsc1にUPDATEする場合を示している。下位マスタノードMS201においてクライアント端末CLからの命令によりマスタデータベースに対してこのような更新命令がなされると、前述のように、バックエンドメモリBEM上でヒープタプルマップHTM、ヒープファイルとシャドウコピーSCとからなる書込セットが生成される。ヒープタプルマップHTMには、元の行番号ctidと、新しい行の行番号sctidが関係付けられて登録されるようになっている。このようにヒープタプルマップHTMはデータベースの更新毎に追加生成されていく。なお、行番号5の命令内容sc1が書き込まれる行番号はこの段階ではまだ不明であるため、sctidには新しい命令sc1を書き込んでおく。一方、シャドウコピーSCには、マスタデータベース11aを参照して書き換えられるべき行番号のシャドウコピーを生成する。このとき、新たに追加される行番号はこの段階では不明であるので、行番号には新たな命令sc1を書き込んでおく。なお、この段階で下位マスタノードMS201のデータベース処理部11bは、ヒープタプルマップHTMの生成によりDELETE命令が適用される行番号4と、UPDATE命令が適用される旧行番号5は削除されることが既にわかるため、シャドウコピーSCとしては新たな命令sc1だけを書き込んでおいてもよい。このようにして生成された書込セットは、当該下位マスタノードMS201から上位マスタノードMS101に送信される。上位マスタノードMS101において、データベース処理部11b中央処理装置CPUは、前記下位マスタノードMS201から前記書込セットを受信すると、前記更新命令にともなってトランザクションログ処理部11cを起動してトランザクションログデータの生成を開始する。そして、前記で受信した書込セットからヒープタプルマップHTMを読み出して、自身のマスタデータベース11aと比較する。ここで、ターゲットとなっているタプルここでは行番号4,5および7の内容がマスタデータベース11a上で更新されているか否かを検証する。図5では、行番号4~6については未更新であるため、行番号4に削除ポインタを付与し、書き換えられる旧番号5にも削除ポインタを付与する。そして、新たな行番号7に新しい命令sc1が書き込まれる。一方、下位マスタノードM201からの書込セット中のヒープタプルマップHTMと自身のデータベースを比較して、上位マスタノードM201において既に別の書込セットによって当該行が更新されているときには、当該書込セットによる処理はアボート中断される。図6は、上位マスタノードMS101のマスタデータベース11aが上記により更新されたときにトランザクションログ処理部11cで生成されるトランザクションログデータの一例である。このトランザクションログは、少なくとも命令とトランザクション内容行番号とそれに対する実行処理内容が時系列で連続的に記録されたファイルである。同図によればトランザクションの開始命令XB1に続いて、命令番号と行番号とが対になったログが順次生成されている。たとえば、最初にDELETE命令D1として行番号4を削除しD14、次にUPDATE命令U1として行番号5を削除し行番号7を追加しU157最後にこれらのコミット命令XC1を発行する。このトランザクションログデータは、通信モジュール11dより前記送信元の下位マスタノードMS201をはじめ、すべての下位マスタノードMS202MS20nや、MS301,MS302MS30nに対して配信される。前記トランザクションログデータを受信した下位マスタノードでは、当該トランザクションログデータを自身のデータベースに複製レプリケーションする。具体的には、下位マスタノードたとえばM202が図6に示したトランザクションログデータを通信モジュール11dで受信すると、トランザクションログ処理部11cを起動してこのトランザクションログデータを自身のマスタデータベース11aにレプリケーションする。この結果、行番号4と5に削除ポインタが付与され、新たな行番号7が追加される。このように、下位マスタノードでは上位マスタノードから送信されるトランザクションログデータのレプリケーションによって統一的にデータベースが管理されることになる。以上、本発明を実施形態に基づいて説明したが、本発明はこれに限定されるものではない。以下、その変形例について説明する。上位マスタノードMS101でデータベースの更新が行われる場合下位マスタノードたとえばMS201でマスタデータベースの更新命令が発生した場合の処理については、図2で説明したように、バックエンドメモリBEM上でヒープタプルマップHTM、ヒープファイルとシャドウコピーSCとからなる書込セットが生成されるが、上位マスタノードMS101でマスタデータベースの更新命令が発生した場合には、上位ノードに通知する必要がないため、書込セットは生成されない。すなわち、このような場合、上位ノードMS101では、図5の左図に示すようにマスタデータベース11aに対して直接更新データの書込が行われるとともに、図6に示すトランザクションログデータが生成される。このトランザクションログデータは下位マスタノードに配信され、前記トランザクションログデータを受信した下位マスタノードでは、当該トランザクションログデータを自身のマスタデータベースにレプリケーションする。下位マスタノードで書込セットを生成している段階で検索処理が実行されたとき下位マスタノードたとえばMS201において、図4に示すような書込セットを生成している段階で、当該下位マスタノードのマスタデータベースに対して検索が実行されたとき、書込セットの生成された行番号以外の行番号を対象とした検索であれば問題はないが、該当行ここでは行番号4および行番号5に対する検索が実行された場合、これらの行番号は既に削除されているため、検索対象にはできない。このような場合には以下の2通りの対応が考えられる。第1の類型は、データベース処理部11bは、マスタデータベース11aを参照した後に、ヒープタプルマップHTMを参照する。そしてこのヒープタプルマップHTM上で検索該当行番号がエントリされているか否かをチェックする。そしてエントリがあった場合には当該エントリが削除か更新かを判定し、更新の場合にはさらにシャドウコピーSCを参照して当該シャドウコピーSCのエントリsc1を検索対象とする。たとえば図4に示す例で、検索対象が行番号3である場合、データベース処理部11bは、メインメモリMM上に構築されたバックエンドメモリBEM上の書込セット内のヒープタプルマップHTMを参照して、該当行行番号3がエントリされているか否かを判定する。図4の例では、該当行はエントリされていない。その場合には、マスタデータベース201aに直接アクセスして該当行行番号3を検索する。一方、図4に示す例で、検索対象が行番号4である場合、データベース処理部11bは書込セット内のヒープタプルマップHTMを参照したときに、該当行行番号4がエントリされていることを検出する。この場合、マスタデータベース201aにアクセスしても、残存する該当行は既に削除する更新命令の対象となっているため、検索対象とはならない。データベース処理部11bは、ヒープタプルマップHTMを参照して該当行行番号4が削除されていることを検出する。このように、検索対象行が削除されているため、データベース処理部11bは該当行を検索対象とはしない。一方、図4に示す例で、検索対象が行番号5である場合、上記と同様に、ヒープタプルマップHTMを参照して該当行行番号5に対応するシャドウコピーsc1が作成されていることを検出する。このとき、データベース処理部11bは、シャドウコピーSCを参照して、行番号5を書き換えたエントリsc1を検索対象とすればよい。第2の類型では、データベース処理部11bはまずマスタデータベース11aを参照した後に、ヒープタプルマップHTMの全体を参照する。このとき、検索対象となっている行がエントリされているか否かをチェックし、エントリされている行番号ここでは行番号4および5を全て削除されたものとする検索対象から除外する。次に、データベース処理部11bは、シャドウコピーSCを参照して、シャドウコピー内の追加されたエントリsc1を参照しこれを検索対象とすればよい。下位マスタで上位マスタからのトランザクションログデータによる更新が行われているときの競合が生じた場合上位マスタから配信されたトランザクションログデータによって下位マスタノードのデータベースにレプリケーションが行われているときに、該当行に対して下位マスタのデータベースの更新命令が実行されている場合、競合が発生することになる。具体的には、下位マスタノードへの更新命令に基づいて行番号4と5とを更新しているときに、上位マスタから行番号5がエントリされたトランザクションログデータが配信されてきたときがこれに該当する。このような場合には、下位マスタノードで作成された書込セットが上位マスタノードに送信されたとしても、上位マスタノードでは既に該当行に関するトランザクションログデータが配信されているため、前記書込セットは上位マスタノードで競合が検出されてアボートされることになる。したがって、当該下位マスタノードにおける競合は無視して差し支えない。一方、このような下位マスタノードでの競合を解決する別の方法としては、下位マスタノードにおいて書込セットヒープタプルマップHTMとシャドウコピーSCを生成したときに、これらを当該下位マスタノード内のバックエンドメモリBEM上に登録し、これらの領域を2以上のプロセス具体的にはレプリケーションプロセスと書込セットの生成プロセスから参照できるようにしておいてもよい。つまり、下位マスタノードにおいて、書込セット、さらに限定すればヒープタプルマップHTMのみを共有メモリに配置しておくことが望ましい。この場合には、下位マスタノードがマスタデータベース11aのレプリケーションを実行する際に、バックエンドメモリBEM上の書込セットを参照することによって、更新命令と矛盾する書込セットを下位マスタノードの段階でアボートさせることができる。具体的には、トランザクションログ処理部11cは、前記バックエンドメモリBEMを参照して、この更新命令によって更新しようとしている該当行がヒープタプルマップHTMに含まれている場合には、当該ヒープタプルマップHTMを生成しているトランザクションをアボートさせる。このように、ヒープタプルマップHTMを共有メモリに配置して、複数プロセスから参照できるようにしたことにより、マルチマスタ方式のデータベースにおいても下位マスタノードの段階で、競合を防止できる。さらに、ヒープタプルマップHTMのみを共有メモリに配置しておけばよいので、貴重な共有メモリを占有してしまうこともない。"