[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

JP5287071B2 - データベース管理システムおよびプログラム - Google Patents

データベース管理システムおよびプログラム Download PDF

Info

Publication number
JP5287071B2
JP5287071B2 JP2008238086A JP2008238086A JP5287071B2 JP 5287071 B2 JP5287071 B2 JP 5287071B2 JP 2008238086 A JP2008238086 A JP 2008238086A JP 2008238086 A JP2008238086 A JP 2008238086A JP 5287071 B2 JP5287071 B2 JP 5287071B2
Authority
JP
Japan
Prior art keywords
data structure
value
position information
index
entry
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.)
Expired - Fee Related
Application number
JP2008238086A
Other languages
English (en)
Other versions
JP2010072823A (ja
Inventor
史郎 堀部
卓也 平岡
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Ricoh Co Ltd
Original Assignee
Ricoh Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Priority to JP2008238086A priority Critical patent/JP5287071B2/ja
Publication of JP2010072823A publication Critical patent/JP2010072823A/ja
Application granted granted Critical
Publication of JP5287071B2 publication Critical patent/JP5287071B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、索引を用いて所望のレコードを検索するためのデータベース管理システムおよびプログラムに関するものである。
データベース管理システムでよく使われる索引構造として、B木索引がある。たとえばB+木で例をあげると、その構造は、リーフと呼ばれる最下層のノードと、ルートと呼ばれるノードと、ブランチと呼ばれるそれらノード間のノードとからなり、リーフにはエントリとしてキーとバリューとのペアが格納され、ブランチにはエントリとしてリーフのエントリに子ノードへのポインタを付加したデータが格納される。ここで、キーとは、索引作成対象列のデータを指し、バリューとは、テーブルの行を一意に識別するための識別子(以下、ROWIDと称する)を指す。
このような木構造は、キーがユニークである場合やキーの種類が多い場合に適している。しかし、キーの種類が少ない場合には、同じキーを複数格納してしまうため、ページの使用効率はよくない。
また、他の索引構造として、ビットマップ索引がある。ビットマップ索引では、キーごとにビットマップを作成し、バリューをその値に対応する位置にビットが立っているかどうかで表す。この索引は、B木索引に比べて高速に照合できる場合もあるが、更新処理の同時実行には適していないというデメリットもある。
また、ページの使用効率を高める別の方法として、階層化された複数のデータ構造体を組み合わせたり、キーを圧縮したりする方法も提案されている。例えば、特許文献1は、決定グラフと呼ばれる一段目のデータ構造体と結論セットと呼ばれる二段目のデータ構造体からなる階層化されたデータ構造体による索引を提案している。特に、この特許文献1では、「該ノードに関連するキーの全体を記憶しない」、「前記結論セット内の各エントリは、・・・前記結論セット内のエントリに関連するキーの厳密な値を保持するキーフィールドと、・・・とを備える」、「前記結論セットに記憶されるキーは圧縮形態で記憶される」などといった記述に見られるように、重なるキーを格納しないようにしたり、キーを圧縮して格納したりしている。
特表2004−527813号公報
しかしながら、特許文献1に開示された方式によっても、二段目のデータ構造体にキーを格納していることに変わりはないので、ページの使用効率という点ではまだ不十分である。
また、従来のデータベース管理システムでは、NULLの扱いもページの仕様効率を低くする一因となっていた。あるデータがNULLであるかどうかを表すには二通りの方法がある。一つは、データの値域の中の特定の値を内部的にNULLとみなす方法であり、他の一つは、データがNULLかどうかのフラグを追加する方法である。
しかしながら、前者の方法はその特定の値をユーザが使えなくなることを意味するので、常に利用できる方法ではない。また、後者の方法は、そのような制限がないものの、本来格納したいデータ以外にフラグのための領域も必要とするので、ページの使用効率を低下させる。
本発明は、上記に鑑みてなされたものであって、ページ使用効率およびキャッシュの効果を高めることのできるデータベース管理システムおよびプログラムを提供することを目的の一つとする。
また、本発明の別の態様にかかるデータベース管理システムは、複数のレコード間において所定のフィールドに登録されうる第1の値および第2の値と該第1の値および該第2の値を前記所定のフィールドにそれぞれ含んだレコードの位置情報とを対応付けた索引を作成するデータベース管理システムであって、前記第1の値と前記位置情報とが第1のデータ構造体と第2のデータ構造体との組み合わせによって対応付けられ、前記第2の値と前記位置情報とが前記第1のデータ構造体と第3のデータ構造体との組み合わせによって対応付けられるように該第1のデータ構造体と該第2のデータ構造体と該第3のデータ構造体を作成する索引作成手段と、前記索引作成手段によって作成された前記第1のデータ構造体と前記第2のデータ構造体と前記第3のデータ構造体とを索引として格納する記憶手段と、を備え、前記第1のデータ構造体は、前記第1の値と該第1の値に対応付けられた前記第2のデータ構造体の位置情報とをエントリとして含むとともに、前記第2の値に対応付けられた前記第3のデータ構造体の位置情報をエントリとして含み、前記第2のデータ構造体は、前記第1の値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該第1の値自体をエントリとして含まず、前記第3のデータ構造体は、前記第2の値と該第2の値を前記所定のフィールドに含んだレコードの位置情報とをエントリとして含むことを特徴とする。
また、本発明のさらに別の態様にかかるデータベース管理システムは、複数のレコード間において所定のフィールドに登録されうるNULL値および非NULL値と該NULL値および該非NULL値を前記所定のフィールドにそれぞれ含んだレコードの位置情報とを対応付けた索引を作成するデータベース管理システムであって、前記NULL値と前記位置情報とが第1のデータ構造体と第2のデータ構造体との組み合わせによって対応付けられ、前記非NULL値と前記位置情報とが前記第1のデータ構造体と第3のデータ構造体との組み合わせによって対応付けられるように該第1のデータ構造体と該第2のデータ構造体と該第3のデータ構造体を作成する索引作成手段と、前記索引作成手段によって作成された前記第1のデータ構造体と前記第2のデータ構造体と前記第3のデータ構造体とを索引として格納する記憶手段と、を備え、前記第1のデータ構造体は、前記NULL値に対応付けられた前記第2のデータ構造体の位置情報をエントリとして含むとともに、前記非NULL値に対応付けられた前記第3のデータ構造体の位置情報をエントリとして含み、前記第2のデータ構造体は、前記NULL値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該NULL値自体をエントリとして含まず、前記第3のデータ構造体は、前記非NULL値と該非NULL値を前記所定のフィールドに含んだレコードの位置情報とをエントリとして含むことを特徴とする。
また、本発明のさらに別の態様にかかるデータベース管理システムは、複数のレコード間において第1のフィールドに登録されうる第1の値と該第1の値を前記第1のフィールドに含んだレコードの第1の位置情報とを対応付け、且つ、前記複数のレコード間において第2のフィールドに登録されうる第2の値と該第2の値を前記第2のフィールドに含んだレコードの第2の位置情報とを対応付けた索引を作成するデータベース管理システムであって、前記第1の値と前記第1の位置情報とが第1のデータ構造体と第2のデータ構造体との組み合わせによって対応付けられるように該第1のデータ構造体と該第2のデータ構造体を作成する索引作成手段と、前記索引作成手段によって作成された前記第1のデータ構造体と前記第2のデータ構造体とを索引として格納する記憶手段と、を備え、前記第1のデータ構造体は、前記第1の値と該第1の値に対応付けられた前記第2のデータ構造体の位置情報とをエントリとして含み、前記第2のデータ構造体は、前記第2の値と該第2の値を前記第2のフィールドに含んだレコードの前記第2の位置情報とをエントリとして含み且つ前記第1の値自体をエントリとして含まないことを特徴とする。
また、本発明のさらに別の態様にかかるプログラムは、複数のレコード間において所定のフィールドに登録されうる第1の値および第2の値と該第1の値および該第2の値を前記所定のフィールドにそれぞれ含んだレコードの位置情報とを対応付けた、記憶手段に格納された索引を用いて、コンピュータに所望のレコードを検索させるためのプログラムであって、所望のキーが前記第1の値を示す場合に、前記索引を構成する第1のデータ構造体から当該所望のキーを検索することによって、前記索引を構成し且つ該第1の値に対応付けられた第2のデータ構造体の位置情報を取得する工程と、前記所望のキーが前記第2の値を示す場合に、前記第1のデータ構造体から当該所望のキーを検索することによって、前記索引を構成し且つ該第2の値に対応付けられた第3のデータ構造体の位置情報を取得する工程と、前記所望のキーが前記第1の値を示す場合に、取得した前記位置情報に対応付けられた第2のデータ構造体から、前記第1の値を前記所定のフィールドに含んだレコードの位置情報を取得する工程と、前記所望のキーが前記第2の値を示す場合に、取得した前記位置情報に対応付けられた第3のデータ構造体から、前記第2の値を検索することによって、該第2の値を前記所定のフィールドに含んだレコードの位置情報を取得する工程と、を含み、前記第2のデータ構造体は、前記第1の値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該第1の値自体をエントリとして含まず、前記第3のデータ構造体は、前記第2の値と該第2の値を前記所定のフィールドに含んだレコードの位置情報とをエントリとして含むことを特徴とする。
また、本発明のさらに別の態様にかかるプログラムは、複数のレコード間において所定のフィールドに登録されうるNULL値および非NULL値と該NULL値および該非NULL値を前記所定のフィールドにそれぞれ含んだレコードの位置情報とを対応付けた、記憶手段に格納された索引を用いて、コンピュータに所望のレコードを検索させるためのプログラムであって、所望のキーがNULL値を示す場合に、前記索引を構成する第1のデータ構造体から、該NULL値を前記所定のフィールドに含んだレコードの位置情報を取得する第1工程と、所望のキーが非NULL値を示す場合に、前記索引を構成する第2のデータ構造体から当該非NULL値を検索することによって、該非NULL値を前記所定のフィールドに含んだレコードの位置情報を取得する第2工程と、を含み、前記第1のデータ構造体は、前記NULL値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該NULL値自体をエントリとして含まないことを特徴とする。
また、本発明のさらに別の態様にかかるプログラムは、複数のレコード間において第1のフィールドに登録されうる第1の値と該第1の値を前記第1のフィールドに含んだレコードの第1の位置情報とを対応付け、且つ、前記複数のレコード間において第2のフィールドに登録されうる第2の値と該第2の値を前記第2のフィールドに含んだレコードの第2の位置情報とを対応付けた、記憶手段に格納された索引を用いて、コンピュータに所望のレコードを検索させるためのプログラムであって、前記索引を構成する第1のデータ構造体から前記第1の値を示す第1のキーを検索することによって、前記索引を構成し且つ該第1の値に対応付けられた第2のデータ構造体の位置情報を取得する第1工程と、取得した前記位置情報に対応付けられた前記第2のデータ構造体から、前記第2の値を示す第2のキーを検索することによって、前記第2の値を前記所定のフィールドに含んだレコードの位置情報を取得する第2工程と、を含み、前記第2のデータ構造体は、前記第1の値をエントリとして含まないことを特徴とする。
本発明によれば、同一のフィールドにおいて取りうる各値(キー)で特定されるレコードの索引を、少なくとも二段構造で構成し、かつ後段の索引が前段の索引のキーをエントリとして含まないので、ページ使用効率およびキャッシュの効果を高めることができ、さらに、後段のデータ構造体にビットマップ索引で使われるようなデータ構造体の使用を避けることによって、更新処理の同時実行性能をも落とさないことができるという効果を奏する。
以下に添付図面を参照して、この発明にかかるデータベース管理システムおよびプログラムの最良な実施の形態を詳細に説明する。
図1は、後述する実施の形態間で共通するデータベース管理システムの構成を示す概略図である。図1に示すように、データベース管理システム100は、PC(Personal Computer)などのコンピュータによって実現することができる。具体的には、データベース管理システム100は、データベース管理システム100の各部を集中的に制御するCPU(Central Processing Unit)102と、CPU102を動作させるプログラムやCPU102の処理対象となる種々のデータを格納する一次記憶装置105と、データベースを格納した二次記憶装置106と、を備えて構成され、これらの各部間は、データバス114を介してデータを送受信する。なお、一次記憶装置105は、ROM(Read Only Memory)103及びRAM(Random Access Memory)104等のアクセス速度の高速な半導体記憶装置からなり、二次記憶装置106は、高容量の磁気記憶装置であるHDD(Hard Disk Drive)107からなる。
また、本発明の実施の形態にかかるデータベース管理システム100は、データベース管理を行うに際して必要な処理要求の受け付けや処理結果の出力を可能にするための入出力手段を備える。その入出力手段は、ネットワークインターフェース110によって実現しても良いし、汎用的なPCが備えた構成、すなわち、CD−ROMやFD等の可搬性を有する記憶媒体108aを駆動するリムーバブルディスク装置108、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)等の表示装置111、操作者がCPU102に命令や情報等を入力するためのキーボード112やポインティングデバイス113によって実現しても良い。また、図示するように、データベース管理システム100は、これらすべてをデータバス114に接続して備えても良い。なお、ネットワークインターフェース110によって入出力手段を実現する場合には、データベース管理システム100は、データウェアハウスのサーバのように機能させることができる。
上記した構成のように、データベース管理システム100が行う種々の処理は、CPU102によって実行される。より具体的には、それは、一次記憶装置105のRAM104上に展開されたデータベース管理プログラムが担う。該データベース管理プログラムは、機能分担された複数のモジュールからなり、これらモジュールはデータベース管理システム100の構成要素とも言える。なお、そのデータベース管理プログラムは、ROM103やHDD107に予め格納されていても良いし、記憶媒体108aによって提供されても良いし、ネットワークインターフェース110によって外部装置からネットワーク109を介して提供されてもよい。
図2は、上記したモジュール構成の観点で示したデータベース管理システム100の概略構成図である。図2に示すように、データベース管理システム100は、HDD107等に格納されたデータベース25と、SQL命令等の処理要求を受け付けて該処理要求の構文解析や最適化などを行う処理解析部21と、処理解析部21によって解析された処理要求に応じてデータベース25を検索してその検索結果を得る検索部22と、処理解析部21によって解析された処理要求に応じてデータベース25を更新する更新部23と、検索部22による検索結果や更新部23による更新結果等の処理結果を出力する出力部24と、を備える。なお、図2示したモジュール構成は、データベース管理システム100に検索処理および更新処理を実行させるための最小の構成を指すが、データベース管理システム100は、後述する各実施の形態の特徴と言える多段構造の索引を作成するための手段(例えば、索引作成部)をも備える。
以下に説明する各実施の形態は、上記構成を有するデータベース管理システム100の処理を示すものであるが、各実施の形態の特徴の理解を容易にするために、データベース25に、図3に示すようなテーブルが格納されていることを想定し、データベース管理システム100はそのテーブルに対して各種の処理を行うこととする。
図3に示すテーブルは、8つのレコードからなり、各レコードは、「ROWID」、「文書名」、「状況」、「作業者」の4つのフィールドからなる。このテーブルは、種々の文書について作成から最終的に承認を受けるまでの作業進捗状況を表すものである。
図3に示すテーブルにおいて、「文書名」フィールドは、作業対象となる文書の名前を格納する欄である。「状況」フィールドは、文書の作業進捗に応じて、その値が作成中→審査中→承認中→承認済と変化する限られたデータの欄であり、比較的更新が頻繁に発生する。「作業者」フィールドは、その文書に対する現在の作業者が格納される欄であり、その値として、たとえば、作成中なら作成者、審査中なら審査者、承認中なら承認者が格納される。この「作業者」フィールドもまた、「状況」フィールドと同様に、更新が頻繁に発生する。
特に、「作業者」フィールドのデータは、以下の特徴を有する。
・作業者は社員の数だけありえるのでデータの種類が多い。
・承認済の文書に対しては、作業者は存在しないので「無名」が格納されているとする。
・作業者には偏りがある。例:管理職の社員は作業者になることが多い。承認済文書は多数存在するので「無名」の作業者も多い。
以下に、データベース管理システム100が、図3に示すテーブルに対して実行するデータベース管理方法について、異なる実施の形態毎に説明する。
(第1の実施の形態)
図4は、第1の実施の形態にかかるデータベース管理システム100によって予め作成される索引の概念図である。図4に示すように、索引は二段に階層化されている。1段目の索引は、複数の異なるキーと、各キーに対応付けられた別のデータ構造体の位置情報(ポインタ)とをエントリとしたデータ構造体を示す。一方、2段目の索引は、1段目のデータ構造体の各キーに対応付けられたポインタによって特定されるデータ構造体であり、対応したキーを含んだレコードのROWIDをエントリとしている。特に、2段目のデータ構造体には、キー情報がなく、ROWIDの情報のみからなる。
この二段の索引は、「状況」フィールドのように頻繁に更新され且つその取りうる値の種類の少ない値をキーとする場合に特に有効である。図4の例で言えば、1段目の索引は、「状況」フィールドのすべての取りうる値のうち実際にそれを含んだレコードが存在する値と各値の位置情報であるポインタとのペアをエントリとしたデータ構造体を示す。そのデータ構造体は、具体的には、「作成中」とポインタ0x0a01とのペアと、「審査中」とポインタ0x0b01とのペアと、「承認済」とポインタ0x0e01とのペアとを含んでいる。また、図4の例では、2段目の索引は、「作成中」を値として含むレコードのROWID1,7,8をエントリとしたデータ構造体(ポインタ0x0a01で識別される)と、「審査中」を値として含むレコードのROWID2をエントリとしたデータ構造体(ポインタ0x0b01で識別される)と、「承認済」を値として含むレコードのROWID4,5をエントリとしたデータ構造体(ポインタ0x0e01で識別される)と、を含んでいる。
このような索引は、データベース管理システム100によって作成され、HDD107やリムーバブルディスク装置108などの所定の記憶手段に格納される。なお、ネットワークインターフェース110を介して接続される外部装置をその索引を格納する記憶手段として利用しても良い。
次に、第1の実施の形態にかかるデータベース管理方法に従った検索処理について説明する。図5は、その検索処理を示すフローチャートである。まず、処理解析部21は、SQL文等の処理要求を受け付けて、その解析および最適化を行う。ここでは、その解析および最適化の結果、検索部22が、頻繁に更新され且つその取りうる値の種類の少ない値であるキーを、図4に示した構造の索引から検索することとする。そこで、そのキーが属するフィールドをエントリとした1段目のデータ構造体のポインタを取得する(ステップS101)。つぎに、検索部22は、その1段目のデータ構造体から、指定されたキーを検索し(ステップS102)、検索されたキーに対応する2段目のデータ構造体のポインタを取得する(ステップS103)。続いて、取得したポインタに格納されるデータ構造体のすべてのROWIDを取得する(ステップS104)。これにより、目的としたキーを含んだすべてのレコード、すなわち検索結果を取得することができ、その検索結果は出力部24から出力される。
この検索は、図4の例で言えば、「審査中」がキーとして指定されているとすると、最終的に、ROWID2が取得され、ROWID2で特定されるレコードが検索結果として出力されるという工程を辿る。
このように、2段目の各データ構造体は、同じキーに対するROWID情報を保持しているので、それら各データ構造体にキーを格納する必要がない。
なお、各データ構造体に適用される構造には特に制限はなく、B木索引構造でもハッシュテーブル構造でも構わない。ただし、更新処理の同時実行性能を落とさないために、ビットマップ索引で使われるようなデータ構造体を使用しないことが好ましい。
また、データの追加は、検索時と同様に1段目のデータ構造体に対して、追加先になる2段目のデータ構造体のポインタを取得し、取得したデータ構造体に対して新たなデータを追加することにより行う。データの削除も同様で、1段目のデータ構造体に対して、削除されるデータが格納されている2段目のデータ構造体のポインタを取得し、取得したデータ構造体からデータを削除する。
以上に説明したように、第1の実施の形態にかかるデータベース管理方法によれば、2段目のデータ構造体において、キーを重ねて登録しないことで、ページ使用効率を高めることが可能になり、また、キャッシュの効果を高めることも可能になる。さらに、2段目のデータ構造体としてビットマップ索引で使われるようなデータ構造体を使用しないことで、更新処理の同時実行性能を落とさないこともできる。
(第2の実施の形態)
図6は、第2の実施の形態にかかるデータベース管理システム100によって予め作成される索引の概念図である。図6に示すように、索引は第1の実施の形態と同様に二段に階層化されている。1段目の索引は、2種類のエントリからなるデータ構造体を示す。その2種類のうちの一つ(第1の種類)は、第1の実施の形態にかかるデータベース管理方法にかかる1段目の索引と同様なエントリである。すなわち、それは、複数の異なるキーと、各キーに対応付けられた別のデータ構造体の位置情報(ポインタ)とをペアとしたエントリである。特に、このエントリに含めるキーは、複数のキーのうち実際に登録されることの多いキーであることが好ましい。図3に示すテーブルの例で言えば、「作業者」フィールドの「無名」や管理職社員の名前などがそのようなキーに該当する。もう一つの種類(第2の種類)は、第1の種類以外のすべてのキーとそれらに対応付けられた別のデータ構造体の位置情報(ポインタ)とをペアとしたエントリである。なお、複数のキーに対していずれを第1の種類または第2の種類に属させるかは例えば決定木に従う。
一方、2段目の索引は、1段目の第1の種類のエントリの各キーに対応付けられたポインタによって特定されるデータ構造体と、第2の種類のエントリの各キーに対応付けられたポインタによって特定されるデータ構造体とからなる。第1の種類のエントリに対応するデータ構造体は、第1の実施の形態の2段目のデータ構造体と同様に、対応したキーを含んだレコードのROWIDをエントリとしている。一方、第2の種類のエントリに対応するデータ構造体は、各キーとそれに対応するROWIDとのペアをエントリとしている。
図6の例で言えば、1段目の索引は、第1の種類のデータ構造体として、「作業者」フィールドの値のうち、値が登録されていないことを示す「無名」とポインタ0x0901とのペアと、「鈴木」とポインタ0x0011とのペアなどを含んでおり、第2の種類のデータ構造体として、第1の種類に含まれないその他の値に対応付けられた別の構造体の位置情報(ポインタ)のみを含んでいる。また、図6の例では、2段目の索引は、1段目の第1の種類のエントリに対応するデータ構造体として、「無名」の登録を意味するレコードのROWID4,5をエントリとしたデータ構造体(ポインタ0x0901で識別される)と、「鈴木」を値として含むレコードのROWID3,6をエントリとしたデータ構造体(ポインタ0x0011で識別される)と、を含んでいる。さらに、図6の例では、2段目の索引は、1段目の第2の種類のエントリ(その他)に対応するデータ構造体として、「作業者」フィールドの「佐藤」とその値を含むレコードのROWID8とのペアと、「作業者」フィールドの「山田」とその値を含むレコードのROWID1とのペアと、「作業者」フィールドの「山田」とその値を含むレコードのROWID7とのペアと、をエントリとしたデータ構造体(ポインタ0x0f01で識別される)を含んでいる。
この第2の実施の形態において使用される索引もまた、第1の実施の形態と同様に、データベース管理システム100によって作成され、所定の記憶手段に格納される。
次に、第2の実施の形態にかかるデータベース管理方法に従った検索処理について説明する。図7は、その検索処理を示すフローチャートである。まず、処理解析部21は、SQL文等の処理要求を受け付けて、その解析および最適化を行う。ここでは、その解析および最適化の結果、検索部22が、決定木から得られるように値に偏りが存在するようなキーを、図6に示した構造の索引から検索することとする。そこで、そのキーが属するフィールドをエントリとした1段目のデータ構造体のポインタを取得する(ステップS201)。つぎに、検索部22は、1段目の第1の種類のデータ構造体から、指定されたキーを検索する(ステップS202)。指定されたキーが1段目の第1の種類のデータ構造体において見つかれば(ステップS203,Yes)、そのキーに対応する2段目のデータ構造体のポインタを取得し(ステップS204)、取得したポインタに格納されるデータ構造体のすべてのROWIDを取得する(ステップS205)。
一方、ステップS203において、指定されたキーが1段目の第1の種類のデータ構造体において見つからなければ(ステップS203,No)、その他のエントリに対応する2段目のデータ構造体のポインタを取得し(ステップS206)、そのデータ構造体から、指定されたキーを検索する(ステップS207)。そして、その検索の結果、キーと一致したエントリのROWIDを取得する(ステップS208)。以上のようにして、目的としたキーを含んだすべてのレコード、すなわち検索結果を取得することができ、その検索結果は出力部24から出力される。
この検索は、図6の例で言えば、「鈴木」がキーとして指定されているとすると、最終的に、ROWID3,6が取得され、それらROWID3,6で特定されるレコードが検索結果として出力されるという工程を辿る。他の例として、「山田」がキーとして指定されているとすると、最終的に、ROWID1,7が取得され、それらROWID1,7で特定されるレコードが検索結果として出力されるという工程を辿る。
なお、第1の実施の形態と同様に、各データ構造体に適用される構造には特に制限はないが、ビットマップ索引で使われるようなデータ構造体を使用しないことが好ましい。また、データの追加および削除については、第1の実施の形態に説明した通りである。
2段目の各構造体を、そこに格納されるエントリ数を無視して作成すると、ページの使用効率がかえって悪くなることがある。たとえば、構造体に一件しかエントリが入っていなくとも、その構造体のために1ページが確保されてしまうので、そのような構造体が多数存在すると、2段目においてキーを格納しないことによる効果が薄くなってしまう。このような場合でも、以上に説明したように、第2の実施の形態にかかるデータベース管理方法によれば、1段目の第2の種類のエントリに対応する2段目のデータ構造体のように、少数のエントリしか入らない構造体をまとめることで、ページ使用効率を高くすることができる。
また、キーの種類が多い場合、全てのキーに対してエントリを作成していると、1段目の構造体での検索コストは無視できなくなる。このような場合でも、第2の実施の形態にかかるデータベース管理方法によれば、1段目において、使用頻度の低いキーに対して逐一エントリを格納しないことで、1段目のデータ構造体のエントリ数を抑え、検索コストも抑えることができる。
(第3の実施の形態)
図8は、第3の実施の形態にかかるデータベース管理システム100によって作成される索引の概念図である。図8に示すように、索引は第1の実施の形態と同様に二段に階層化されている。1段目の索引は、2種類のエントリからなるデータ構造体を示す。その2種類とは、NULLを示すキーに対応付けられた別のデータ構造体の位置情報(ポインタ)のエントリと、非NULLを示すキーに対応付けられたさらに別のデータ構造体の位置情報(ポインタ)のエントリである。
一方、2段目の索引は、1段目のNULLのエントリに対応付けられたポインタによって特定されるデータ構造体と、非NULLに対応付けられたポインタによって特定されるデータ構造体とからなる。前者のデータ構造体は、第1の実施の形態の2段目のデータ構造体と同様に、対応したキーを含んだレコードのROWIDをエントリとしている。一方、後者のデータ構造体は、各キーとそれに対応するROWIDとのペアをエントリとしている。
この索引は、図3に示すテーブルにおいて、「状況」フィールドが「承認済」の値を示す場合に、「作業者」フィールドに値としてNULLを格納するような場合に適している。
図8の例で言えば、1段目の索引は、データ構造体として、NULLのエントリに対応付けられた別の構造体のポインタ0x0201と、非NULLのエントリに対応付けられた別の構造体のポインタ0x0801とを含んでいる。また、図8の例では、2段目の索引は、1段目のNULLのエントリに対応するデータ構造体として、ROWID4,5をエントリとしたデータ構造体(ポインタ0x0201で識別される)を含んでいる。さらに、図8の例では、2段目の索引は、1段目の非NULLのエントリに対応するデータ構造体として、「作業者」フィールドの「佐藤」とその値を含むレコードのROWID8とのペアと、「作業者」フィールドの「山田」とその値を含むレコードのROWID1とのペアと、「作業者」フィールドの「山田」とその値を含むレコードのROWID7とのペアと、をエントリとしたデータ構造体(ポインタ0x0801で識別される)を含んでいる。
この第3の実施の形態において使用される索引もまた、第1の実施の形態と同様に、データベース管理システム100によって作成され、所定の記憶手段に格納される。
次に、第3の実施の形態にかかるデータベース管理方法に従った検索処理について説明する。図9は、その検索処理を示すフローチャートである。まず、処理解析部21は、SQL文等の処理要求を受け付けて、その解析および最適化を行う。ここでは、その解析および最適化の結果、検索部22が、NULLと非NULLのいずれかに識別されるキーを、図8に示した構造の索引から検索することとする。そこで、そのキーが属するフィールドをエントリとした1段目のデータ構造体のポインタを取得する(ステップS301)。つぎに、検索部22は、指定されたキーがNULLか非NULLかを判断する(ステップS302)。指定されたキーがNULLであれば(ステップS302,Yes)、NULLに対応する2段目のデータ構造体のポインタを取得し(ステップS303)、取得したポインタに格納されるデータ構造体のすべてのROWIDを取得する(ステップS304)。
一方、ステップS302において、指定されたキーが非NULLであれば(ステップS302,No)、非NULLに対応する2段目のデータ構造体のポインタを取得し(ステップS305)、そのデータ構造体から、指定されたキーを検索する(ステップS306)。そして、その検索の結果、キーと一致したエントリのROWIDを他のエントリに対応する2段目のデータ構造体のポインタを取得する(ステップS307)。以上のようにして、目的としたキーを含んだすべてのレコード、すなわち検索結果を取得することができ、その検索結果は出力部24から出力される。
この検索は、図8の例で言えば、NULLがキーとして指定されているとすると、最終的に、ROWID4,5が取得され、それらROWID4,5で特定されるレコードが検索結果として出力されるという工程を辿る。他の例として、非NULLの「山田」がキーとして指定されているとすると、最終的に、ROWID1,7が取得され、それらROWID1,7で特定されるレコードが検索結果として出力されるという工程を辿る。
なお、第1の実施の形態と同様に、各データ構造体に適用される構造には特に制限はないが、ビットマップ索引で使われるようなデータ構造体を使用しないことが好ましい。また、データの追加および削除については、第1の実施の形態に説明した通りである。
以上に説明したように、第3の実施の形態にかかるデータベース管理方法によれば、キーをNULLのキーを持つデータ構造体を非NULLのデータ構造体と分けて用意しているので、NULLの状態を示すフラグを格納せずに済み、結果的に、ページの使用効率を高くすることができる。
(第4の実施の形態)
第4の実施の形態にかかるデータベース管理システム100は、第1の実施の形態に示した索引と第3の実施の形態に示した索引とを組み合わせた索引を作成し、それを用いた検索を行うことを特徴とする。具体的には、1段目の索引と2段目の索引を第3の実施の形態で示した1段目の索引と2段目の索引のように構成し、2段目の非NULLに対応する索引と3段目の索引を第1の実施の形態で示した1段目の索引と2段目の索引のように構成する。
図10は、第4の実施の形態にかかるデータベース管理方法によって予め構築される索引の概念図である。図10において、1段目の索引と2段目の索引については、非NULLに対応するデータ構造体のエントリが、各キーに対してROWIDではなくポインタが対応付けられている点を除き、図8に示した二段の索引構造に対応するため、ここではその説明を省略する。また、図10において、2段目の索引の非NULLに対応する索引と3段目の索引についても、図4に示した二段の索引構造の概念と同じであるため、ここではその説明を省略する。
次に、第4の実施の形態にかかるデータベース管理方法に従った検索処理について説明する。図11は、その検索処理を示すフローチャートである。まず、処理解析部21は、SQL文等の処理要求を受け付けて、その解析および最適化を行う。ここでは、その解析および最適化の結果、検索部22が、NULLと非NULLのいずれかに識別されるキーを、図10に示した構造の索引から検索することとする。そこで、そのキーが属するフィールドをエントリとした1段目のデータ構造体のポインタを取得する(ステップS401)。つぎに、検索部22は、指定されたキーがNULLか非NULLかを判断する(ステップS402)。指定されたキーがNULLであれば(ステップS402,Yes)、NULLに対応する2段目のデータ構造体のポインタを取得し(ステップS403)、取得したポインタに格納されるデータ構造体のすべてのROWIDを取得する(ステップS404)。
一方、ステップS402において、指定されたキーが非NULLであれば(ステップS402,No)、非NULLに対応する2段目のデータ構造体のポインタを取得し(ステップS405)、そのデータ構造体から、指定されたキーを検索する(ステップS406)。そして、検索されたキーに対応する3段目のデータ構造体のポインタを取得し(ステップS407)、取得したポインタに格納されるデータ構造体のすべてのROWIDを取得する(ステップS408)。これにより、目的としたキーを含んだすべてのレコード、すなわち検索結果を取得することができ、その検索結果は出力部24から出力される。
この検索は、図10の例で言えば、NULLがキーとして指定されているとすると、最終的に、ROWID4,5が取得され、それらROWID4,5で特定されるレコードが検索結果として出力されるという工程を辿る。他の例として、「山田」がキーとして指定されているとすると、最終的に、ROWID1,7が取得され、それらROWID1,7で特定されるレコードが検索結果として出力されるという工程を辿る。
なお、第1の実施の形態と同様に、各データ構造体に適用される構造には特に制限はないが、ビットマップ索引で使われるようなデータ構造体を使用しないことが好ましい。また、データの追加および削除については、第1の実施の形態に説明した通りである。
以上に説明したように、第4の実施の形態にかかるデータベース管理方法によれば、第1の実施の形態で示した索引構造と第3の実施の形態で示したで示した索引構造とを組み合わせることにより、三段構造の索引を作成し、またそれを用いた検索を可能としたので居、両実施の形態にかかるデータベース管理方法の効果を享受することができる。
(第5の実施の形態)
第5の実施の形態にかかるデータベース管理システム100は、第2の実施の形態に示した索引と第3の実施の形態に示した索引とを組み合わせた索引を作成し、それを用いた検索を行うことを特徴とする。具体的には、1段目の索引と2段目の索引を第3の実施の形態で示した1段目の索引と2段目の索引のように構成し、2段目の非NULLに対応する索引と3段目の索引を第2の実施の形態で示した1段目の索引と2段目の索引のように構成する。
図12は、第5の実施の形態にかかるデータベース管理方法によって予め構築される索引の概念図である。図12において、1段目の索引と2段目の索引については、非NULLに対応するデータ構造体のエントリが、各キーに対してROWIDではなくポインタが対応付けられている点と第2の実施の形態に示したように2種類のデータ構造体を有するという点を除き、図8に示した二段の索引構造に対応するため、ここではその説明を省略する。また、図12において、2段目の索引の非NULLに対応する索引と3段目の索引についても、図6に示した二段の索引構造の概念と同じであるため、ここではその説明を省略する。
次に、第5の実施の形態にかかるデータベース管理方法に従った検索処理について説明する。図13は、その検索処理を示すフローチャートである。まず、処理解析部21は、SQL文等の処理要求を受け付けて、その解析および最適化を行う。ここでは、その解析および最適化の結果、検索部22が、NULLと非NULLのいずれかに識別されるキーを、図12に示した構造の索引から検索することとする。そこで、そのキーが属するフィールドをエントリとした1段目のデータ構造体のポインタを取得する(ステップS501)。つぎに、検索部22は、指定されたキーがNULLか非NULLかを判断する(ステップS502)。指定されたキーがNULLであれば(ステップS502,Yes)、NULLに対応する2段目のデータ構造体のポインタを取得し(ステップS503)、取得したポインタに格納されるデータ構造体のすべてのROWIDを取得する(ステップS504)。
一方、ステップS502において、指定されたキーが非NULLであれば(ステップS502,No)、非NULLに対応する2段目のデータ構造体のポインタを取得し(ステップS505)、そのデータ構造体から、指定されたキーを検索する(ステップS506)。指定されたキーが非NULLに対応する2段目の第1の種類のデータ構造体において見つかれば(ステップS507,Yes)、そのキーに対応する3段目のデータ構造体のポインタを取得し(ステップS508)、取得したポインタに格納されるデータ構造体のすべてのROWIDを取得する(ステップS509)。
一方、ステップS507において、指定されたキーが2段目の第1の種類のデータ構造体において見つからなければ(ステップS507,No)、その他のエントリに対応する3段目のデータ構造体のポインタを取得し(ステップS510)、そのデータ構造体から、指定されたキーを検索する(ステップS511)。そして、その検索の結果、キーと一致したエントリのROWIDを取得する(ステップS512)。以上のようにして、目的としたキーを含んだすべてのレコード、すなわち検索結果を取得することができ、その検索結果は出力部24から出力される。
この検索は、図12の例で言えば、NULLがキーとして指定されているとすると、最終的に、ROWID4,5が取得され、それらROWID4,5で特定されるレコードが検索結果として出力されるという工程を辿る。他の例として、「山田」がキーとして指定されているとすると、最終的に、ROWID1,7が取得され、それらROWID1,7で特定されるレコードが検索結果として出力されるという工程を辿る。
なお、第1の実施の形態と同様に、各データ構造体に適用される構造には特に制限はないが、ビットマップ索引で使われるようなデータ構造体を使用しないことが好ましい。また、データの追加および削除については、第1の実施の形態に説明した通りである。
以上に説明したように、第5の実施の形態にかかるデータベース管理方法によれば、第2の実施の形態で示した索引構造と第3の実施の形態で示したで示した索引構造とを組み合わせることにより、三段構造の索引を作成し、またそれを用いた検索を可能としたので居、両実施の形態にかかるデータベース管理方法の効果を享受することができる。
(第6の実施の形態)
第6の実施の形態にかかるデータベース管理システム100は、第1〜第5の実施の形態において、異なる複数のキーを用いて検索すること、いわゆる複合検索を可能にした索引を作成し、それを用いた検索を行うことを特徴とする。
ここでは、説明を簡単にするため、第1の実施の形態において示した索引に対して、異なる2つのキーが与えられた場合の形態を説明する。
図14は、第6の実施の形態にかかるデータベース管理方法によって予め構築される索引の概念図である。図14に示すように、索引は二段に階層化されている。1段目の索引は、第1の実施の形態で示した図4の1段目と同じデータ構造体を示すが、2段目のデータ構造体は、1段目のキーとは異なるキーのそれぞれとROWIDとをペアとしたエントリを含んでいる。換言すれば、図4に示した2段目のデータ構造体の各エントリに、キーが対応付けられている。
次に、第6の実施の形態にかかるデータベース管理方法に従った検索処理について説明する。図15は、その検索処理を示すフローチャートである。まず、処理解析部21は、SQL文等の処理要求を受け付けて、その解析および最適化を行う。ここでは、その解析および最適化の結果、検索部22が、頻繁に更新され且つその取りうる値の種類の少ない値である第1キーと、決定木から得られるように値に偏りが存在するような第2キーとり両方含むレコードを、図14に示した構造の索引から検索することとする。そこでまず、第1キーが属するフィールドをエントリとした1段目のデータ構造体のポインタを取得する(ステップS601)。つぎに、検索部22は、その1段目のデータ構造体から、指定された第1キーを検索し(ステップS602)、検索された第1キーに対応する2段目のデータ構造体のポインタを取得する(ステップS603)。続いて、そのデータ構造体から、指定された第2キーを検索し(ステップS604)、その検索の結果、第2キーと一致したエントリのROWIDを取得する(ステップS605)。これにより、目的とした第1キーおよび第2キーの両方を含んだすべてのレコード、すなわち検索結果を取得することができ、その検索結果は出力部24から出力される。
この検索は、図14の例で言えば、第1キーとして「状況」フィールドの値である「作成中」が指定され、第2キーとして「作業者」フィールドの値である「山田」が指定されているとすると、最終的に、ROWID1,7が取得され、これらROWID1,7で特定されるレコードが検索結果として出力されるという工程を辿る。
このように、少なくとも、2段目の各データ構造体には、第1キーを格納する必要がない。
なお、第1の実施の形態と同様に、各データ構造体に適用される構造には特に制限はないが、ビットマップ索引で使われるようなデータ構造体を使用しないことが好ましい。また、データの追加および削除については、第1の実施の形態に説明した通りである。
以上に説明したように、第6の実施の形態にかかるデータベース管理方法によれば、複合検索に対しても、第1の実施の形態による効果を享受することができる。
(第7の実施の形態)
第7の実施の形態にかかるデータベース管理システム100は、第6の実施の形態の変形例である。具体的には、第6の実施の形態に示した2段目のデータ構造体にさらに第1の実施の形態に示した二段の索引構造を適用することによって三段の索引構造を作成し、その索引を用いた検索を行うことを特徴とする。換言すれば、第1キーの索引と第2キーの索引とにそれぞれ第1の実施の形態に示した二段の索引構造を適用する。
図16は、第7の実施の形態にかかるデータベース管理方法によって予め構築される索引の概念図である。図16において、1段目の索引については、図14に示した1段目の索引に対応し、2段目の索引については、各データ構造体のエントリが、各キーに対してROWIDではなくポインタが対応付けられている点を除き、図14に示した2段目の索引に対応するため、ここではその説明を省略する。また、図16において、2段目の索引と3段目の索引との関係についても、図4に示した二段の索引構造と同じであるため、ここではその説明を省略する。
次に、第7の実施の形態にかかるデータベース管理方法に従った検索処理について説明する。図17は、その検索処理を示すフローチャートである。まず、処理解析部21は、SQL文等の処理要求を受け付けて、その解析および最適化を行う。ここでは、その解析および最適化の結果、検索部22が、頻繁に更新され且つその取りうる値の種類の少ない値である第1キーと、決定木から得られるように値に偏りが存在するような第2キーとり両方含むレコードを、図16に示した構造の索引から検索することとする。そこでまず、第1キーが属するフィールドをエントリとした1段目のデータ構造体のポインタを取得する(ステップS701)。つぎに、検索部22は、その1段目のデータ構造体から、指定された第1キーを検索し(ステップS702)、検索された第1キーに対応する2段目のデータ構造体のポインタを取得する(ステップS703)。続いて、そのデータ構造体から、指定された第2キーを検索し(ステップS704)、検索された第2キーに対応する3段目のデータ構造体のポインタを取得する(ステップS705)。そして、取得したポインタに格納されるデータ構造体のすべてのROWIDを取得する(ステップS706)。これにより、目的とした第1キーおよび第2キーの両方を含んだすべてのレコード、すなわち検索結果を取得することができ、その検索結果は出力部24から出力される。
この検索は、図16の例で言えば、第1キーとして「状況」フィールドの値である「作成中」が指定され、第2キーとして「作業者」フィールドの値である「佐藤」が指定されているとすると、最終的に、ROWID8が取得され、これらROWID8で特定されるレコードが検索結果として出力されるという工程を辿る。
このように、少なくとも、2段目の各データ構造体には、第1キーを格納する必要がなく、また3段目の各データ構造についても第2キーを格納する必要がない。
なお、第1の実施の形態と同様に、各データ構造体に適用される構造には特に制限はないが、ビットマップ索引で使われるようなデータ構造体を使用しないことが好ましい。また、データの追加および削除については、第1の実施の形態に説明した通りである。
また、上述した説明では、2段目と3段目の索引に対して、第1の実施の形態の索引構造を適用したが、他の実施の形態の索引構造を適用しても良い。
以上に説明したように、第7の実施の形態にかかるデータベース管理方法によれば、複合検索に対しても、第1〜第5の実施の形態にかかる索引構造を適用することができ、それら実施の形態による効果を享受することができる。
上述した第1〜第7の実施の形態にかかるデータベース管理システム100によって実行されるデータベース管理方法は、PC等のコンピュータにインストール可能な形式又は実行可能な形式のファイル形態のコンピュータプログラムとして、CD−ROM、フレキシブルディスク(FD)、CD−R、DVD(Digital Versatile Disk)等のコンピュータで読み取り可能な記録媒体に記録されて提供されることができる。
また、そのようなコンピュータプログラムは、インターネット等のネットワークに接続されたコンピュータ上に格納されて、ネットワーク経由でPC等にダウンロードされることにより提供されても良い。
本発明の実施の形態にかかるデータベース管理システム、データベース管理方法およびプログラムは、荷物の配送状況のように状況データが頻繁に更新される荷物配送管理システム等の管理システムに適用するとより効果的である。
本発明の実施の形態にかかるデータベース管理システムの構成を示す概略図である。 本発明の実施の形態にかかるデータベース管理システムのモジュール構成図である。 索引対象となるテーブルの例を示す図である。 第1の実施の形態にかかるデータベース管理システムによって形成される索引の概念図である。 第1の実施の形態にかかるデータベース管理方法による検索処理を示すフローチャートである。 第2の実施の形態にかかるデータベース管理システムによって形成される索引の概念図である。 第2の実施の形態にかかるデータベース管理方法による検索処理を示すフローチャートである。 第3の実施の形態にかかるデータベース管理システムによって形成される索引の概念図である。 第3の実施の形態にかかるデータベース管理方法による検索処理を示すフローチャートである。 第4の実施の形態にかかるデータベース管理システムによって形成される索引の概念図である。 第4の実施の形態にかかるデータベース管理方法による検索処理を示すフローチャートである。 第5の実施の形態にかかるデータベース管理システムによって形成される索引の概念図である。 第5の実施の形態にかかるデータベース管理方法による検索処理を示すフローチャートである。 第6の実施の形態にかかるデータベース管理システムによって形成される索引の概念図である。 第6の実施の形態にかかるデータベース管理方法による検索処理を示すフローチャートである。 第7の実施の形態にかかるデータベース管理システムによって形成される索引の概念図である。 第7の実施の形態にかかるデータベース管理方法による検索処理を示すフローチャートである。
符号の説明
21 処理解析部
22 検索部
23 更新部
24 出力部
25 データベース
100 データベース管理システム
102 CPU
103 ROM
104 RAM
105 一次記憶装置
106 二次記憶装置
107 HDD
108 リムーバブルディスク装置
108a 記憶媒体
109 ネットワーク
110 ネットワークインターフェース
111 表示装置
112 キーボード
113 ポインティングデバイス
114 データバス

Claims (12)

  1. 複数のレコード間において所定のフィールドに登録されうる第1の値および第2の値と該第1の値および該第2の値を前記所定のフィールドにそれぞれ含んだレコードの位置情報とを対応付けた索引を作成するデータベース管理システムであって、
    前記第1の値と前記位置情報とが第1のデータ構造体と第2のデータ構造体との組み合わせによって対応付けられ、前記第2の値と前記位置情報とが前記第1のデータ構造体と第3のデータ構造体との組み合わせによって対応付けられるように該第1のデータ構造体と該第2のデータ構造体と該第3のデータ構造体を作成する索引作成手段と、
    前記索引作成手段によって作成された前記第1のデータ構造体と前記第2のデータ構造体と前記第3のデータ構造体とを索引として格納する記憶手段と、
    を備え、
    前記第1のデータ構造体は、前記第1の値と該第1の値に対応付けられた前記第2のデータ構造体の位置情報とをエントリとして含むとともに、前記第2の値に対応付けられた前記第3のデータ構造体の位置情報をエントリとして含み、
    前記第2のデータ構造体は、前記第1の値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該第1の値自体をエントリとして含まず、
    前記第3のデータ構造体は、前記第2の値と該第2の値を前記所定のフィールドに含んだレコードの位置情報とをエントリとして含むことを特徴とするデータベース管理システム。
  2. 複数のレコード間において所定のフィールドに登録されうるNULL値および非NULL値と該NULL値および該非NULL値を前記所定のフィールドにそれぞれ含んだレコードの位置情報とを対応付けた索引を作成するデータベース管理システムであって、
    前記NULL値と前記位置情報とが第1のデータ構造体と第2のデータ構造体との組み合わせによって対応付けられ、前記非NULL値と前記位置情報とが前記第1のデータ構造体と第3のデータ構造体との組み合わせによって対応付けられるように該第1のデータ構造体と該第2のデータ構造体と該第3のデータ構造体を作成する索引作成手段と、
    前記索引作成手段によって作成された前記第1のデータ構造体と前記第2のデータ構造体と前記第3のデータ構造体とを索引として格納する記憶手段と、
    を備え、
    前記第1のデータ構造体は、前記NULL値に対応付けられた前記第2のデータ構造体の位置情報をエントリとして含むとともに、前記非NULL値に対応付けられた前記第3のデータ構造体の位置情報をエントリとして含み、
    前記第2のデータ構造体は、前記NULL値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該NULL値自体をエントリとして含まず、
    前記第3のデータ構造体は、前記非NULL値と該非NULL値を前記所定のフィールドに含んだレコードの位置情報とをエントリとして含むことを特徴とするデータベース管理システム。
  3. 前記索引作成手段は、前記非NULL値と前記位置情報とが前記第1のデータ構造体と前記第3のデータ構造体と第4のデータ構造体との組み合わせによって対応付けられるように該第3のデータ構造体と該第4のデータ構造体を作成し、
    前記記憶手段は、前記索引作成手段によって作成された前記第1のデータ構造体と前記第2のデータ構造体と前記第3のデータ構造体と前記第4のデータ構造体とを索引として格納し、
    前記第3のデータ構造体は、前記非NULL値と該非NULL値に対応付けられた前記第4のデータ構造体の位置情報とをエントリとして含み、
    前記第4のデータ構造体は、前記非NULL値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該非NULL値自体をエントリとして含まないことを特徴とする請求項に記載のデータベース管理システム。
  4. 前記非NULL値は、第1の値と第2の値に分類され、
    前記索引作成手段は、前記第1の値と前記位置情報とが前記第3のデータ構造体と第4のデータ構造体との組み合わせによって対応付けられ、前記第2の値と前記位置情報とが前記第3のデータ構造体と第5のデータ構造体との組み合わせによって対応付けられるように該第3のデータ構造体と該第4のデータ構造体と該第5のデータ構造体を作成し、
    前記記憶手段は、前記索引作成手段によって作成された前記第1のデータ構造体と前記第2のデータ構造体と前記第3のデータ構造体と前記第4のデータ構造体と前記第5のデータ構造体とを索引として格納し、
    前記第3のデータ構造体は、前記第1の値と該第1の値に対応付けられた前記第4のデータ構造体の位置情報とをエントリとして含むとともに、前記第2の値に対応付けられた前記第5のデータ構造体の位置情報をエントリとして含み、
    前記第4のデータ構造体は、前記第1の値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該第1の値自体をエントリとして含まず、
    前記第5のデータ構造体は、前記第2の値と該第2の値を前記所定のフィールドに含んだレコードの位置情報とをエントリとして含むことを特徴とする請求項に記載のデータベース管理システム。
  5. 複数のレコード間において第1のフィールドに登録されうる第1の値と該第1の値を前記第1のフィールドに含んだレコードの第1の位置情報とを対応付け、且つ、前記複数のレコード間において第2のフィールドに登録されうる第2の値と該第2の値を前記第2のフィールドに含んだレコードの第2の位置情報とを対応付けた索引を作成するデータベース管理システムであって、
    前記第1の値と前記第1の位置情報とが第1のデータ構造体と第2のデータ構造体との組み合わせによって対応付けられるように該第1のデータ構造体と該第2のデータ構造体を作成する索引作成手段と、
    前記索引作成手段によって作成された前記第1のデータ構造体と前記第2のデータ構造体とを索引として格納する記憶手段と、
    を備え、
    前記第1のデータ構造体は、前記第1の値と該第1の値に対応付けられた前記第2のデータ構造体の位置情報とをエントリとして含み、
    前記第2のデータ構造体は、前記第2の値と該第2の値を前記第2のフィールドに含んだレコードの前記第2の位置情報とをエントリとして含み且つ前記第1の値自体をエントリとして含まないことを特徴とするデータベース管理システム。
  6. 前記索引作成手段は、前記第2の値と該第2の位置情報とが前記第2のデータ構造体と第3のデータ構造体との組み合わせによって対応付けられるように該第2のデータ構造体と該第3のデータ構造体を作成し、
    前記記憶手段は、前記索引作成手段によって作成された前記第1のデータ構造体と前記第2のデータ構造体と前記第3のデータ構造体とを索引として格納し、
    前記第2のデータ構造体は、前記第2の値と該第2の値に対応付けられた前記第3のデータ構造体の位置情報とをエントリとして含み且つ前記第1の値をエントリとして含まず、
    前記第3のデータ構造体は、前記第2の値を前記第2のフィールドに含んだレコードの位置情報をエントリとして含み且つ該第2の値自体をエントリとして含まないことを特徴とする請求項に記載のデータベース管理システム。
  7. 複数のレコード間において所定のフィールドに登録されうる第1の値および第2の値と該第1の値および該第2の値を前記所定のフィールドにそれぞれ含んだレコードの位置情報とを対応付けた、記憶手段に格納された索引を用いて、コンピュータに所望のレコードを検索させるためのプログラムであって、
    所望のキーが前記第1の値を示す場合に、前記索引を構成する第1のデータ構造体から当該所望のキーを検索することによって、前記索引を構成し且つ該第1の値に対応付けられた第2のデータ構造体の位置情報を取得する工程と、
    前記所望のキーが前記第2の値を示す場合に、前記第1のデータ構造体から当該所望のキーを検索することによって、前記索引を構成し且つ該第2の値に対応付けられた第3のデータ構造体の位置情報を取得する工程と、
    前記所望のキーが前記第1の値を示す場合に、取得した前記位置情報に対応付けられた第2のデータ構造体から、前記第1の値を前記所定のフィールドに含んだレコードの位置情報を取得する工程と、
    前記所望のキーが前記第2の値を示す場合に、取得した前記位置情報に対応付けられた第3のデータ構造体から、前記第2の値を検索することによって、該第2の値を前記所定のフィールドに含んだレコードの位置情報を取得する工程と、
    を含み、
    前記第2のデータ構造体は、前記第1の値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該第1の値自体をエントリとして含まず、
    前記第3のデータ構造体は、前記第2の値と該第2の値を前記所定のフィールドに含んだレコードの位置情報とをエントリとして含むことを特徴とするプログラム。
  8. 複数のレコード間において所定のフィールドに登録されうるNULL値および非NULL値と該NULL値および該非NULL値を前記所定のフィールドにそれぞれ含んだレコードの位置情報とを対応付けた、記憶手段に格納された索引を用いて、コンピュータに所望のレコードを検索させるためのプログラムであって、
    所望のキーがNULL値を示す場合に、前記索引を構成する第1のデータ構造体から、該NULL値を前記所定のフィールドに含んだレコードの位置情報を取得する第1工程と、
    所望のキーが非NULL値を示す場合に、前記索引を構成する第2のデータ構造体から当該非NULL値を検索することによって、該非NULL値を前記所定のフィールドに含んだレコードの位置情報を取得する第2工程と、
    を含み、
    前記第1のデータ構造体は、前記NULL値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該NULL値自体をエントリとして含まないことを特徴とするプログラム。
  9. 前記第2工程は、前記所望のキーが非NULL値を示す場合に、前記索引を構成する第2のデータ構造体から該非NULL値を検索することによって、前記索引を構成し且つ該非NULL値に対応付けられた第3のデータ構造体の位置情報を取得し、取得した該位置情報に対応付けられた前記第3のデータ構造体から、該非NULL値を前記所定のフィールドに含んだレコードの位置情報を取得することを含み、
    前記第3のデータ構造体は、前記非NULL値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該非NULL値自体をエントリとして含まないことを特徴とする請求項に記載のプログラム。
  10. 前記非NULL値は、第1の値と第2の値に分類され、
    前記第2工程は、前記所望のキーが前記第1の値を示す場合に、取得した前記位置情報に対応付けられた第3のデータ構造体から、前記第1の値を前記所定のフィールドに含んだレコードの位置情報を取得し、前記所望のキーが前記第2の値を示す場合に、前記索引を構成し且つ取得した前記位置情報に対応付けられた第4のデータ構造体から、前記第2の値を検索することによって、該第2の値を前記所定のフィールドに含んだレコードの位置情報を取得することを含み、
    前記第3のデータ構造体は、前記第1の値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該第1の値自体をエントリとして含まないことを特徴とする請求項に記載のプログラム。
  11. 複数のレコード間において第1のフィールドに登録されうる第1の値と該第1の値を前記第1のフィールドに含んだレコードの第1の位置情報とを対応付け、且つ、前記複数のレコード間において第2のフィールドに登録されうる第2の値と該第2の値を前記第2のフィールドに含んだレコードの第2の位置情報とを対応付けた、記憶手段に格納された索引を用いて、コンピュータに所望のレコードを検索させるためのプログラムであって、
    前記索引を構成する第1のデータ構造体から前記第1の値を示す第1のキーを検索することによって、前記索引を構成し且つ該第1の値に対応付けられた第2のデータ構造体の位置情報を取得する第1工程と、
    取得した前記位置情報に対応付けられた前記第2のデータ構造体から、前記第2の値を示す第2のキーを検索することによって、前記第2の値を前記所定のフィールドに含んだレコードの位置情報を取得する第2工程と、
    を含み、
    前記第2のデータ構造体は、前記第1の値をエントリとして含まないことを特徴とするプログラム。
  12. 前記第2工程は、取得した前記位置情報に対応付けられた前記第2のデータ構造体から、前記第2のキーを検索することによって、前記索引を構成し且つ前記第2の値に対応付けられた第3のデータ構造体の位置情報を取得し、取得した該位置情報に対応付けられた前記第3のデータ構造体から、該第2の値を前記所定のフィールドに含んだレコードの位置情報を取得することを含み、
    前記第3のデータ構造体は、前記第2の値を前記所定のフィールドに含んだレコードの位置情報をエントリとして含み且つ該第2の値自体をエントリとして含まないことを特徴とする請求項11に記載のプログラム。
JP2008238086A 2008-09-17 2008-09-17 データベース管理システムおよびプログラム Expired - Fee Related JP5287071B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2008238086A JP5287071B2 (ja) 2008-09-17 2008-09-17 データベース管理システムおよびプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008238086A JP5287071B2 (ja) 2008-09-17 2008-09-17 データベース管理システムおよびプログラム

Publications (2)

Publication Number Publication Date
JP2010072823A JP2010072823A (ja) 2010-04-02
JP5287071B2 true JP5287071B2 (ja) 2013-09-11

Family

ID=42204558

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008238086A Expired - Fee Related JP5287071B2 (ja) 2008-09-17 2008-09-17 データベース管理システムおよびプログラム

Country Status (1)

Country Link
JP (1) JP5287071B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130282731A1 (en) * 2011-01-25 2013-10-24 Nec Corporation Information search device
CN110096494B (zh) * 2012-10-22 2024-04-26 起元科技有限公司 使用源跟踪剖析数据
KR101429046B1 (ko) 2012-11-26 2014-08-11 에스코어 주식회사 키-밸류 구조를 가지는 데이터베이스에서 데이터를 검색, 입력, 삭제 및 가비지 컬렉션하는 방법
EP3114578A1 (en) 2014-03-07 2017-01-11 AB Initio Technology LLC Managing data profiling operations related to data type
US11068540B2 (en) 2018-01-25 2021-07-20 Ab Initio Technology Llc Techniques for integrating validation results in data profiling and related systems and methods

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62138924A (ja) * 1985-12-11 1987-06-22 Nec Corp テ−ブルサ−チ制御方式
JPS6428726A (en) * 1987-07-24 1989-01-31 Hitachi Ltd Index management method for data base
JP3250544B2 (ja) * 1999-04-16 2002-01-28 日本電気株式会社 転送先検索方法、転送先検索装置、検索テーブル記録媒体及び検索プログラム記録媒体
JP2002290447A (ja) * 2001-03-27 2002-10-04 Mitsubishi Electric Corp アドレス検索方法、アドレス検索回路、およびアドレス検索プログラム
JP2004234108A (ja) * 2003-01-28 2004-08-19 Fujitsu Ten Ltd データ検索装置、データ検索方法およびデータ検索プログラム

Also Published As

Publication number Publication date
JP2010072823A (ja) 2010-04-02

Similar Documents

Publication Publication Date Title
JP6028567B2 (ja) データ格納プログラム、データ検索プログラム、データ格納装置、データ検索装置、データ格納方法及びデータ検索方法
US10180992B2 (en) Atomic updating of graph database index structures
US9639542B2 (en) Dynamic mapping of extensible datasets to relational database schemas
JP5626733B2 (ja) 個人情報匿名化装置及び方法
CN105574093A (zh) 一种在基于HDFS的spark-sql大数据处理系统上建立索引的方法
US20170255708A1 (en) Index structures for graph databases
CN106407360B (zh) 一种数据的处理方法及装置
US11269954B2 (en) Data searching method of database, apparatus and computer program for the same
US20130325900A1 (en) Intra-block partitioning for database management
TWI549009B (zh) 資料庫管理方法、資料庫管理系統,以及資料庫樹狀結構
JP5287071B2 (ja) データベース管理システムおよびプログラム
JPWO2010084754A1 (ja) データベースシステム、データベース管理方法、及びデータベース構造
JP2008198237A (ja) 構造化文書管理システム
US6826563B1 (en) Supporting bitmap indexes on primary B+tree like structures
JP6828181B2 (ja) k−匿名化装置、方法及びプログラム
US20100030750A1 (en) Methods and Apparatus for Performing Multi-Data-Source, Non-ETL Queries and Entity Resolution
CN115809268B (zh) 一种基于分片索引的自适应查询方法和装置
WO2015129109A1 (ja) インデックス管理装置
KR101679011B1 (ko) 데이터베이스에서 데이터 이동을 처리하는 방법 및 장치
US7809741B2 (en) Generating and utilizing composite keys in lieu of compound keys
US20100205197A1 (en) Two-valued logic database management system with support for missing information
JP4091586B2 (ja) 構造化文書管理システム、索引構築方法及びプログラム
US7185004B1 (en) System and method for reverse routing materialized query tables in a database
JP2016062522A (ja) データベース管理システム、データベースシステム、データベース管理方法およびデータベース管理プログラム
KR100612376B1 (ko) 통합패스의 노드범위를 이용한 엑스엠엘 인덱스 시스템 및방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110613

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130115

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130315

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20130507

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130520

R151 Written notification of patent or utility model registration

Ref document number: 5287071

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

LAPS Cancellation because of no payment of annual fees