(58)【調査した分野】(Int.Cl.,DB名)
特定テーブルに含まれたレコードの引出し要請、及び前記レコードに含まれた少なくとも1つのカラムに対する更新要請が共に定義された質疑文を受信して分析する質疑文分析部と、
前記分析された質疑文を実行するための実行計画を生成する実行計画生成部と、
前記実行計画により、前記レコードの引き出し、及び前記少なくとも1つのカラムに係わる更新を行うことにより、前記実行計画を実行する実行計画実行部と、
特定テーブルに係わるインデックスを生成し、前記インデックスの各ページに属し得る複数個の前記レコードの原本キー値の下限値である第1区分キー値をLFK(lower fence key)として保存するか、
あるいは前記レコードの原本キー値の上限値である第2区分キー値をUFK(upper fence key)として保存するインデックス生成部を含むインデックス管理部と、を含み、
前記インデックス生成部は、前記各ページをなす前記複数個のレコードの原本キー値のうち共通領域をプレフィックスとして抽出し、前記各ページをなす前記複数個のレコードの原本キー値から、共通領域である前記プレフィックスに該当する部分を除いた残りのキー値を前記インデックスに保存することを特徴とするデータベース管理システム。
前記各レコードのうち、前記LFKまたは前記UFKが保存されるレコード以外のレコードには、各レコードの原本キー値のうち、前記プレフィックスを除いたキー値だけが保存されることを特徴とする請求項12に記載のデータベース管理システム。
【背景技術】
【0002】
データベース管理システム(DBMS:database management system)は、膨大な量のデータが保存されているデータベースを管理するためのシステムであり、大量の情報が途切れなく生成されている現時代において、なくてはならない重要な要素として認識されている。
【0003】
このようなデータベース管理システムにおいては、全てのデータをテーブル(table)形態でデータベースに保存するが、ここで、テーブルとは、データベースにおいて、データを保存する基本構造をいい、1つのテーブルは、一つ以上のレコード(record)から構成される。ここで、レコードとは、テーブルの1行(row)を意味する。また、各レコードは、一つ以上のカラムから構成されるが、カラムとは、テーブルを構成する実際のテーブル項目を表現する名称を有したドメイン(domain)を意味するものであり、アトリビュート(attribute)またはフィールド(field)ともいう。
【0004】
このようなデータベース管理システムは、外部から特定質疑(query)が入力される場合、入力された質疑によって、データベースに対して、データを選択、挿入、更新、削除などの機能を実行する。ここで、質疑とは、データベースのテーブルに保存されているデータに係わるいかなる要求、すなわち、データに対するいかなる操作の実行を所望するかということを記述したものであって、SQL(structured query language)のような言語を利用して表現する。
【0005】
一方、データの量がさらに膨大するにつれ、データベース管理システムは、一般的にインデックス(index)を具備する。ここで、インデックスとは、データベース分野において、テーブルに対する探索速度を高める資料構造を意味し、このようなインデックスは、データレコード(チュープル(tuple))に早くアクセスするために、{キー値、ポインタ}組で構成されるデータ構造を有する。
【0006】
前述の背景技術は、発明者が本発明の導出のために保有していたり、あるいは本発明の導出過程で習得した技術情報であり、必ずしも本発明の出願前に一般公衆に公開された公知技術というものではない。
【0007】
なお、関連先行技術文献としては、特許文献1がある。
【発明の概要】
【発明が解決しようとする課題】
【0009】
本発明の一実施形態は、データベースのインデックス構成において、1ページに含まれる複数個のレコードのキー値の下限値及び上限値を区分子として保存し、それを利用して、複数個のレコードにおいて、キーの重複部分を削除することにより、インデックスページが保存される保存空間を節約し、それにより、データベースの性能が向上するデータベース管理方法及び該管理システム、並びにデータベースのツリー構造を提供することを目的とする。
【0010】
また、本発明の一実施形態は、圧縮するか否かをリアルタイムで設定することを可能にし、特定領域において、挿入/削除(insert/delete)負荷が高くなれば、圧縮を行わないように調整することにより、データベース運用効率が向上したデータベース管理方法及び該管理システム、並びにデータベースのツリー構造を提供することを目的とする。
【0011】
また、本発明の一実施形態は、副次的な圧縮方式及びその範囲に係わるメタデータを追加して記録する必要がないようにし、ページに保存されるレコードの個数が多くなるほど、圧縮されるレコードにメタ情報を含む既存の方法に比べ、圧縮効率が極大化されるデータベース管理方法及び該管理システム、並びにデータベースのツリー構造を提供することを目的とする。
【0012】
また、本発明の一実施形態は、インデックスのツリー構造を巡回(traverse)するたびに、各ページのLFK(lower fence key)及びUFK(upper fence key)を利用して、リーフノードの有効性検査(validity check)を行うことにより、インデックス構造のエラーを手軽にチェックすることができるデータベース管理方法及び該管理システム、並びにデータベースのツリー構造を提供することを目的とする。
【課題を解決するための手段】
【0013】
本発明の一実施形態は、各ページに含まれる複数個のレコードのキー値の下限値がLFK(lower fence key)として保存されるか、あるいはレコードのキー値の上限値がUFK(upper fence key)として保存される段階と、前記ページをなす複数個のレコードのキー値のうち共通領域がプレフィックス(prefix)として抽出される段階と、前記複数個のレコードのキー値から、前記プレフィックスに該当する部分を除外した残りの部分が保存される段階と、を含むデータベース管理方法を開示する。
【0014】
本実施形態において、前記プレフィックスは、LFKまたはUFKに保存される。
【0015】
本実施形態において、前記各レコードのうち、LFKまたはUFKが保存されるレコード以外のレコードには、各レコードの原本キー値のうち前記プレフィックスを除いたキー値が保存される。
【0016】
本実施形態において、前記レコードは、複数個のキー値を含むマルチカラム(multi column)形態のレコードでもある。
【0017】
本実施形態において、前記複数個のキー値のうち、1枚のページをなすレコードが同一値を有するキー値が、前記プレフィックスとして抽出されもする。
【0018】
本実施形態において、前記各ページは、Bツリー構造またはB+ツリー構造のリーフノードでもある。
【0019】
本実施形態において、前記データベース管理方法は、前記ページに含まれたレコードの原本キー値が復元される段階をさらに含み、前記原本キー値が復元される段階は、当該ページに、前記LFKとUFKとが存在するか否かということが確認される段階と、当該ページに、前記LFKとUFKとが存在する場合、前記LFKとUFKとを比較演算し、そこに共通するプレフィックスが抽出される段階と、前記抽出されたプレフィックスと、当該レコードのキー値とが結合して原本キー値が復元される段階と、を含んでもよい。
【0020】
本実施形態において、当該ページに、前記LFKとUFKとが存在しない場合、各レコードに保存されたキー値が原本キー値でもある。
【0021】
本実施形態において、前記データベース管理方法は、前記ページに新たなレコードが追加されるか、あるいは既存のレコードが変更される段階をさらに含み、前記レコードが追加されるか、あるいは変更される段階は、当該ページに、前記LFKとUFKとが存在するか否かということが確認される段階と、当該ページに、前記LFKとUFKとが存在する場合、前記LFKとUFKとを比較演算し、そこに共通するプレフィックスが抽出される段階と、追加されたり、あるいは変更されたりするレコードから、前記プレフィックスが除外された残りのキー値がレコードに追加されたり、あるいはそこで変更されたりする段階と、を含んでもよい。
【0022】
本実施形態において、当該ページに、前記LFKとUFKとが存在しない場合、前記プレフィックスが抽出されず、当該ページにレコードが追加されたり、あるいはそこで変更されたりもする。
【0023】
本発明の他の実施形態は、Bツリー構造またはB+ツリー構造のデータベース管理方法において、Bツリー構造またはB+ツリー構造のインデックスが生成される段階と、前記インデックスで所定のレコードが復元される段階と、前記インデックスに所定のレコードが追加されたり、あるいはそこで変更されたりする段階と、を含み、前記インデックスが生成される段階は、一つ以上のリーフノードの少なくとも一端部に、当該リーフノードに属するキー値の下限値がLFKとして保存されるか、あるいは当該リーフノードに属するキー値の上限値がUFKとして保存される段階を含むデータベース管理方法を開示する。
【0024】
本発明の他の実施形態は、特定テーブルに含まれたレコードの引出し要請、及び前記レコードに含まれた少なくとも1つのカラムに対する更新要請が共に定義された質疑文を受信して分析する質疑文分析部と、前記分析された質疑文を実行するための実行計画を生成する実行計画生成部と、前記実行計画により、前記レコードの引き出し、及び前記少なくとも1つのカラムに対する更新を行うことにより、前記実行計画を実行する実行計画実行部と、特定テーブルに係わるインデックスを生成し、前記インデックスの各ページに属する複数の個レコードのキー値の下限値をLFKとして保存するか、あるいはレコードのキー値の上限値をUFKとして保存するインデックス生成部を含むインデックス管理部と、を含むデータベース管理システムを開示する。
【0025】
本実施形態において、前記インデックス生成部は、前記各ページをなす複数個のレコードのキー値のうち共通領域をプレフィックスとして抽出することができる。
【0026】
本実施形態において、前記インデックス生成部は、前記各ページをなす複数個のレコードのキー値から、共通領域である前記プレフィックスに該当する部分を除いた残りの部分をインデックスに保存することができる。
【0027】
本実施形態において、前記プレフィックスは、LFKまたはUFKにのみ保存される。
【0028】
本実施形態において、前記各レコードのうち、LFKまたはUFKが保存されるレコード以外のレコードには、各レコードの原本キー値のうち、前記プレフィックスを除いたキー値だけが保存される。
【0029】
本実施形態において、前記インデックス管理部は、前記インデックスの各ページに含まれたレコードから原本キー値を復元するレコード復元部をさらに含んでもよい。
本実施形態において、前記レコード復元部は、当該ページに、前記LFKとUFKとが存在するか否かということを確認し、当該ページに、前記LFKとUFKとが存在する場合、LFKとUFKとを比較演算して前記プレフィックスを抽出し、抽出された前記プレフィックスと当該レコードの値とを結合して原本キー値を復元することができる。
【0030】
本実施形態において、前記インデックス管理部は、前記インデックスの各ページに新たなレコードを追加するか、あるいは既存のレコードを変更するレコードアップデート部をさらに含んでもよい。
【0031】
本実施形態において、前記レコードアップデート部は、当該ページに、前記LFKとUFKとが存在するか否かということを確認し、当該ページに、前記LFKとUFKとが存在する場合、LFKとUFKとを比較演算して前記プレフィックスを抽出し、追加されたり、あるいは変更されたりするレコードから、前記プレフィックスが除外された残りのデータを当該ページにレコードとして追加されたり、あるいは変更されたりする。
【0032】
本発明の他の実施形態は、Bツリー構造またはB+ツリー構造のデータベースのツリー構造において、ツリー構造の最上部に位置し、一つ以上の区分キー値を保存するルートノード;及び少なくとも一端部に当該リーフノードに属するキー値の下限値がLFKとして保存されるか、あるいは当該リーフノードに属するキー値の上限値がUFKとして保存される一つ以上のリーフノード;を含むデータベースのツリー構造を開示する。
【0033】
本実施形態において、前記リーフノードにおいて、LFKとUFKとの間に存在するレコードは、前記レコードのキー値から共通領域を除外した残りのキー値のみを保存することができる。
【0034】
本実施形態において、前記ルートノードに保存された区分キー値は、互いに隣合うリーフノードのいずれか一側のLFK及び他の一側のUFKにもなる。
【0035】
本実施形態において、複数個の前記リーフノードのうち最も左側に位置したリーフノードには、前記LFKが保存されず、複数個の前記リーフノードのうち最も右側に位置したリーフノードには、前記UFKが保存されない。
【発明の効果】
【0036】
本発明によれば、インデックスページが保存される保存空間を節約することができ、それによって、データベースの性能が向上するという効果を得ることができる。
【0037】
また、本発明の一実施形態は、圧縮するか否かをリアルタイムで設定することを可能にし、特定領域において、挿入/削除(insert/delete)負荷が高くなれば、圧縮を行わないように調整することにより、データベース運用効率性が向上するという効果を得ることができる。
【0038】
また、本発明の一実施形態は、副次的な圧縮方式及びその範囲に係わるメタデータを追加して記録する必要がないようにし、ページに保存されるレコードの個数が多くなるほど、圧縮効率が極大化されるという効果を得ることができる。
【0039】
また、本発明の一実施形態は、インデックスのツリー構造を巡回(traverse)するたびに、各ページのLFK及びUFKを利用して、リーフノードの有効性検査(validity check)を行うことにより、インデックス構造のエラーを手軽にチェックするという効果を得ることができる。
【発明を実施するための形態】
【0041】
以下で説明する本発明に係わる詳細な説明は、本発明が実施される特定実施形態の例示として添付図面を参照する。このような実施形態は、当業者が、本発明を実施するのに十分なほどに詳細に説明する。本発明の多様な実施形態は、互いに異なるにしても、相互排他的である必要はないということを理解しなければならない。例えば、本明細書に記載されている特定形状、構造及び特性は、本発明の精神及び範囲を外れずに、一実施形態から他の実施形態に変更されて具現化されもする。また、それぞれの実施形態内の個別構成要素の位置または配置も、本発明の精神及び範囲を外れずに変更されるということが理解されなければならない。従って、以下で行われる詳細な説明は、限定的な意味として行われるのではなく、本発明の範囲は、特許請求の範囲の請求項が請求する範囲、及びそれと均等な全ての範囲を包括するものであると受け止めなければならない。図面で類似した参照符号は、多くの側面にわたって、同一であるか、あるいは類似した構成要素を示している。
【0042】
以下、本発明が属する技術分野で当業者が本発明を容易に実施することができるように、本発明のさまざまな実施形態について、添付図面を参照しつつ詳細に説明する。
【0043】
図1は、本発明の一実施形態によるデータベース管理システム(DBMS:database management system)の概略的なブロック図である。
図1を参照すれば、本発明の一実施形態によるデータベース管理システム100は、次のように構成される。
【0044】
まず、データベース110には、多様なデータがテーブル形式で保存され、前述のように、各テーブルは、一つ以上のレコードで構成され、各レコードは、一つ以上のカラムで構成される。例えば、所定掲示板に係わる掲示物が保存されたデータベースである場合、該テーブルは、掲示物の集合を意味し、該レコードは、各掲示物を意味し、該カラムとは、掲示物識別子、掲示物の作成者、掲示物のヒット数などが保存される領域を意味する。図面には、データベース110が複数個具備されるように図示されているが、本発明は、それに制限されるものではなく、データベース管理システム100の構成、保存されるデータ分量、用途などによって、データベース110の個数及び構成は、多様に変更可能である。
【0045】
データベース管理システム100は、データベース110に接続され、データベース110に記録されたデータを更新または削除するか、あるいはデータベース110にデータを追加するなど、データベース110を統合的に管理する機能を実行するものであり、大きく見て、質疑文分析部120、実行計画生成部130、実行計画実行部140を含む。また、データベース管理システム100は、エントリー管理部150及びインデックス管理部160をさらに含んでもよい。
【0046】
質疑文分析部120は、データベース管理システム100と連動する多様な外部サーバ(図示せず)または管理者端末機(図示せず)から、データベース110に保存されているデータ処理のための質疑文を受信し、受信した質疑文を分析する。このような質疑文分析部120は、質疑文受信部及びパーザ(parser)を含み、有効性検証部をさらに含んでもよい。
【0047】
実行計画生成部130は、質疑文分析部120の有効性検証部によって、有効であると判断されたパースツリーを基に、要請されたレコードの引き出し、及びレコードに含まれたカラム更新のための実行計画を生成し、後述するメモリ170に保存する。ここで、実行計画とは、特定テーブルからレコードを引き出す方法、結果レコードリスト、更新要請されたカラムに対する増加演算いかんなどを含む資料構造を意味する。
【0048】
一実施形態において、実行計画生成部130は、要請されたレコードを特定テーブルから引き出す方法として、順次スキャン方法及びインデックススキャン方法のうちいずれか一つを選択することができる。ここで、順次スキャン方法とは、特定テーブルに含まれたレコードを順次にスキャンして行き、当該レコードの識別子を有したレコードを引き出す方法を意味し、インデックススキャン方法とは、各レコードの識別子別にインデックスが生成されており、このようなインデックスのみをスキャンすることにより、当該レコードを引き出す方法を意味する。このようなデータベース管理システムのインデックスについては、追って詳細に説明する。
【0049】
実行計画実行部140は、実行計画生成部130によって生成された実行計画によって、特定テーブルから当該レコードを引き出し、更新要請されたカラムの物理的位置に相応するレコード上のカラムに記録されたカラム値に、増加演算を行うことにより、当該カラム値を更新する。具体的には、実行計画実行部140は、実行計画生成部130によって生成された実行計画を実行するためのトランザクションを生成することにより、生成された実行計画を当該トランザクションの間に処理する。ここで、トランザクションとは、1つの論理的作業単位を構成するものであり、一つ以上のSQL文を利用して定義される。このようなトランザクションの使用によって、データの一致性とデータの同時発生とを保証することができる。
【0050】
データベース管理システム100は、レコードの識別子、及び更新要請されるカラムの識別子で構成されるエントリーを生成または削除し、生成されたエントリーを、エントリーに含まれたカラム識別子に相応するカラム値とマッチングさせてメモリ170に保存するエントリー管理部150をさらに含んでもよく、メモリ170には、更新要請されたカラムのカラム値が、エントリー管理部150に生成されたエントリーとマッチングされて保存される。
【0051】
一方、データベース管理システム100は、インデックスを生成または削除し、生成されたインデックスをメモリ170に保存するインデックス管理部160をさらに含んでもよい。このようなインデックス管理部160は、インデックス生成部161、レコード復元部163、レコードアップデート部165を含んでもよい。
【0052】
インデックス生成部161は、特定データベース110に係わるインデックスを生成し、このとき、インデックスの各ページに属するキー値の下限値をLFK(lower fence key)として保存し、キー値の上限値をUFK(upper fence key)として保存する役割を担う。また、インデックス生成部161は、各ページをなす複数個のレコードのキー値のうち、共通領域をプレフィックス(prefix)として抽出する役割を担う。また、インデックス生成部161は、各ページをなす数数個のレコードのキー値からプレフィックスに該当する部分を削除した後、インデックスに保存する役割を担う。
【0053】
レコード復元部163は、インデックスの各ページに含まれたレコードから原本キー値を復元する役割を行う。詳細には、レコード復元部163は、当該ページにLFKとUFKとが存在するか否かということを確認し、当該ページにLFKとUFKとが存在する場合、LFKとUFKとを比較演算してプレフィックスを抽出し、抽出されたプレフィックスと当該レコードの値とを結合して原本キー値を復元する役割を担う。
【0054】
レコードアップデート部165は、インデックスの各ページに新たなレコードを追加するか、あるいは既存のレコードを変更する役割を担う。詳細には、レコードアップデート部165は、当該ページにLFKとUFKとが存在するか否かということを確認し、当該ページにLFKとUFKとが存在する場合、LFKとUFKとを比較演算してプレフィックスを抽出し、追加されたり、あるいは変更されたりするレコードからプレフィックスが除外された残りのデータを、当該ページにレコードとして追加または変更する役割を担う。
【0055】
このようなインデックス生成部161のインデックス生成過程、レコード復元部163のレコード復元過程、レコードアップデート部165のレコードアップデート過程については、
図2A以下で詳細に説明する。
【0056】
以下、このように、区分子基盤のインデックス圧縮技法(serperator-based index compression method)を利用したデータベース管理方法について、さらに詳細に説明する。
【0057】
図2A、
図2B及び
図2Cは、本発明の一実施形態によるデータベース管理方法を示すフローチャートである。一方、
図3は、本発明のデータベース管理方法及び該管理システムが適用されるBツリーインデックスの構造を例示的に図示した図面であり、
図4は、一般的なBツリーページのキー値の配列を示す図面であり、
図5は、本発明のデータベース管理方法及び該管理システムによるBツリーページのキー値の配列を示す図面である。
【0058】
図2Aないし
図5を参照すれば、本発明の一実施形態によるデータベース管理方法は、インデックスを生成する段階(S100段階)、インデックスでレコードを復元する段階(S200段階)、及びインデックスでレコードを追加/変更する段階(S300段階)を含む。
【0059】
それらについてさらに詳細に説明すれば、次の通りである。
【0060】
インデックスは、データベース分野において、テーブルに対する動作の速度を速める資料構造をいう。インデックスは、テーブル内の1個のカラム(single column index)、あるいはいくつかのカラム(multi column index)を利用して生成されることができ、高速の検索動作だけではなく、レコードアクセスと係わり、効率的な手順付け動作に係わる基礎を提供する。インデックスを保存するのに必要なディスク空間は、普通テーブルを保存するのに必要なディスク空間より小さい。なぜならば、普通インデックスは、キーフィールドのみ有しており、テーブルの他の詳細項目は、有していないからである。
【0061】
Bツリー(あるいは、B+ツリー)は、このようなインデックスを構成するために、データベース及びファイルシステムで広く使用されるツリー資料構造の一種であり、特定値(key)を有しているレコードを早く照会するための関連写像資料構造である。Bツリー(あるいは、B+ツリー)は、アクセスが遅い大容量ディスクにデータが記録されている特性のために、I/O回数を減らすために、ページ単位のツリー構造になっている。1ページ内には、キーと、該キーをアトリビュート(attribute)として含んでいる実際レコードの位置(Object IDあるいはRecord ID)がキーの順に記録されている。すなわち、{Key−OID}が結合し、それぞれのインデックスレコード(以下では、それをレコードとも称する)を構成するのである。
【0062】
前述のような特性により、1ページ内のレコードのキー値は、隣接している値同士相当な類似性を有することができる。例えば、一会社のメールシステムにおいて、各メールを区分するためのインデックスキーとして、社員番号、メールフォルダ番号、メール一連番号を指定した場合(すなわち、マルチカラムインデックス)、ある社員が、全体メールは10万件であり、1つのメールフォルダに、1万件のメールを保管しているならば、インデックスにおいて1万件は、社員番号とメールフォルダ番号とが同一値であり、10万件は、社員番号が同一値である。もし一般的なBツリーの1ページに、既存の方式通り、1千件ずつ入れば、10件ほどのページでは、社員番号とメールフォルダ番号とが重複して毎回保存されるであろう。従って、同一値が何回か重複保存されることにより、不要なメモリの浪費が発生するという問題点が存在した。
【0063】
このような問題点を解決するために、本発明の区分子基盤のインデックス圧縮技法(separator-based index compression method)を利用したデータベース管理方法及び該管理システムは、1ページのキー値のうち重複保存されるプレフィックス(prefix)を、ページ区分子であるLFK及びUFKに保存し、メモリ空間を節約することを一特徴とする。
【0064】
さて、
図2Aを参照すれば、本発明の一実施形態によるデータベース管理方法において、インデックスを生成する段階(S100段階)は、1枚のページに属するキー値の下限値がLFKとして保存されるか、あるいは1枚のページに属するキー値の上限値がUFKとして保存される段階(S110段階)、1枚のページをなす複数個のレコードのキー値のうち共通領域がプレフィックスとして抽出される段階(S120段階)、及び1枚のページをなす複数個のレコードのキー値で共通領域であるプレフィックスが削除された後で保存される段階(S130段階)を含む。それについて理解しやすく説明すれば、次の通りである。
【0065】
本発明が適用されたBツリーインデックスの構造を図示した
図3を参照すれば、データベースにおいて、レコードデータを早く検索するために使用されるインデックスにおいて、本発明で使用するBツリーインデックスの構成は、実際レコードデータを示すリーフノード(leaf node)と、その上位の中間ノードとからなる。ルートノードは、中間ノードのうち最上位に存在する1つのノードである。
図3には、4つのリーフノードと、1つの中間ノードとが存在し、その1つの中間ノードが、すなわち、ルートノードになる。このとき、それぞれのリーフノードは、すなわち、それぞれのページを構成する。すなわち、
図3に図示された4つのリーフノードは、4枚のページを構成する。
【0066】
ここで、
図3に図示されたBツリーインデックスのルートノードは、3つの区分キー値P1,P2,P3を有する。第1区分キー値P1は、ページ1とページ2とを区分する区分子になり、第2区分キー値P2は、ページ2とページ3とを区分する区分子になり、第3区分キー値P3は、ページ3とページ4とを区分する区分子になる。
【0067】
このように、本発明の一実施形態によるデータベース管理方法は、それぞれのページに属するキー値の下限値をLFKとして保存し、またそれぞれのページに属するキー値の上限値をUFKとして保存することを特徴とする。このとき、LFKは、図面で見たとき、各ページの左端部に保存され、当該ページの下限値を定義し、UFKは、図面で見たとき、各ページの右端部に保存され、当該ページの上限値を定義する。
【0068】
そして、本発明の一実施形態によるデータベース管理方法は、各ページにおいて、LFKとUFKとの間に存在する複数個のレコードのキー値のうち共通領域をプレフィックスとして抽出し、LFKとUFKとを除いた残りのレコードでは、キー値からプレフィックスを削除した後、残りキー値のみを保存することにより、データの重複保存を防止してメモリ空間を節約する。
【0069】
すなわち、第1区分キー値P1は、ページ1のUFKであるUFK1になるとともに、ページ2のLFKであるLFK2になる。同様に、第2区分キー値P2は、ページ2のUFKであるUFK2になるとともに、ページ3のLFKであるLFK3になる。同様に、第3区分キー値P3は、ページ3のUFKであるUFK3になるとともに、ページ4のLFKであるLFK4になる。このとき、複数個のリーフノードのうち最も左側に位置する極左側リーフノード(ページ1)には、LFKを設定することができず、従って、当該ページでは、プレフィックス抽出も可能ではない。同様に、最も右側に位置した極右側リーフノード(ページ4)には、UFKを設定することができず、従って、当該ページでは、プレフィックス抽出も可能ではない。
【0070】
これについてさらに詳細に説明するために、一般的なBツリーページのキー値の配列を示す
図4と、本発明のデータベース管理方法及び該管理システムによるBツリーページのキー値の配列を示す
図5とを比較する。
図4及び
図5では、説明のために、10個のレコードだけがある場合を想定した。
【0071】
図4を参照すれば、1枚のページを構成する10個のレコードで、社員番号(KR10000)とメールフォルダ番号(FD0001)とが同一値として重複し、10回保存される。それに対し、
図5を参照すれば、本発明のデータベース管理方法による場合、1枚のページのキー値のうち重複保存される社員番号(KR10000)とメールフォルダ番号(FD0001)は、当該ページの下限値を設定するLFK、及び当該ページの上限値を設定するUFKにのみ保存され、LFKとUFKとの間の一般レコードには、プレフィックスが削除された状態のキー値だけが保存される。すなわち、
図5のように、10個のレコードに共通するキー値である社員番号(KR10000)とメールフォルダ番号(FD0001)は、いずれも削除され、ユニークなキー値であるメール一連番号だけが各レコードに保存される。
【0072】
以下では、本発明の一実施形態によるデータベース管理方法において、レコードを復元する段階について説明する。さて、
図2B及び
図5を参照すれば、本発明の一実施形態によるデータベース管理方法において、レコードを復元する段階(S200段階)は、当該ページに、LFKとUFKとが存在するか否かということを確認する段階(S210段階)、当該ページに、LFKとUFKとが存在する場合、LFKとUFKとを比較演算してプレフィックスを抽出する段階(S220段階)、及びプレフィックスと当該レコードの値とが結合して原本キー値が復元される段階(S230段階)を含む。それについてさらに詳細に説明すれば、次の通りである。
【0073】
まず、復元するキー値が属したページが、いずれのページであるかということを、バイナリ探索によって求めた後、当該ページに、LFKとUFKとが存在するか否かということを確認する。当該ページに、LFK及びUFK二つのうちいずれか一つでも存在しない場合、当該ページは、圧縮(すなわち、プレフィックスを利用した重複データ削除)が行われていないので、それぞれのレコードに保存されているキー値が、まさに原本キー値である(S240段階)。一方、当該ページに、LFKとUFKとがいずれも存在する場合、当該ページは、プレフィックスを利用したデータ圧縮が行われたページであるので、所定の復元ルーチンを実行する。すなわち、ページの下限値であるLFKと、ページの上限値であるUFKとを比較し、LFK及びUFKの共通領域、すなわち、プレフィックスを抽出する。
図5の例においては、LFK及びUFKの共通領域であるKR10000:FD0001がプレフィックスとして抽出される。このように抽出されたプレフィックスと、各レコードに保存されているキー値とを結合して原本キー値が復元される。すなわち、SN10001を復元した原本キー値は、KR10000:FD0001:SN10001になる。
【0074】
以下では、本発明の一実施形態によるデータベース管理方法において、レコードを追加または変更する段階について説明する。ここで、
図2C及び
図5を参照すれば、本発明の一実施形態によるデータベース管理方法において、レコードを追加または変更する段階(S300段階)は、当該ページに、LFKとUFKとが存在するか否かということを確認する段階(S310段階)、当該ページに、LFKとUFKとが存在する場合、LFKとUFKとを比較演算してプレフィックスを抽出する段階(S320段階)、及び追加されたり、あるいは変更されたりするレコードからプレフィックスが除外された残りのデータが、当該ページにレコードとして追加されたり、あるいはそこで変更されたりする段階(S330段階)を含む。それについてさらに詳細に説明すれば、次の通りである。
【0075】
まず、追加または変更するキー値が属するページが、いずれのページであるかということを、バイナリ探索によって求めた後、当該ページに、LFKとUFKとが存在するか否かということを確認する。当該ページに、LFK及びUFK二つのうちいずれか一つでも存在しない場合、当該ページは、圧縮(すなわち、プレフィックスを利用した重複データ削除)が行われていないので、当該レコードの値を、別途の処理なしにそのまま追加したり、あるいは変更したりすればよい(S340段階)。一方、当該ページに、LFKとUFKとがいずれも存在する場合、当該ページは、プレフィックスを利用したデータ圧縮が行われたページであるので、所定の分解ルーチンを実行する。すなわち、ページの下限値であるLFKと、ページの上限値であるUFKとを比較し、LFK及びUFKの共通領域、すなわち、プレフィックスを抽出する。
図5の例においては、LFK及びUFKの共通領域であるKR10000:FD0001がプレフィックスとして抽出される。次に、追加または変更するレコードのキー値からプレフィックスを除外した残りのキー値だけが、ページの当該位置に追加されたり、あるいはそこで変更されたりする。例えば、追加されるキー値が、KR10000:FD0001:SN13000であるならば、プレフィックスは、KR10000:FD0001になり、従って、当該ページには、キー値からプレフィックスを除外したSN13000のみが追加される。
【0076】
以下では、本発明の一実施形態によるデータベース管理方法において、ページが分割または併合される過程について説明する。
【0077】
図6A及び
図6Bは、本発明のデータベース管理方法及び該管理システムが適用されるBツリーインデックスにおいて、ページが分割される過程を示す図面である。
【0078】
図6Aに図示されたBツリーインデックスのルートノードは、初めには、2つの区分キー値P1,P2を有する。第1区分キー値P1は、ページ1とページ2とを区分する区分子になり、第2区分キー値P2は、ページ2とページ3とを区分する区分子になる。そして、第1区分キー値P1は、ページ1のUFKであるUFK1になるとともに、ページ2のLFKであるLFK2になる。同様に、第2区分キー値P2は、ページ2のUFKであるUFK2になるとともに、ページ3のLFKであるLFK3になる。
【0079】
この状態で、ページ2にそれ以上保存空間がなくなり、第1区分キー値P1と、第2区分キー値P2との間の任意の値であるSを基準に、ページ2を分割しなければならないと仮定する。
【0080】
その場合、ページ2では、
図6Bに図示されているように復元されたSを、新たなUFKであるUFK2として保存する。そして、既に存在していたLFKであるLFK2と、新たに生成されたUFKであるUFK2とを利用して、さらにデータを圧縮する。すなわち、LFK2とUFK2とを比較演算してプレフィックスを抽出した後、LFK2とUFK2とを除いた残りのレコードでは、キー値からプレフィックスを削除した後、残りのキー値のみを保存する。
【0081】
一方、新たに生成された
図6Bのページ3では、Sを新たなLFKであるLFK3として保存する。そして、
図6Aのページ2のUFKであるUFK2が、
図6Bのページ3のUFKであるUFK3として保存される。そして、LFK3とUFK3とを利用して、さらにデータを圧縮する。すなわち、LFK3とUFK3とを比較演算してプレフィックスを抽出した後、LFK3とUFK3とを除いた残りのレコードでは、キー値からプレフィックスを削除した後、残りのキー値のみを保存する。
【0082】
最後に、
図6Bのページ3では、Sを新たな区分キー値として、親ノード(ここでは、ルートノード)の第1区分キー値P1と第2区分キー値P2との間に挿入する。
【0083】
一方、図示されていないが、圧縮されていないページ(すなわち、プレフィックスを利用した重複データ削除が行われていないページ)であるならば、新たな区分キー値Sを基準にしてページを分割するとき、既存のページには、新たな区分キー値SがUFKとして設定され、既に存在していたLFKと、新たに生成されたUFKとを利用して、新たにデータを圧縮することができる。一方、新たに生成されたページには、新たな区分キー値SがLFKとして設定されるが、UFKが設定されていないので、データ圧縮が行われない。
【0084】
また、図示されていないが、互いに隣合う2枚のページが併合可能な(mergeable)大きさであるとき(すなわち、2枚のページに保存されたレコード個数の和が、1枚のページに保存されるレコード個数の最大値以下である場合)には、2枚のページを併合することも可能である。そのとき、2枚のページがいずれも圧縮されたページ(すなわち、プレフィックスを利用して、重複データが削除されたページ)であるならば、2枚のページの併合後に新たに圧縮を行う。一方、2枚のページのうちいずれか一つでも圧縮されたページではない場合には、併合を行わない。
【0085】
下記表1は、一般的なデータベース管理方法及び該管理システムを適用した場合の全インデックスページの枚数(total page count)と、本発明の一実施形態によるデータベース管理方法及び該管理システムを適用した場合の全インデックスページの枚数とを比較した表である。そして、表2は、一般的なデータベース管理方法及び該管理システムを適用した場合の平均キー値の長さ(average key length)と、本発明の一実施形態によるデータベース管理方法及び該管理システムを適用した場合の平均キー値の長さとを比較した表である。
【0087】
表1及び表2に示されているように、従来のデータベース管理方法及び該管理システムを適用した場合に比べ、本発明の一実施形態によるデータベース管理方法及び該管理システムを適用した場合、全インデックスページ数は、19%ほど減少し、平均キー値長は、31%ほど縮小された。すなわち、本発明により、保存空間を節約することができ、それにより、データベースの性能が向上するという効果を得る可能性があることが分かる。
【0088】
このような本発明の一実施形態によるデータベース管理方法は、Bツリーの1ページ内で、当該ページの区分子として使用されたキー値を、{仮想のキー−OID}レコードにし、当該ページの両端にフェンスキー(LFK及びUFK)としてそれぞれ追加することにより、LFK及びUFKからの原本キー値の組み合わせ作業、及び原本キー値からプレフィックスを削除したりする分解作業を迅速に行うことができる。
【0089】
一方、当該ページに、LFKまたはUFKが存在しなければ、既存の方式でレコードを保存することができ、従って、圧縮されたページ(すなわち、プレフィックスが各レコードから削除されたページ)と、圧縮されていないページ(すなわち、プレフィックスが各レコードから削除されていないページ)とが混在して維持されもする。また、LFK及びUFKが存在するページ内でも、圧縮されたレコードと、圧縮されていないレコードとが混在して維持されもする。従って、Bツリーの現在状態と係わりなく、圧縮するか否かをリアルタイムで設定することが可能になるという効果を得ることができる。そして、このような特徴を利用して、特定領域において、挿入/削除負荷が高くなれば、圧縮を行わないように調整し、データベース運用効率を向上させることができる。
【0090】
一方、プレフィックスを利用した圧縮をするか否かを、LFK及びUFKを使用して決定するために、副次的な圧縮方式及びその範囲に係わるメタデータを追加して記録する必要がない。従って、ページに保存されるレコードの個数が多くなるほど、圧縮されるレコードにメタ情報を含む既存の方法に比べ、圧縮効率が極大化されるという長所がある。
【0091】
このような本発明により、既存に比べ、プレフィックスを除いたキー値のみを保存するために、Bツリーの1ページに、さらに多くのレコードを保存することができる。それにより、保存空間を節約することができ、かように縮小された空間であるほど、主メモリのバッファキャッシュに含まれる可能性が大きくなり、データベースの性能が向上するという効果を得ることができる。さらに、本発明の一実施形態によるデータベース管理方法は、既存の他の圧縮方式に比べ、分割及び復元が簡単であり、保存構造の変更がなく、下位互換性側面で有利であり、LFK及びUFKを示すフラグ一つだけ追加されるのみ、追加して記録されるメタデータもなく、構造的に単純であるという長所を有する。
【0092】
さらに、本発明のデータベース管理方法を利用すれば、インデックスのツリー構造を巡回するたびに、各ページのLFK及びUFKを利用して、リーフノードの有効性検査を行うことができ、インデックス構造のエラーを手軽にチェックできるという効果を得ることができる。また、LFK及びUFKにより、リーフノードの接続関係を把握することができるので、リーフノードからリンクを除去することができ、従って、SMO(structure modification operation)時の性能及び効率を向上させるという効果を得ることができる。
【0093】
前述のデータベース管理方法は、多様なコンピュータ手段を利用して実行されるプログラム形態でも具現されるが、そのとき、データベース管理方法を実行するためのプログラムは、ハードディスク、CD(compact disc)−ROM(read-only memory)、DVD(digital versatile disc)、ROM、RAM(random-access memory)またはフラッシュメモリのようなコンピュータで読み取り可能な記録媒体に保存される。
【0094】
本明細書では、本発明について、限定された実施形態を中心に説明したが、本発明の範囲内で、多様な実施形態が可能である。また、説明されていないにしても、均等な手段も、本発明にそのまま結合されるものとすることができる。従って、本発明の真の保護範囲は、特許請求の範囲によって決まらなければならないのである。