説明

リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法

【課題】リレーショナルデータベースにおいて世代管理を行う際に、ストレージ容量を削減することができる、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供する。
【解決手段】システム304は、ユーザデータが格納される表308に対する削除及び/又は追加処理を行うステップと、データベースに副次インデックス309が存在しない場合は、正インデックス307を更新するステップと、副次インデックス309が存在し、更新した表308の表内位置情報と同じエントリが存在し、エントリの操作種別が追加(UPDATE)であれば、更新前行データを退避しておき、エントリを削除するステップと、同じエントリが存在しなかった場合は、副次インデックス309にエントリを追加し、エントリの操作種別が追加(UPDATE)であれば、退避した更新前行データ又は表の更新前行データを設定するステップとを実行する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リレーショナルデータベースの世代管理方法に関し、特に大量のストレージを必要とするリレーショナルデータベースにおいてストレージ容量を削減する方法に関する。
【背景技術】
【0002】
情報技術の発展によりソフトウェアの扱うデータ量は年々増加の一途を辿っている。ディスク装置の価格が安価となった現在でも、ユーザのニーズを満たすためには、ストレージ容量の削減がシステム要件の一つとなっている。
近年、ネットワークの高速化および、セキュリティ重視の傾向から、計算機資源を集中させた、いわゆるクラウド形態のシステムが徐々に普及している。このようなシステムでは、多数のユーザがシステムの資源を利用するため、非常に大規模なストレージ構成が必要となる。
データ管理を行うシステムとしては、リレーショナルデータベースが代表的なミドルウェアであり、ユーザデータを格納する表、および、インデックスと呼ばれる表への索引で構成される。
【0003】
インデックスに格納するエントリは、表を構成する特定の要素群(列)の特定の値(キー値)と、そのキー値を含むユーザデータが表内のどこに存在するかを示す位置情報を管理しており、リレーショナルデータベースの検索処理は、条件に該当するキー値でインデックスをサーチし、条件に合致したエントリの位置情報に存在するユーザデータを取り出すことで高速化を図っている。
ここで述べているユーザデータ本体は、先に説明した表形式のデータモデルにて行として実現される。ここでいう表形式での「行」を実現する具体的なデータ構造については、特許文献1に記載されている。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2007-219693号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
大規模なリレーショナルデータベースを使用するシステムにおいて世代管理を行うためには、複数のシステム、および、複製を行うのに十分なストレージ容量が必要となる。
複数システムを作成しなければならない問題を解決するための方法としては、特許文献1で開示されているように特定の契機で分離した旧世代と現行世代へのストレージアクセスを同一システム内で分離する方法があるが、複製のためのストレージ容量を削減するまでには至らない。
【0006】
以上の現状に鑑み、本発明は、クラウドのような大規模なシステムのリレーショナルデータベースにおいて、世代管理を行う際に、表やインデックスそのものを複製することなく、副次インデックスに格納するユーザデータの追加、削除、更新情報のみで世代管理を実施することを可能とし、ストレージ容量を削減することができる、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供することを目的とする。
【課題を解決するための手段】
【0007】
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項1に係る発明は、ストレージ装置に格納されるリレーショナルデータベースを管理するRDBMSを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントからユーザデータの追加、削除又は更新の要求があると、前記リレーショナルデータベースのユーザデータが格納される表に対する削除及び/又は追加処理を行うステップと、
前記リレーショナルデータベースのシステム情報表の情報を参照して、前記リレーショナルデータベースに副次インデックスが存在しない場合は、前記リレーショナルデータベースの正インデックスを更新するステップと、
副次インデックスが存在する場合は、更新した表の表内位置情報と操作種別をキーにして副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在する場合は、エントリの操作種別が追加(UPDATE)であれば、更新前行データを退避しておき、エントリの操作種別が追加(UPDATE)でなければ退避は行わず、エントリを削除するステップと、
同じ表内位置情報を持つ副次インデックスのエントリが存在しなかった場合は、副次インデックスにエントリを追加し、その時、エントリの操作種別が追加(UPDATE)の場合、先に退避した更新前行データがあれば、その更新前行データを追加するエントリに設定し、退避した更新前行データがなければ表の更新前行データを設定するステップと、
更新処理が正常に完了した場合は、前記クライアントに対して更新処理が正常終了したことを返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【0008】
請求項2に係る発明は、前記サーバは、副次インデックスが2本以上存在する時、更新した表の表内位置情報と、追加(UPDATE)又は削除の操作種別とをキーにして副次インデックスをサーチする際に、対象とする副次インデックスを最後に定義した副次インデックスとし、副次インデックスにエントリを追加する際にも、追加する対象の副次インデックスを最後に定義した副次インデックスとするステップを実行することを特徴とする請求項1記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【0009】
請求項3に係る発明は、ストレージ装置に格納されるリレーショナルデータベースを管理するRDBMSを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの現行世代の検索処理が要求された場合、前記リレーショナルデータベースの正インデックスの検索が完了しているか確認するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチし、そのサーチ結果のキー値を持つエントリの表内位置情報、および、操作種別が削除、または、追加(UPDATE)の条件で、前記リレーショナルデータベースのシステム情報表の情報を参照して前記リレーショナルデータベースに副次インデックスが存在するならば副次インデックスをサーチするステップと、
副次インデックスをサーチした結果、条件に合致したエントリが存在する場合、操作種別が削除で無い場合ならば、副次インデックスをサーチして見つかった表内位置情報が同じエントリのキー値が再度条件に合致するかチェックするステップと、
条件に合致すれば、前記クライアントに検索結果の返却を行うステップと、
副次インデックスをサーチした結果、表内位置情報が同じエントリが存在しない場合は、そのまま前記クライアントに検索結果の返却を行うステップと
正インデックスの検索が完了している場合、システム情報表の情報を参照して、副次インデックスが存在し、副次インデックスの検索が完了していない場合、副次インデックスを操作種別が追加(INSERT)によりサーチを行い、検索結果を前記クライアントに返却するステップと、
副次インデックスの検索が完了している場合、検索処理終了を前記クライアントに返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【0010】
請求項4に係る発明は、ストレージ装置に格納されるリレーショナルデータベースを管理するRDBMSを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの旧世代の検索処理が要求された場合、前記リレーショナルデータベースの正インデックスの検索が完了しているかを確認するステップと、
正インデックスの検索が完了している場合、前記クライアントに検索終了を返却するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチするステップと、
副次インデックスが1本存在する場合に、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加(UPDATE)により前記リレーショナルデータベースの副次インデックスをサーチするステップと、
副次インデックスに表内位置情報が同じエントリがある場合は、副次インデックスのエントリの更新前行データを検索結果に設定するステップと、
更新前行データの設定後、又は、位置情報が同じエントリが存在しない場合は、前記クライアントに検索結果を返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【0011】
請求項5に係る発明は、前記サーバは、副次インデックスが2本以上存在する時、第1世代の検索が要求された場合は、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加(UPDATE)で副次インデックスをサーチする際に、すべての副次インデックスを作成通番の順にサーチし、最初に見つかった副次インデックスのエントリの更新前行データを検索結果に設定するステップを実行することを特徴とする請求項4記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【0012】
請求項6に係る発明は、ストレージ装置に格納されるリレーショナルデータベースを管理するRDBMSを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの第2世代以降の検索が要求された場合は、前記リレーショナルデータベースの正インデックスの検索が完了しているかを確認するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチするステップと、
前記リレーショナルデータベースの副次インデックスサーチが初回ならば、作成通番が検索対象の世代番号の一つ少ない副次インデックスを検索対象とし、副次インデックスサーチが初回でないならば、前回サーチした副次インデックスよりも作成通番の一つ少ない副次インデックスをサーチ対象として、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加(UPDATE)で副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在する場合は、操作種別が削除でない場合で、副次インデックスのキー値が検索条件に合致する場合、または、表内位置情報が同じエントリが存在しない場合、サーチ済みの副次インデックスの作成通番が1ならば、副次インデックスの作成通番が検索対象の世代番号から最後に作成された副次インデックスの作成通番の順に、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加(UPDATE)で副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在した場合は、更新前行データを検索結果に設定するステップと、
前記クライアントに検索結果の返却を行うステップと
正インデックスの検索が完了している場合、前記リレーショナルデータベースのシステム情報表の情報を参照して、副次インデックスが存在し、副次インデックスの検索が完了していない場合、副次インデックスを操作種別が追加(INSERT)によりサーチを行い、検索結果を前記クライアントに返却するステップと、
副次インデックスの検索が完了している場合、検索処理終了を前記クライアントに返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【0013】
請求項7に係る発明は、前記サーバは、
副次インデックスを操作種別が追加(INSERT)によりサーチを行う際に、副次インデックスのサーチが初回ならば、最初に作成した副次インデックスをサーチ対象とし、次に当該副次インデックスのサーチが完了しているならば、サーチ済みの副次インデックスより一つ多い作成通番と検索対象の世代番号を比較し、等しいならば、副次インデックスのサーチ完了を設定するステップと、
等しくないならば、前回サーチした副次インデックスの次の副次インデックスをサーチ対象とし、当該副次インデックスのサーチが完了していないならば、副次インデックスのサーチを実施するステップとを実行することを特徴とする請求項3又は6記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法を提供するものである。
【発明の効果】
【0014】
本発明によれば、RDBMS(Relational Database Management System)の世代管理に必要なストレージ容量は、副次インデックスに格納するユーザデータの追加、削除、更新情報のみであり、表やインデックスそのものを複製せずとも、世代管理を実施することを可能とする。
また、旧世代との差分をインデックス構造の副次インデックスに格納することで、検索性能を維持し、かつ、システム使用者に既存に無いリソースを要求せずに発明を実現することが可能である。
更に、本発明によれば、旧世代のデータベースを検索する際は、更新処理と競合がないインデックスを検索すればよいため、検索結果を返却する対象が最新のデータでなくてもよいならば、旧世代データベースの検索による高速な検索についても合わせて実現可能である。
更に又、本発明によれば、RDBMSが世代間の差分情報をインデックスで管理することによって、容量の増加、および、検索や更新の性能の低下を抑え、かつ、インデックスがRDBMSの既存資源であることから、新規資源の管理をユーザが意識せずに済むという利点がある。
【図面の簡単な説明】
【0015】
【図1】RDBMSを含むデータベースシステムのシステム構成図である。
【図2】RDBMSの制御を示す概念図である。
【図3】本発明実施例のRDBMSを含むシステム構成図である。
【図4】(a)正インデックスエントリの構造である。(b)副次インデックスエントリの構造である。
【図5】ユーザデータの追加、削除の処理を示す流れ図である。
【図6】現行世代のユーザデータを検索する処理を示す流れ図である。
【図7】旧世代のユーザデータを検索する処理を示す流れ図である。
【図8】第M世代のユーザデータを検索する処理を示す第1の流れ図である。
【図9】第M世代のユーザデータを検索する処理を示す第2の流れ図である。
【図10】副次インデックスのエントリに設定する操作種別の一覧である。
【図11】表に関するシステム情報表のエントリの構造である。
【発明を実施するための形態】
【0016】
以下、実施例を示した図面を参照しつつ本発明の実施の形態を説明する。
尚、上記サーバ及びクライアントは、コンピュータであり、上記各ステップは、コンピュータのCPUが必要なコンピュータプログラムを読み込んで実行することにより実現されるステップであり、そのフローチャート図が図5乃至図9である。
【0017】
図1はデータベースシステムの概要を示すブロック構成図を示している。
データベースシステムは、ユーザの操作を受け付けるクライアント101、クライアント101で動作し、ユーザからの要求を実現するアプリケーションプログラム102、サーバであるシステム104、クライアント101とシステム104との間を接続する通信システム103、システム104に搭載されるRDBMS105、RDBMS105がアクセスして管理するリレーショナルデータベースである表108と表108のインデックスであるインデックス107、およびリレーショナルデータベースを格納するストレージ装置106で構成される。
【0018】
システム104は、アプリケーションプログラム102が動作するためのユーザデータを管理しており、ユーザからのクライアント101に対する要求に対応して、アプリケーションプログラム102が、システム104のRDBMS105に対してSQL(Structured Query Language)を発行することで、表108へユーザデータを追加したり、インデックス107を使用して条件に合致するユーザデータを表108から検索したり、表108から検索した結果をもとに、表108のユーザデータを削除、および更新する制御を行うことで、結果としてアプリケーションプログラム102がユーザの要求を実現する。
【0019】
図1に示すようなシステム104が存在する環境において、特定の契機におけるユーザデータを別途管理する場合、システム104とは異なるサーバであるシステム109を作成してRDBMS110を定義し、表113とインデックス112をストレージ装置111に複製した後、クライアント101に旧世代へのアクセスを行うように要求された場合は、アプリケーションプログラム102がシステム109にアクセスを行うことで実現するなど、世代管理を行うためには複数のシステム、および、複製を行うのに十分なストレージ容量が必要となる。
【0020】
図2はRDBMS203に着目した制御の概要を示す図である。
クライアント201から通信システム202を経由してRDBMS203内のデータベースアクセス制御204へ制御の受け渡しを行い、要求されたSQLからデータベースアクセス制御204が何れの手段でリレーショナルデータベース210にアクセスするのかを判断し、ユーザデータの更新ならばDB更新手段205をコールし、ユーザデータの検索ならばDB検索手段206をコールし、旧世代の作成や解除が要求されたならば、後述する世代間の差分を管理する副次インデックスを操作するために副次インデックス操作手段207をコールし、DB更新手段205をコールした場合は、さらに内部的に追加手段208、および、削除手段209をコールして、リレーショナルデータベース210へのアクセスを行う。
【0021】
一般的なRDBMSにはシステム全体の情報を管理するために複数のシステム情報表が定義されており、その中には、RDBMS全体の表や、表に定義されたインデックスの情報を管理するシステム表が存在している。
この表において、図11に示すようなエントリ概略図の情報、すなわち、表名1101、世代作成数1102、インデックス本数1103、および、インデックス本数1103分の繰返し構造でインデックス名と構成列情報1104を保持することで、データベースアクセス制御204がこれらの情報をもとに特定の表の世代管理を制御することを可能とする。
【0022】
世代を作成する方法については、図3で示すように、本発明のRDBMS305を使用する環境で、特定の契機で表308の旧世代を作成することがクライアント301に要求された場合、アプリケーションプログラム302が通信システム303を介してサーバであるシステム304のRDBMS305に旧世代を作成する要求であること、および、対象となる表が表308であることを通知し、要求を受け取ったRDBMS305は、図2に示すデータベースアクセス制御204を用いて、旧世代の作成が要求された表308を定義してあるインデックスがインデックス307(以下、正インデックス307)であることをシステム情報表310で管理する情報により特定し、正インデックス307との差分を管理するためのインデックス309(以下、副次インデックス309)の作成を行うため、データベースアクセス制御204が副次インデックス操作手段207を介してストレージ装置306に副次インデックス309を作成し、表308に副次インデックス309が存在することを、表308、および、システム情報表310に記憶する。
【0023】
図4は正インデックス307のエントリ構造と、副次インデックス309のエントリ構造であり、正インデックス307のエントリが、キー値401と表内位置情報402で構成されるのに対し、副次インデックス309のエントリは操作種別403と表内位置情報404とキー値405および更新前行データ406で構成され、操作種別403には、RDBMS305で使用する操作系SQLである、追加(INSERT)、削除(DELETE)、更新(UPDATE)による操作を判別するため、図10に示すように、追加(INSERT)、追加(UPDATE)、削除、の3種類を設定し、削除についてはDELETEによる削除なのか、UPDATEによる削除なのかを設定しない。また、更新(UPDATE)処理では、表のデータが上書きされることで、更新前の行データが失われるため、これを副次インデックスのエントリに更新前行データ406として保存する。
【0024】
ユーザデータの追加、削除、更新がクライアント301に要求された場合は、アプリケーションプログラム302が通信システム303を介してRDBMS305に通知し、データベースアクセス制御204がDB更新手段205をコールし、追加(INSERT)なら追加手段208をコールし、削除(DELETE)なら削除手段209をコールし、更新(UPDATE)ならば、削除手段209をコールした後に追加手段208をコールする。追加手段208と削除手段209は、図5で示す流れ図に従って、表308に対する追加、削除処理を行い(ステップS1)、システム情報表310の情報を参照して、副次インデックス309が存在しない場合(ステップS2がNO)は、正インデックス307を更新し(ステップS3)処理を終了する。
【0025】
副次インデックスが存在する場合(ステップS2がYES)は、更新した表308の表内位置情報404と操作種別403をキーにして副次インデックス309をサーチ(ステップS4)し、表内位置情報402が同じエントリが存在する場合(ステップS5がYES)は、エントリの操作種別403が追加(UPDATE)であれば(ステップS6がYES)、この後の追加要求で副次インデックスにエントリを追加する際に、更新前行データとして設定を行うため更新前行データ406を退避しておき(ステップS7)、エントリの操作種別403が追加(UPDATE)でなければ(ステップS6がNO)退避は行わない。その後、エントリを削除して(ステップS8)処理を終了する。
【0026】
同じ表内位置情報402を持つ副次インデックスのエントリが存在しなかった場合(ステップS5がNO)は、副次インデックスにエントリを追加し(ステップS9)、追加するエントリの更新前行データ406には、ステップS7で更新前行データを退避していれば、その退避した更新前行データを設定し、そうでなければ表308の更新前行データを設定する(ステップS10)。DB更新処理が正常に完了した場合は、DB更新手段205からデータベースアクセス制御204へ制御を移し、通信システム202を経由してクライアント201に対して更新処理が正常終了したことを返却する。
【0027】
現行世代の検索処理がクライアント301に要求された場合、アプリケーションプログラム302が通信システム303を介してRDBMS305に現行世代データベースに対する検索であることを通知し、データベースアクセス制御204がDB検索手段206をコールし、図6で示す流れ図に従って、正インデックス307の検索が完了しているかを確認し(ステップS11)、正インデックス307の検索が未完の場合(ステップS11がYES)、正インデックス307をサーチし(ステップS12)、そのサーチで検索結果としてDB検索手段に返却することが決定した、キー値401を持つエントリの表内位置情報402、および、操作種別403が削除、または、追加(UPDATE)の条件で、システム情報表310の情報をもとに(参照して)副次インデックス309が存在するならば副次インデックス309をサーチする(ステップS13)。
【0028】
副次インデックスをサーチした結果、条件に合致したエントリが存在する場合(ステップS14がYES)、エントリの操作種別403が削除ならば(ステップS15がYES)、ステップS11に移動し、操作種別403が削除で無い場合(ステップS15がNO)ならば、副次インデックス309をサーチして見つかった表内位置情報404が同じエントリのキー値405が再度条件に合致するかチェックし(ステップS16)、検索条件に合致しなければ(ステップS17がNO)ステップS11に移動し、検索条件に合致すれば、検索結果の返却を行う(ステップS19)。位置情報が同じエントリが存在しない場合(ステップS14がNO)は、そのまま検索結果の返却を行う(ステップS19)。
【0029】
正インデックス307の検索が完了している場合(ステップS11がNO)、検索結果として返却していないエントリが副次インデックス309内に残っている場合があるため、システム情報表310の情報をもとに(参照して)、副次インデックス309が存在するならば、続けて副次インデックス309のサーチを行う。副次インデックス309の検索が完了していない場合(ステップS18がYES)、副次インデックス309を操作種別が追加(INSERT)でサーチを行い(ステップS20)検索結果を返却(ステップS22)し、副次インデックス309の検索が完了している場合(ステップS18がNO)、検索処理を終了する(ステップS21)。
返却された検索結果や、検索処理の終了は、DB検索手段206からデータベースアクセス制御204に渡り、通信システム202を経由してクライアント201に対して処理結果として返却する。
【0030】
旧世代の検索処理がクライアント301に要求された場合、アプリケーションプログラム302が通信システム303を介してRDBMS305に旧世代データベースに対する検索であることを通知し、データベースアクセス制御204がDB検索手段206をコールし、図7で示す流れ図に従って、正インデックス307の検索が完了しているかを確認し(ステップS24)、正インデックス307の検索が未完の場合(ステップS24がYES)、正インデックス307をサーチし(ステップS25)、正インデックス307で検索条件に合致したエントリの表内位置情報404、および、操作種別403が追加(UPDATE)で副次インデックス309をサーチし(ステップS27)、表内位置情報404が同じエントリがある場合(ステップS28がYES)は、表308の更新前データが失われているため、副次インデックスのエントリの更新前行データ406を検索結果に設定し(ステップS29)、更新前行データ406の設定後、又は、副次インデックス309に正インデックス307の位置情報と同じエントリが存在しない場合(ステップS28がNO)は検索結果を返却し(ステップS30)、正インデックス307の検索が完了している場合(ステップS24がNO)ならば検索終了を返却する(ステップS26)。
返却された検索結果や、検索処理の終了は、DB検索手段206からデータベースアクセス制御204に渡り、通信システム202を経由してクライアント201に対して処理結果として返却する。
【0031】
作成する世代が二世代以下の場合は上記制御を行うが、RDBMSにおける世代管理では、旧世代と現行世代の二世代だけではなく、三代以上の世代を作成することがあるため、三世代以上の世代を作成した場合の、副次インデックス作成、更新、および、検索の制御について述べる。
【0032】
すでに副次インデックス309が存在し、旧世代が作成されている表308に対して、現状の旧世代とは異なる世代の作成がクライアント301に要求された場合、アプリケーションプログラム302が通信システム303を介してRDBMS305に旧世代を作成する要求であること、および、対象となる表が表308であることを通知し、要求を受け取ったRDBMS305は旧世代の作成が要求された表308に定義してあるインデックスをシステム情報表310で管理する情報をもとに(参照して)、正インデックス307であること、および、副次インデックス309が定義されていることを検知し、図2に示すデータベースアクセス制御204が副次インデックス操作手段207を介してストレージ装置306に副次インデックス309とは異なる副次インデックス311を作成し、表308に副次インデックス311を作成したことを、表308、および、システム情報表310に記憶する。
【0033】
以下、副次インデックスがN本存在し、かつ、Nが2以上の場合、つまり、当該表に対する世代作成要求が2回以上要求された場合について説明するが、最初に作成した副次インデックスを副次インデックス(1)、次に作成した副次インデックスを副次インデックス(2)、最後に作成した副次インデックスを副次インデックス(N)として通番を割り当てていることを前提に説明を行い、この通番を副次インデックスの作成通番と呼ぶことにする。
【0034】
追加、削除、更新処理が要求された場合、図5で示す流れ図に従うのは、副次インデックスが1本の場合と変わらないが、更新した表308の表内位置情報404と操作種別403{追加(UPDATE)、削除}をキーにして副次インデックスをサーチ(ステップS4)する際に、対象とする副次インデックスを最後に定義した副次インデックス(N)とし、副次インデックスにエントリを追加する(ステップS9)際にも、追加する対象の副次インデックスを副次インデックス(N)とする。
【0035】
第M世代の検索処理が要求された場合、検索対象の世代が第1世代かどうかで制御が分かれるが、ここでいう第1世代、第2世代とは、RDBMSに対して、世代の作成を要求した順であり、第1世代の検索を要求すると、最初に世代の作成を要求した時点と同じ検索結果が返却され、第2世代の検索を要求すると、2番目に世代作成を要求した時点と同じ検索結果が返却される。
第1世代の検索が要求された場合は、基本的に図7で示す流れ図に従って処理を行うが、サーチ対象となる副次インデックスが複数本となるため、図7で示す流れ図と異なるのは、正インデックスで検索条件に合致したエントリの表内位置情報402、および、操作種別403が追加(UPDATE)で副次インデックス309をサーチする(ステップS27)際に、副次インデックス(1)、副次インデックス(2)、…、副次インデックス(N)の順にすべての副次インデックスをサーチし、最初に見つかった副次インデックスのエントリの更新前行データ406を検索結果に設定することである。
【0036】
第2世代以降の検索が要求された場合は、基本的に図6で示す流れ図に従って処理を行うが、存在する副次インデックスが2本以上になるため、サーチ対象となる副次インデクスの範囲を決定する必要がある。
図6で示す流れ図と異なるのは、図6の副次インデックスのサーチ(ステップS13)から検索結果返却(ステップS19)までの範囲であるため、その処理の差分の処理を図8に示す。
副次インデックスサーチが初回(ステップS31がYES)ならば、作成通番が(検索対象の世代番号M−1)の副次インデックスを検索対象とし(ステップS33)、副次インデックスサーチが初回でない(ステップS31がNO)ならば、前回サーチした副次インデックスよりも作成通番の一つ少ない副次インデックスをサーチ対象とする(ステップS32)。例えば、前回サーチしたのが副次インデックス(3)ならば、副次インデックス(2)をサーチの対象に切り替える。
【0037】
正インデックスで検索条件に合致したエントリの表内位置情報402、および、操作種別403が追加(UPDATE)で副次インデックス309をサーチし(ステップS34)、表内位置情報が同じエントリが存在する場合(ステップS35がYES)は、操作種別が削除ならば(ステップS36がYES)ステップS11に移動し、操作種別403が削除でない場合(ステップS36がNO)、副次インデックスのキー値405が検索条件に合致しないならば(ステップS37がNO)、ステップS11に移動し、検索条件に合致するか(ステップS37がYES)、または、正インデックスの位置情報と同じエントリが存在しない(ステップS35がNO)で、サーチ済みの副次インデックスの作成通番が1でないならば(ステップS38がNO)、ステップS31に移動し、サーチ済みの副次インデックスの作成通番が1(ステップS38がYES)ならば、副次インデックスの作成通番が検索対象の世代番号であるMから最後に作成された副次インデックスの作成通番の順に、正インデックスで検索条件に合致したエントリの表内位置情報402、および、操作種別403が追加(UPDATE)で副次インデックスをサーチする(ステップS39)。
【0038】
つまり、例えば副次インデックス作成通番が1から10まで存在するとして、検索対象の世代管理番号が4だとした場合、副次インデクスの作成通番が4の副次インデックス(4)から、作成通番が10の副次インデックス(10)の順にサーチを行うことになる。
表内位置情報が同じエントリが存在した場合(ステップS40がYES)は、更新前行データ406を検索結果に設定(ステップS41)し、ステップS19に移動する。
【0039】
また、図6で正インデックス307の検索が完了している場合(ステップS11がNO)、システム情報表310の情報をもとに(参照して)、副次インデックスが存在するならば、続けて操作種別が追加(INSERT)で副次インデックスのサーチを開始する(ステップS20)が、この際には、図9で示す流れ図のように、副次インデックスのサーチが初回ならば(ステップS42がYES)、副次インデックス(1)をサーチ対象とし(ステップS43)、次に当該副次インデックスのサーチが完了しているならば(ステップS44がYES)、サーチ済みの副次インデックスよりも一つ多い作成通番と検索対象の世代番号Mを比較し(ステップS45)、等しいならば(ステップS45がYES)、検索対象となるすべての副次インデックスのサーチが完了しているため、副次インデックスのサーチ完了を設定し(ステップS47)、等しくないならば(ステップS45がNO)、前回サーチした副次インデックスの次の副次インデックスをサーチ対象とし(ステップS46)、当該インデックスのサーチが完了していないならば(ステップS44がNO)、副次インデックスのサーチを実施する(ステップS48)。
【0040】
また、世代管理の解除をクライアント301に要求された場合、アプリケーションプログラム302が通信システム303を介してRDBMS305に世代の削除する要求であること、および、対象となる表が表308であることを通知し、データベースアクセス制御204が旧世代の解除を要求された表308に定義してある副次インデックスをシステム情報表310で管理する情報をもとに特定し、副次インデックス操作手段207を介してストレージ装置306に定義された副次インデックスをすべて削除し、その後、表308に格納されているデータをもとに、正インデックス307を再作成する。
【符号の説明】
【0041】
101,201,301 クライアント
103,202,303 通信システム
105,110,203,305 RDBMS
106,111,306 ストレージ装置
108,113,308 表
210 リレーショナルデータベース
307 正インデックス
309 副次インデックス
310 システム情報表
402,404 表内位置情報
403 操作種別
406 更新前行データ

【特許請求の範囲】
【請求項1】
ストレージ装置に格納されるリレーショナルデータベースを管理するRDBMSを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントからユーザデータの追加、削除又は更新の要求があると、前記リレーショナルデータベースのユーザデータが格納される表に対する削除及び/又は追加処理を行うステップと、
前記リレーショナルデータベースのシステム情報表の情報を参照して、前記リレーショナルデータベースに副次インデックスが存在しない場合は、前記リレーショナルデータベースの正インデックスを更新するステップと、
副次インデックスが存在する場合は、更新した表の表内位置情報と操作種別をキーにして副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在する場合は、エントリの操作種別が追加(UPDATE)であれば、更新前行データを退避しておき、エントリの操作種別が追加(UPDATE)でなければ退避は行わず、エントリを削除するステップと、
同じ表内位置情報を持つ副次インデックスのエントリが存在しなかった場合は、副次インデックスにエントリを追加し、その時、エントリの操作種別が追加(UPDATE)の場合、先に退避した更新前行データがあれば、その更新前行データを追加するエントリに設定し、退避した更新前行データがなければ表の更新前行データを設定するステップと、
更新処理が正常に完了した場合は、前記クライアントに対して更新処理が正常終了したことを返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項2】
前記サーバは、副次インデックスが2本以上存在する時、更新した表の表内位置情報と、追加(UPDATE)又は削除の操作種別とをキーにして副次インデックスをサーチする際に、対象とする副次インデックスを最後に定義した副次インデックスとし、副次インデックスにエントリを追加する際にも、追加する対象の副次インデックスを最後に定義した副次インデックスとするステップを実行することを特徴とする請求項1記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項3】
ストレージ装置に格納されるリレーショナルデータベースを管理するRDBMSを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの現行世代の検索処理が要求された場合、前記リレーショナルデータベースの正インデックスの検索が完了しているか確認するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチし、そのサーチ結果のキー値を持つエントリの表内位置情報、および、操作種別が削除、または、追加(UPDATE)の条件で、前記リレーショナルデータベースのシステム情報表の情報を参照して前記リレーショナルデータベースに副次インデックスが存在するならば副次インデックスをサーチするステップと、
副次インデックスをサーチした結果、条件に合致したエントリが存在する場合、操作種別が削除で無い場合ならば、副次インデックスをサーチして見つかった表内位置情報が同じエントリのキー値が再度条件に合致するかチェックするステップと、
条件に合致すれば、前記クライアントに検索結果の返却を行うステップと、
副次インデックスをサーチした結果、表内位置情報が同じエントリが存在しない場合は、そのまま前記クライアントに検索結果の返却を行うステップと
正インデックスの検索が完了している場合、システム情報表の情報を参照して、副次インデックスが存在し、副次インデックスの検索が完了していない場合、副次インデックスを操作種別が追加(INSERT)によりサーチを行い、検索結果を前記クライアントに返却するステップと、
副次インデックスの検索が完了している場合、検索処理終了を前記クライアントに返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項4】
ストレージ装置に格納されるリレーショナルデータベースを管理するRDBMSを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの旧世代の検索処理が要求された場合、前記リレーショナルデータベースの正インデックスの検索が完了しているかを確認するステップと、
正インデックスの検索が完了している場合、前記クライアントに検索終了を返却するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチするステップと、
副次インデックスが1本存在する場合に、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加(UPDATE)により前記リレーショナルデータベースの副次インデックスをサーチするステップと、
副次インデックスに表内位置情報が同じエントリがある場合は、副次インデックスのエントリの更新前行データを検索結果に設定するステップと、
更新前行データの設定後、又は、位置情報が同じエントリが存在しない場合は、前記クライアントに検索結果を返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項5】
前記サーバは、副次インデックスが2本以上存在する時、第1世代の検索が要求された場合は、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加(UPDATE)で副次インデックスをサーチする際に、すべての副次インデックスを作成通番の順にサーチし、最初に見つかった副次インデックスのエントリの更新前行データを検索結果に設定するステップを実行することを特徴とする請求項4記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項6】
ストレージ装置に格納されるリレーショナルデータベースを管理するRDBMSを搭載するサーバが、通信システムを介してクライアントに接続されるデータベースシステムに於いて、リレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法であって、
前記サーバは、
前記クライアントから前記リレーショナルデータベースの第2世代以降の検索が要求された場合は、前記リレーショナルデータベースの正インデックスの検索が完了しているかを確認するステップと、
正インデックスの検索が未完の場合、正インデックスをサーチするステップと、
前記リレーショナルデータベースの副次インデックスサーチが初回ならば、作成通番が検索対象の世代番号の一つ少ない副次インデックスを検索対象とし、副次インデックスサーチが初回でないならば、前回サーチした副次インデックスよりも作成通番の一つ少ない副次インデックスをサーチ対象として、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加(UPDATE)で副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在する場合は、操作種別が削除でない場合で、副次インデックスのキー値が検索条件に合致する場合、または、表内位置情報が同じエントリが存在しない場合、サーチ済みの副次インデックスの作成通番が1ならば、副次インデックスの作成通番が検索対象の世代番号から最後に作成された副次インデックスの作成通番の順に、正インデックスで検索条件に合致したエントリの表内位置情報、および、操作種別が追加(UPDATE)で副次インデックスをサーチするステップと、
表内位置情報が同じエントリが存在した場合は、更新前行データを検索結果に設定するステップと、
前記クライアントに検索結果の返却を行うステップと
正インデックスの検索が完了している場合、前記リレーショナルデータベースのシステム情報表の情報を参照して、副次インデックスが存在し、副次インデックスの検索が完了していない場合、副次インデックスを操作種別が追加(INSERT)によりサーチを行い、検索結果を前記クライアントに返却するステップと、
副次インデックスの検索が完了している場合、検索処理終了を前記クライアントに返却するステップとを実行することを特徴とするリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。
【請求項7】
前記サーバは、
副次インデックスを操作種別が追加(INSERT)によりサーチを行う際に、副次インデックスのサーチが初回ならば、最初に作成した副次インデックスをサーチ対象とし、次に当該副次インデックスのサーチが完了しているならば、サーチ済みの副次インデックスより一つ多い作成通番と検索対象の世代番号を比較し、等しいならば、副次インデックスのサーチ完了を設定するステップと、
等しくないならば、前回サーチした副次インデックスの次の副次インデックスをサーチ対象とし、当該副次インデックスのサーチが完了していないならば、副次インデックスのサーチを実施するステップとを実行することを特徴とする請求項3又は6記載のリレーショナルデータベースを使用した世代管理におけるストレージ容量削減方法。

【図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

【図10】
image rotate

【図11】
image rotate