JPWO2007032068A1 - データベース管理プログラム - Google Patents
データベース管理プログラム Download PDFInfo
- Publication number
- JPWO2007032068A1 JPWO2007032068A1 JP2007535349A JP2007535349A JPWO2007032068A1 JP WO2007032068 A1 JPWO2007032068 A1 JP WO2007032068A1 JP 2007535349 A JP2007535349 A JP 2007535349A JP 2007535349 A JP2007535349 A JP 2007535349A JP WO2007032068 A1 JPWO2007032068 A1 JP WO2007032068A1
- Authority
- JP
- Japan
- Prior art keywords
- duplicate
- continuous
- arrangement table
- column
- row
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
列Aを条件とする検索を高速化する目的で初期状態として列Aの値が重複する行を連続領域に配置した場合においても、行の挿入や削除および更新を繰り返しても列Aを条件とする検索の所要時間が長くならず、かつ従来手法を用いてこの問題を解決する場合のような長時間を要する再整列を必要としないデータベース管理プログラムである。このデータベース管理プログラムは、関係データベースを用いて単一もしくは複数の列Aの値が重複する行集合を管理する場合において、列Aを条件とする検索を高速化する目的で初期状態として列Aの値が重複する行を連続領域に配置した場合、行の挿入や削除および更新を行う場合に列Aの値が重複する行集合のみを連続領域に配置する。
Description
本発明は、データ領域を細分化したデータベース管理システム(DBMS)に関するものであり、特に組込み機器向けのDBMSのデータベース管理プログラムに関するものである。
大容量ストレージを持つ組込み機器に関して、カーナビゲーションシステム/ミュージックプレイヤー/HDDレコーダといった多くの応用においてリスト取得が多用される。
特にカーナビではCD/DVDといったシークが極端に遅いI/Oデバイスを用いてリスト取得をリアルタイム処理することに重点を置いた専用ファイルシステムを用いており、リスト表示されるデータがディスク上の連続領域に位置するように工夫されている。しかし、この専用ファイルシステムは更新操作のないデバイス向けに設計されており、HDDに代表される更新可能なデバイスを用いて更新を行った場合、更新処理の度に全データの並び替えが発生する。
また、DBMSにもデータを連続領域に配置させる機能として、表を構成する特定のクラスタキー列に関して物理的にデータがソートされていることを保障するクラスタ表がある。これは、例えば非特許文献1に示されている。
ここで従来の図4に示すページとセグメントからなるストレージ領域管理を前提としたDBMSにおけるクラスタ表の実施例を以下に説明する。
ここでは、ページ(5002)はストレージ領域(5001)へのデータ入出力の最小単位を表す物理的な単位であり、セグメント(5003、5004)は表やインデックスに領域を割り当てる際の最小単位を表す物理的な単位である。セグメントは複数のページによって構成される。クラスタ表とストレージ領域の関係は図5のようになる。クラスタ表(6001)は通番列(6002)をクラスタキー列とするクラスタ表であり、ストレージ領域(6007)上のセグメントが割り当てられている。クラスタ表(6001)のうち列(6003、6004、6005)はストレージ領域(6007)上のセグメント(6014)に格納されており、列(6006)は別のセグメント(6015)が割り当てられている。このように、通番列をクラスタキー列とした場合には通番列に関して物理的にデータがソートされる。セグメント(6014、6015)には将来の挿入操作に備えてそれぞれ空き領域(6012、6013) が確保されている。
クラスタ表へ挿入操作を行う場合には、物理的にデータがソートされた状態を維持する事が要求されるため、通常の表とは異なる方法で挿入を行う。クラスタ表へ挿入操作を行う方法を図6に示すフローチャートを用いて説明する。挿入操作を実行するinsert処理(7001)では、まず挿入する行のサイズとストレージ領域の空き領域のサイズを比較し、挿入可能か否か判断(7002)を行う。ここで挿入可能でない場合はエラー(7012)としてinsert処理を終了(7009)する。挿入可能である場合は、ストレージ領域内でクラスタキーの値が等しいか小さい行の中で最大のものが含まれるセグメントを探索(7003)し、そのセグメント内に行を挿入する空きがあるか否か判断(7004)を行う。空きがあった場合にはA(7013)の手順をたどる。ここではまず該当表に関するインデックスの排他を取得(7005)し、その後セグメント内の空き領域に行を挿入(7006)し、インデックスを更新(7007)し、インデックスの排他を開放(7008)し、insert処理を終了(7009)する。 A(7013)の手順に従いクラスタキーが12の行を挿入する場合の動作例を図7に示す。ここではクラスタキーが等しい行(8004)を含むセグメント(8002)にまだ空き領域(8005)があるため、同一セグメントの空き領域にクラスタキーが12の行(8006)を挿入している。
一方、同一セグメント内に行を挿入する空きがあるか否か判断(7004)において空き領域がなかった場合にはB(7014)の手順をたどる。 ここではまず該当表に関するインデックスの排他を取得(7010)し、その後新規セグメントに行を挿入(7011)し、インデックスの排他を開放(7007)し、insert処理を終了(7009)する。 B(8014)の手順に従いクラスタキーが12の行を挿入する場合の動作例を図8に示す。ここではクラスタキーが等しい行(9004)を含むセグメント(9002)にもう空き領域がないため、新規セグメント(9005)を確保し、そこにクラスタキーが12の行(9006)を挿入している。
クラスタ表を用いることで、クラスタキー値の範囲を指定した検索を行う際にストレージ入出力がシーケンシャル化されるため、検索が高速化される。しかし、その一方で表作成時の空き領域以上の更新および挿入操作によって図8のように物理的にデータがソートされた状態が破壊されるため、定期的なメンテナンスが必要となる。このメンテナンスも先の専用ファイルシステムにおける更新操作と同じく全データの並び替えとなる。
組み込み用途向けDBMS上で、従来方式の更新不可能な専用ファイルシステムと比較して遜色のないデータ入出力性能を達成するためには、同じく物理的な連続領域にデータを配置する必要がある。しかし、組み込み用途においてはメンテナンスフリーかつ長期にわたる性能安定性が重視されるため、既存のクラスタ表をそのまま用いることはできない。 そこで組み込み用途におけるリスト取得と呼ばれるパターンのデータ取得に特化して入出力性能を改善する表構造が望まれる。
ここで、カーナビ用途を例にリスト取得の特徴を、図9を用いて説明する。カーナビでは地図情報の1つとして交差点データを扱う。交差点データはユニークな識別子を持つ区画(10001)に分割して管理される。カーナビ用途では交差点データのリスト取得が最もリアルタイム性を要求される。これは経路探索時に行われ、以下の2つのパターンがある。
1.自車を含む区画(10002)内の交差点リスト取得
2.自車を中心とした近傍9区画(10003)内の交差点リスト取得。
1.自車を含む区画(10002)内の交差点リスト取得
2.自車を中心とした近傍9区画(10003)内の交差点リスト取得。
ここで、カーナビ専用ファイルシステムを用いた場合に全てのデータが連続領域に配置されているのは1.のパターンであり、2.のパターンも含めて全データを連続領域に配置することは不可能である。そのため、組み込み用途に特化したDBMSにおいても1.のパターンが連続領域に配置されることを保証すれば十分である。
また、2つのパターンに共通する特徴として、検索条件が区画番号の等号条件であり、検索対象データ中に同一区画番号を持つ複数の交差点が存在することが挙げられる。この特徴をDBMSの用語で言い換えると、重複キーを含む列に関する等号条件の検索になる。
なお、カーナビ用途以外においても同様のリスト取得は頻繁に現れる。例えばミュージックプレイヤー用途では「同一アーティストの曲一覧」や「同一アルバム収録曲一覧」が、HDDレコーダ用途では「*月*日の番組一覧」や「*chの番組一覧」といったリスト取得が現れる。
[製品マニュアル]スケーラブルデータベースサーバ HiRDB Version7 システム導入・設計ガイド(UNIX(r)用)3000−6−272,12.9 クラスタキーの指定,pp.342〜343
[製品マニュアル]スケーラブルデータベースサーバ HiRDB Version7 システム導入・設計ガイド(UNIX(r)用)3000−6−272,12.9 クラスタキーの指定,pp.342〜343
しかしながら、関係データベースを用いて単一もしくは複数の列Aの値が重複する行集合を管理する場合において、列Aを条件とする検索を高速化する目的で初期状態として列Aの値が重複する行を連続領域に配置した場合においても、行の挿入や削除および更新を繰り返すと、列Aの値が重複する行が連続領域に配置された状態が破壊され、列Aを条件とする検索の所要時間が長くなり、従来手法を用いてこの問題を解決する場合に、全ての行の再整列が必要となり、長時間を要していた。
そこで、本発明の目的は、列Aを条件とする検索を高速化する目的で初期状態として列Aの値が重複する行を連続領域に配置した場合においても、行の挿入や削除および更新を繰り返しても列Aを条件とする検索の所要時間が長くならず、かつ従来手法を用いてこの問題を解決する場合のような長時間を要する再整列を必要としないデータベース管理プログラムを提供する。
本発明のデータベース管理プログラムは、行の挿入や削除および更新を行う場合に、ストレージ上の列Aの値が等しい行が配置された領域に連続した空きが見つからなかった際に、列Aの値が等しい行全体よりも容量の大きい連続した空き領域を探索する手順と、探索によって空き領域が見つかった場合に列Aの値が等しい行全体を空き領域に移動させる手順を含むことを特徴とするアルゴリズムを用いて列Aの値が重複する行集合のみを連続領域に配置する。
本発明によれば、関係データベースを用いて単一もしくは複数の列Aの値が重複する行集合を管理する場合において、列Aを条件とする検索を高速化する目的で初期状態として列Aの値が重複する行を連続領域に配置した場合、行の挿入や削除および更新を繰り返しても列Aを条件とする検索の所要時間が長くならず、かつ従来手法を用いてこの問題を解決する場合のような長時間を要する再整列を必要としない。
図1〜図3および図10〜図18を参照して本発明の実施例1を説明する。
図1は実施例1のデータベース管理システムの全体構成を示す。ここでは、ネットワーク(1016)を介してデータベースサーバ(1001)と更新クライアント(1012)および検索クライアント(1014)が接続されている。
データベースサーバ(1001)は、データベース管理プログラム(1002)を実行し、またストレージ装置(1008)を有する。
データベース管理プログラム(1002)は、データ更新モジュール(1003)とデータ検索モジュール(1004)を含み、また重複ID連続配置表識別表(1005)と重複ID連続配置表ID管理表(1006)と重複ID連続配置表親子関係管理表(1007)を有する。
ストレージ装置(1008)は、ストレージ領域(1009)を格納し、ストレージ領域(1009)には重複ID連続配置表(1010)とインデックス(1011)が保存される。
データ更新モジュール(1003)とデータ検索モジュール(1004)は、重複ID連続配置表識別表(1005)と重複ID連続配置表ID管理表(1006)と重複ID連続配置表親子関係管理表(1007)を参照し、重複ID連続配置表(1010)とインデックス(1011)を識別する。
なお、システム全体構成は、後に示す実施例2、実施例3も変わりがない。重複ID連続配置表親子関係管理表(1007)は、実施例2、及び実施例3にて主に活用される表である。以下につづく実施例1の説明には重複ID連続配置表親子関係管理表(1007)は登場しない。
重複ID連続配置表識別表の構成を図2に示す。重複ID連続配置表識別表(1005)は、重複IDを持つデータが連続配置となるように配置管理する対象である表を登録する表であり、管理番号列(2002)と表名列(2003)で構成される。図の例では、交差点表と名づけられた表が配置管理の対象として管理番号1で登録されていることを示す。
次に、重複ID連続配置表ID管理表の構成を図3に示す。重複ID連続配置表ID管理表1006は表名列(3002)と列名列(3003)を持ち、連続配置の基準となる列名が配置管理対象の表名に対応して登録される。
図10は上記の交差点表の実例を示す。交差点表(11001)は、図9に示した区画に区切られた交差点データを格納する表である。ここで、IDと名づけられた列(11002)は区画識別子を表す。上記した重複ID連続配置表ID管理表(1006)の登録内容にしたがい、つまり、ここではID列の値をキーとして、交差点表(11001)のデータが配置管理される。具体的にはID列の値が重複する行のデータが連続位置に配置されるように重複ID連続配置表(1010)に格納する。
重複ID連続配置表(1010)のストレージ領域上での構成の一部を図11に示す。重複ID連続配置表はストレージ領域(1009)上に同一IDを持つ行集合(12002)を隣接するセグメント(12004)に配置する(12005)ことを特徴とする表である。また、クラスタ表の場合と同じく、将来の挿入操作に備えてそれぞれ空き領域(12006)が確保されている。
なお、隣接セグメントに配置された同一IDを持つ行集合(12002)を構成する複数のセグメントを、以降の説明では図12に示すセグメント集合からなる同一IDの行集合(13001)のように略記する。あわせて使用領域(12005)および空き領域(12006)もそれぞれ使用領域(13002)および空き領域(13003)のように略記する。
重複ID連続配置表へ挿入操作を行う場合には、物理的に同一IDを持つ行が隣接するセグメントに配置された状態を維持する事が要求されるため、通常の表とは異なる方法で挿入を行う。重複ID連続配置表へ挿入操作を行う方法を図13に示すフローチャートを用いて説明する。
挿入操作を実行するinsert処理(14001)では、まず挿入する行のサイズとストレージ領域の空き領域のサイズを比較し、挿入可能か否か判断(14002)を行う。ここで挿入可能でない場合はエラー(14021)としてinsert処理を終了(14010)する。挿入可能である場合は、ストレージ領域内で等しいIDを持つ行集合が含まれるセグメント集合の位置を探索(14003)する。クラスタ表の場合とは異なり、この探索(14003)は等号条件であり、セグメント集合が見つからない場合もある。そのため、セグメント集合が見つかったか否か判断(14004)を行う。
セグメント集合が見つかった場合にはセグメント集合の1つ目の部分集合に行を挿入する空きがあるか否か判断(14005)を行う。空きがあった場合にはA(14022)の手順をたどる。A(14022)の手順では、まず該当表に関するインデックスの排他を取得(14006)し、その後セグメント集合の1つ目の部分集合の空き領域に行を挿入(14007)し、インデックスを更新(14008)し、インデックスの排他を開放(14009)し、insert処理を終了(14010)する。 A(14022)の手順に従い、ID=13の行を挿入する場合の動作例を図14に示す。ここでは、ID=13の行集合を含むセグメント集合(15001)に空き領域があるため、同一セグメント集合の空き領域に行を挿入(15002)している。
一方、判断(14005)において空きがなかった場合には、挿入する行と等しいIDを持つ行集合全体のサイズよりも大きい連続した空き領域をストレージ領域内で探索(14011)し、見つかったか否か判断(14012)を行う。判断(14012)において見つかった場合にはB(14023)の手順をたどる。 B(14023)の手順では、まず該当表に関する排他を取得(14013)し、その後既存の挿入する行と等しいIDを持つ行集合全体を探索(14011)で見つけた空き領域内に確保する新規セグメント集合に移動(14014)させ、同一セグメント集合の空き領域に行を挿入(14015)し、インデックスの更新(14008)とインデックスの排他の開放(14009)を行い、insert処理を終了(14010)する。 B(14023)の手順に従い、ID=13の行を挿入する場合の動作例を図15に示す。ここでは、ID=13の行集合を含むセグメント集合(16001)に空き領域がないため、新規セグメント集合に既存のID=13の行集合を移動(16002)させ、同一セグメント集合の空き領域に行を挿入(16003)している。
判断(14012)において挿入する行と等しいIDを持つ行集合全体のサイズよりも大きい連続した空き領域が見つからなかった場合には、挿入する行と等しいIDを持つセグメント集合の部分集合の中に空き領域を持つ部分集合があるか否か判断(14016)を行う。 判断(14016)において、空き領域を持つセグメント集合の部分集合が見つかった場合にはC(14024)の手順をたどる。C(14024)の手順では、まず該当表に関する排他を取得(14013)し、その後空き領域を持つセグメント集合の部分集合に行を挿入(14018)し、インデックスの更新(14008)とインデックスの排他の開放(14009)を行い、insert処理を終了(14010)する。 C(14024)の手順に従い、ID=13の行を挿入する場合の動作例を図16に示す。ここでは、ID=13の行集合を含むセグメント集合が2つの部分集合(17001, 17002)から構成されており、さらにID=13の行集合全体のサイズよりも空き領域(17003)が小さいため、行を2つ目の部分集合(17002)に挿入(17004)している。
一方、判断(14016)において空き領域を持つセグメントの部分集合が見つからなかった場合には、D(14025)の手順をたどる。D(14025)では、まず該当表に関する排他を取得(14019)し、その後セグメント集合の新規部分集合に行を挿入(14020)し、インデックスの更新(14008)とインデックスの排他の開放(14009)を行い、insert処理を終了(14010)する。 D(14025)の手順に従い、ID=13の行を挿入する場合の動作例を図17に示す。ここでは、ID=13の行集合を含むセグメント集合(18001)に空き領域がなく、さらに空き領域(18002)も十分に大きくないため、空き領域(18002)内に新規部分集合(18003)を確保し、ID=13の行を挿入(18004)する。
また、判断(14004)において挿入する行と等しいIDを持つ行集合が含まれるセグメント集合が見つからなかった場合にはE(14026)の手順をたどる。E(14026)の手順では、まず該当表に関する排他を取得(14019)し、その後セグメント集合の新規部分集合に行を挿入(14020)し、インデックスの更新(14008)とインデックスの排他の開放(14009)を行い、insert処理を終了(14010)する。 E(14025)の手順に従い、ID=13の行を挿入する場合の動作例を図18に示す。ここでは、ID=13の行集合を含むセグメント集合が存在しないため、空き領域(19001)内に新規部分集合(19002)を確保し、ID=13の行を挿入(19003)する。
本実施例においては、C(14024)の手順をたどることで重複IDを持つ行が非連続な領域に格納される。しかし、後の挿入動作の際にB(14023)の手順をたどることで連続領域に再配置される。
表を構成する列のうち、複数の列についてストレージ上の物理近傍に配置することで、ストレージデバイスへの入出力を高速化できる場合がある。図19は交差点表(21001)を構成する列のうち、ID列(21003)および道路種別列(21002)について、ストレージ領域(21004)上の物理近傍に配置(21005、21006)した例である。
本実施例では、物理近傍に配置するように指定する複数の列を順にn次のキー列と呼び、より支配的な列ほどnの値を大きくすることとする。この例では、2次のキー列であるID列(21003)の等号条件検索の場合は全てのデータを一括取得できる。例えば、「IDが2に等しい」を検索条件とする等号条件検索については、ID=2であるセグメント集合(21013)を一括取得でき、「IDが3に等しい」を検索条件とする等号条件検索については、ID=3であるセグメント集合(21014)を一括取得できる。
また、1次のキー列である道路種別列(21002)の等号条件検索の場合でも条件にマッチする行がある程度まとまっているため、データを高速に取得できる。例えば「道路種別が高速に等しい」を検索条件とする等号条件検索については、道路種別=高速である複数のセグメント集合(21007、21010)を取得し、同じく「道路種別が国道に等しい」場合には道路種別=国道である複数のセグメント集合(21008、21011)を取得し、「道路種別が県道に等しい」場合には道路種別=県道である複数のセグメント集合(21009、21012)を取得する。このような表は、重複ID連続配置表を複数列に対応するよう拡張したものである。
複数列に拡張した重複ID連続配置表へ挿入操作を行う場合には、複数列に亘って物理的に同一IDを持つ行が隣接するセグメントに配置された状態を維持する事が要求されるため、通常の表とは異なる方法で挿入を行う。
複数列に拡張した重複ID連続配置表へ挿入操作を行う方法を図20に示すフローチャートを用いて説明する。
挿入操作を実行するinsert処理(22001)では、まず挿入する行のサイズとストレージ領域の空き領域のサイズを比較し、挿入可能か否か判断(22002)を行う。ここで挿入可能でない場合はエラー(22027)としてinsert処理を終了(22014)する。挿入可能である場合は、ストレージ領域内で挿入箇所を探索する。例えば、図19の例において、ID=2かつ道路種別=国道である行の挿入箇所は、道路種別=国道である複数のセグメント集合(21008、21011)のうち、ID=2のセグメント集合に含まれるもの(21008)である。ここではカウンタ変数iを用いてi=1(22003)から順に挿入箇所となるi次セグメント集合の位置を探索(22004)する。その後、見つかったか否か判断(22005)を行い、見つからなかった場合にはiに1を加え(22006)、探索(22004)を繰り返す。ここで、iが最高次数に達してしまった場合には判断(22005)において先に進む。
次に、判断(22005)で見つかったi次セグメント集合の1つ目の部分集合に空きがある、もしくはiが最高次数であるか否か判断(22007)を行い、どちらか1つの条件を満たす場合には該当表に関するインデックスの排他を取得(22008)し、その後i=1であるか否か判断(22009)を行う。判断(22009)においてi=1であった場合にはA(22028)の手順をたどる。 A(22028)の手順では、まず1次セグメント集合の空き領域に行を挿入(22011)し、その後インデックスを更新(22012)し、インデックスの排他を開放(22013)し、挿入操作を完了(22014)する。 A(22028)の手順に従い、ID=2かつ道路種別=国道の行を挿入する場合の動作例を図21に示す。ここではID=2かつ道路種別=国道の行集合を含むセグメント集合(23001)に空き領域があるため、同一セグメント集合の空き領域に行を挿入(23002)している。
一方、判断(22009)においてi=1ではなかった場合にはB(22029)の手順をたどる。B(22029)の手順では、探索(22004)において行を挿入する1次のセグメント集合が見つからなかった場合であるため、まず、1次のセグメント集合用に空き領域を確保(22010)する。その後、1次セグメント集合の空き領域に行を挿入(22011)し、インデックスを更新(22012)し、インデックスの排他を開放(22013)し、挿入操作を完了(22014)する。 B(22029)の手順に従い、ID=2かつ道路種別=国道の行を挿入する場合の動作例を図22に示す。ここでは、ID=2かつ道路種別=国道の行集合を含むセグメント集合は存在しないが、ID=2の行集合を含むセグメント集合(24001)の直後に連続した空き領域(24002)が存在するため、ID=2の行集合を含むセグメント集合(24001)の直後に1次セグメント集合用の領域を確保し、行を挿入(24003)している。
判断(22007)において、どちらの条件も満たさなかった場合には、2次以上のセグメント集合を別の空き領域に移動させる動作を行う。ここでは、カウンタ変数jを用いてj=最高次数(22015)から順にj次セグメント集合よりも大きい連続した空き領域を探索(22016)する。その後、見つかったか否か判断(22017)を行い、見つからなかった場合にはjから1を引き(22018)、探索(22016)を繰り返す。
ここで、jが0に達してしまった場合には、判断(22017)において先に進む。その後、該当表に関連するインデックスの排他を取得(22019)する。
次に、j=0であるか否か判断(22020)を行う。判断(22020)において、j=0であった場合にはC(22030)の手順をたどる。C(22030)の手順では、判断(22017)においてj=0であった、つまり、1次のセグメント集合よりも大きい連続した空き領域が確保できなかったため、1次のセグメント集合が分割される。まず、1次のセグメント集合用に空き領域を確保(22021)し、その後1次セグメント集合の空き領域に行を挿入(22022)し、インデックスを更新(22012)し、インデックスの排他を開放(22013)し、挿入操作を完了(22014)する。 C(22030)の手順に従い、ID=2かつ道路種別=国道の行を挿入する場合の動作例を図23に示す。ここでは、ID=2かつ道路種別=国道の行集合を含む1次セグメント集合(25001)に空き領域がなく、かつ空き領域(25002)のサイズが1次のセグメント集合(25001)よりも小さかったため、空き領域(25002)に1次のセグメント集合用に空き領域を確保し、その後、1次セグメント集合の空き領域に行を挿入(25003)する。
判断(22020)において、j=0ではなかった場合にはD(22031)の手順をたどる。D(22031)の手順では、判断(22017)において1次以上のj次セグメント集合よりも大きい連続した空き領域が見つかったと判断しているため、j次セグメント集合を連続領域に再配置する。
まず、探索(22016)において見つかった空き領域にj次のセグメント集合よりも大きい連続した空き領域を確保(22023)し、その後1次のセグメント集合を挿入行であるnまで昇順に移動(22024)し、1次セグメント集合の空き領域に行を挿入(22025)し、1次セグメント集合を挿入行以降のnから昇順に移動(22026)し、インデックスを更新(22012)し、インデックスの排他を開放(22013)し、挿入操作を完了(22014)する。 D(22031)の手順に従い、ID=2かつ道路種別=国道の行を挿入した場合、j=2であった場合の動作例を図24に示す。ここでは、ID=2かつ道路種別=国道の行集合を含む1次のセグメント集合(26001)に空き領域がなく、かつ空き領域(26003)のサイズが2次のセグメント集合(26002)よりも大きかったため、2次のセグメント集合をまとめて連続領域に再配置(26004)している。
最後に、本実施例における重複ID連続配置表識別表と重複ID連続配置表ID管理表および重複ID連続配置表親子関係管理表を図25に示す。重複ID連続配置表識別表(27001)は管理番号(27002)列と表名(27003)列からなり、図2に示す実施例1の重複ID連続配置表識別表1005と同じである。重複ID連続配置表ID管理表(27004)は表名(27005)列と列名(27006)列からなり、重複ID連続配置表親子関係管理表は表名(27008)列と列名(27009)列と次数(27010)列からなる。
ここでは、図19の道路種別列(21002)を1次のキー列、ID列(21003)を2次のキー列と指定して交差点表(21001)を重複ID連続配置表として格納するため、重複ID連続配置表識別表(27001)には交差点表を示す行(27011)が含まれ、重複ID連続配置表ID管理表(27004)には交差点表の道路種別列を表す行(27012)とID列を示す行(27013)が含まれ、また、重複ID連続配置表親子関係管理表(27007)には道路種別列の次数が1であることを示す行(27014)とID列の次数が2であることを示す行(27015)が含まれる。
図9に示した区画(10001)に分けられた地図データの効果的な格納方法として、Zオーダー格納法がある。Zオーダー格納法の例を図26に示す。Zオーダー格納法は区画の識別番号をZ字の順に割り当て、区画番号順に格納する方法である。
識別番号の割り当て方の例として、図26中では左上の隣接4区画組み(28001、28002、28003、28004)にZ字(28005)順に1から4の識別番号を割り当てている。Zオーダー格納法を用いることで、A(28006)と記した自車を中心とした近傍9区画内の交差点リスト取得を行う場合に、a(28007)と記した隣接4区画の交差点データを一括取得できる。
Zオーダー格納法は隣接4区画以上の領域にも拡張可能である。その一例として、図27に隣接16区画を扱う2次のZオーダー格納の例を示す。隣接16区画組みは4つの隣接4区画組みをZ字順に割り当てることで構成される。図27では4つの隣接4区画組み(29001、29002、29003、29004)にZ字(29005)に識別番号を割り当てる。ここでは、隣接4区画組み(29001、29002、29003、29004)は1次のZ字、隣接16区画組み(29005)を2次のZ字と呼ぶ。
2次のZ字順に識別番号を割り当てることで1(29006)から16(29007)までの区画を一括取得できるように格納できる。また、同様にZ字を大きくすることで隣接64区画組みからなる3次のZ字や隣接256区画からなる4次のZ字といった拡張も行える。
同じ1次のZ字に含まれる4区画には、(区画番号−1)を4で割った商が等しいという特徴がある。この商に1を加えたものを1次のZ字の識別子と定義する。1次のZ字の識別子(28008、28009、28010、28011、28012、28013、28014、28015、28016、28017、28018、28019、28020、28021、28022、28023)は上記の定義に従って振った識別子である。
同様に2次のZ字についても(1次のZ字の識別子−1)を4で割った商に1を加えたものを2次のZの識別子とする。図27に符号29008〜29011で示す数字1,2,3,4は上述の定義に従って順次付した2次のZ字の識別子である。
本実施例で扱うZオーダー格納法は、格納次数によらず実施例2に示した複数列に拡張した重複ID連続配置表の特別な例として実施できる。
図28に、1次のZオーダー格納法を複数列に拡張した例を示す。ここでは、交差点表(30001)を構成する列のうち、ID列(30002)に関して1次のZ字順に隣接した4区画をストレージ領域(30003)上の物理近傍に配置(30014、30015)した例である。ここでは、図26に示した1次のZ字順に隣接した4区画のうち、4番目の隣接4区画(28011)および5番目の隣接4区画(28012)を配置している。4番目の隣接4区画(28011)は1次のZ字順識別子=4のセグメント集合(30014)であり、これを構成する4つの区画(30006、30007、30008、30009)がストレージ領域上の1次のキー列(30004)として連続領域に配置される。
また、5番目の隣接4区画(28012)は1次のZ字順識別子=5のセグメント集合(30015)であり、これを構成する4つの区画(30010、30011、30012、30013)も同じく1次のキー列(30004)としてストレージ領域(30003)上で連続領域に配置される。このように、1次のZ字識別子を2次のキー列とみなすことで、2列に拡張した重複ID連続配置表の特別な例として実施できる。再帰的に、n次のZ字識別子をn+1次のキー列とみなすことで、n+1列に拡張した重複ID連続配置表の特別な例として実施できる。
本実施例で用いる重複ID連続配置識別表、重複ID連続配置ID管理表、重複ID連続配置表親子関係管理表を図29により説明する。本実施例では、実施例2の場合と比べ、重複ID連続配置表親子関係管理表で管理すべき情報が異なる。
本実施例で用いる重複ID連続配置親子関係管理表(31007)では表名(31008)列と列名(31009)列と次数(31011)列に加えて条件列(31010)列を持ち、Zオーダー格納法に従う列か否かを識別可能としている。重複ID連続配置表識別表(31001)は実施例2の場合と同じく管理番号(31002)列と表名(31003)列からなり、重複ID連続配置表ID管理表(31004)も実施例2の場合と同じく表名(31005)列と列名(31006)列からなる。
ここでは、図28の交差点表(30001)のID列(30002)について1次のZ字順に隣接した4近傍を隣接配置するために、重複ID連続配置表識別表(31001)には交差点表を示す行(31012)が含まれ、重複ID連続配置表ID管理表(31004)には交差点表のID列を表す行(31013)が含まれ、また重複ID連続配置表親子関係管理表(31007)にはID列の次数が1でありZオーダー格納法が適用されていることを示す行(31014)と同じくID列の次数が2でありZオーダー格納法が適用されていることを示す行(31015)が含まれる。
なお、本実施例ではZオーダー格納方法を例に挙げたが、同様にN字順4近傍を整列させるNオーダー格納方法や、時計回りに4近傍を整列させる時計オーダー格納方法も容易に類推可能である。本実施例における重複ID連続配置表親子関係管理表(31007)においても、条件列(31010)にNオーダー格納方法や時計オーダー格納方法を指定することで、Nオーダー格納方法や時計オーダー格納方法を実現可能である。
組込み用途では使用可能なメモリサイズの制約が厳しく、サーバ向けDBMSのように大きいバッファを割り当てることができないため、ストレージデバイスの入出力性能がトータルの検索性能に直接影響する。特にカーナビゲーションシステム用途においては、従来のカーナビが光ディスクデバイスのシーケンシャルアクセスを有効利用できるように最適化されたファイル構造が利用されているため、より高速なハードディスクデバイスを導入してもランダムアクセスを発生させてしまうと光ディスクに対して性能面でデグレードになってしまう。よって本発明を用いてランダムアクセスを抑えるような制御を行う必要がある。
Claims (3)
- 重複ID連続配置表のデータを検索および前記重複ID連続配置表に対してデータを更新するプログラムを含み、
重複ID連続配置表名と管理番号を管理する重複ID連続配置表識別表と、
前記重複ID連続配置表名と重複キー列名を管理する重複ID連続配置表ID管理表を有し、
前記重複ID連続配置表は、単一もしくは複数の列からなるキー列の値が重複する行をストレージ上の連続した領域に配置する機能を持ち、
前記プログラムは、前記重複ID連続配置表識別表と前記重複ID連続配置表ID管理表に従い前記重複ID連続配置表と重複キー列を認識し、
さらに、十分なサイズの連続した空き領域がある場合には重複IDを持つ行を連続領域に配置するために、
前記重複ID連続配置表にある行を挿入する場合に、
前記ストレージ上の重複キー列の値が等しい行が配置された領域に連続した空きが見つからなかったと判断された場合に、
前記重複キー列の値が等しい行全体よりも容量の大きい連続した空き領域を探索する手順と、探索によって空き領域が見つかった場合に前記重複キー列の値が等しい行全体を空き領域に移動させる手順を含むアルゴリズムを用いて、前記データの更新を行うことを特徴とするデータベース管理プログラム。 - 重複ID連続配置表のデータを検索および重複ID連続配置表に対してデータを更新するプログラムを含み、
重複ID連続配置表名と管理番号を管理する重複ID連続配置表識別表と、
前記重複ID連続配置表名と重複キー列名を管理する重複ID連続配置表ID管理表と、
前記重複ID連続配置表名と前記重複キー列名とキー次数を管理する重複ID連続配置表親子関係管理表を有し、
前記重複ID連続配置表は、前記重複ID連続配置表親子ID関係管理表に従い単一もしくは複数の列からなる1次キー列の値が重複する行をストレージ上の連続した領域に配置し、さらに、前記重複ID連続配置表親子ID関係管理表に従い昇順に高次キー列の値が重複する行もストレージ上の連続した領域に配置する機能を持ち、
前記プログラムは、前記重複ID連続配置表識別表と前記重複ID連続配置表ID管理表と前記重複ID連続配置表親子関係管理表に従い重複ID連続配置表を認識し、
さらに、十分なサイズの連続した空き領域がある場合には1次キー列に重複IDを持つ行および昇順に高次キー列に重複IDを持つ行を連続領域に配置するために、
前記重複ID連続配置表にある行を挿入する場合に、
前記ストレージ上の1次若しくは高次の重複キー列の値が等しい行が配置された領域に連続した空きが見つからなかったと判断された場合に、
各次数の重複キー列の値が等しい行全体よりも容量の大きい連続した空き領域を探索する手順と、探索によってある次数の重複キー列の値が等しい行全体よりも容量の大きい空き領域が見つかった場合に、もっとも高い次数の重複キー列の値が等しい行全体を1次のキー列の値を用いて昇順に空き領域に移動させる手順を含むアルゴリズムを用いて、前記データの更新を行うことを特徴とするデータベース管理プログラム。 - 請求項2記載のデータベース管理プログラムにおいて、
前記重複ID連続配置表親子関係管理表は、重複ID連続配置表名と重複キー列名と親子関係の条件とキー次数を管理し、
前記重複ID連続配置表を構成する単一の列の中に親子関係の条件を用いて、キー次数の上下関係をもたせたことを特徴とするデータベース管理プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2005/016965 WO2007032068A1 (ja) | 2005-09-14 | 2005-09-14 | データベース管理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2007032068A1 true JPWO2007032068A1 (ja) | 2009-03-19 |
JP4699469B2 JP4699469B2 (ja) | 2011-06-08 |
Family
ID=37864674
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007535349A Expired - Fee Related JP4699469B2 (ja) | 2005-09-14 | 2005-09-14 | データベース管理プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US8073823B2 (ja) |
JP (1) | JP4699469B2 (ja) |
WO (1) | WO2007032068A1 (ja) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4878178B2 (ja) * | 2006-02-28 | 2012-02-15 | 株式会社日立製作所 | データ処理方法および装置並びにその処理プログラム |
US8930371B1 (en) * | 2008-06-30 | 2015-01-06 | Amazon Technologies, Inc. | Systems and methods for efficiently storing index data on an electronic device |
KR101642072B1 (ko) * | 2014-05-08 | 2016-07-22 | 주식회사 알티베이스 | 하이브리드스토리지장치 및 방법 |
US10884998B2 (en) * | 2018-09-14 | 2021-01-05 | International Business Machines Corporation | Method for migrating data records from a source database to a target database |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0392942A (ja) * | 1989-09-06 | 1991-04-18 | Hitachi Ltd | ファイルの格納方法およびアクセス方法 |
JPH07152615A (ja) * | 1993-11-29 | 1995-06-16 | Nec Corp | データベース再編成方式 |
JPH11110265A (ja) * | 1997-10-03 | 1999-04-23 | Fujitsu Ltd | 情報処理装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04211844A (ja) * | 1990-01-19 | 1992-08-03 | Texas Instr Inc <Ti> | ファイルシステムディフラグメント化装置及び方法 |
JPH0869403A (ja) | 1994-08-26 | 1996-03-12 | Fuji Xerox Co Ltd | ファイル管理装置 |
US7171427B2 (en) * | 2002-04-26 | 2007-01-30 | Oracle International Corporation | Methods of navigating a cube that is implemented as a relational object |
US20080059492A1 (en) * | 2006-08-31 | 2008-03-06 | Tarin Stephen A | Systems, methods, and storage structures for cached databases |
US20080059412A1 (en) * | 2006-08-31 | 2008-03-06 | Tarin Stephen A | Value-instance connectivity computer-implemented database |
-
2005
- 2005-09-14 US US11/922,936 patent/US8073823B2/en not_active Expired - Fee Related
- 2005-09-14 JP JP2007535349A patent/JP4699469B2/ja not_active Expired - Fee Related
- 2005-09-14 WO PCT/JP2005/016965 patent/WO2007032068A1/ja active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0392942A (ja) * | 1989-09-06 | 1991-04-18 | Hitachi Ltd | ファイルの格納方法およびアクセス方法 |
JPH07152615A (ja) * | 1993-11-29 | 1995-06-16 | Nec Corp | データベース再編成方式 |
JPH11110265A (ja) * | 1997-10-03 | 1999-04-23 | Fujitsu Ltd | 情報処理装置 |
Non-Patent Citations (2)
Title |
---|
CSNG200600924019, 伊藤 大輔, "地図データの更新に対応した組込みデータベースのデータ配置方式", 情報処理学会研究報告 Vol.2006 No.78, 20060713, 第2006巻, p.139−144, JP, 社団法人情報処理学会 * |
JPN6010060092, 伊藤 大輔, "地図データの更新に対応した組込みデータベースのデータ配置方式", 情報処理学会研究報告 Vol.2006 No.78, 20060713, 第2006巻, p.139−144, JP, 社団法人情報処理学会 * |
Also Published As
Publication number | Publication date |
---|---|
US20080281791A1 (en) | 2008-11-13 |
US8073823B2 (en) | 2011-12-06 |
WO2007032068A1 (ja) | 2007-03-22 |
JP4699469B2 (ja) | 2011-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP2069979B1 (en) | Dynamic fragment mapping | |
CN102129458B (zh) | 关系型数据库的存储方法及装置 | |
EP0124097B1 (en) | Method for storing and retrieving data in a data base | |
CN104246764B (zh) | 利用非均匀散列函数在非均匀访问存储器中放置记录的方法和装置 | |
US5295261A (en) | Hybrid database structure linking navigational fields having a hierarchial database structure to informational fields having a relational database structure | |
CN101751406B (zh) | 一种实现基于列存储的关系型数据库的方法及装置 | |
US20100114843A1 (en) | Index Compression In Databases | |
CN105117417A (zh) | 一种读优化的内存数据库Trie树索引方法 | |
KR100787079B1 (ko) | 표형식데이터의 제시방법, 삽입방법, 삭제방법 및 갱신방법 | |
US8682872B2 (en) | Index page split avoidance with mass insert processing | |
CN107783988A (zh) | 一种目录树的加锁方法及设备 | |
CN102609492B (zh) | 一种支持表模式可变的元数据管理方法 | |
US6745198B1 (en) | Parallel spatial join index | |
US20070094313A1 (en) | Architecture and method for efficient bulk loading of a PATRICIA trie | |
JP4699469B2 (ja) | データベース管理プログラム | |
US20200278980A1 (en) | Database processing apparatus, group map file generating method, and recording medium | |
US20220171872A1 (en) | Data generalization apparatus, data generalization method, and program | |
JP6006740B2 (ja) | インデックス管理装置 | |
US8812453B2 (en) | Database archiving using clusters | |
KR100289087B1 (ko) | 비플러스트리에다수의키값을추가하기위한방법 | |
KR101642072B1 (ko) | 하이브리드스토리지장치 및 방법 | |
JP2000517448A (ja) | データベース・システム及びn次元データセットの編成方法 | |
CN1492363A (zh) | 一种嵌入式系统的数据存放及其查找方法 | |
US11899640B2 (en) | Method of building and appending data structures in a multi-host environment | |
JPS62287350A (ja) | インデツクス一括更新方式 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20101019 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20101220 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20110208 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110302 |
|
LAPS | Cancellation because of no payment of annual fees |