(57)【要約】【課題】ユーザからの問合せ要求を受付け解析し処理を実行し、データを記憶装置上に管理、保持するデータベース管理システムにおいて、バックアップや再編成などのメンテナンスに要するコストの削減する。【解決手段】データベースを構成する各レコード毎に、前回の再編成実施からデータが更新されたかどうかを示す情報（フラグ）を保持し、問合せにおけるデータの挿入および更新時に当該情報を設定する。一方、データベースの再編成時に当該情報を使用することで、前回の再編成実施から更新されていないデータレコードを特定の記憶装置に配置する。【選択図】  図９
2006106991.tif 000002
【特許請求の範囲】
【請求項１】
ユーザからの問合せ要求を受付け解析し処理を実行し、データを記憶装置上に管理、保持するデータベース管理システムにおいて、前回の再編成実施からデータが更新されたかどうかの情報を、データベースを構成する各レコード毎に保持し、データベースの再編成時にこの情報を使用することで、前回の再編成実施から更新されていないデータレコードを特定の記憶装置に配置することを特徴とするデータベースの再編成管理方法。
【請求項２】
ユーザからの問合せ要求を受付け解析し処理を実行し、データを記憶装置上に管理、保持するデータベース管理システムにおいて、データが挿入または更新された際の日時情報（年、月、日、時、分、秒）を、データベースを構成する各レコード毎に保持し、データベースの再編成時にこの情報を使用することで、一定期間更新されていないデータレコードを特定の記憶装置に配置することを特徴とするデータベースの再編成管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、リレーショナルデータベース管理システムに関し、特に、データの配置を再編成する技術に関するものである。
【背景技術】
【０００２】
データベース管理システムとは、データベースを記憶装置上に管理、保持するコンピュータシステムである。特に、リレーショナルデータベース管理システムが管理する、リレ−ショナルデータベースは、二次元の表（あるいは、リレーション）の集合から成り、かつ、この表は複数の行（レコード）から構成されている。
【０００３】
また、行は、複数個の列（フィールド）から構成され、各列には、その列の特性を示すデータ型、データ長などが規定される。
このようなリレーショナルデータベースの利用時、ユーザまたはアプリケーションプログラムは、データベースに対する要求を、リレーショナルデータベース管理システムに発行する（「問合せ」と呼ぶ）ことにより、リレーショナルデータベース中のデータを処理（選択、更新、挿入または削除）する。
【０００４】
このようなリレーショナル・データベース管理システムへの問合せ言語として一般的なものは、ＩＳＯ ９０７５、ＪＩＳ Ｘ３００５において規格化されているＳＱＬが知られている。このＳＱＬにおいて、問合せは非定型である。
【０００５】
一般的に、データベース管理システムでは、システムの運用に従う表に対する問合せによって、データの挿入、更新、および削除に伴い、データの格納状態に乱れが生じる。
データベースのデータは、複数の行を含む物理的に固定長のページという単位で、記憶装置の中で複数の連続したページに格納されているが、こうした物理的に連続したページが、データベースの更新等によって、途中のページが空きになったり、あるページの行の数が極端に少なくなることがある。
このような乱れは、データベースの肥大化を引き起こし、記憶装置を必要以上に圧迫する要因となる。
【０００６】
そこで、このような場合には、通常、空いているページやページ内の空き領域を有効利用するために詰め替え処理（コンパクション）を施し、記憶装置内のデータベースの再編成を行う。
従来のデータベースの再編成では、記憶装置における物理的なデータレコードの配置を変更するが、その配置の決定については、再編成前に配置されている順序のまま、削除されたデータレコードを除いて記憶装置に格納する方法や、キーとなる列に格納されているデータ値を評価することにより格納する記憶装置を決定する方法がある。
【０００７】
キーとなる列データ値により格納する記憶装置を決定する方法には、複数の記憶装置に対してデータ量が均一になるように格納するラウンドロビン、キーとなる列データ値の範囲を条件として指定することによって格納する記憶装置を決定するキーレンジ分割、キーとなる列データ値に対しハッシュ関数を適用することによって格納する記憶装置を決定するハッシュ分割などがある。
このように格納されたデータベースを再編成する技術としては、例えば、アクセス頻度の高い記憶装置のデータレコードを分割し、アクセスの負荷を均等にする方法が開示されている（特許文献１参照）。この公知例では、記憶装置毎にアクセス頻度情報を保持することにより、特定の記憶装置へのアクセス集中を解決するものである。
【０００８】
また、この他にアクセス頻度情報を保持する技術として、各インデクスキー毎のアクセス頻度情報を使用し、一定期間アクセスされないインデクスを削除することにより、データベースの能力低下を防止する方法が開示されている（特許文献２参照）。
【０００９】
これらは、いずれも問合せ要求におけるデータベースの処理能力を向上する技術であるが、データベースの再編成において、格納する記憶装置を決定するための情報として使用しておらず、バックアップや再編成などデータベースのメンテナンスに要するコストの削減には寄与しない。
【００１０】
【特許文献１】特開平６−１３９１１９号公報（第７−９頁、第６図）
【特許文献２】特開平９−１６６０７号公報（第４頁、第５図）
【発明の開示】
【発明が解決しようとする課題】
【００１１】
近年、計算機の飛躍的向上や記憶装置の大規模化に伴い、データベース管理システムが扱うデータは増大する傾向にあり、データベース容量も大容量化した。また、業務の電子化が推進されたことによりデータベースの重要度も高くなり、バックアップや再編成などのメンテナンス運用が欠かせなくなっている。このような状況で、メンテナンスに要するコストの削減は重要な課題である。
従来技術によるデータベース再編成では、記憶装置における配置の決定については、キーとなる列データ値を評価することにより、格納する記憶装置を決定していた。この方法は、問合せにおけるアクセスの負荷を均等にする上では有効な手段であるが、各データレコードそれぞれのデータが更新されたかどうかの情報を保持していないため、更新のあったデータレコードと更新のなかったデータレコードが同一記憶装置中に混在することになる。そのため、広範囲の記憶装置に対して、バックアップや再編成等のメンテナンスを行わなければならず、作業を実施するにあたり、多大な時間とプロセッサやメモリ等の資源を要することになる。
そこで、本発明は、データベースの再編成により、記憶装置に格納されたデータレコードのうち、前回の再編成実施から更新されていないデータレコードを特定の記憶装置に物理的に隔離して配置することができるデータベース管理システムを提供することを目的とする。
このような再編成を行うことにより、特定の記憶装置に更新のなかったデータレコードだけが格納される。このとき、データレコードを記憶装置内の最終ページまで格納し終えた場合に、この記憶装置に対する書き換え（問合せにおける、データの挿入、更新、および削除）をできなくする処置を行うことにより、今後この記憶装置をバックアップや再編成等のメンテナンス対象から除外することができる。
【課題を解決するための手段】
【００１２】
本発明では、前記目的を達成するために、ユーザからの問合せ要求を受付け解析し処理を実行し、データを記憶装置上に管理、保持するデータベース管理システムにおいて、データベースを構成する各レコード毎に、前回の再編成実施からデータが更新されたかどうかを示す情報を保持し、データベースの再編成時に当該情報を使用することで、前回の再編成実施から更新されていないデータレコードを特定の記憶装置に配置することを特徴とするデータベースの再編成方式を提供する。
【発明の効果】
【００１３】
以上のように、本発明では、データベース中の前回の再編成実施から更新されていないデータレコードを特定の記憶装置に配置する再編成方式、およびデータベースの管理方法を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明を実施する場合の一形態を図面を参照して具体的に説明する。
図１は、データベースの論理的な構成を示している。１Ａ、２Ａは記憶装置を示し、二次元の表（リレーション）は、１個以上の記憶装置上に格納される。表は１ａ〜３ａのような行（レコード）の集合から構成されている。また、行は列（フィールド）の集合から構成されている。
【００１５】
一方、図１に対し、図２はデータベースの物理的な構成を示している。１Ａ、２Ａは記憶装置を示し、各記憶装置は１ｄ〜３ｄのようなページという管理単位に分割されている。１ｃ〜３ｃはデータレコードを示し、物理的に連続したページに順次格納される。
【００１６】
図３に、本発明を実現するための列の構成要素を示す。ｎ列から構成される各レコードに、データが更新されたかどうかの情報を格納するフラグを用意する。フラグに設定する情報として、問合せによりデータの挿入または更新が発生した場合に、データが更新されたことを示す１を設定する。また、前回の再編成によりデータレコードの並び替えを実施した以降に、データが更新されていないことを示す０を設定する。図４に該フラグに設定する情報をまとめる。
【００１７】
次に、図５にデータベースにデータを挿入する場合の処理の流れを示す。問合せ要求によりデータを挿入する場合、ユーザからの問合せ内容を解析し、挿入データを入力情報として取得する（ステップ５１）。この情報をデータレコードとして記憶装置上の空いているページに追加するとともに（ステップ５２）、該レコードのフラグにデータが更新されたことを示す１を設定する（ステップ５３）。
続いて、図６にデータベースのデータを更新する場合の処理の流れを示す。問合せによりデータを更新する場合、ユーザからの問合せ内容を解析し、更新データを入力情報として取得する（ステップ６１）。そして、更新対象となる列が格納されているレコードを記憶装置から検出し（ステップ６２）、列を更新するとともに（ステップ６３）、該レコードのフラグにデータが更新されたことを示す１を設定する（ステップ６４）。
【００１８】
前記に従いデータベースの挿入および更新を行った後、再編成により前回の再編成実施から更新されていないデータレコードを特定の記憶装置に配置する。図７に再編成の処理の流れを示す。また、図８に再編成を行う前の状態を示す。
【００１９】
まず、データベースの再編成対象となる表のデータレコードを一時的に格納するため、更新のあったデータ用に、一時格納先１Ｂを確保する（ステップ７１）。また、更新のなかったデータ用に、別の一時格納先２Ｂを確保する（ステップ７２）。
【００２０】
次に、再編成の対象なる表を入力情報として取得し（ステップ７３）、解析結果から表のデータレコードが格納されている記憶装置３Ａ〜５Ａの情報を取得する（ステップ７４）。ことのき、問合せにおける、データの挿入、更新、および削除をできなくする処置を行った記憶装置６Ａは、再編成の対象としない。
【００２１】
続いて、取得した情報から記憶装置をアクセスし、データレコードを１件読み込む（ステップ７５）。該データレコードのフラグを判定し、１であれば（ステップ７６ＮＯ）、フラグの値を０に変更し（ステップ７８）、前回の再編成実施からデータが更新されているため、更新のあったデータ用の一時格納先１Ｂに格納する（ステップ７９）。０であれば（ステップ７６ＹＥＳ）、前回の再編成実施からデータが更新されていないため、更新のなかったデータ用の一時格納先２Ｂに格納する（ステップ７７）。表のデータレコードがなくなるまでステップ７４〜ステップ８０までの処理を繰り返す（ステップ８０NO）。再編成対象となる記憶装置の、すべてのデータレコードを処理した場合は、次の処理に移る（ステップ８０ＹＥＳ）。
【００２２】
再編成の対象となる記憶装置中のデータレコードをすべて処理した後、更新のあったデータ用の一時格納先１Ｂの内容を、更新のあったデータレコードを格納するための記憶装置に格納し（ステップ８１）、更新のなかったデータ用の一時格納先２Ｂの内容を、更新のなかったデータレコードを格納するための記憶装置に格納する（ステップ８２）。図９に再編成を行った後の状態を示す。
【００２３】
以上のような再編成を行うことにより、特定の記憶装置に更新のなかったデータレコードだけが格納される。このとき、データレコードを記憶装置内の最終ページまで格納し終えた場合に、この記憶装置に対する書き換え（問合せにおける、データの挿入、更新、および削除）をできなくする処置を行うことにより、今後この記憶装置をバックアップや再編成等のメンテナンス対象から除外することができる。
【００２４】
なお、他の実施例として、データが更新されたかどうかの情報（フラグ）の代わりに、挿入および更新の問合せが発生した日時情報（年、月、日、時、分、秒）を格納し、再編成時に前回の再編成時刻を入力し、比較判定を行うことによって、上述した効果を達成することができる。
【図面の簡単な説明】
【００２５】
【図１】本発明の一実施形態を説明する上で前提となる構成例を論理的に説明した図である。
【図２】本発明の一実施形態を説明する上で前提となる構成例を物理的に説明した図である。
【図３】本発明を実現するためのデータレコードの構成要素を示す図である。
【図４】データが更新されたかどうかの情報を格納するフラグに設定する情報をまとめた図である。
【図５】本発明のデータレコードの挿入の処理ステップを示すフローチャートである。
【図６】本発明のデータレコードの更新の処理ステップを示すフローチャートである。
【図７】本発明の再編成の処理ステップを示すフローチャートである。
【図８】再編成を行う前の状態を示す構成例である。
【図９】再編成を行った後の状態を示す構成例である。
【符号の説明】
【００２６】
１Ａ〜６Ａ…記憶装置、１Ｂ〜２Ｂ…データレコードの一時格納先、１ａ〜３ａ…行、１ｂ〜３ｂ…列、１ｃ〜３ｃ…データレコード、１ｄ〜３ｄ…ページ、５１〜５３…データレコードの挿入の処理ステップを示すフローチャートを構成する各ステップ、６１〜６４…データレコードの更新の処理ステップを示すフローチャートを構成する各ステップ、７１〜８２…再編成の処理ステップを示すフローチャートを構成する各ステップ
【図１】
2006106991.tif 000003
【図２】
2006106991.tif 000004
【図３】
2006106991.tif 000005
【図４】
2006106991.tif 000006
【図５】
2006106991.tif 000007
【図６】
2006106991.tif 000008
【図７】
2006106991.tif 000009
【図８】
2006106991.tif 000010
【図９】
2006106991.tif 000011