(57)【要約】  マスタノードを階層的に構築するとともに、その更新を効率的に行うことのできるデータベースの管理方法を実現する。下位マスタノードから上位マスタノードに対しては、自身のデータベースのシャドウコピーと自身のメモリ上に展開されたヒープタプルマップとを書込セットとして送信し、これを受信した上位マスタノードでは、当該更新が既実行であるか否かを検証してその更新記録をトランザクションログとして下位マスタノードに送信することで、下位マスタノードから上位マスタノード、さらに上位マスタノードから配下の下位マスタノードに対して効率的に矛盾のないデータベース更新が可能となる。
2012056786.tif 000002
【特許請求の範囲】
【請求項１】
レコード更新が可能な上位と下位のマスタノードを階層的に有する追記型データベースの管理方法であって、
いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が上位マスタノードに対して、自身のメモリ上に展開されたデータベースのシャドウコピーとヒープタプルマップとを書込セットとして生成・送信するステップと、
前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、
前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するとともに、この更新記録をトランザクションログとして生成するステップと、
前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信するステップと、
前記下位マスタノードのトランザクションログ処理部は、前記で受信したトランザクションログに基づいて自身のデータベースを更新するステップと
からなるデータベースの管理方法。
【請求項２】
前記下位マスタノードにおける書込セットのシャドウコピーは、新規の追加行のみで構成する請求項１記載のデータベースの管理方法。
【請求項３】
前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのマスタデータベースに検索処理が実行されたとき、
前記下位マスタノードのデータベース処理部は、前記マスタデータベースを参照するステップと、
ヒープタプルマップを１行ずつ参照して検索処理において該当行番号がエントリされているか否かを判定し、エントリされていないときには前記マスタデータベースを直接の検索対象とし、
前記該当行番号がエントリされているときには、前記エントリが削除指示であるか更新指示であるかを判定し、削除指示であるときには該当行番号を検索対象から除外し、更新指示である場合には前記ヒープタプルマップ内のシャドウコピーのエントリを検索対象とするステップ    
を実行する請求項１または２に記載のデータベースの管理方法。
【請求項４】
前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのマスタデータベースに検索処理が実行されたとき、
前記下位マスタノードのデータベース処理部は、前記マスタデータベースを参照するステップと、
前記ヒープタプルマップの全体を参照して、検索対象となっている行番号のエントリを抽出してエントリされている行番号を全て削除されたものとして検索対象から除外するステップと、
前記シャドウコピーを参照して、シャドウコピー内で追加されたエントリの行番号を参照して当該行番号のみを検索対象とするステップと
を実行する請求項１または２に記載のデータベースの管理方法。
【請求項５】
前記下位マスタノードにおいて書込セットを生成したときに、これらを登録する下位マスタノード内のバックエンドメモリ（ＢＥＭ）の領域は、少なくとも上位マスタノードから配信されたトランザクションログによる更新命令を実行するトランザクションログ処理部が参照できるようにし、
前記トランザクションログ処理部は、前記バックエンドメモリ（ＢＥＭ）を参照して、この更新命令によって更新しようとしている該当行が前記書込セットのヒープタプルマップ（ＨＴＭ）に含まれている場合には、当該ヒープタプルマップ（ＨＴＭ）を生成しているトランザクションをアボートさせる請求項１または２に記載のデータベースの管理方法。
【請求項６】
マスタノードを階層的に有する追記型データベースにおける上位マスタノードのデータベース管理方法であって、
いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、
上位マスタノードは、当該下位マスタノードのデータベース処理部によって自身のメモリ上に展開されたデータベースのシャドウコピーとヒープタプルマップとから生成された書込セットを受信するステップと、
前記上位マスタノードが、前記で受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、
前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するステップと、
からなる上位マスタノードにおけるデータベースの管理方法。
【請求項７】
前記上位マスタノードは、前記下位マスタノードにおいて新規の追加行のみで構成されたシャドウコピーを前記書込セットとして受信する請求項６記載の上位マスタノードにおけるデータベースの管理方法。
【請求項８】
レコード更新が可能な上位と下位のマスタノードを階層的に有する追記型データベースにおける下位マスタノードのデータベース管理方法であって、
いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が上位マスタノードに対して、自身のメモリ上に展開されたデータベースのシャドウコピーとヒープタプルマップとを書込セットとして生成し、
前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証させ、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーを用いて上位マスタノードのデータベースを更新させ、この更新記録をトランザクションログとして生成させ、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信させるために書込セットを上位マスタノードに送信するステップと、
前記下位マスタノードのトランザクションログ処理部は、前記トランザクションログを受信したときに、当該トランザクションログに基づいて自身のデータベースを更新するステップと
からなる下位マスタノードのデータベースの管理方法。
【請求項９】
前記下位マスタノードにおける書込セットのシャドウコピーは、新規の追加行のみで構成する請求項８記載の下位マスタノードのデータベースの管理方法。
【請求項１０】
前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのマスタデータベースに検索処理が実行されたとき、
前記下位マスタノードのデータベース処理部は、前記マスタデータベースを参照するステップと、
ヒープタプルマップを１行ずつ参照して検索処理において該当行番号がエントリされているか否かを判定し、エントリされていないときには前記マスタデータベースを直接の検索対象とし、
前記該当行番号がエントリされているときには、前記エントリが削除指示であるか更新指示であるかを判定し、削除指示であるときには該当行番号を検索対象から除外し、更新指示である場合には前記ヒープタプルマップ内のシャドウコピーのエントリを検索対象とするステップ    
を実行する請求項８または９に記載のデータベースの管理方法。
【請求項１１】
前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのマスタデータベースに検索処理が実行されたとき、
前記下位マスタノードのデータベース処理部は、前記マスタデータベースを参照するステップと、
前記ヒープタプルマップの全体を参照して、検索対象となっている行番号のエントリを抽出してエントリされている行番号を全て削除されたものとして検索対象から除外するステップと、
前記シャドウコピーを参照して、シャドウコピー内で追加されたエントリの行番号を参照して当該行番号のみを検索対象とするステップと
を実行する請求項８または９に記載のデータベースの管理方法。
【請求項１２】
前記下位マスタノードにおいて書込セットを生成したときに、これらを登録する下位マスタノード内のバックエンドメモリ（ＢＥＭ）の領域は、少なくとも上位マスタノードから配信されたトランザクションログによる更新命令を実行するトランザクションログ処理部が参照できるようにし、
前記トランザクションログ処理部は、前記バックエンドメモリ（ＢＥＭ）を参照して、この更新命令によって更新しようとしている該当行が前記書込セットのヒープタプルマップ（ＨＴＭ）に含まれている場合には、当該ヒープタプルマップ（ＨＴＭ）を生成しているトランザクションをアボートさせる請求項８または９に記載のデータベースの管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データベースの管理方法、特に複数のマスタノードがネットワークにより階層的に接続されているデータベースの管理方法に関する。
【背景技術】
【０００２】
本出願人は、トランザクションログを用いてデータベースを管理する技術に着目し、特開２００６−２９３９１０号公報（特許文献１）において、１対１のマスタ・スレーブ方式のデータ同期方法について提案し、さらにその後ＰＣＴ／ＪＰ２０１０／０５４３１１（以下、「未公開先行出願」という）において、１対Ｎ個（Ｎは正整数）のマスタ・スレーブ方式のデータ同期方法の提案を行っている。【０００３】
ここで、トランザクションログとは、データベースに加えられた変更の履歴を、データベースの記録領域とは異なる領域に記録することにより、変更の永続性を維持しながら同時に操作の高速性を実現する技術である。【０００４】
特に特許文献１は、トランザクションログを利用してレプリケーションシステムを実現する点に着目しており、一方未公開先行出願は、クライアントより検索指示を受領したスレーブノードがマスタノードにリクエストメッセージを送信し、所定時間以内にマスタノードから返信メッセージを受領しなかったときに、マスタノードに対してマスタデータベースの更新にかかる最新バージョンまでのトランザクションログを要求し、該要求を受領したマスタノードは、スレーブノードへ該トランザクションログを送信し、このログを参照してスレーブノードは自身のレプリカデータベースを更新するものであった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−２９３９１０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ところで、前記未公開先行出願では、そのノード構成が単一のマスタノードに対して複数のミラーノードを備えたネットワーク構成であることが前提だった。
そのためミラーノードが独自にデータ更新命令（INSERT、UPDATE、DELETE）を実行することはないため、マスタノードからのトランザクションログを参照して自身のデータベースをアップデートしてやればよかった
一方、データベースの多様化・複雑化にともなって、マスタノードを複数有する所謂マルチマスタ方式が注目されるようになってきている。この点について、マスタノード同士に対称性があるネットワーク構成（マスタノード同士が並列関係にあるとき）では、マスタノード間の更新情報に順位付けを行い、マスタノード間の同期をとるための理論等が提案されているが全ノードの同期をとるための手続きが複雑となり、競合時の解決策が現実的でなかった。【０００７】
本発明者はこのような点に鑑みて本発明をなし得たものであり、マスタノードを階層的に構築するとともに、その階層構造を利用してノード間の更新を確実かつ効率的に行うことのできるデータベースの管理方法を実現することを技術的課題とする。
【課題を解決するための手段】
【０００８】
本発明は、前記課題を解決するために、以下の手段を採用した。
本発明の請求項１は、レコード更新が可能な上位と下位のマスタノードを階層的に有する追記型データベースの管理方法であって、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が上位マスタノードに対して、自身のメモリ上に展開されたデータベースのシャドウコピーとヒープタプルマップとを書込セットとして生成・送信するステップと、前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するとともに、この更新記録をトランザクションログとして生成するステップと、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信するステップと、
前記下位マスタノードのトランザクションログ処理部は、前記で受信したトランザクションログに基づいて自身のデータベースを更新するステップとからなるデータベースの管理方法である。【０００９】
本発明の請求項２は、前記下位マスタノードにおける書込セットのシャドウコピーは、新規の追加行のみで構成する請求項１記載のデータベースの管理方法である。
本発明の請求項３は、前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのマスタデータベースに検索処理が実行されたとき、前記下位マスタノードのデータベース処理部は、前記マスタデータベースを参照するステップと、ヒープタプルマップを１行ずつ参照して検索処理において該当行番号がエントリされているか否かを判定し、エントリされていないときには前記マスタデータベースを直接の検索対象とし、前記該当行番号がエントリされているときには、前記エントリが削除指示であるか更新指示であるかを判定し、削除指示であるときには該当行番号を検索対象から除外し、更新指示である場合には前記ヒープタプルマップ内のシャドウコピーのエントリを検索対象とするステップとを実行する請求項１または２に記載のデータベースの管理方法である。【００１０】
本発明の請求項４は、前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのマスタデータベースに検索処理が実行されたとき、前記下位マスタノードのデータベース処理部は、前記マスタデータベースを参照するステップと、前記ヒープタプルマップの全体を参照して、検索対象となっている行番号のエントリを抽出してエントリされている行番号を全て削除されたものとして検索対象から除外するステップと、前記シャドウコピーを参照して、シャドウコピー内で追加されたエントリの行番号を参照して当該行番号のみを検索対象とするステップとを実行する請求項１または２に記載のデータベースの管理方法である。【００１１】
本発明の請求項５は、前記下位マスタノードにおいて書込セットを生成したときに、これらを登録する下位マスタノード内のバックエンドメモリ（ＢＥＭ）の領域は、少なくとも上位マスタノードから配信されたトランザクションデータによる更新命令を実行するトランザクションログ処理部が参照できるようにし、前記トランザクションログ処理部は、前記バックエンドメモリ（ＢＥＭ）を参照して、この更新命令によって更新しようとしている該当行が前記書込セットのヒープタプルマップ（ＨＴＭ）に含まれている場合には、当該ヒープタプルマップ（ＨＴＭ）を生成しているトランザクションをアボートさせる請求項１または２に記載のデータベースの管理方法である。【００１２】
本発明の請求項６は、マスタノードを階層的に有する追記型データベースにおける上位マスタノードのデータベース管理方法であって、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、上位マスタノードは、当該下位マスタノードのデータベース処理部によって自身のメモリ上に展開されたデータベースのシャドウコピーとヒープタプルマップとから生成された書込セットを受信するステップと、前記上位マスタノードが、前記で受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するステップと、からなる上位マスタノードにおけるデータベースの管理方法である。【００１３】
本発明の請求項７は、前記上位マスタノードは、前記下位マスタノードにおいて新規の追加行のみで構成されたシャドウコピーを前記書込セットとして受信する請求項６記載の上位マスタノードにおけるデータベースの管理方法である。【００１４】
本発明の請求項８は、レコード更新が可能な上位と下位のマスタノードを階層的に有する追記型データベースにおける下位マスタノードのデータベース管理方法であって、いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が上位マスタノードに対して、自身のメモリ上に展開されたデータベースのシャドウコピーとヒープタプルマップとを書込セットとして生成し、前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証させ、前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーを用いて上位マスタノードのデータベースを更新させ、この更新記録をトランザクションログとして生成させ、前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信させるために書込セットを上位マスタノードに送信するステップと、前記下位マスタノードのトランザクションログ処理部は、前記トランザクションログを受信したときに、当該トランザクションログに基づいて自身のデータベースを更新するステップとからなる下位マスタノードのデータベースの管理方法である。【００１５】
本発明の請求項９は、前記下位マスタノードにおける書込セットのシャドウコピーは、新規の追加行のみで構成する請求項８記載の下位マスタノードのデータベースの管理方法である。【００１６】
本発明の請求項１０は、前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのマスタデータベースに検索処理が実行されたとき、前記下位マスタノードのデータベース処理部は、前記マスタデータベースを参照するステップと、ヒープタプルマップを１行ずつ参照して検索処理において該当行番号がエントリされているか否かを判定し、エントリされていないときには前記マスタデータベースを直接の検索対象とし、前記該当行番号がエントリされているときには、前記エントリが削除指示であるか更新指示であるかを判定し、削除指示であるときには該当行番号を検索対象から除外し、更新指示である場合には前記ヒープタプルマップ内のシャドウコピーのエントリを検索対象とするステップとを実行する請求項８または９に記載のデータベースの管理方法である。【００１７】
本発明の請求項１１は、前記下位マスタノードで前記書込セットを生成している段階で当該下位マスタノードのマスタデータベースに検索処理が実行されたとき、前記下位マスタノードのデータベース処理部は、前記マスタデータベースを参照するステップと、前記ヒープタプルマップの全体を参照して、検索対象となっている行番号のエントリを抽出してエントリされている行番号を全て削除されたものとして検索対象から除外するステップと、前記シャドウコピーを参照して、シャドウコピー内で追加されたエントリの行番号を参照して当該行番号のみを検索対象とするステップとを実行する請求項８または９に記載のデータベースの管理方法である。【００１８】
本発明の請求項１２は、前記下位マスタノードにおいて書込セットを生成したときに、これらを登録する下位マスタノード内のバックエンドメモリ（ＢＥＭ）の領域は、少なくとも上位マスタノードから配信されたトランザクションログによる更新命令を実行するトランザクションログ処理部が参照できるようにし、前記トランザクションログ処理部は、前記バックエンドメモリ（ＢＥＭ）を参照して、この更新命令によって更新しようとしている該当行が前記書込セットのヒープタプルマップ（ＨＴＭ）に含まれている場合には、当該ヒープタプルマップ（ＨＴＭ）を生成しているトランザクションをアボートさせる請求項８または９に記載のデータベースの管理方法である。
【発明の効果】
【００１９】
本発明によれば、マルチマスタノードを階層的に構築し、下位マスタノードから上位マスタノードに対しては、自身のメモリ上に展開されたシャドウコピーとヒープタプルマップとを書込セットとして送信し、これを受信した上位マスタノードでは、当該行が既に別の書き込みセットによって更新されているか否かを検証して、更新されていないときには前記シャドウコピーとヒープタプルマップとを用いてデータベースの更新処理を行う。そして、その更新記録をトランザクションログとして下位マスタノードに送信することで、下位マスタノードから上位マスタノード、さらに上位マスタノードから配下の下位マスタノードに対して効率的に矛盾のないデータベース更新が可能となる。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態である階層的マスタノードのデータベース構造を示す概念図
【図２】本実施形態のマスタノードの機能ブロック図
【図３】本実施形態のマスタノードのハードウエアブロック図
【図４】本実施形態の下位マスタノードのデータベースのページと生成される書込セット（ヒープタプルマップ（ＨＴＭ）とシャドウコピー（ＳＣ））の関係を示す図
【図５】本実施形態において、下位マスタノードから送信された書込セットを用いて上位マスタノードを更新する際の説明図
【図６】上位マスタノードで生成されるトランザクションログを示す図
【発明を実施するための形態】
【００２１】
本発明を図に基づいて説明する。
図１は、本実施形態の階層的マスタノードの構造を示している。同図に示すように、上位マスタノード（ＭＳ１０１）の下に階層的に下位マスタノード（ＭＳ２０１，ＭＳ２０２・・・ＭＳ２０ｎや、ＭＳ３０１，ＭＳ３０２・・・ＭＳ３０ｎ）を有するノード構成となっている。各ノード（情報処理装置）にはデータベースを有している。また上位マスタノード（ＭＳ１０１）にはスレーブを有しているが、他の下位マスタノードにもスレーブを有していてもよい。このようなマスタ・スレーブ構成の場合には両者間のデータベースの更新には本出願人によるＰＣＴ／ＪＰ２０１０／０５４３１１（本出願人による未公開先行出願）に記載された更新管理技術を適用することができる。
【００２２】
上記未公開先行出願がマスタノードのトランザクションログデータを下位のノードに複製（レプリケーション）すればよかったのに対して、本実施形態では、階層的なマルチマスタノードで構成されており下位マスタノードでもアップデート命令が実行されていた場合、上位からのトランザクションログの参照だけでは全下位ノードの整合性を保つことができない点に着目した点が特徴である。以下に説明する。
【００２３】
図２は、下位マスタノード（ＭＳ２０１）の機能ブロック図であるが、上位マスタノード（ＭＳ１０１）も同様の機能を有している。
同図に示すように、クライアント（ＣＬ）からデータベースの更新命令が入力されるとデータベース処理部（１１ｂ）は、メインメモリ（ＭＭ）上に構築されたバックエンドメモリ（ＢＥＭ）上で書込セットを生成する。この書込セットは図４に示すようにヒープタプルマップ（ＨＴＭ）とシャドウコピー（ＳＣ）とで構成される。ここでは、マスタデータベース（１０１ａ）の行番号４を削除（ＤＥＬＥＴＥ）し、行番号５を新たな値（ｓｃ１）に書き換える（ＵＰＤＡＴＥ）する更新命令が入力されたものと仮定する。
【００２４】
このとき、データベース処理部１１ｂは、マスタデータベース（１１ａ）を参照しながら当該マスタデータベース（１１ａ）に直接書き込むことは行わずに、バックエンドメモリ（ＢＥＭ）で生成された書込セットを通信モジュール（１１ｄ）より上位マスタに送信する。
【００２５】
このような処理は上位マスタノード（ＭＳ１０１）においても、下位マスタノード（ＭＳ２０１，ＭＳ２０２・・・ＭＳ２０ｎや、ＭＳ３０１，ＭＳ３０２・・・ＭＳ３０ｎ）においても同様である。
【００２６】
図３は、前記機能を実現するためのハードウエア構成を示している。上位マスタノード（ＭＳ１０１）は汎用の情報処理装置であり、中央処理装置（ＣＰＵ）およびメインメモリ（ＭＭ）を中心にバス（ＢＵＳ）で接続された大規模記憶装置（ＨＤ）、マスタデータベース（１１ａ）、外部との通信のための通信インターフェース（Ｉ／Ｏ）（通信モジュール１１ｄ）を有している。なお、当該バス（ＢＵＳ）又は通信インターフェース（Ｉ／Ｏ）を介してクライアント端末（ＣＬ）が接続されており、命令を受け付けるようになっている。
【００２７】
大規模記憶装置（ＨＤ）には、オペレーティングシステム（ＯＳ）とともに、アプリケーションプログラム（ＡＰＬ）が格納されており、当該プログラムをバス（ＢＵＳ）および主記憶装置（ＭＭ）を介して中央処理装置（ＣＰＵ）が読み込んで順次実行処理することによって、前述のマスタノードとしての機能が実現される。なお、説明は省略するが、下位マスタノード（ＭＳ２０１，ＭＳ２０２・・・ＭＳ２０ｎや、ＭＳ３０１，ＭＳ３０２・・・ＭＳ３０ｎ）も同様の構成である。
【００２８】
次に、図２で説明したデータベース処理部（１１ｂ）による処理を図４を用いてさらに詳細に説明する。
同図は、下位マスタノード（ＭＳ２０１）におけるマスタデータベース（１１ａ）と、書込セットとの関係を示している。マスタデータベース（２０１ａ）は行番号と、命令内容と、ポインタとによって構成されており、新たな命令がクライアント端末（ＣＬ）からなされる毎に行番号が追加されていく追記型のデータベースである。同図の場合、前記で説明したように、行番号４を削除（ＤＥＬＥＴＥ）し、行番号５を新たな命令内容に書き換える（ｓｃ１にＵＰＤＡＴＥ）する場合を示している。
【００２９】
下位マスタノード（ＭＳ２０１）においてクライアント端末（ＣＬ）からの命令によりマスタデータベースに対してこのような更新命令がなされると、前述のように、バックエンドメモリ（ＢＥＭ）上でヒープタプルマップ（ＨＴＭ、ヒープファイル）とシャドウコピー（ＳＣ）とからなる書込セットが生成される。
【００３０】
ヒープタプルマップ（ＨＴＭ）には、元の行番号（ｃｔｉｄ）と、新しい行の行番号（ｓｃｔｉｄ）が関係付けられて登録されるようになっている。このようにヒープタプルマップ（ＨＴＭ）はデータベースの更新毎に追加生成されていく。なお、行番号５の命令内容（ｓｃ１）が書き込まれる行番号はこの段階ではまだ不明であるため、ｓｃｔｉｄには新しい命令（ｓｃ１）を書き込んでおく。
【００３１】
一方、シャドウコピー（ＳＣ）には、マスタデータベース（１１ａ）を参照して書き換えられるべき行番号のシャドウコピーを生成する。このとき、新たに追加される行番号はこの段階では不明であるので、行番号には新たな命令（ｓｃ１）を書き込んでおく。
【００３２】
なお、この段階で下位マスタノード（ＭＳ２０１）のデータベース処理部（１１ｂ）は、ヒープタプルマップ（ＨＴＭ）の生成によりＤＥＬＥＴＥ命令が適用される行番号４と、ＵＰＤＡＴＥ命令が適用される旧行番号５は削除されることが既にわかるため、シャドウコピー（ＳＣ）としては新たな命令（ｓｃ１）だけを書き込んでおいてもよい。
【００３３】
このようにして生成された書込セットは、当該下位マスタノード（ＭＳ２０１）から上位マスタノード（ＭＳ１０１）に送信される。
上位マスタノード（ＭＳ１０１）において、データベース処理部１１ｂ（中央処理装置（ＣＰＵ））は、前記下位マスタノード（ＭＳ２０１）から前記書込セットを受信すると、前記更新命令にともなってトランザクションログ処理部（１１ｃ）を起動してトランザクションログデータの生成を開始する。そして、前記で受信した書込セットからヒープタプルマップ（ＨＴＭ）を読み出して、自身のマスタデータベース（１１ａ）と比較する。ここで、ターゲットとなっているタプル（ここでは行番号４，５および７）の内容がマスタデータベース（１１ａ）上で更新されているか否かを検証する。図５では、行番号４〜６については未更新であるため、行番号４に削除ポインタを付与し、書き換えられる旧番号５にも削除ポインタを付与する。そして、新たな行番号７に新しい命令（ｓｃ１）が書き込まれる。
【００３４】
一方、下位マスタノード（Ｍ２０１）からの書込セット中のヒープタプルマップ（ＨＴＭ）と自身のデータベースを比較して、上位マスタノード（Ｍ２０１）において既に別の書込セットによって当該行が更新されているときには、当該書込セットによる処理はアボート（中断）される。
【００３５】
図６は、上位マスタノード（ＭＳ１０１）のマスタデータベース（１１ａ）が上記により更新されたときにトランザクションログ処理部（１１ｃ）で生成されるトランザクションログデータの一例である。このトランザクションログは、少なくとも命令とトランザクション内容（行番号とそれに対する実行処理内容）が時系列で連続的に記録されたファイルである。
【００３６】
同図によればトランザクションの開始命令（ＸＢ１）に続いて、命令番号と行番号とが対になったログが順次生成されている。たとえば、最初にＤＥＬＥＴＥ命令（Ｄ１）として行番号４を削除し（Ｄ１４）、次にＵＰＤＡＴＥ命令（Ｕ１）として行番号５を削除し行番号７を追加し（Ｕ１５７）最後にこれらのコミット命令（ＸＣ１）を発行する。
【００３７】
このトランザクションログデータは、通信モジュール（１１ｄ）より前記送信元の下位マスタノード（ＭＳ２０１）をはじめ、すべての下位マスタノード（ＭＳ２０２・・・ＭＳ２０ｎや、ＭＳ３０１，ＭＳ３０２・・・ＭＳ３０ｎ）に対して配信される。
【００３８】
前記トランザクションログデータを受信した下位マスタノードでは、当該トランザクションログデータを自身のデータベースに複製（レプリケーション）する。
具体的には、下位マスタノード（たとえばＭ２０２）が図６に示したトランザクションログデータを通信モジュール（１１ｄ）で受信すると、トランザクションログ処理部（１１ｃ）を起動してこのトランザクションログデータを自身のマスタデータベース（１１ａ）にレプリケーションする。この結果、行番号４と５に削除ポインタが付与され、新たな行番号７が追加される。
【００３９】
このように、下位マスタノードでは上位マスタノードから送信されるトランザクションログデータのレプリケーションによって統一的にデータベースが管理されることになる。
以上、本発明を実施形態に基づいて説明したが、本発明はこれに限定されるものではない。以下、その変形例について説明する。
（上位マスタノードＭＳ１０１でデータベースの更新が行われる場合）
下位マスタノード（たとえばＭＳ２０１）でマスタデータベースの更新命令が発生した場合の処理については、図２で説明したように、バックエンドメモリ（ＢＥＭ）上でヒープタプルマップ（ＨＴＭ、ヒープファイル）とシャドウコピー（ＳＣ）とからなる書込セットが生成されるが、上位マスタノード（ＭＳ１０１）でマスタデータベースの更新命令が発生した場合には、上位ノードに通知する必要がないため、書込セットは生成されない。すなわち、このような場合、上位ノード（ＭＳ１０１）では、図５の左図に示すようにマスタデータベース（１１ａ）に対して直接更新データの書込が行われるとともに、図６に示すトランザクションログデータが生成される。このトランザクションログデータは下位マスタノードに配信され、前記トランザクションログデータを受信した下位マスタノードでは、当該トランザクションログデータを自身のマスタデータベースにレプリケーションする。
（下位マスタノードで書込セットを生成している段階で検索処理が実行されたとき）
下位マスタノード（たとえばＭＳ２０１）において、図４に示すような書込セットを生成している段階で、当該下位マスタノードのマスタデータベースに対して検索が実行されたとき、書込セットの生成された行番号以外の行番号を対象とした検索であれば問題はないが、該当行（ここでは行番号４および行番号５）に対する検索が実行された場合、これらの行番号は既に削除されているため、検索対象にはできない。
【００４０】
このような場合には以下の２通りの対応が考えられる。
第１の類型は、データベース処理部（１１ｂ）は、マスタデータベース（１１ａ）を参照した後に、ヒープタプルマップ（ＨＴＭ）を参照する。そしてこのヒープタプルマップ（ＨＴＭ）上で検索該当行番号がエントリされているか否かをチェックする。そしてエントリがあった場合には当該エントリが削除か更新かを判定し、更新の場合にはさらにシャドウコピー（ＳＣ）を参照して当該シャドウコピー（ＳＣ）のエントリ（ｓｃ１）を検索対象とする。たとえば図４に示す例で、検索対象が行番号３である場合、データベース処理部（１１ｂ）は、メインメモリ（ＭＭ）上に構築されたバックエンドメモリ（ＢＥＭ）上の書込セット内のヒープタプルマップ（ＨＴＭ）を参照して、該当行（行番号３）がエントリされているか否かを判定する。図４の例では、該当行はエントリされていない。その場合には、マスタデータベース２０１ａに直接アクセスして該当行（行番号３）を検索する。
【００４１】
一方、図４に示す例で、検索対象が行番号４である場合、データベース処理部（１１ｂ）は書込セット内のヒープタプルマップ（ＨＴＭ）を参照したときに、該当行（行番号４）がエントリされていることを検出する。この場合、マスタデータベース２０１ａにアクセスしても、残存する該当行は既に削除する更新命令の対象となっているため、検索対象とはならない。データベース処理部（１１ｂ）は、ヒープタプルマップ（ＨＴＭ）を参照して該当行（行番号４）が削除されていることを検出する。このように、検索対象行が削除されているため、データベース処理部（１１ｂ）は該当行を検索対象とはしない。
【００４２】
一方、図４に示す例で、検索対象が行番号５である場合、上記と同様に、ヒープタプルマップ（ＨＴＭ）を参照して該当行（行番号５）に対応するシャドウコピー（ｓｃ１）が作成されていることを検出する。
【００４３】
このとき、データベース処理部（１１ｂ）は、シャドウコピー（ＳＣ）を参照して、行番号５を書き換えたエントリ（ｓｃ１）を検索対象とすればよい。
第２の類型では、データベース処理部（１１ｂ）はまずマスタデータベース（１１ａ）を参照した後に、ヒープタプルマップ（ＨＴＭ）の全体を参照する。このとき、検索対象となっている行がエントリされているか否かをチェックし、エントリされている行番号（ここでは行番号４および５）を全て削除されたものとする（検索対象から除外する）。次に、データベース処理部１１ｂは、シャドウコピー（ＳＣ）を参照して、シャドウコピー内の追加されたエントリ（ｓｃ１）を参照しこれを検索対象とすればよい。
（下位マスタで上位マスタからのトランザクションログデータによる更新が行われているときの競合が生じた場合）
上位マスタから配信されたトランザクションログデータによって下位マスタノードのデータベースにレプリケーションが行われているときに、該当行に対して下位マスタのデータベースの更新命令が実行されている場合、競合が発生することになる。
【００４４】
具体的には、下位マスタノードへの更新命令に基づいて行番号４と５とを更新しているときに、上位マスタから行番号５がエントリされたトランザクションログデータが配信されてきたときがこれに該当する。
【００４５】
このような場合には、下位マスタノードで作成された書込セットが上位マスタノードに送信されたとしても、上位マスタノードでは既に該当行に関するトランザクションログデータが配信されているため、前記書込セットは上位マスタノードで競合が検出されてアボートされることになる。したがって、当該下位マスタノードにおける競合は無視して差し支えない。
【００４６】
一方、このような下位マスタノードでの競合を解決する別の方法としては、下位マスタノードにおいて書込セット（ヒープタプルマップ（ＨＴＭ）とシャドウコピー（ＳＣ））を生成したときに、これらを当該下位マスタノード内のバックエンドメモリ（ＢＥＭ）上に登録し、これらの領域を２以上のプロセス（具体的にはレプリケーションプロセスと書込セットの生成プロセス）から参照できるようにしておいてもよい。つまり、下位マスタノードにおいて、書込セット、さらに限定すればヒープタプルマップ（ＨＴＭ）のみを共有メモリに配置しておくことが望ましい。
【００４７】
この場合には、下位マスタノードがマスタデータベース１１ａのレプリケーションを実行する際に、バックエンドメモリ（ＢＥＭ）上の書込セットを参照することによって、更新命令と矛盾する書込セットを下位マスタノードの段階でアボートさせることができる。具体的には、トランザクションログ処理部１１ｃは、前記バックエンドメモリ（ＢＥＭ）を参照して、この更新命令によって更新しようとしている該当行がヒープタプルマップ（ＨＴＭ）に含まれている場合には、当該ヒープタプルマップ（ＨＴＭ）を生成しているトランザクションをアボートさせる。
【００４８】
このように、ヒープタプルマップ（ＨＴＭ）を共有メモリに配置して、複数プロセスから参照できるようにしたことにより、マルチマスタ方式のデータベースにおいても下位マスタノードの段階で、競合を防止できる。さらに、ヒープタプルマップ（ＨＴＭ）のみを共有メモリに配置しておけばよいので、貴重な共有メモリを占有してしまうこともない。
【産業上の利用可能性】
【００４９】
本発明は、階層構造を備えたマルチマスタノード構造のデータベース管理システムに利用できる。
【符号の説明】
【００５０】
ＭＳ１０１  上位マスタノード
ＳＬ  スレーブ
ＭＳ２０１，ＭＳ２０２・・・ＭＳ２０ｎ  下位マスタノード
ＭＳ３０１，ＭＳ３０２・・・ＭＳ３０ｎ  下位マスタノード
ＣＬ  クライアント端末
１１ａ  マスタデータベース
１１ｂ  データベース処理部
１１ｃ  トランザクションログ処理部
１１ｄ  通信モジュール
ＣＰＵ  中央処理装置
ＭＭ  主記憶装置
ＢＵＳ  バス
ＨＤ  大規模記憶装置
Ｉ／Ｏ  通信インターフェース
ＨＴＭ  ヒープタプルマップ
ＳＣ  シャドウコピー
【図１】
2012056786.tif 000003
【図２】
2012056786.tif 000004
【図３】
2012056786.tif 000005
【図４】
2012056786.tif 000006
【図５】
2012056786.tif 000007
【図６】
2012056786.tif 000008
【手続補正書】
【提出日】平成23年11月22日(2011.11.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
レコード更新が可能な上位と下位のマスタノードを階層的に有する追記型データベースの管理方法であって、
いずれかの下位マスタノードでデータベースへの更新命令が生じたときに、当該下位マスタノードのデータベース処理部が上位マスタノードに対して、自身のメモリ上に展開されたデータベースのシャドウコピーとヒープタプルマップとを書込セットとして生成・送信するステップと、
前記上位マスタノードにおいて、前記下位マスタノードから受信した書込セット中のヒープタプルマップと自身のデータベースとを比較して、ターゲットとして登録されているデータベースの該当行が別の書込セットで更新されているか否かを検証するステップと、
前記更新がなされているときには当該書込セットをアボートし、更新がなされていないときには前記シャドウコピーを用いて自身のデータベースを更新するとともに、この更新記録をトランザクションログとして生成するステップと、
前記トランザクションログを前記送信元の下位マスタノードを含む下位マスタノードに配信するステップと、
前記下位マスタノードのトランザクションログ処理部は、前記で受信したトランザクションログに基づいて自身のデータベースを更新するステップと
からなるデータベースの管理方法。
【請求項２】
前記下位マスタノードにおける書込セットのシャドウコピーは、新規の追加行のみで構成する請求項１記載のデータベースの管理方法。
【国際調査報告】
2012056786.tif 000009
2012056786.tif 000010
2012056786.tif 000011
2012056786.tif 000012