(57)【特許請求の範囲】
【請求項１】
ストレージ装置に格納されるリレーショナルデータベースを管理するＲＤＢＭＳを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントからユーザデータの追加、削除又は更新の要求があると、前記リレーショナルデータベースのユーザデータが格納される表に対する削除及び／又は追加処理を行うステップと、
前記リレーショナルデータベースのシステム情報表の情報を参照して、前記リレーショナルデータベースに副次インデックスが存在しない場合は、前記リレーショナルデータベースの正インデックスを更新するステップと、
副次インデックスが存在する場合は、更新した表の表内位置情報と操作種別をキーにして副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在する場合は、エントリの操作種別が追加（ＵＰＤＡＴＥ）であれば、更新前行データを退避しておき、エントリの操作種別が追加（ＵＰＤＡＴＥ）でなければ退避は行わず、エントリを削除するステップと、
同じ表内位置情報を持つ副次インデックスのエントリが存在しなかった場合は、副次インデックスにエントリを追加し、その時、エントリの操作種別が追加（ＵＰＤＡＴＥ）の場合、先に退避した更新前行データがあれば、その更新前行データを追加するエントリに設定し、退避した更新前行データがなければ表の更新前行データを設定するステップと、
更新処理が正常に完了した場合は、前記クライアントに対して更新処理が正常終了したことを返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項２】
前記サーバは、副次インデックスが２本以上存在する時、更新した表の表内位置情報と、追加（ＵＰＤＡＴＥ）又は削除の操作種別とをキーにして副次インデックスをサーチする際に、対象とする副次インデックスを最後に定義した副次インデックスとし、副次インデックスにエントリを追加する際にも、追加する対象の副次インデックスを最後に定義した副次インデックスとするステップを実行することを特徴とする請求項１記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項３】
ストレージ装置に格納されるリレーショナルデータベースを管理するＲＤＢＭＳを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの現行世代の検索処理が要求された場合、前記リレーショナルデータベースの正インデックスの検索が完了しているか確認するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチし、そのサーチ結果のキー値を持つエントリの表内位置情報、および、操作種別が削除、または、追加（ＵＰＤＡＴＥ）の条件で、前記リレーショナルデータベースのシステム情報表の情報を参照して前記リレーショナルデータベースに副次インデックスが存在するならば副次インデックスをサーチするステップと、
副次インデックスをサーチした結果、条件に合致したエントリが存在する場合、操作種別が削除で無い場合ならば、副次インデックスをサーチして見つかった表内位置情報が同じエントリのキー値が再度条件に合致するかチェックするステップと、
条件に合致すれば、前記クライアントに検索結果の返却を行うステップと、
副次インデックスをサーチした結果、表内位置情報が同じエントリが存在しない場合は、そのまま前記クライアントに検索結果の返却を行うステップと
正インデックスの検索が完了している場合、システム情報表の情報を参照して、副次インデックスが存在し、副次インデックスの検索が完了していない場合、副次インデックスを操作種別が追加（ＩＮＳＥＲＴ）によりサーチを行い、検索結果を前記クライアントに返却するステップと、
副次インデックスの検索が完了している場合、検索処理終了を前記クライアントに返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項４】
ストレージ装置に格納されるリレーショナルデータベースを管理するＲＤＢＭＳを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの旧世代の検索処理が要求された場合、前記リレーショナルデータベースの正インデックスの検索が完了しているかを確認するステップと、
正インデックスの検索が完了している場合、前記クライアントに検索終了を返却するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチするステップと、
副次インデックスが１本存在する場合に、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加（ＵＰＤＡＴＥ）により前記リレーショナルデータベースの副次インデックスをサーチするステップと、
副次インデックスに表内位置情報が同じエントリがある場合は、副次インデックスのエントリの更新前行データを検索結果に設定するステップと、
更新前行データの設定後、又は、位置情報が同じエントリが存在しない場合は、前記クライアントに検索結果を返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項５】
前記サーバは、副次インデックスが２本以上存在する時、第１世代の検索が要求された場合は、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加（ＵＰＤＡＴＥ）で副次インデックスをサーチする際に、すべての副次インデックスを作成通番の順にサーチし、最初に見つかった副次インデックスのエントリの更新前行データを検索結果に設定するステップを実行することを特徴とする請求項４記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項６】
ストレージ装置に格納されるリレーショナルデータベースを管理するＲＤＢＭＳを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの第２世代以降の検索が要求された場合は、前記リレーショナルデータベースの正インデックスの検索が完了しているかを確認するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチするステップと、
前記リレーショナルデータベースの副次インデックスサーチが初回ならば、作成通番が検索対象の世代番号の一つ少ない副次インデックスを検索対象とし、副次インデックスサーチが初回でないならば、前回サーチした副次インデックスよりも作成通番の一つ少ない副次インデックスをサーチ対象として、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加（ＵＰＤＡＴＥ）で副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在する場合は、操作種別が削除でない場合で、副次インデックスのキー値が検索条件に合致する場合、または、表内位置情報が同じエントリが存在しない場合、サーチ済みの副次インデックスの作成通番が１ならば、副次インデックスの作成通番が検索対象の世代番号から最後に作成された副次インデックスの作成通番の順に、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加（ＵＰＤＡＴＥ）で副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在した場合は、更新前行データを検索結果に設定するステップと、
前記クライアントに検索結果の返却を行うステップと
正インデックスの検索が完了している場合、前記リレーショナルデータベースのシステム情報表の情報を参照して、副次インデックスが存在し、副次インデックスの検索が完了していない場合、副次インデックスを操作種別が追加（ＩＮＳＥＲＴ）によりサーチを行い、検索結果を前記クライアントに返却するステップと、
副次インデックスの検索が完了している場合、検索処理終了を前記クライアントに返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項７】
前記サーバは、
副次インデックスを操作種別が追加（ＩＮＳＥＲＴ）によりサーチを行う際に、副次インデックスのサーチが初回ならば、最初に作成した副次インデックスをサーチ対象とし、次に当該副次インデックスのサーチが完了しているならば、サーチ済みの副次インデックスより一つ多い作成通番と検索対象の世代番号を比較し、等しいならば、副次インデックスのサーチ完了を設定するステップと、
等しくないならば、前回サーチした副次インデックスの次の副次インデックスをサーチ対象とし、当該副次インデックスのサーチが完了していないならば、副次インデックスのサーチを実施するステップとを実行することを特徴とする請求項３又は６記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リレーショナルデータベースの世代管理方法に関し、特に大量のストレージを必要とするリレーショナルデータベースにおいてストレージ容量を削減する方法に関する。
【背景技術】
【０００２】
情報技術の発展によりソフトウェアの扱うデータ量は年々増加の一途を辿っている。ディスク装置の価格が安価となった現在でも、ユーザのニーズを満たすためには、ストレージ容量の削減がシステム要件の一つとなっている。
近年、ネットワークの高速化および、セキュリティ重視の傾向から、計算機資源を集中させた、いわゆるクラウド形態のシステムが徐々に普及している。このようなシステムでは、多数のユーザがシステムの資源を利用するため、非常に大規模なストレージ構成が必要となる。
データ管理を行うシステムとしては、リレーショナルデータベースが代表的なミドルウェアであり、ユーザデータを格納する表、および、インデックスと呼ばれる表への索引で構成される。
【０００３】
インデックスに格納するエントリは、表を構成する特定の要素群（列）の特定の値（キー値）と、そのキー値を含むユーザデータが表内のどこに存在するかを示す位置情報を管理しており、リレーショナルデータベースの検索処理は、条件に該当するキー値でインデックスをサーチし、条件に合致したエントリの位置情報に存在するユーザデータを取り出すことで高速化を図っている。
ここで述べているユーザデータ本体は、先に説明した表形式のデータモデルにて行として実現される。ここでいう表形式での「行」を実現する具体的なデータ構造については、特許文献１に記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７-２１９６９３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
大規模なリレーショナルデータベースを使用するシステムにおいて世代管理を行うためには、複数のシステム、および、複製を行うのに十分なストレージ容量が必要となる。
複数システムを作成しなければならない問題を解決するための方法としては、特許文献１で開示されているように特定の契機で分離した旧世代と現行世代へのストレージアクセスを同一システム内で分離する方法があるが、複製のためのストレージ容量を削減するまでには至らない。
【０００６】
以上の現状に鑑み、本発明は、クラウドのような大規模なシステムのリレーショナルデータベースにおいて、世代管理を行う際に、表やインデックスそのものを複製することなく、副次インデックスに格納するユーザデータの追加、削除、更新情報のみで世代管理を実施することを可能とし、ストレージ容量を削減することができる、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項１に係る発明は、ストレージ装置に格納されるリレーショナルデータベースを管理するＲＤＢＭＳを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントからユーザデータの追加、削除又は更新の要求があると、前記リレーショナルデータベースのユーザデータが格納される表に対する削除及び／又は追加処理を行うステップと、
前記リレーショナルデータベースのシステム情報表の情報を参照して、前記リレーショナルデータベースに副次インデックスが存在しない場合は、前記リレーショナルデータベースの正インデックスを更新するステップと、
副次インデックスが存在する場合は、更新した表の表内位置情報と操作種別をキーにして副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在する場合は、エントリの操作種別が追加（ＵＰＤＡＴＥ）であれば、更新前行データを退避しておき、エントリの操作種別が追加（ＵＰＤＡＴＥ）でなければ退避は行わず、エントリを削除するステップと、
同じ表内位置情報を持つ副次インデックスのエントリが存在しなかった場合は、副次インデックスにエントリを追加し、その時、エントリの操作種別が追加（ＵＰＤＡＴＥ）の場合、先に退避した更新前行データがあれば、その更新前行データを追加するエントリに設定し、退避した更新前行データがなければ表の更新前行データを設定するステップと、
更新処理が正常に完了した場合は、前記クライアントに対して更新処理が正常終了したことを返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【０００８】
請求項２に係る発明は、前記サーバは、副次インデックスが２本以上存在する時、更新した表の表内位置情報と、追加（ＵＰＤＡＴＥ）又は削除の操作種別とをキーにして副次インデックスをサーチする際に、対象とする副次インデックスを最後に定義した副次インデックスとし、副次インデックスにエントリを追加する際にも、追加する対象の副次インデックスを最後に定義した副次インデックスとするステップを実行することを特徴とする請求項１記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【０００９】
請求項３に係る発明は、ストレージ装置に格納されるリレーショナルデータベースを管理するＲＤＢＭＳを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの現行世代の検索処理が要求された場合、前記リレーショナルデータベースの正インデックスの検索が完了しているか確認するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチし、そのサーチ結果のキー値を持つエントリの表内位置情報、および、操作種別が削除、または、追加（ＵＰＤＡＴＥ）の条件で、前記リレーショナルデータベースのシステム情報表の情報を参照して前記リレーショナルデータベースに副次インデックスが存在するならば副次インデックスをサーチするステップと、
副次インデックスをサーチした結果、条件に合致したエントリが存在する場合、操作種別が削除で無い場合ならば、副次インデックスをサーチして見つかった表内位置情報が同じエントリのキー値が再度条件に合致するかチェックするステップと、
条件に合致すれば、前記クライアントに検索結果の返却を行うステップと、
副次インデックスをサーチした結果、表内位置情報が同じエントリが存在しない場合は、そのまま前記クライアントに検索結果の返却を行うステップと
正インデックスの検索が完了している場合、システム情報表の情報を参照して、副次インデックスが存在し、副次インデックスの検索が完了していない場合、副次インデックスを操作種別が追加（ＩＮＳＥＲＴ）によりサーチを行い、検索結果を前記クライアントに返却するステップと、
副次インデックスの検索が完了している場合、検索処理終了を前記クライアントに返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【００１０】
請求項４に係る発明は、ストレージ装置に格納されるリレーショナルデータベースを管理するＲＤＢＭＳを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの旧世代の検索処理が要求された場合、前記リレーショナルデータベースの正インデックスの検索が完了しているかを確認するステップと、
正インデックスの検索が完了している場合、前記クライアントに検索終了を返却するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチするステップと、
副次インデックスが１本存在する場合に、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加（ＵＰＤＡＴＥ）により前記リレーショナルデータベースの副次インデックスをサーチするステップと、
副次インデックスに表内位置情報が同じエントリがある場合は、副次インデックスのエントリの更新前行データを検索結果に設定するステップと、
更新前行データの設定後、又は、位置情報が同じエントリが存在しない場合は、前記クライアントに検索結果を返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【００１１】
請求項５に係る発明は、前記サーバは、副次インデックスが２本以上存在する時、第１世代の検索が要求された場合は、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加（ＵＰＤＡＴＥ）で副次インデックスをサーチする際に、すべての副次インデックスを作成通番の順にサーチし、最初に見つかった副次インデックスのエントリの更新前行データを検索結果に設定するステップを実行することを特徴とする請求項４記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【００１２】
請求項６に係る発明は、ストレージ装置に格納されるリレーショナルデータベースを管理するＲＤＢＭＳを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの第２世代以降の検索が要求された場合は、前記リレーショナルデータベースの正インデックスの検索が完了しているかを確認するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチするステップと、
前記リレーショナルデータベースの副次インデックスサーチが初回ならば、作成通番が検索対象の世代番号の一つ少ない副次インデックスを検索対象とし、副次インデックスサーチが初回でないならば、前回サーチした副次インデックスよりも作成通番の一つ少ない副次インデックスをサーチ対象として、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加（ＵＰＤＡＴＥ）で副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在する場合は、操作種別が削除でない場合で、副次インデックスのキー値が検索条件に合致する場合、または、表内位置情報が同じエントリが存在しない場合、サーチ済みの副次インデックスの作成通番が１ならば、副次インデックスの作成通番が検索対象の世代番号から最後に作成された副次インデックスの作成通番の順に、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加（ＵＰＤＡＴＥ）で副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在した場合は、更新前行データを検索結果に設定するステップと、
前記クライアントに検索結果の返却を行うステップと
正インデックスの検索が完了している場合、前記リレーショナルデータベースのシステム情報表の情報を参照して、副次インデックスが存在し、副次インデックスの検索が完了していない場合、副次インデックスを操作種別が追加（ＩＮＳＥＲＴ）によりサーチを行い、検索結果を前記クライアントに返却するステップと、
副次インデックスの検索が完了している場合、検索処理終了を前記クライアントに返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【００１３】
請求項７に係る発明は、前記サーバは、
副次インデックスを操作種別が追加（ＩＮＳＥＲＴ）によりサーチを行う際に、副次インデックスのサーチが初回ならば、最初に作成した副次インデックスをサーチ対象とし、次に当該副次インデックスのサーチが完了しているならば、サーチ済みの副次インデックスより一つ多い作成通番と検索対象の世代番号を比較し、等しいならば、副次インデックスのサーチ完了を設定するステップと、
等しくないならば、前回サーチした副次インデックスの次の副次インデックスをサーチ対象とし、当該副次インデックスのサーチが完了していないならば、副次インデックスのサーチを実施するステップとを実行することを特徴とする請求項３又は６記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【発明の効果】
【００１４】
本発明によれば、ＲＤＢＭＳ（Ｒｅｌａｔｉｏｎａｌ  Ｄａｔａｂａｓｅ  Ｍａｎａｇｅｍｅｎｔ  Ｓｙｓｔｅｍ）の世代管理に必要なストレージ容量は、副次インデックスに格納するユーザデータの追加、削除、更新情報のみであり、表やインデックスそのものを複製せずとも、世代管理を実施することを可能とする。
また、旧世代との差分をインデックス構造の副次インデックスに格納することで、検索性能を維持し、かつ、システム使用者に既存に無いリソースを要求せずに発明を実現することが可能である。
更に、本発明によれば、旧世代のデータベースを検索する際は、更新処理と競合がないインデックスを検索すればよいため、検索結果を返却する対象が最新のデータでなくてもよいならば、旧世代データベースの検索による高速な検索についても合わせて実現可能である。
更に又、本発明によれば、ＲＤＢＭＳが世代間の差分情報をインデックスで管理することによって、容量の増加、および、検索や更新の性能の低下を抑え、かつ、インデックスがＲＤＢＭＳの既存資源であることから、新規資源の管理をユーザが意識せずに済むという利点がある。
【図面の簡単な説明】
【００１５】
【図１】ＲＤＢＭＳを含むデータベースシステムのシステム構成図である。
【図２】ＲＤＢＭＳの制御を示す概念図である。
【図３】本発明実施例のＲＤＢＭＳを含むシステム構成図である。
【図４】（ａ）正インデックスエントリの構造である。（ｂ）副次インデックスエントリの構造である。
【図５】ユーザデータの追加、削除の処理を示す流れ図である。
【図６】現行世代のユーザデータを検索する処理を示す流れ図である。
【図７】旧世代のユーザデータを検索する処理を示す流れ図である。
【図８】第Ｍ世代のユーザデータを検索する処理を示す第１の流れ図である。
【図９】第Ｍ世代のユーザデータを検索する処理を示す第２の流れ図である。
【図１０】副次インデックスのエントリに設定する操作種別の一覧である。
【図１１】表に関するシステム情報表のエントリの構造である。
【発明を実施するための形態】
【００１６】
以下、実施例を示した図面を参照しつつ本発明の実施の形態を説明する。
尚、上記サーバ及びクライアントは、コンピュータであり、上記各ステップは、コンピュータのＣＰＵが必要なコンピュータプログラムを読み込んで実行することにより実現されるステップであり、そのフローチャート図が図５乃至図９である。
【００１７】
図１はデータベースシステムの概要を示すブロック構成図を示している。
データベースシステムは、ユーザの操作を受け付けるクライアント１０１、クライアント１０１で動作し、ユーザからの要求を実現するアプリケーションプログラム１０２、サーバであるシステム１０４、クライアント１０１とシステム１０４との間を接続する通信システム１０３、システム１０４に搭載されるＲＤＢＭＳ１０５、ＲＤＢＭＳ１０５がアクセスして管理するリレーショナルデータベースである表１０８と表１０８のインデックスであるインデックス１０７、およびリレーショナルデータベースを格納するストレージ装置１０６で構成される。
【００１８】
システム１０４は、アプリケーションプログラム１０２が動作するためのユーザデータを管理しており、ユーザからのクライアント１０１に対する要求に対応して、アプリケーションプログラム１０２が、システム１０４のＲＤＢＭＳ１０５に対してＳＱＬ（Ｓｔｒｕｃｔｕｒｅｄ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）を発行することで、表１０８へユーザデータを追加したり、インデックス１０７を使用して条件に合致するユーザデータを表１０８から検索したり、表１０８から検索した結果をもとに、表１０８のユーザデータを削除、および更新する制御を行うことで、結果としてアプリケーションプログラム１０２がユーザの要求を実現する。
【００１９】
図１に示すようなシステム１０４が存在する環境において、特定の契機におけるユーザデータを別途管理する場合、システム１０４とは異なるサーバであるシステム１０９を作成してＲＤＢＭＳ１１０を定義し、表１１３とインデックス１１２をストレージ装置１１１に複製した後、クライアント１０１に旧世代へのアクセスを行うように要求された場合は、アプリケーションプログラム１０２がシステム１０９にアクセスを行うことで実現するなど、世代管理を行うためには複数のシステム、および、複製を行うのに十分なストレージ容量が必要となる。
【００２０】
図２はＲＤＢＭＳ２０３に着目した制御の概要を示す図である。
クライアント２０１から通信システム２０２を経由してＲＤＢＭＳ２０３内のデータベースアクセス制御２０４へ制御の受け渡しを行い、要求されたＳＱＬからデータベースアクセス制御２０４が何れの手段でリレーショナルデータベース２１０にアクセスするのかを判断し、ユーザデータの更新ならばＤＢ更新手段２０５をコールし、ユーザデータの検索ならばＤＢ検索手段２０６をコールし、旧世代の作成や解除が要求されたならば、後述する世代間の差分を管理する副次インデックスを操作するために副次インデックス操作手段２０７をコールし、ＤＢ更新手段２０５をコールした場合は、さらに内部的に追加手段２０８、および、削除手段２０９をコールして、リレーショナルデータベース２１０へのアクセスを行う。
【００２１】
一般的なＲＤＢＭＳにはシステム全体の情報を管理するために複数のシステム情報表が定義されており、その中には、ＲＤＢＭＳ全体の表や、表に定義されたインデックスの情報を管理するシステム表が存在している。
この表において、図１１に示すようなエントリ概略図の情報、すなわち、表名１１０１、世代作成数１１０２、インデックス本数１１０３、および、インデックス本数１１０３分の繰返し構造でインデックス名と構成列情報１１０４を保持することで、データベースアクセス制御２０４がこれらの情報をもとに特定の表の世代管理を制御することを可能とする。
【００２２】
世代を作成する方法については、図３で示すように、本発明のＲＤＢＭＳ３０５を使用する環境で、特定の契機で表３０８の旧世代を作成することがクライアント３０１に要求された場合、アプリケーションプログラム３０２が通信システム３０３を介してサーバであるシステム３０４のＲＤＢＭＳ３０５に旧世代を作成する要求であること、および、対象となる表が表３０８であることを通知し、要求を受け取ったＲＤＢＭＳ３０５は、図２に示すデータベースアクセス制御２０４を用いて、旧世代の作成が要求された表３０８を定義してあるインデックスがインデックス３０７（以下、正インデックス３０７）であることをシステム情報表３１０で管理する情報により特定し、正インデックス３０７との差分を管理するためのインデックス３０９（以下、副次インデックス３０９）の作成を行うため、データベースアクセス制御２０４が副次インデックス操作手段２０７を介してストレージ装置３０６に副次インデックス３０９を作成し、表３０８に副次インデックス３０９が存在することを、表３０８、および、システム情報表３１０に記憶する。
【００２３】
図４は正インデックス３０７のエントリ構造と、副次インデックス３０９のエントリ構造であり、正インデックス３０７のエントリが、キー値４０１と表内位置情報４０２で構成されるのに対し、副次インデックス３０９のエントリは操作種別４０３と表内位置情報４０４とキー値４０５および更新前行データ４０６で構成され、操作種別４０３には、ＲＤＢＭＳ３０５で使用する操作系ＳＱＬである、追加（ＩＮＳＥＲＴ）、削除（ＤＥＬＥＴＥ）、更新（ＵＰＤＡＴＥ）による操作を判別するため、図１０に示すように、追加（ＩＮＳＥＲＴ）、追加（ＵＰＤＡＴＥ）、削除、の３種類を設定し、削除についてはＤＥＬＥＴＥによる削除なのか、ＵＰＤＡＴＥによる削除なのかを設定しない。また、更新（ＵＰＤＡＴＥ）処理では、表のデータが上書きされることで、更新前の行データが失われるため、これを副次インデックスのエントリに更新前行データ４０６として保存する。
【００２４】
ユーザデータの追加、削除、更新がクライアント３０１に要求された場合は、アプリケーションプログラム３０２が通信システム３０３を介してＲＤＢＭＳ３０５に通知し、データベースアクセス制御２０４がＤＢ更新手段２０５をコールし、追加（ＩＮＳＥＲＴ）なら追加手段２０８をコールし、削除（ＤＥＬＥＴＥ）なら削除手段２０９をコールし、更新（ＵＰＤＡＴＥ）ならば、削除手段２０９をコールした後に追加手段２０８をコールする。追加手段２０８と削除手段２０９は、図５で示す流れ図に従って、表３０８に対する追加、削除処理を行い（ステップＳ１）、システム情報表３１０の情報を参照して、副次インデックス３０９が存在しない場合（ステップＳ２がＮＯ）は、正インデックス３０７を更新し（ステップＳ３）処理を終了する。
【００２５】
副次インデックスが存在する場合（ステップＳ２がＹＥＳ）は、更新した表３０８の表内位置情報４０４と操作種別４０３をキーにして副次インデックス３０９をサーチ（ステップＳ４）し、表内位置情報４０２が同じエントリが存在する場合(ステップＳ５がＹＥＳ）は、エントリの操作種別４０３が追加（ＵＰＤＡＴＥ）であれば（ステップＳ６がＹＥＳ）、この後の追加要求で副次インデックスにエントリを追加する際に、更新前行データとして設定を行うため更新前行データ４０６を退避しておき（ステップＳ７）、エントリの操作種別４０３が追加（ＵＰＤＡＴＥ）でなければ（ステップＳ６がＮＯ）退避は行わない。その後、エントリを削除して（ステップＳ８）処理を終了する。
【００２６】
同じ表内位置情報４０２を持つ副次インデックスのエントリが存在しなかった場合（ステップＳ５がＮＯ）は、副次インデックスにエントリを追加し（ステップＳ９）、追加するエントリの更新前行データ４０６には、ステップＳ７で更新前行データを退避していれば、その退避した更新前行データを設定し、そうでなければ表３０８の更新前行データを設定する（ステップＳ１０）。ＤＢ更新処理が正常に完了した場合は、ＤＢ更新手段２０５からデータベースアクセス制御２０４へ制御を移し、通信システム２０２を経由してクライアント２０１に対して更新処理が正常終了したことを返却する。
【００２７】
現行世代の検索処理がクライアント３０１に要求された場合、アプリケーションプログラム３０２が通信システム３０３を介してＲＤＢＭＳ３０５に現行世代データベースに対する検索であることを通知し、データベースアクセス制御２０４がＤＢ検索手段２０６をコールし、図６で示す流れ図に従って、正インデックス３０７の検索が完了しているかを確認し（ステップＳ１１）、正インデックス３０７の検索が未完の場合（ステップＳ１１がＹＥＳ）、正インデックス３０７をサーチし（ステップＳ１２）、そのサーチで検索結果としてＤＢ検索手段に返却することが決定した、キー値４０１を持つエントリの表内位置情報４０２、および、操作種別４０３が削除、または、追加（ＵＰＤＡＴＥ）の条件で、システム情報表３１０の情報をもとに（参照して）副次インデックス３０９が存在するならば副次インデックス３０９をサーチする（ステップＳ１３）。
【００２８】
副次インデックスをサーチした結果、条件に合致したエントリが存在する場合（ステップＳ１４がＹＥＳ）、エントリの操作種別４０３が削除ならば（ステップＳ１５がＹＥＳ）、ステップＳ１１に移動し、操作種別４０３が削除で無い場合（ステップＳ１５がＮＯ）ならば、副次インデックス３０９をサーチして見つかった表内位置情報４０４が同じエントリのキー値４０５が再度条件に合致するかチェックし（ステップＳ１６）、検索条件に合致しなければ（ステップＳ１７がＮＯ）ステップＳ１１に移動し、検索条件に合致すれば、検索結果の返却を行う（ステップＳ１９）。位置情報が同じエントリが存在しない場合（ステップＳ１４がＮＯ）は、そのまま検索結果の返却を行う（ステップＳ１９）。
【００２９】
正インデックス３０７の検索が完了している場合（ステップＳ１１がＮＯ）、検索結果として返却していないエントリが副次インデックス３０９内に残っている場合があるため、システム情報表３１０の情報をもとに（参照して）、副次インデックス３０９が存在するならば、続けて副次インデックス３０９のサーチを行う。副次インデックス３０９の検索が完了していない場合（ステップＳ１８がＹＥＳ）、副次インデックス３０９を操作種別が追加（ＩＮＳＥＲＴ）でサーチを行い（ステップＳ２０）検索結果を返却（ステップＳ２２）し、副次インデックス３０９の検索が完了している場合（ステップＳ１８がＮＯ）、検索処理を終了する（ステップＳ２１）。
返却された検索結果や、検索処理の終了は、ＤＢ検索手段２０６からデータベースアクセス制御２０４に渡り、通信システム２０２を経由してクライアント２０１に対して処理結果として返却する。
【００３０】
旧世代の検索処理がクライアント３０１に要求された場合、アプリケーションプログラム３０２が通信システム３０３を介してＲＤＢＭＳ３０５に旧世代データベースに対する検索であることを通知し、データベースアクセス制御２０４がＤＢ検索手段２０６をコールし、図７で示す流れ図に従って、正インデックス３０７の検索が完了しているかを確認し（ステップＳ２４）、正インデックス３０７の検索が未完の場合（ステップＳ２４がＹＥＳ）、正インデックス３０７をサーチし（ステップＳ２５）、正インデックス３０７で検索条件に合致したエントリの表内位置情報４０４、および、操作種別４０３が追加（ＵＰＤＡＴＥ）で副次インデックス３０９をサーチし（ステップＳ２７）、表内位置情報４０４が同じエントリがある場合（ステップＳ２８がＹＥＳ）は、表３０８の更新前データが失われているため、副次インデックスのエントリの更新前行データ４０６を検索結果に設定し（ステップＳ２９）、更新前行データ４０６の設定後、又は、副次インデックス３０９に正インデックス３０７の位置情報と同じエントリが存在しない場合（ステップＳ２８がＮＯ）は検索結果を返却し（ステップＳ３０）、正インデックス３０７の検索が完了している場合（ステップＳ２４がＮＯ）ならば検索終了を返却する（ステップＳ２６）。
返却された検索結果や、検索処理の終了は、ＤＢ検索手段２０６からデータベースアクセス制御２０４に渡り、通信システム２０２を経由してクライアント２０１に対して処理結果として返却する。
【００３１】
作成する世代が二世代以下の場合は上記制御を行うが、ＲＤＢＭＳにおける世代管理では、旧世代と現行世代の二世代だけではなく、三代以上の世代を作成することがあるため、三世代以上の世代を作成した場合の、副次インデックス作成、更新、および、検索の制御について述べる。
【００３２】
すでに副次インデックス３０９が存在し、旧世代が作成されている表３０８に対して、現状の旧世代とは異なる世代の作成がクライアント３０１に要求された場合、アプリケーションプログラム３０２が通信システム３０３を介してＲＤＢＭＳ３０５に旧世代を作成する要求であること、および、対象となる表が表３０８であることを通知し、要求を受け取ったＲＤＢＭＳ３０５は旧世代の作成が要求された表３０８に定義してあるインデックスをシステム情報表３１０で管理する情報をもとに（参照して）、正インデックス３０７であること、および、副次インデックス３０９が定義されていることを検知し、図２に示すデータベースアクセス制御２０４が副次インデックス操作手段２０７を介してストレージ装置３０６に副次インデックス３０９とは異なる副次インデックス３１１を作成し、表３０８に副次インデックス３１１を作成したことを、表３０８、および、システム情報表３１０に記憶する。
【００３３】
以下、副次インデックスがＮ本存在し、かつ、Ｎが２以上の場合、つまり、当該表に対する世代作成要求が２回以上要求された場合について説明するが、最初に作成した副次インデックスを副次インデックス（１）、次に作成した副次インデックスを副次インデックス（２）、最後に作成した副次インデックスを副次インデックス（Ｎ）として通番を割り当てていることを前提に説明を行い、この通番を副次インデックスの作成通番と呼ぶことにする。
【００３４】
追加、削除、更新処理が要求された場合、図５で示す流れ図に従うのは、副次インデックスが１本の場合と変わらないが、更新した表３０８の表内位置情報４０４と操作種別４０３｛追加（ＵＰＤＡＴＥ）、削除｝をキーにして副次インデックスをサーチ（ステップＳ４）する際に、対象とする副次インデックスを最後に定義した副次インデックス（Ｎ）とし、副次インデックスにエントリを追加する（ステップＳ９）際にも、追加する対象の副次インデックスを副次インデックス（Ｎ）とする。
【００３５】
第Ｍ世代の検索処理が要求された場合、検索対象の世代が第１世代かどうかで制御が分かれるが、ここでいう第１世代、第２世代とは、ＲＤＢＭＳに対して、世代の作成を要求した順であり、第１世代の検索を要求すると、最初に世代の作成を要求した時点と同じ検索結果が返却され、第２世代の検索を要求すると、２番目に世代作成を要求した時点と同じ検索結果が返却される。
第１世代の検索が要求された場合は、基本的に図７で示す流れ図に従って処理を行うが、サーチ対象となる副次インデックスが複数本となるため、図７で示す流れ図と異なるのは、正インデックスで検索条件に合致したエントリの表内位置情報４０２、および、操作種別４０３が追加（ＵＰＤＡＴＥ）で副次インデックス３０９をサーチする（ステップＳ２７）際に、副次インデックス（１）、副次インデックス（２）、…、副次インデックス（Ｎ）の順にすべての副次インデックスをサーチし、最初に見つかった副次インデックスのエントリの更新前行データ４０６を検索結果に設定することである。
【００３６】
第２世代以降の検索が要求された場合は、基本的に図６で示す流れ図に従って処理を行うが、存在する副次インデックスが２本以上になるため、サーチ対象となる副次インデクスの範囲を決定する必要がある。
図６で示す流れ図と異なるのは、図６の副次インデックスのサーチ（ステップＳ１３）から検索結果返却（ステップＳ１９）までの範囲であるため、その処理の差分の処理を図８に示す。
副次インデックスサーチが初回（ステップＳ３１がＹＥＳ）ならば、作成通番が（検索対象の世代番号Ｍ−１）の副次インデックスを検索対象とし（ステップＳ３３）、副次インデックスサーチが初回でない（ステップＳ３１がＮＯ）ならば、前回サーチした副次インデックスよりも作成通番の一つ少ない副次インデックスをサーチ対象とする（ステップＳ３２）。例えば、前回サーチしたのが副次インデックス（３）ならば、副次インデックス（２）をサーチの対象に切り替える。
【００３７】
正インデックスで検索条件に合致したエントリの表内位置情報４０２、および、操作種別４０３が追加（ＵＰＤＡＴＥ）で副次インデックス３０９をサーチし（ステップＳ３４）、表内位置情報が同じエントリが存在する場合（ステップＳ３５がＹＥＳ）は、操作種別が削除ならば（ステップＳ３６がＹＥＳ）ステップＳ１１に移動し、操作種別４０３が削除でない場合（ステップＳ３６がＮＯ）、副次インデックスのキー値４０５が検索条件に合致しないならば（ステップＳ３７がＮＯ）、ステップＳ１１に移動し、検索条件に合致するか（ステップＳ３７がＹＥＳ）、または、正インデックスの位置情報と同じエントリが存在しない（ステップＳ３５がＮＯ）で、サーチ済みの副次インデックスの作成通番が１でないならば（ステップＳ３８がＮＯ）、ステップＳ３１に移動し、サーチ済みの副次インデックスの作成通番が１（ステップＳ３８がＹＥＳ）ならば、副次インデックスの作成通番が検索対象の世代番号であるＭから最後に作成された副次インデックスの作成通番の順に、正インデックスで検索条件に合致したエントリの表内位置情報４０２、および、操作種別４０３が追加（ＵＰＤＡＴＥ）で副次インデックスをサーチする（ステップＳ３９）。
【００３８】
つまり、例えば副次インデックス作成通番が１から１０まで存在するとして、検索対象の世代管理番号が４だとした場合、副次インデクスの作成通番が４の副次インデックス（４）から、作成通番が１０の副次インデックス（１０）の順にサーチを行うことになる。
表内位置情報が同じエントリが存在した場合（ステップＳ４０がＹＥＳ）は、更新前行データ４０６を検索結果に設定（ステップＳ４１）し、ステップＳ１９に移動する。
【００３９】
また、図６で正インデックス３０７の検索が完了している場合（ステップＳ１１がＮＯ）、システム情報表３１０の情報をもとに（参照して）、副次インデックスが存在するならば、続けて操作種別が追加（ＩＮＳＥＲＴ）で副次インデックスのサーチを開始する（ステップＳ２０）が、この際には、図９で示す流れ図のように、副次インデックスのサーチが初回ならば（ステップＳ４２がＹＥＳ）、副次インデックス（１）をサーチ対象とし（ステップＳ４３）、次に当該副次インデックスのサーチが完了しているならば（ステップＳ４４がＹＥＳ）、サーチ済みの副次インデックスよりも一つ多い作成通番と検索対象の世代番号Ｍを比較し（ステップＳ４５）、等しいならば（ステップＳ４５がＹＥＳ）、検索対象となるすべての副次インデックスのサーチが完了しているため、副次インデックスのサーチ完了を設定し（ステップＳ４７）、等しくないならば（ステップＳ４５がＮＯ）、前回サーチした副次インデックスの次の副次インデックスをサーチ対象とし（ステップＳ４６）、当該インデックスのサーチが完了していないならば（ステップＳ４４がＮＯ）、副次インデックスのサーチを実施する（ステップＳ４８）。
【００４０】
また、世代管理の解除をクライアント３０１に要求された場合、アプリケーションプログラム３０２が通信システム３０３を介してＲＤＢＭＳ３０５に世代の削除する要求であること、および、対象となる表が表３０８であることを通知し、データベースアクセス制御２０４が旧世代の解除を要求された表３０８に定義してある副次インデックスをシステム情報表３１０で管理する情報をもとに特定し、副次インデックス操作手段２０７を介してストレージ装置３０６に定義された副次インデックスをすべて削除し、その後、表３０８に格納されているデータをもとに、正インデックス３０７を再作成する。
【符号の説明】
【００４１】
１０１，２０１，３０１  クライアント
１０３，２０２，３０３  通信システム
１０５，１１０，２０３，３０５  ＲＤＢＭＳ
１０６，１１１，３０６  ストレージ装置
１０８，１１３，３０８  表
２１０  リレーショナルデータベース
３０７  正インデックス
３０９  副次インデックス
３１０  システム情報表
４０２，４０４  表内位置情報
４０３  操作種別
４０６  更新前行データ
【図１】
0005484298.tif 000002
【図２】
0005484298.tif 000003
【図３】
0005484298.tif 000004
【図４】
0005484298.tif 000005
【図５】
0005484298.tif 000006
【図６】
0005484298.tif 000007
【図７】
0005484298.tif 000008
【図８】
0005484298.tif 000009
【図９】
0005484298.tif 000010
【図１０】
0005484298.tif 000011
【図１１】
0005484298.tif 000012