(57)【要約】【課題】業務を停止せずに再編成を実施できるデータベース再編成システムを提供する。【解決手段】ファイルを論理的に分割したページ単位で管理するデータベースを格納するディスクドライブを備え、データベースのファイル内のページを操作し再編成を実施する再編成手段を搭載するコンピュータから成るデータベース再編成システムであって、再編成手段は、更新トランザクションによるデータの削除により、データが０件になった削除ページ数が所定の値に達したとき自動的に再編成実施を開始させる手段と、データベース領域の使用中ページがある領域を削除データ部、移動データ部の２つに分け、削除データ部の前部の削除ページ又は未使用ページである移動先ページに移動データ部の後部の使用中ページである移動元ページの内容を移動する手段と、削除データ部に削除ページが無くなれば移動データ部を削除データ部に設定する手段等を備えている。【選択図】図６
2009020793.tif 000002
【特許請求の範囲】
【請求項１】
ファイルを論理的に分割したページ単位で管理するデータベースを格納するディスクドライブを備え、前記データベースのファイル内のページを操作し再編成を実施する再編成手段を搭載するコンピュータから成るデータベース再編成システムであって、
前記再編成手段は、
更新トランザクションによるデータの削除を行った時にページ内のデータが０件になった場合の通知を受け、データが０件になった削除ページ数が所定の値に達したとき自動的に再編成実施を開始させる手段と、
データベース領域の使用中ページがある領域を削除データ部、移動データ部の２つに分け、残りの領域の未使用ページ領域をデータが追加された時にデータを入れる追加データ部とする手段と、
削除データ部の前部から削除ページ、もしくは未使用ページを検索し、移動先ページを決定する手段と、
移動データ部を後部から使用中ページを検索し、移動元ページを決定する手段と、
移動元のページの内容を移動先ページに移動する手段と、
移動先のページに移動した時刻を設定する手段と、
移動元ページに移動先ページをポイントする情報と移動した時刻を設定する手段と、
表にインデクスが定義されていればインデクスがポイントしている先を、移動元ページから、移動先ページに変更する手段と、
削除データ部に削除ページがあり、移動データ部にも使用中ページがあれば移動先ページの決定からの前記処理を再度繰り返す手段と、
削除データ部に削除ページが無ければ移動データ部を削除データ部に設定する手段と、
削除データ部に削除ページがあり、移動データ部に使用中ページが無ければ移動データ部を削除データ部にマージする手段と、
移動データ部を削除データ部にしたあと、その時動作しているトランザクションを検索する手段と、
その後検索したトランザクションが全て決着するまで待つ手段と、
トランザクションが全て決着したら移動元のページを全て解放し、未使用ページにする手段と、
追加データ部にデータが追加され、使用中ページがあれば使用中ページを含む領域を移動データ部に設定し、再度削除データ部から削除ページの検索を実施する手段と、
追加データ部に追加データが無ければ、追加位置から前方に使用中ページを検索し、そのページの次のページを追加データ位置に設定する手段と、
その間にあった削除ページを解放し未使用ページにする手段とを備えることを特徴とするデータベース再編成システム。
【請求項２】
請求項１記載のデータベース再編成システムに於けるコンピュータが備える検索手段又は更新手段によって行なうページ取得方法であって、
前記検索手段又は更新手段が、
インデクスを使用した処理の場合、インデクスをたどりインデクスがポイントするページを取得するステップと、
ページが移動していれば、ページ内の移動先のポイントしている情報を使用し、目的のページを取得するステップと、
インデクスを使用しない処理の場合、検索開始時に開始時刻を取得するステップと、
表のページを先頭から順に取得するステップと、
ページ内に移動した印があれば、ページ内の移動時刻と検索開始時刻を比較し、検索開始時刻より移動時刻が遅ければ移動後のページを取得するステップと、
検索開始時刻より移動時刻が早ければ次のページの処理を行うステップと、
一方、移動した印が無い場合、ページ内の移動時刻と、検索開始の時刻を比較するステップと、
検索開始時刻より移動時刻が早い場合、次のページの処理をするステップと、
検索開始時刻より移動時刻が遅ければそのページの内容を参照するステップと、
ページの内容が目的のページでない場合は次のページの処理に行くステップとを実行することを特徴とするページ取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、業務を停止せずに再編成を実施できるようにすることで、再編成実施時期を検討することなく、またデータベース管理者が再編成を実施することを意識せずに再編成を実施することができるデータベース再編成システム及びページ取得方法に関するものである。
【背景技術】
【０００２】
データベースシステムは一般的にデータを格納するデータベースファイルをページ単位に論理的に分割して管理している。データの追加、更新、削除を繰り返すと、データの断片化が発生する。断片化が発生すると格納効率や、性能が悪化するため、断片化を解消する必要がある。この処理を再編成という。データベースの管理者は定期的にデータベースファイルの再編成を実施し、断片化を解消する必要がある。
【０００３】
データベースファイルの再編成は一般に、データベースファイル内のデータを抽出し、そのデータを先頭のページから順に挿入していき、断片化を解消する。そのため再編成中はデータベースにアクセスすることが出来なくなるため、業務を中断しない再編成方法として特許文献１のようにデータベースを2重化し、片方で再編成を実施し、もう片方でデータベースにアクセスさせる方法や特許文献２のように再編成の対象を小さくして業務を中断する時間を短くし、影響を小さくする方法などがある。
【特許文献１】特開２００６−１１９８２２号公報
【特許文献２】特開平５−３１３９６１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
データベースファイルの再編成を実施すると、実施中はデータベースにアクセスすることができなくなる。また特許文献１のようにデータベースを２重化して業務を実施する方法もあるが、この方法はデータベースの容量が２倍必要になる。また、特許文献２の方法はデータベースにアクセスできない時間は短くなるが、やはり再編成中は業務が中断してしまう。またこれらの方法は、ユーザが明示的に実施する必要があり、実施する時期を検討する必要がある。
【０００５】
以上の現状に鑑み、本発明は、業務を停止せずに再編成を実施できるようにすることで、再編成実施時期を検討することなく、またデータベース管理者が再編成を実施することを意識せずに再編成を実施することができるデータベース再編成システム及びページ取得方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記の課題を解決すべく、本発明は以下の構成を提供する。
請求項１に係る発明は、ファイルを論理的に分割したページ単位で管理するデータベースを格納するディスクドライブを備え、前記データベースのファイル内のページを操作し再編成を実施する再編成手段を搭載するコンピュータから成るデータベース再編成システムであって、
前記再編成手段は、
更新トランザクションによるデータの削除を行った時にページ内のデータが０件になった場合の通知を受け、データが０件になった削除ページ数が所定の値に達したとき自動的に再編成実施を開始させる手段と、
データベース領域の使用中ページがある領域を削除データ部、移動データ部の２つに分け、残りの領域の未使用ページ領域をデータが追加された時にデータを入れる追加データ部とする手段と、
削除データ部の前部から削除ページ、もしくは未使用ページを検索し、移動先ページを決定する手段と、
移動データ部を後部から使用中ページを検索し、移動元ページを決定する手段と、
移動元のページの内容を移動先ページに移動する手段と、
移動先のページに移動した時刻を設定する手段と、
移動元ページに移動先ページをポイントする情報と移動した時刻を設定する手段と、
表にインデクスが定義されていればインデクスがポイントしている先を、移動元ページから、移動先ページに変更する手段と、
削除データ部に削除ページがあり、移動データ部にも使用中ページがあれば移動先ページの決定からの前記処理を再度繰り返す手段と、
削除データ部に削除ページが無ければ移動データ部を削除データ部に設定する手段と、
削除データ部に削除ページがあり、移動データ部に使用中ページが無ければ移動データ部を削除データ部にマージする手段と、
移動データ部を削除データ部にしたあと、その時動作しているトランザクションを検索する手段と、
その後検索したトランザクションが全て決着するまで待つ手段と、
トランザクションが全て決着したら移動元のページを全て解放し、未使用ページにする手段と、
追加データ部にデータが追加され、使用中ページがあれば使用中ページを含む領域を移動データ部に設定し、再度削除データ部から削除ページの検索を実施する手段と、
追加データ部に追加データが無ければ、追加位置から前方に使用中ページを検索し、そのページの次のページを追加データ位置に設定する手段と、
その間にあった削除ページを解放し未使用ページにする手段とを備えることを特徴とするデータベース再編成システムを提供するものである。
【０００７】
請求項２に係る発明は、請求項１記載のデータベース再編成システムに於けるコンピュータが備える検索手段又は更新手段によって行なうページ取得方法であって、
前記検索手段又は更新手段が、
インデクスを使用した処理の場合、インデクスをたどりインデクスがポイントするページを取得するステップと、
ページが移動していれば、ページ内の移動先のポイントしている情報を使用し、目的のページを取得するステップと、
インデクスを使用しない処理の場合、検索開始時に開始時刻を取得するステップと、
表のページを先頭から順に取得するステップと、
ページ内に移動した印があれば、ページ内の移動時刻と検索開始時刻を比較し、検索開始時刻より移動時刻が遅ければ移動後のページを取得するステップと、
検索開始時刻より移動時刻が早ければ次のページの処理を行うステップと、
一方、移動した印が無い場合、ページ内の移動時刻と、検索開始の時刻を比較するステップと、
検索開始時刻より移動時刻が早い場合、次のページの処理をするステップと、
検索開始時刻より移動時刻が遅ければそのページの内容を参照するステップと、
ページの内容が目的のページでない場合は次のページの処理に行くステップとを実行することを特徴とするページ取得方法を提供するものである。
【発明の効果】
【０００８】
本発明によれば、オンライン業務を実行中にデータベースの再編成を実行することが可能になる。従って、データベースのシステム管理者は、業務を停止し、再編成を実行するスケジュールを立てたりする必要が無くなり、２４時間業務が可能になる。
【発明を実施するための最良の形態】
【０００９】
以下、本発明の再編成処理と再編成時の検索・更新処理を図面に基づき説明する。
図１は本データベース再編成システム及びページ取得方法で動作するプロセスの関連図である。本データベース再編成システムは、ファイルを論理的に分割したページ単位で管理するデータベースファイル１０３を格納するディスクドライブを備え、データベースファイル１０３内のページを操作し再編成を実施する再編成手段である再編成プロセス１０１を搭載するコンピュータから成り、更に、前記コンピュータは、更新手段である更新トランザクションのプロセス１０２と、検索手段である検索トランザクションのプロセス１０４（以下１０２と１０４をあわせて検索・更新トランザクションと表す）とを搭載している。
【００１０】
再編成プロセス１０１はデータベースファイル１０３内のページを操作し再編成を実施する。検索トランザクションはデータベースファイル１０３内から目的のデータの存在するページを検索する。更新トランザクションはデータベース内にデータを追加および、ページ内のデータを更新、削除する。更新および削除する時は、検索トランザクションと同じく目的のデータが格納されているページを検索する処理を行う。
【００１１】
図２は再編成を実施する契機を示す図である。更新トランザクションによるデータの削除を行った時にページ内のデータが０件になった場合（ステップ２０１）、プロセス間通信により再編成プロセスに通知する（ステップ２０２）。再編成プロセスは削除されたページ（削除ページ）数が特定の値（例えばユーザに指定させたページ数）に達したとき、自動的に再編成を実施するようにし（ステップ２０３）、データベース管理者に再編成を意識させないようにする。
【００１２】
図３はデータベース領域中のページの状態で、一度ページを割り当て、データを挿入したが、その後の更新トランザクションによる削除でページ内にデータが一件も無くなった削除ページ３０１、ページを割り当て、データを挿入し、現在もデータが存在する使用中ページ３０２、データを削除して０件になり、その後ページが解放された未使用ページ３０３、一度もデータが割り当てられておらず、更新により新たにページにデータを追加する時に割り当てられる未使用ページ３０４がある。削除ページは検索、更新トランザクションが参照することが出来るが、未使用ページは、検索、更新トランザクションは参照できないものとする。また次の更新でデータを追加する時、追加するページを割り当てるページの位置を追加ページ位置とし、追加ページ位置のページを割り当てた時、次のページが追加ページ位置になる。
【００１３】
図４は移動するページと移動先ページを決めるために、データベース領域を論理的に分割した図である。データベース領域の使用中ページがある領域を削除データ部４０１、移動データ部４０２の２つに分け、残りの領域の未使用ページ領域はデータが追加された時にデータを入れる追加データ部４０３とする。このように分けた領域を図５のフローに従ってページの移動を行う。
図６は移動処理時のデータベースファイルの内容を図示したものである。
【００１４】
削除データ部の前部から削除ページ、もしくは未使用ページを検索し、移動先ページを決定する（ステップ５０１）。移動データ部の後部から使用中ページを検索し、移動元ページを決定する（ステップ５０２）。そして、移動元ページの内容を移動先ページに移動する（ステップ５０３、６０１）。移動先ページに移動した時刻を設定する（ステップ５０４）。移動元ページに移動先ページをポイントする情報と移動した時刻を設定する（ステップ５０５）。表にインデクスが定義されていればインデクスがポイントしている先を、移動元ページから、移動先ページに変更する（ステップ５０６、５０７）。
【００１５】
インデクスの更新と、ページの更新内容は図８のようになる。削除データ部に削除ページがあり、移動データ部にも使用中ページがあれば移動先ページの決定からの処理を再度繰り返す（ステップ５０８、５０９）。削除データ部に削除ページが無ければ移動データ部を削除データ部に設定する（ステップ５０８、５１０、６０２）。削除データ部に削除ページがあり、移動データ部に使用中ページが無ければ移動データ部を削除データ部にマージする（ステップ５０９、５１１、６０３）。削除データ部の削除ページ、もしくは移動データ部の使用中ページが無くなり、移動データ部を削除データ部にしたあと、その時動作しているトランザクションを検索する（ステップ５１２）。そして、検索したトランザクションが全て決着するまで待つ（ステップ５１３）。トランザクションが全て決着したら移動元ページを全て解放し、未使用ページにする（ステップ５１４）。追加データ部にデータが追加され、使用中ページがあれば使用中ページを含む領域を移動データ部に設定し、再度削除データ部から削除ページの検索を実施する（ステップ５１５、５１６）。追加データ部に追加データが無ければ、追加位置から前方に使用中ページを検索し、そのページの次のページを追加データ位置に設定し、その間にあった削除ページを解放し未使用ページにする（ステップ５１７、７０２）。
このようにして使用中ページを前方に、削除ページ、未使用ページを後方に移動させ、追加位置を使用中ページの次のページに設定することにより再編成を行ったのと同じ状態になる。
【００１６】
次に検索および更新トランザクションの表のページ決定処理について説明する。データベースのページ検索処理は主にインデクスを使用した処理とインデクスを使用しない処理に分けられる。インデクスを使用した処理はインデクスがポイントするページを直接参照する。インデクスを使用しない処理は表の全ページを参照し、目的のページを決定する。
【００１７】
ページの移動と、インデクスの更新によるインデクスを使用した検索のタイミングを図１０に示す。ページを移動する前のタイミング１００１と、ページを移動してから、インデクスを更新するまでのタイミング１００２と、インデクスを更新した後のタイミング１００３の３つに分けられる。タイミング１００１と１００３はインデクスとページが一致しているためそのままインデクスが指しているページを目的のページとする。タイミング１００２はインデクスと目的のページが不一致になっているため、問題になる。インデクスを使用したページ決定処理方式は図９のフローチャートにしたがって目的のページを決定する。インデクスをたどりインデクスがポイントするページを取得する（ステップ９０１）。ページが移動していなければそのページが目的のページになる。ページが移動していれば、ページ内の移動先のポイントしている情報を使用し、目的のページを取得する（ステップ９０２、９０３）。
【００１８】
次にインデクスを使用しないページ決定処理のタイミングを図１２に示す。移動先のページを検索するタイミングと、移動元のページを検索するタイミングで５つのタイミングがある。移動前に移動元のページを検索するタイミング１２０１。移動前に移動先のページを通過するが、移動元を検索するときは移動後のタイミング１２０２。検索のトランザクションは移動前に始まるが、移動後に移動先と移動元を検索するタイミング１２０３。検索のトランザクションは移動後に始まり、移動後に移動先と移動元を検索するタイミング１２０４。移動後に移動先を検索し、移動元のページを検索するときには移動元が開放されているタイミング１２０５、１２０６。
【００１９】
タイミング１２０１の検索は移動した情報がないため、通常の検索になる。タイミング１２０２〜１２０６の検索はどちらのページを有効にしてページを取得するかをページ内の情報によって決定する。検索トランザクション開始時刻より後にページが移動されていれば移動元のページを参照し、そのポインタから移動後のページを参照する。検索トランザクション開始時刻より前にページが移動されていれば移動先のページを参照し、移動元のページは参照しない。
【００２０】
インデクスを使用しないページ決定処理方式を図１１のフローチャートに従って決定する。検索開始時に開始時刻を取得する（ステップ１１０１）。表のページを先頭から順に取得する（ステップ１１０２）。ページ内に移動した印があれば、ページ内の移動時刻と検索開始時刻を比較し、検索開始時刻より移動時刻が遅ければ移動後のページを取得する（ステップ１１０３、１１０４、１１０５）。早ければ次のページの処理を行う。次に移動した印が無ければ、移動先かも知れないため、ページ内の移動時刻と、検索開始の時刻を比較する（ステップ１１０６）。検索開始時刻より移動時刻が早ければ次のページの処理をする。遅ければ、そのページの内容を参照する（ステップ１１０７）。ページの内容が目的のページでない場合は次のページの処理に行く（ステップ１１０８）。ページの内容が目的のページの場合は検索完了になるが、大抵は目的のページが何ページあるかわからないため、目的のページが見つかっても次のページの処理に行く。
【００２１】
以上の処理を行うことにより、データを検索・更新中にページが移動されても検索結果や更新結果が不正になることがないため、再編成プロセスは検索・更新トランザクションと同時に実行できる。
【図面の簡単な説明】
【００２２】
【図１】本発明による本データベース再編成システム及びページ取得方法で動作するプロセスの関連図である。
【図２】本発明による更新トランザクションにより再編成プロセスが動作する処理を示す図である。
【図３】本発明によるデータベース領域のページの種類を示す図である。
【図４】本発明による再編成を実施するためのデータベース部分を論理的に分割した図である。
【図５】本発明によるデータベース領域のページ移動処理を表すフローチャートである。
【図６】本発明によるページを移動した後のデータベース部分の論理的に分割する内容の変更内容を示す図である。
【図７】本発明によるデータベースの再編成処理の最終処理を示す図である。
【図８】本発明によるページを移動したときの移動元ページと移動先ページとインデクスの更新内容を示す図である。
【図９】本発明によるインデクスを使用したページ決定処理を表すフローチャートである。
【図１０】本発明によるページの移動と、インデクスの更新によるタイミングを表す図である。
【図１１】本発明によるインデクスを使用しないページ決定処理を表すフローチャートである。
【図１２】本発明によるページの移動とトランザクションがページを参照するタイミングを表す図である。
【符号の説明】
【００２３】
３０１  削除ページ
３０２  使用中ページ
３０３，３０４  未使用ページ
４０１  削除データ部
４０２  移動データ部
４０３  追加データ部
【図１】
2009020793.tif 000003
【図２】
2009020793.tif 000004
【図３】
2009020793.tif 000005
【図４】
2009020793.tif 000006
【図５】
2009020793.tif 000007
【図６】
2009020793.tif 000008
【図７】
2009020793.tif 000009
【図８】
2009020793.tif 000010
【図９】
2009020793.tif 000011
【図１０】
2009020793.tif 000012
【図１１】
2009020793.tif 000013
【図１２】
2009020793.tif 000014