JP4785833B2 - 永続的でユーザアクセス可能なビットマップ値を有するデータベース管理システム - Google Patents
永続的でユーザアクセス可能なビットマップ値を有するデータベース管理システム Download PDFInfo
- Publication number
- JP4785833B2 JP4785833B2 JP2007505024A JP2007505024A JP4785833B2 JP 4785833 B2 JP4785833 B2 JP 4785833B2 JP 2007505024 A JP2007505024 A JP 2007505024A JP 2007505024 A JP2007505024 A JP 2007505024A JP 4785833 B2 JP4785833 B2 JP 4785833B2
- Authority
- JP
- Japan
- Prior art keywords
- bitmap
- value
- database management
- management system
- values
- 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.)
- Active
Links
- 230000002085 persistent effect Effects 0.000 title claims description 8
- 238000007726 management method Methods 0.000 claims description 134
- 238000013507 mapping Methods 0.000 claims description 57
- 238000000034 method Methods 0.000 claims description 40
- 230000008859 change Effects 0.000 claims description 7
- 238000004364 calculation method Methods 0.000 claims description 6
- 230000004044 response Effects 0.000 claims description 6
- 238000013500 data storage Methods 0.000 claims description 5
- 230000014509 gene expression Effects 0.000 claims description 2
- 238000004587 chromatography analysis Methods 0.000 claims 4
- 241000287463 Phalacrocorax Species 0.000 claims 1
- 210000001956 EPC Anatomy 0.000 description 41
- 230000006870 function Effects 0.000 description 23
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000003780 insertion Methods 0.000 description 5
- 230000037431 insertion Effects 0.000 description 5
- 230000006835 compression Effects 0.000 description 4
- 238000007906 compression Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 4
- 230000037430 deletion Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 239000000606 toothpaste Substances 0.000 description 2
- 229940034610 toothpaste Drugs 0.000 description 2
- 240000005020 Acaciella glauca Species 0.000 description 1
- DTAFLBZLAZYRDX-UHFFFAOYSA-N OOOOOO Chemical compound OOOOOO DTAFLBZLAZYRDX-UHFFFAOYSA-N 0.000 description 1
- 239000000551 dentifrice Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 235000003499 redwood Nutrition 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2237—Vectors, bitmaps or matrices
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
1.発明の分野
本発明は、データベース管理システムに関し、特に、データベース管理システムにおいてビットマップ値を使用して1セットのオブジェクトのサブセットを表すことに関する。
以下の「関連技術の説明」ではまず、現代のデータベース管理システムによって実現されている組込みインデックス付けシステムについて説明し、次に、現代のデータベース管理システムがさらに、ユーザが独自の種類のインデックス付けシステムをデータベース管理システムによって使用できるように定義するのをどのように可能にしているかについて説明する。
大量の情報は、インデックスを含めることによってさらにいっそう使いやすくなる。たとえば、アメリカ革命戦争の歴史がインデックスを有し、この歴史のある読者が1776年3月17日にイギリス人をボストンから避難させた際のヘンリー・ノックス将軍の役割に関心を抱いている場合、この読者は、インデックスにおける「ヘンリー・ノックス」を参照するだけでよく、この読者は、ノックス将軍について述べられている歴史の本のページのリストを見ることができる。インデックスがない場合、この読者は、探していることを見つけるために本の大部分を走査する必要がある。以下の議論で使用される用語において、アメリカ革命の歴史は1セットの情報を定義しており、この歴史の読者は、この1セットの情報の一部にのみ関心を抱くことが多く、この部分をこの情報のサブセットと呼ぶ。したがって、この歴史のインデックスによって、情報のサブセットの位置が指定され、それによって、ユーザはインデックス付けされたサブセットに迅速にアクセスすることができる。
データベース管理システムは、大量の情報を管理しそれにアクセスできるようにするために存在しており、予想されるように、データベース管理システムはインデックスを有している。リレーショナルデータベース管理システムでは、情報の集合はテーブル(tables)として構成される。データベーステーブルは、いくつかの列(columns)を有し、かついくつかの行(rows)を有してよい。各行は、各列に対応するフィールド(field)を有する。列に対応するフィールドの値は、その列に必要な種類の値を有する。たとえば、以下の簡単なテーブル「従業員(Employees)」は4つの列および2つの行を有している。
各行は、従業員を表している。列「行id(Rowid)」は、テーブル内の各行の、データベースシステムによって割り当てられた行識別子がフィールドに含まれる組込み列である。この行識別子は、データベース管理システムにおいて行を一意に識別する。列「名前(Name)」に対応するフィールドは、行で表された従業員の名前を含む。性別(Gender)に対応するフィールドは、従業員の生物学的な性別を含み、最後に、肩書きに対応するフィールドは従業員の肩書き(Job_Title)を含む。ユーザは、テーブルから情報を得る場合、情報が取り込まれる行およびそれらの行から取り込まれる情報を記述したクエリー(query)をデータベース管理システムに与える。たとえば、
SELECT Name FROM Employees WHERE Job_Title = Manager
というクエリーは、肩書きフィールドが値「責任者(Manager)」を有する行、すなわち、行idが1である行を「従業員(Employees)」から選択し、その行から名前(Name)フィールドの値、すなわち、スミス(Smith))を返す。冒頭の議論に関して、クエリーは、「従業員(Employees)」に含まれる1セットの情報のサブセットを指定し、指定されたサブセットを返す。
CREATE INDEX employees_name_index ON Emproyees(Name)
この指定に応じて、データベース管理システムは、インデックスを作成し、このインデックスが属するテーブルが変更されたときにインデックスを更新し、このインデックスを使用してテーブルに関するクエリーを迅速化する。たとえば、上記のインデックスおよび以下のクエリーが与えられたと仮定すると、
SELECT Job Title FROM Employees WHERE Name = Smith
データベース管理システムはこのインデックスを使用して、名前(Name)フィールドが値「スミス(Smith)」を有する行を見つけるまでテーブルを読み進めるのではなく、スミス(Smith)の行が行1であるかどうかを判定する。したがって、クエリーでインデックスを使用することは、歴史の本の読者が各人間ごとにインデックスを使用することによく似ている。
CREATE BITMAP INDEX Gender_index ON Employees(Gender)
Mキーのビットマップ値は、上述のように0、1であり、Fキーのビットマップ値は1、0である。したがって、Mキーのビットマップ値は、行id2を有する行を含む、テーブル「従業員(Employees)」の行のサブセットを指定し、Fキーのビットマップ値は、行id1を有する行を含むサブセットを指定する。
SELECT Name FROM Employees WHERE Gender = 'M' OR Gender = 'F'
は、キーがMである性別(Gender)のビットマップ値、すなわち、1、0とキーがFである性別のビットマップ値、すなわち、0、1の論理和をとり、「従業員(Employees)」におけるあらゆる行を選択することを指定するビットマップ値1、1を生成する。オラクル9iデータベース管理システムによって実現される組込みインデックス付けシステムは、2002年にオラクル社から発行され、オラクル社から部品番号A96524-01として市販されているOracle 9i Database Concepts, Release 2の10〜28ページのインデックスの節から詳しく記載されている。この記載は参照として本特許出願に組み入れられる。
組込みインデックス付けシステムが設計されたデータベース管理システムでは、データベース管理システムのテーブルの各フィールドに含まれる値は、少数の組込みデータタイプのうちの1つに属する必要があった。組込みデータタイプには通常、名前および語用の文字データタイプ、10進数用の10進数データタイプ、全数用の整数データタイプ、およびデータベース管理システムのメタデータ、すなわち、テーブルを定義するデータに使用されるシステム値のデータタイプが含まれていた。テーブル「従業員(Employees)」の例では、行idはこのようなシステムデータである。他のフィールド内のデータは文字データタイプを有する。より最近では、データベース管理システムは、ユーザが自分自身のデータタイプを定義し、これらのデータタイプを有する値をデータベース管理システムのテーブル内のフィールドで使用するのを可能にする構成を含んでいる。ユーザ定義データタイプは、ユーザが興味を持つドメインで使用される。たとえば、写真に興味を持つユーザは、そのドメインに適したデータタイプを定義することができる。一例としてデータタイプ「写真(Photograph)」が挙げられる。写真(Photograph)の定義は、最低でも、タイプ「写真(Photograph)」の値がデータベース管理システムでどのように表されるかを指定する。定義は、この種の値に対して実行できる演算を指定することもできる。たとえば、ドメインにおいて写真同士を比較する必要がある場合、定義は、2つの写真を比較し、類似性の尺度である結果を返すLike演算を指定することができる。最後に、定義は、タイプ「写真」の値用のインデックス付けシステムを指定することができる。このためには、ユーザは、インデックスがどのように定義されるか、インデックスがどのように維持されるか、およびインデックスがどのように読み取られるかを指定しなければならない。オラクル9iデータベース管理システムにおいてユーザ定義タイプおよびそれに対する演算を定義するのに使用される機構は、オラクル社から市販されているOracle 9i Data Cartridge Developer's Guide, Release 2(9.2), Part No. A96595-01に記載されている。ユーザ定義インデックス付けの議論は、第7章「ドメインインデックスの作成」に記載されている。この参照全体が参照として本出願に組み入れられる。
組込みインデックス付けシステムは使いやすく効率的であるが、インデックスの種類の数が限定されている。たとえば、オラクル9iデータベース管理システムは現在、以下の組込みインデックス付け方式を提供している。
・Bツリー・インデックス
・Bツリー・クラスタ・インデックス
・ハッシュ・クラスタ・インデックス
・逆キー・インデックス
・ビットマップ・インデックス
・ビットマップ結合インデックス
さらに、これらのインデックス付け方式を使用してもインデックス付けできないある種の組込みデータタイプがあり、組込みインデックス付け方式はユーザ定義タイプとの使用が限定されている。組込みインデックス付け方式の最後の欠点は、ユーザが、データベース管理システムがインデックスを作成する方法をほとんど制御できず、また内部インデックス付けデータにはアクセスできないことである。
本発明の目的は、改良されたデータベース管理システムによって実現される。データベース管理システムは、ビットストリングの表現内のセットされたビットが、定義がデータベース管理システムに組み込まれる1セットのオブジェクトを指定する、ビットマップ値を有する。データベース管理システムは、ビットマップ値に対するユーザアクセス可能演算も有する。演算には以下のうちの少なくとも1つが含まれる。
・ビットマップ値が所与の1セットのオブジェクトから算出されるセット・ツー・ビットマップ演算
−算出される値が、所与の1セット内のオブジェクトを指定する新しいビットマップ値である、セット・ツー・ビットマップ演算、
−算出される値が、所与の1セット内のオブジェクトを指定することになる既存のビットマップ値である、セット・ツー・ビットマップ演算、および
−算出されるビットマップ値が、もはや所与の1セット内のオブジェクトを指定しない既存のビットマップ値である。
・所与のビットマップ値に指定された1セットのオブジェクトが所与のビットマップ値から算出される、ビットマップ・ツー・セット演算、
・所与のビットマップ値によって指定された1セット内のオブジェクトの数が所与のビットマップ値から算出されるビットマップ・ツー・カウント演算、
・所与のオブジェクトが所与のビットマップ値で表される1セットのオブジェクトに属するときに論理値TRUEを表す値が返される存在演算、
・ビットマップ値で表されるビットストリングに対する論理演算であって、AND演算、OR演算、XOR演算、およびMINUS演算を含む論理演算、
・2つのビットマップ値が同じ1セットのオブジェクトを指定するときに論理値TRUEを表す値が返されるビットマップEQUAL演算、および
・ビットマップソース値がターゲットビットマップデータ項目に代入されるビットマップ代入演算。
本発明の他の局面では、ビットマップ値は、データベース管理システムにおいて永続的であり、データベース管理システムにおけるテーブル内のフィールドの値であってよい。ビットマップ値内のビットストリングは圧縮することができる。
以下の詳細な説明ではまず、数セットの行idを表すビットマップ値を使用して作成されるインデックスについて概略的に説明し、次に、データベース管理システムにおいてビットマップ値をどのように定義したらよいかと、ビットマップ値に対して実行できる演算について概略的に説明し、最後に、2つの異なる種類のビットマップ値、すなわち、ビットマップ値が数セットの行id上にマップされる種類とビットマップ値が数セットのEPC(ePC)上にマップされる他の種類について説明する。現在、バーコードなどの製品コードは、製品の種類、たとえば、チューブ入り歯磨きのブランドおよび味を識別しているに過ぎない。その味を有するそのブランドの各チューブ入り歯磨きは、その種類のバーコードを保持している。個々の製品上のePCは、製品の種類を識別するだけでなく、個々の製品品目も一意に識別する。したがって、各チューブ入り歯磨きはそれ自体のePCを有する。
図1は、行idビットマップ値111を第1のテーブル103内の1セットの行にどのように関係付けたらよいかと、第1のテーブルの各行に含まれる情報用のインデックスとして働く第2のテーブル115でビットマップ値をどのように使用したらよいかを101に示している。図1では、テーブル列は、参照番号によって識別され、行は、その行の行idを表す整数によって識別され、行内のフィールドは、そのフィールドの列の参照番号およびその行idの整数によって識別され、したがって、テーブル103の行id1を有する行内の行id列105に属するフィールドは、フィールド105(1)として識別される。フィールドに含まれるものはもちろん、フィールドが属する列について指定されるタイプの値である。
1. 「マサチューセッツ工科大学(Massachusetts Institute of Technology)」または「PL/SQL」を探索項目値119として有するレジュメインデックステーブル115内の行からビットマップ値121を得て、
2. 返されるビットマップ値の論理積をとり、セットされているビットが両方の探索項目を含むレジュメに関するビットだけである結果ビットマップ値を得て、
3. ビットが結果ビットマップにセットされている行idを判定し、
4. 行idによって指定された行内のレジュメ107を取り込む。
探索項目のビットマップ値から求めることのできるのが、ビットマップ値内のセットされているビットに対応する行idを有する行が探索項目を有するかどうかだけであることに留意されたい。ビットがセットされていないことは、そのビットの行idに対応する行がテーブル内にないか、または行内のレジュメが探索項目を有さないことを意味することができる。
もちろん、1セットのオブジェクトをビットストリングにマップする任意の構成を使用してビットマップ値を定義することができる。しかし、好ましい態様では、構成は以下のようなものである。
・各オブジェクトは、非常に大きな1セットの順序付けされた一意の値にマップされる。このセットは、データベース管理システムに組み込まれる定義を有する。
・ビットマップ値のビットストリングは、一連の順序付けされた一意の値にマップされる。
したがって、ビットマップ値は、2つの部分、すなわち、順序付けされた一意の値の範囲を指定するマッピング指定子(a mapping specifier)、およびビットストリングの表現(a representation of the bitstring)を有する。ビットストリングの表現は、単なるビットストリングであっても、ビットストリングのロスレス圧縮に利用できる技術のどれかを使用して圧縮されたビットストリングであってもよい。
本発明のユーザアクセス可能なビットマップ演算は4つの群に分類される。各演算は図3〜6に詳しく示されている。各演算の意味の詳細については、各図の記述を参照されたい。
1. ビットマップ値への変換およびビットマップ値からの変換を行う変換演算:図3
a. ビットマップ・ツー・セット(bitmap to set):ビットマップ値を、ビットマップ値のビットストリング内のセットされているビットによって指定される1セットのオブジェクト識別子に変換する。
b. セット・ツー・ビットマップ(set to bitmap):1セットのオブジェクト識別子を、そのセットを表すビットマップ値に変換する。
c. ビットマップ・ツー・カウント(bitmap to count):ビットマップ値を、そのビットマップ内のセットされているビットの数のカウントに、したがって、そのビットマップで表されるオブジェクトのセット内のオブジェクトの数に変換する。
2. 存在演算:ビットマップ値で表される1セットのオブジェクト識別子が特定のオブジェクトのオブジェクト識別子を含むかどうかを判定する:図4
3. ビットマップ値に対する論理演算:図5
a. ビットマップAND(bitmap AND):同じクラスを有する2つのビットマップ値の論理積を求める。
b. ビットマップOR(bitmap OR):同じクラスを有する2つのビットマップ値の論理和を求める。
c. ビットマップXOR(bitmap XOR):同じクラスを有する2つのビットマップ値の排他的論理和を求める。
d. ビットマップMINUS(bitmap MINUS):あるクラスのあるビットマップ値によって指定されるセットに含まれる同じクラスの別のビットマップ値によって指定されるセット内のオブジェクト識別子を後者のビットマップ値から削除する。
4. ビットマップ値で表される1セットのオブジェクト識別子を変更する:図6
a. ビットマップ挿入(bitmap insert):1セットのオブジェクト識別子およびビットマップ値をとり、そのビットマップ値のクラスについて指定されている範囲に含まれていないものがそのセットにある場合、範囲を拡張し、以前セットされていたビットとそのセット内のオブジェクト識別子に対応するビットとの両方がセットされる拡張された範囲について新しいビットマップ値を作成する。
b. ビットマップ削除(bitmap delete):1セットのオブジェクト識別子およびビットマップ値をとり、そのビットマップ値のクラスについて指定されている範囲に含まれるものがそのセットにある場合、ビットマップ値内のオブジェクト識別子のビットを0に設定する。
5. ビットマップ比較:ビットマップEQUALS演算は、2つのビットマップ値を比較し、2つの値が同じ1セットのオブジェクト識別子を表しているかどうかを判定する。図4を参照されたい。
6. ビットマップ代入:ソース・ビットマップ値を、ソース値と同じタイプのビットマップ値を表すターゲット変数に代入する。図3を参照されたい。
図3は、変換演算301およびビットマップ代入の例を示している。以下の演算の例で使用されるビットマップ値のクラスが303に示されている。このクラスのビットマップ値は、オブジェクト識別子203の範囲20〜29を指定するマッピング指定子と、ビット0..9がオブジェクト識別子20..29上にマップされている10ビットのビットストリングとを有する。以下の議論では、ビットマップ値は、表記<下限-上限>:<ビットストリング>(<lower_bound-upper_bound>:<bitstring>)で表される。したがって、305に示されているように、識別子22および27に対応する1セットのオブジェクトを表すビットマップ値bitmapval_1は、ビット2および7がセットされ、表記20-29:0010000100で表される。
存在演算は、ビットマップ識別子、およびビットマップ値のタイプに対応する種類のオブジェクト識別子をとり、オブジェクト識別子に対応するビットがビットマップ値にセットされている場合は1を返し、セットされていない場合は0を返す。したがって、0は、オブジェクト識別子がビットマップ値の範囲内に存在するがそのビットはセットされていないか、またはオブジェクト識別子がビットマップ値の範囲内に存在しないことを示す。図4では、ビットマップ値はビットマップ値_1(bitmapval_1)であり、オブジェクト識別子22および27を表すビットがセットされている。405に示されているように、オブジェクト_存在(object_exists)演算子は、そのオブジェクト識別子引数として識別子(26)を有する際、0を返す。これは、オブジェクト識別子(26)のビットがビットマップ値_1(bitmapval_1)にセットされていないからである。演算子は、そのオブジェクト引数として識別子(22)を有する際、1を返す。これは、識別子(22)のビットがビットマップ値_1(bitmapval_1)にセットされているからである。
これらの演算はビットストリングに対して実行される論理演算に類似している。これらの演算はすべて、同じクラスに属する2つのビットマップオペランドを有する。好ましい態様では、両方のビットマップ値が同じタイプを有する場合、一方または両方のオペランドが、範囲に両方のオペランドが含まれるクラスに変換される。ビットマップ値が互いに異なるタイプを有する場合、エラーが生じる。これらの演算およびその結果は、図5の501に示されている。オペランドはビットマップ値ビットマップ値_1およびビットマップ値_2であり、それらの値は503に示されている。これらの演算のそれぞれの開始時に、ビットマップ値_2がビットマップ値_1のクラスに変換される。ビットマップAND演算は、505に示されているように標準論理AND演算であり、ビットマップOR演算は、507に示されているように、標準論理OR演算であり、ビットマップXOR演算は、509に示されているように、標準論理XOR演算である。ビットマップXOR演算は、2つのオペランドが同一であり、したがって、ビットマップequals演算を実施するのに使用できるときには、すべて0を含むビットストリングを返す。ビットマップマイナス演算は、同じビットが第1のオペランドと第2のオペランドの両方にセットされており、結果における対応するビットがリセットされる場合を除いて、ビットが第1のオペランドと同様にセットされている結果ビットストリングを作成する。これは、論理演算bitmapval_1 AND (NOT bitmapval_2)と等価である。この演算は511に示されている。
ビットマップ値で表される1セットのオブジェクト識別子を変更する際、ビットマップ値も変更しなければならない。この変更では、すでにビットマップ値のビットストリングに含まれているビットのセットおよび/またはリセットを行うだけでよいが、マッピング指定子およびビットストリングの長さを変更してもよい。ビットマップ値で表される1セットのオブジェクト識別子を変更する演算は、そのセットにオブジェクト識別子を付加するビットマップ挿入演算、およびそのセットからオブジェクト識別子を削除するビットマップ削除演算である。どちらの演算でも、オペランドは、変更すべきビットマップ値、およびビットマップ値に追加するかまたはビットマップ値から削除すべき1セットのオブジェクト識別子である。
図7は、2つのビットマップデータタイプ、すなわち、ビットマップ値がマップされる1セットのオブジェクト識別子がデータベース管理システムにおける1セットの行idである行id(rowid)ビットマップデータタイプと、1セットのオブジェクト識別子が1セットのEPCであるePCビットマップデータタイプを実施するデータベース管理システムに属するデータベースオブジェクト701の概念的概要である。データベースオブジェクト701は、2つのクラス、すなわち、メタデータ(metadata)オブジェクト自体を含む、データベース管理システム内のすべてのオブジェクトを定義するメタデータオブジェクトと、オブジェクトを構成するデータが記憶されるデータ記憶オブジェクト732に分類される。データ記憶オブジェクト732は、ファイルシステムなどの永続的記憶域に含まれる。
行idビットマップデータタイプでは、データベース管理システムの行idは、順序付けされた1セットのオブジェクト識別子203を構成する。行idにマップすることのできるオブジェクト202は、行idで表されるデータベース行に含まれるあらゆるオブジェクトである。行idビットマップ値において、マッピング指定子209は、ビットストリング225を一連の行id上にマップする。ビットストリングの各ビットは、この範囲内の1つの行idを表す。ビットストリング225にビットがセットされているとき、セットされているビットは、行idがビットストリングにセットされているビットに対応する行内の1つまたは複数のフィールド内に特定の値が存在することを表す。以下の議論ではまず、好ましい態様における行idについて詳しく説明すると共に好ましい態様で使用される数セットの行idの表現について説明し、次に、行idビットマップ値に対する演算について概略的に説明し、最後に行idビットマップ値を使用したレジュメテーブル103およびレジュメインデックステーブル115の実現態様を開示する。
行idの形式
オラクル9iデータベース管理システムでは、行idは、その行idによって指定される行の物理アドレスの基本64符号化を使用する。符号化文字は、A-Z、a-z、0-9、+、および/である。拡張行idは4ピースフォーマットOOOOOOFFFBBBBBBRRRを有する。
・OOOOOO:データベースセグメントを識別するデータオブジェクト番号。テーブルのクラスタのような同じセグメント内のスキーマオブジェクトは、同じデータオブジェクト番号を有する。
・FFF:その行を含むデータファイルのテーブル空間相対データファイル番号。
・BBBBBB:その行を含むデータブロック。ブロック番号は、テーブル空間ではなくブロック番号のデータファイルに対する番号である。したがって、同一のブロック番号を有する2つの行は、同じテーブル空間の2つの異なるデータファイルに存在することができる。
・RRR:ブロック内のその行の記憶域のオフセット。
図10は、行id 1003をデータオブジェクト番号1005、データファイル番号1007、データブロック番号1009、および行オフセット1011と一緒に示している。
行idビットマップ値1019の一般的な形式は、図10の1019に示されている。行idビットマップ値は、1つまたは複数のマッピング指定子1021およびビットストリング表現1027のシーケンスで構成されている。行idビットマップ値において、マッピング指定子は、行id範囲開始値1023および行id範囲終了値1025を指定することによって行idの範囲を指定する。各マッピング指定子に対応する範囲ビットストリング表現があり、ビットストリングは、マッピング指定子によって指定される範囲内の各行id用のビットを有する。
レジュメインデックステーブル115を指定するDDLは以下のようなものである。
CREATE TABLE ResumeIndexTable
(SearchTerm CHAR(30),
TermIndex ROWIDBITMAP)
好ましい態様では、列「項目インデックス(TermIndex)」の各フィールドは、行idビットマップ値を含まなければならないが、任意のクラスの行idビットマップ値を含んでよい。他の態様では、DDLは、ビットマップ値にマップされる行idが属するテーブルを指定することができ、その場合、列内のビットマップ値は、テーブルの行idにマップされるビットマップ値のクラスに属するようにデータベース管理システムによって制約することができる。
以下の演算は、演算定義721内の行idビットマップ値について定義される。
1) 変換演算
a) BITMAP2ROWIDS:この関数は、行idビットマップ値を対応する1セットの行idに変換する。
b) BITMAP2COUNT:この関数は、行idビットマップ値を、その行idビットマップ値においてビットがセットされている行の対応するカウントに変換する。
c) ROWIDS2BMAP:この関数は1セットの行識別子を行idビットマップ値に変換する。
2) 存在演算:ROWIDEXISTS:この関数は、行idが行idビットマップ値で表される1セットの行idに属するかどうかを判定する。
3) 論理演算:
a) BITMAP_AND:この関数は、2つの行idビットマップ値をとり、2つのオペランドの論理積である行idビットマップ値を返す。
b) BITMAP_OR:この関数は、2つの行idビットマップ値をとり、2つのオペランドの論理和である行idビットマップ値を返す。
c) BITMAP_XOR:この関数は、2つの行idビットマップ値をとり、2つのオペランドの排他的論理和である行idビットマップ値を返す。
d) BITMAP_MINUS:この関数は、第1の行idビットマップ引数から第2の行idビットマップ引数を引いた結果を返す。
4) 行idビットマップ値によって表される1セットの行idを変更する:
a) BITMAP_INSERT:この関数は、行idビットマップ値および1セットの行idを引数としてとり、そのセット内の行idに対応する行idビットマップ値内のビットをセットする。
b) BITMAP_DELETE:この演算は、行idビットマップ値および1セットの行idを引数としてとり、そのセット内の行idに対応する行idビットマップ値内のビットをリセットする。
5) BITMAP_EQUALS:この演算は、2つの行idビットマップ値を引数としてとり、ビットマップ値が同じ1セットの行idを表す場合にTRUEを表す値を返し、そうでない場合には、FALSEを表す値を返す。これらの値は、演算を行う前に同じクラスに変換することができる。
6) 代入:この演算は、ソース行idビットマップ値をテーブル内のフィールドなどの行idビットマップターゲット変数に代入する。演算の終了時に、ターゲット変数はソース値のクラスおよび値を有する。
行idビットマップ値に対する演算は、ビットマップ演算の全般的な議論で説明したように働く。好ましい態様では、ROWIDS2BMAP演算、BITMAP_INSERT演算、およびBITMAP_DELETE演算における結果ビットマップのクラスは、結果ビットマップに含まれる行idから判定される。これらの論理演算において、オペランドは、オペランドビットマップ値に指定されたすべての行idを含むクラスのビットマップに変換される。ビットマップ値の代入において、ターゲットビットマップは、ソースビットマップ値のクラスおよび値を取得する。他の態様では、ソースビットマップ値とターゲットビットマップ値が代入演算において同じクラスを有するか、またはこれらの論理演算におけるオペランドが同じクラスを有することが必要になることがある。
レジュメテーブル103
レジュメテーブル(ResumeTable)103は、値がユーザ定義クラス「レジュメ(Resume)」のオブジェクトである列「レジュメ(Resume)」107を有する。このクラスに重要なユーザ定義演算は、文字ストリングおよびレジュメオブジェクトをオペランドとしてとるcontains演算である。この演算は、アクロバット探索演算を使用して、レジュメが特定の文字ストリングを含むかどうかを判定する。このオペランドが存在すると、特定の文字ストリングを含むレジュメがあるかどうかをレジュメテーブル103に問い合わせることが可能になる。
レジュメインデックステーブル(ResumeIndexTable)115は、値がレジュメテーブル(ResumeTable)103内の行の1セットの行idを表す行idビットマップ値である列「項目インデックス(TermIndex)」121と、値がテーブル103のレジュメにおける関心対象の項目である列「探索項目(SearchIndex)」119とを有する。レジュメインデックステーブル(ResumeIndexTable)115の特定の行内の項目インデックスの値によって表されるレジュメテーブル(ResumeTable)103の1セットの行idは、レジュメ(Resume)フィールド内のレジュメが、レジュメインデックステーブル(ResumeIndexTable)115の特定の行内の探索項目119の値を含む行の、レジュメテーブル(ResumeTable)103における行idで構成されている。
レジュメインデックステーブル115内の探索項目列119の値を使用したレジュメテーブル103に関するクエリーを使用して、項目インデックス列121内のビットマップ値をセットすることができる。クエリーの一形式は以下のようなものである。
UPDATE ResumeIndexTable
SET TermIndex := ROWIDS2BITMAP( TO_SET(
SELECT roid FROM ResumeTable
WHERE contains (Resume, "Massachusetts Institute of Technology")))
WHERE SearchTerm = "Massachusetts Institute of Technology"
このクエリーは、レジュメインデックステーブル(ResumeIndxTable)の各行内の項目インデックス(TermIndex)を、探索項目(SearchTerm)によって指定された探索項目を有するレジュメがレジュメ(Resume)フィールドに含まれるレジュメテーブル(ResumeTable)内の列の行idに対応するビットマップ値に設定する。これらの行idは、ユーザ定義contains関数を使用するSELECTクエリーによって見つけられ、クエリーの結果はTO SET演算によって1セットの行idに変換され、この1セットの行idはROWIDS2BITMAPによってビットマップ値に変換される。
項目「マサチューセッツ工科大学"Massachusetts Institute of Technology"」と項目「PL/SQL」の両方が現れるレジュメテーブル(ResumeTable)113のレジュメを作成するクエリーは以下のようなものである。
SELECT resume FROM ResumeTable
WHERE rowid IN BITMAP2ROWIDS(BITMAP_AND(
(SELECT TermIndex FROM ResumeIndexTable WHERE
SearchTerm = "Massachusetts Institute of Technology"),
(SELECT TermIndex FROM ResumeIndexTable WHERE
SearchTerm = "PL/SQL")))
このクエリーでは、レジュメは、レジュメインデックステーブル(ResumeIndexTable)内のビットマップ値が、探索項目「マサチューセッツ工科大学"Massachusetts Institute of Technology"」および「PL/SQL」をどちらも含むレジュメを有することを示す行idに基づいてレジュメテーブル(ResumeTable)から選択される。クエリーの1番下から、2つの探索項目を使用して項目インデックス(TermIndex)ビットマップ値が選択されていき、この場合、これらのビットマップ値はBITMAP_AND演算のオペランドであり、BITMAP_AND演算の結果として得られるビットマップ値は、レジュメ(Resume)フィールドが両方の探索項目を含むレジュメテーブル(ResumeTable)内のあらゆる行の行idについてセットされているビットを含む。次に、結果ビットマップ値は、BITMAP2ROWIDS演算のオペランドとして使用され、結果ビットマップ値に指定された1セットの行idが生成され、これらの行idを使用して、所望のレジュメを含むレジュメ(resume)フィールドが選択される。
レジュメテーブル(ResumeTable)103内の行が更新されるか、またはテーブル103に行が追加されるかもしくはテーブル103から行が削除されたときはいつでも、項目インデックス(TermIndex)行121内のビットマップ値を、レジュメテーブル(ResumeTable)103内のレジュメの現在の状態を反映するように再計算しなければならない。好ましい態様のリレーショナルデータベース管理システムでは、このような再計算は、レジュメテーブル(ResumeTable)103について書かれた1つまたは複数のトリガプログラムによって行われ、レジュメテーブル(ResumeTable)103内の行が修正されるか、このテーブルから行が削除されるか、またはこのテーブルに行が追加されたときに実行される。
AFTER INSERT OF Resume ON ResumeTable FOR EACH ROW
DECLARE BitmapIn ROWIDBITMAP;
BitmapOut ROWIDBITMAP
BEGIN
FOR Each Search_Term IN new: Resume
SELECT TermIndex INTO BitmapIn FROM ResumeIndexTable
WHERE contains(new :Resume, Search_Term);
IF BitmapIn is NOT NULL
ROWID_BITMAP_INSERT (BitmapIn, TO_SET(new :Rowid), BitmapOut);
UPDATE ResumeIndexTable SET TermIndex =
BitmapOut WHERE
ResumeIndexTable.SearchTerm = Search_Term;
ELSE
INSERT INTO ResumeIndexTable VALUES (Search_Term,
ROWIDS2BMAP (TO_SET(new:rowid)));
END IF;
END LOOP;
END;
トリガ内のコードは、レジュメテーブル(ResumeTable)103に行が追加されるときにレジュメインデックステーブル(ResumeIndexTable)115の各行に対して実行される。2つのビットマップ変数は、トリガ内のビットマップ値に使用される。SELECT文は、行内のフィールド「探索項目(SearchTerm)」の値がレジュメテーブル(ResumeTable)115内のフィールド「レジュメ(Resume)」に存在するかどうかを判定する。存在する場合、レジュメインデックステーブル(ResumeIndexTable)115の行に関するフィールド「項目インデックス(TermIndex)」内のビットマップがビットマップ変数「ビットマップイン(BitmapIn)」にコピーされる。
リレーショナルデータベース管理システムにおける各行は行idを有し、任意のクエリーが、そのクエリーを満たす行の行idを返すことができ、したがって、行idビットマップ値を使用して、クエリーを定義することのできるデータベース管理システムにおける任意の1セットのオブジェクトのサブセットを表すことができる。行は、多数のオブジェクトを含むため、所与の行idビットマップ値によって表される特定の1セットのオブジェクトは、行idを得るのに使用されたクエリーによって決まる。
・そのセットに属するオブジェクトをデータベーステーブルの1つまたは複数の列として表すことができ、かつ
・そのセット内のオブジェクトが1つまたは複数の問合せ可能な属性を有する。
インデックスには、インデックス付けされるオブジェクトを値が表す列を有する1つまたは複数の一次テーブルと、値が、インデックス付けされるオブジェクトの問合せ可能な属性である列、および値が行idビットマップ値である列を少なくとも含むインデックステーブルが必要である。インデックステーブルの各行において、行のビットマップ値は、一次テーブルにおいてインデックス付けされるオブジェクトのうちのどれが、インデックステーブルの行に指定された問合せ可能な属性の値を有するかを示す。行idのビットマップを使用してインデックス付けすることのできるものに対するほぼ唯一の制限は、インデックス付けされる各オブジェクトが、データベース管理システムにおけるテーブル内にオブジェクト自体の行を必要とすることである。インデックス付けされるオブジェクトの数が非常に多い場合、行の必要な数は、データベース管理システムの能力を超えることがある。
BitmapValue:= ROWIDS2BITMAP ( TO_SET(
SELECT rowid FROM ResumeTable
WHERE (contains (
ResumeTable.Resume,
ResumeIndexTable.SearchTerm
))));
は、ビットマップ変数「ビットマップ値(BitmapValue)」をSELECT文によって返される行idのビットマップに設定する。レジュメテーブル(ResumeTable)内の行idが変更されないかぎり、ビットマップ値(BitmapValue)を使用して、ビットマップ値(BitmapValue)が設定されたクエリーによって指定される行を検索することができる。
各オブジェクトが行を有するテーブルを作成することによって表すには大きすぎる1セットのオブジェクトの一例は、ePCによって識別される1セットのオブジェクトである。このため、図7のデータベース管理システムの好ましい態様は、組込みEPCビットマップデータタイプ716およびシステム定義ePCビットマップ演算724を含む。以下の議論ではまず、ePCについて詳しく説明し、次に、ePCにマップされ、したがってePCビットマップデータタイプ、ePCビットマップデータタイプの演算を有するビットマップ値について説明し、最後にePCビットマップ値の使用例について説明する。
EPCまたはePCは、個々の製品品目を一意に識別する標準製品コードである。ePCの標準は依然として開発中である。参照として本明細書に組み込まれるEPCTM Tag Data Standards Version 1.1 Rev.1.23, Last Call Working Draft on 16 February 2004, copyright 2003, EPC Globalに記載されたように、ePCは64ビットまたは96ビットを有することができる。96ビットePCの一般的な形式は図8の801に示されている。96ビット値は、4つのフィールド、すなわち、後続のフィールドのサイズおよびそれらのフィールドをどのうように解釈すべきかを定義する8ビットヘッダフィールド803と、1セットのePCコードを管理する製造業者などのエンティティを識別する総責任者フィールド805と、オブジェクトのクラス、たとえばフィールド805で識別される製造業者によって製造される製品を識別するオブジェクトクラスフィールド807と、オブジェクトクラス識別子807によって指定された製品の個々の品目を識別する通し番号フィールド809とに分割される。ePC値は、2つの部分、すなわちフィールド803〜807で構成されたプレフィックス811と、通し番号フィールド809で構成されたサフィックス813に分割されることが多い。サフィックスの長さは、ヘッダ803内の情報によって判定することができる。フィールド805、807、および809で示される10進能力から分かるように、96ビットePCは、天文学的な数のオブジェクトを識別することができる。64ビットePCはこれよりも小さいが、96ビットePCと全体的な形式は同じである。好ましい態様では、ePCの各セットを表す2種類のビットマップ値がある。96ビットePCの各セットを表すビットマップ値は一方のタイプに属し、64ビットePCの各セットを表すビットマップ値は他方のタイプに属する。ePCビットマップ値についての以下の議論は、両方のタイプのePCビットマップ値に当てはまる。
在庫を管理するデータベース管理システムに対するePCの問題は、各製品品目が現在、96ビット(または64ビット)の一意の識別子を有することである。オブジェクトを表す通常のデータベース管理システムを使用する場合、製品品目はテーブル内のフィールドによって識別され、各製品品目はテーブル内に行を有し、各行は製品品目のePC用のフィールドを必要とする。さらに、どの製品品目の在庫があるかを示すメッセージも、各製品品目ごとにePCを必要とする。データベース管理システム内または製品品目の在庫があることを示すメッセージ内に必要とされる空間の量は、マッピング指定子が値のビットマップを1セットのePC上にマップするビットマップ値で1セットの製品品目を表す場合、大幅に削減することができる。特定のePCが属する製品品目が一群の製品品目に存在する場合、そのePCに対応するビットがビットマップ値にセットされる。したがって、ビットマップ値はビットマップ値内のビットと同数のePCのリストに置き換わることができる。
ePCビットマップ演算は、ePCの性質が与えられた場合に予想されるものである。
1. 変換演算
a. EPC_BITMAP2EPCS:この関数はePCビットマップを、ePCビットマップ値によって表される1セットのePCに変換する。
b. EPCS2EPC_BITMAP:この関数は1セットのePCをePCビットマップ値に変換する。
c. EPC_BITMAP2COUNT:この関数は、ePCビットマップ値を、ePCビットマップ値内のセットされているビットの数で表されるePCのカウントに変換する。
2. 存在演算:EPC_BITMAP_EXISTS:この関数は、所与のePC(第2の引数)を表すビットがePCビットマップ値(第1の引数)にセットされているかどうかに応じて1または0を返す。
3. 論理演算:
a. EPC_BITMAP_AND:この関数は、2つのePCビットマップ値をとり、ビットマップ値の論理積を返す。
b. EPC_BITMAP_OR:この関数は、2つのePCビットマップ値をとり、ビットマップ値の論理和を返す。
c. EPC_BITMAP_XOR:この関数は、2つのePCビットマップ値をとり、ビットマップ値の排他的論理和を返す。
d. EPC_BITMAP_MINUS:この関数は、2つのePCビットマップ値をとり、第1のePCビットマップ値から第2のePCビットマップ値を引いた値を返す。
4. ePCビットマップ値で表される1セットのオブジェクトを変更する。
a. EPC_BITMAP_INSERT:この関数は、ePCビットマップ値および1セットのePCをとり、そのセット内のePCに対応するビットマップ値内のビットをセットする。
b. EPC_BITMAP_DELETE:この関数は、ePCビットマップ値および1セットのePCをとり、そのセット内のePCに対応するビットマップ値内のビットをセットする。
5. 2つのePCビットマップ値が等値であるかどうかを比較する:EPC_BITMAP_EQUALS:この関数は、2つのePCビットマップ値をとり、ビットマップ値が同じ1セットのePCを表している場合には論理値TRUEを表す値を返し、そうでない場合にはFALSEを表す値を返す。
6. ePCビットマップ値代入:ePCビットマップ値のソースが、ePCビットマップフィールドの値などのターゲットePCビットマップ変数に代入される。演算の終了時に、ターゲットはソースの値およびクラスを有する。
ePCのリストをネットワークを介して転送するのに必要な帯域幅を小さくする
ePCによる在庫追跡は、格納棚などのコンテナに現在入っている製品品目のePCを追跡する追跡装置によって行われる。追跡装置は、現在コンテナにどんな製品品目が入っているかを示す総計イベントメッセージを定期的に中央在庫データベースに送信する。このようなメッセージは、在庫追跡システムにおける一種のイベントメッセージである。図9は、そのような総計イベントメッセージ(event message)を示している。メッセージはXML形式である。各メッセージ構成要素は<構成要素_名前>...</構成要素_名前>(<content_name>...</content_name>)によって区切られており、各構成要素は、入れ子にされた構成要素を含んでよい。イベントメッセージ901は総計イベント(aggregationEvent)である。メッセージの次の構成要素は、このイベントの識別子903である。次の構成要素は、イベントメッセージのソースであるコンテナの識別子である。次の構成要素は、現在コンテナに入っている製品品目のePCのリスト907である。次の構成要素は、ePCのリストが作成された時間を示すタイムスタンプ909である。
多くの場合、総計イベントメッセージは、データベース管理システムを使用して在庫を追跡する中央位置に送信される。ePCビットマップ値をこのような中央位置のテーブルで使用して、テーブルを縮小すると共に、ePCに対する多数の有用な演算の実行を高速化することができる。このようなテーブルの一例である在庫テーブル(InventoryTable)915が図9に示されている。このテーブルを作成するDDLは以下のようなものである。
CREATE TABLE InventoryTable
(Container_EPC RAW(12),
Product_EPC_prefix RAW(12),
Time_checked TIMESTAMP、
Item_suffix_bitmap EPC96BITMAP);
このテーブルは4つの列、すなわち、在庫が管理されているコンテナののePCを含むコンテナ_EPC(container_EPC) 917と、特定の種類の製品の品目を表すePCに関するオブジェクトクラス807である製品_EPC_プレフィックス(Product_EPC_prefix)919と、フィールド919で示される種類の、フィールド917で示されるコンテナ内の製品が、最後に検査されたのはいつかを示す時間_検査(Time_checked)921と、フィールド921で示される時間にフィールド917で示されるコンテナ内にフィールド919でしめされる製品のどの品目が入っていたかを示すePCビットマップ値を含む品目_サフィックス_ビットマップ(Item_suffix_bitmap)923とを有する。品目_サフィックス_ビットマップ(Item_suffix_bitmap))のタイプ宣言で示されるように、ビットマップ値で表されるePCの各セットは96ビットePCを含む。
item_count:= EPC_BITMAP962COUNT(TO_SET(
SELECT Item_sufix_bitmap
FROM InventoryTable
WHERE(Container_EPC = container) AND
(Product_EPC_prefix = prod_pefix)));
すでに指摘したように、行idビットマップ値は、データベーステーブルの1つまたは複数の列に記憶するのが適切な任意の1セットのオブジェクトを表すことができる。したがって、データベースシステムに記憶されている数セットのオブジェクトを表すユーザ定義ビットマップデータタイプは必要ではない。しかし、ユーザ定義ビットマップデータタイプは、ビットマップ値で表されるオブジェクトがデータベースシステムの外部に存在する場合に役立つことがある。前述のように、このようなビットマップデータタイプに必要なのは、順序付けされた1セットの識別子だけである。本発明の他の態様は、ユーザが、データベースシステムにおける1セットの識別子と、1セットの識別子を定義するビットマップデータタイプを定義するのを可能にする。ビットマップデータタイプの定義では、ビットマップデータタイプに関するマッピング指定子が定義され、このデータタイプのビットストリング表現およびビットマップデータタイプの値に対する演算の意味が定義される。
上記の「詳細な説明」では、本発明のビットマップ値を作成し使用するにはどうすべきかを関連技術の当業者に開示し、さらに、本発明のビットマップ値を作成し使用する場合の、現在発明者が分かっている最良の形態を開示した。本明細書に開示された技術に関する多数の変形態様が可能であることがただちに明らかになろう。たとえば、本明細書に開示されたビットマップ値では、ビットマップ値で表されるセットにオブジェクトが存在することが、ビットストリング内のビットを1に設定することによって示され、存在しない場合は、このビットが0に設定され、いくつかの態様では、この逆になり、オブジェクトが存在する場合にはこのビットが0に設定され、そうでない場合には1に設定される。ビットストリング内の各ビットおよび範囲指定子内の各範囲は、他の態様では、目的に対して好都合な任意の技術によって表すことができ、特に、そのセットにオブジェクトが存在することに関するビットストリングに含まれる情報を保存する任意の圧縮方法を、ビットマップ値のビットストリングに適用することができる。数セットの行idおよび数セットのePCを表すビットマップ値に関して本明細書で説明した技術は、任意の大きな1セットの順序付けされたオブジェクトを表すビットマップ値を作成して使用する場合に有効に適用することができる。このようなビットマップ値の使用法はもちろん、ビットマップ値で表されるオブジェクトが属するドメインによって決まる。行idを表すビットマップ値は、ユーザ定義インデックスを作成するためだけでなく、1セットの行idのコンパクトな表現を維持すると役立つ任意の目的でも、データベース管理システムにおいて使用することができる。本明細書で説明したのと異なる意味または構文を有する開示されたビットマップ演算の形態を作成することができる。さらに、必要な演算の種類がビットマップ値で表されるオブジェクトによって決まるため、他の態様では、本明細書で説明したもの以外のビットマップ値に対する演算を定義し使用することができる。すべての上記の理由で、「詳細な説明」は、すべての点で例示的なものとみなされ、制限的なものとはみなされず、本明細書で開示された本発明の範囲は、「詳細な説明」ではなく、特許法によって許容される全範囲によって解釈したときの特許請求の範囲から決定すべきである。
Claims (38)
- データベース管理システムであって、
演算手段と、
第1のテーブルおよび第2のテーブルを格納する記憶手段とを備え、前記第1のテーブルは、複数のビットマップ値を保持しており、
前記ビットマップ値は、ビットストリングの表現を有しており、
当該表現のセットされたビットは、1セットのオブジェクトを指定し、
前記オブジェクトは、前記第2のテーブルのそれぞれの行を識別する複数の行識別子を含み、
前記演算手段は、1つ以上の行識別子に対応する1以上の行がユーザ定義クエリーを満たす場合に、前記複数の行識別子のうち当該1つ以上の行識別子を表現するビットマップ値を返し、それにより、
前記演算手段は、ユーザによって指定され、1つ以上のオペランドを有する指令に応答して、1つ以上のプリミティブビットマップ演算を実行し、当該1つ以上のオペランドは、1つ以上のビットマップ値、または、1つ以上のセットのオブジェクトを含み、前記1つ以上のプリミティブビットマップ演算は、前記データベース管理システムのユーザ、および、前記データベース管理システムによってアクセス可能である、データベース管理システム。 - 前記プリミティブビットマップ演算は、オペランドで指定された1セットのオブジェクトからビットマップ値が導出されるセット・ツー・ビットマップ(set-to-bitmap)演算を少なくとも含む、請求項1記載のデータベース管理システム。
- 前記導出されるビットマップ値は、指定されたセット内のオブジェクトを指定する新しいビットマップ値である、請求項2記載のデータベース管理システム。
- 前記導出されるビットマップ値は、指定されたセット内のさらなるオブジェクトを新たに指定する既存のビットマップ値である、請求項2記載のデータベース管理システム。
- 前記導出されるビットマップ値は、指定されたセット内のもはやいずれのオブジェクトも指定しない既存のビットマップ値である、請求項2記載のデータベース管理システム。
- 前記プリミティブビットマップ演算は、少なくとも、オペランドで指定されたビットマップ値で指定されたセットのオブジェクトを当該指定されたビットマップ値から導出するビットマップ・ツー・セット(bitmap-to-set)演算を含む、請求項1〜5のいずれか1項記載のデータベース管理システム。
- 前記プリミティブビットマップ演算は、少なくとも、オペランドで指定されたビットマップ値で指定されたセット内のオブジェクトの数を当該指定されたビットマップ値から導出するビットマップ・ツー・カウント(bitmap-to-count)演算を含む、請求項1〜6のいずれか1項記載のデータベース管理システム。
- 前記プリミティブビットマップ演算は、少なくとも、オペランドで指定されたオブジェクトがもう1つのオペランドで指定されたビットマップ値で表されるセットのオブジェクトに属するときに論理値TRUEを表す値を返す存在演算を含む、請求項1〜7のいずれか1項記載のデータベース管理システム。
- 前記プリミティブビットマップ演算は、少なくとも、オペランドで指定された第1のビットマップ値からの第1のビットストリングと、もう1つのオペランドで指定された第2のビットマップ値からの第2のビットストリングとに関する論理演算を含む、請求項1〜8のいずれか1項記載のデータベース管理システム。
- 前記プリミティブビットマップ演算は、少なくとも、オペランドで指定された第1のビットマップ値ともう1つのオペランドで指定された第2のビットマップ値とが同じセットのオブジェクトを指定するときに論理値TRUEを表す値を返す、第1のビットマップ値および第2のビットマップ値に関する比較演算を含む、請求項1〜9のいずれか1項記載のデータベース管理システム。
- 前記ビットマップ値は、設定可能なビットマップ値を含み、かつ
前記プリミティブビットマップ演算は、少なくとも、オペランドで指定されたターゲット設定可能ビットマップ値を、もう1つのオペランドで指定されたソースビットマップ値からセットする代入演算を含む、請求項1〜10のいずれか1項記載のデータベース管理システム。 - 前記ビットマップ値は、データベース管理システムにおいて永続的なビットマップ値を含む、請求項1〜11のいずれか1項記載のデータベース管理システム。
- 前記永続的なビットマップ値は、前記データベース管理システムのテーブルのユーザ指定のフィールド内のビットマップ値を含む、請求項12記載のデータベース管理システム。
- 前記ビットマップ値における前記ビットストリングは、圧縮されている、請求項1〜13のいずれか1項記載のデータベース管理システム。
- 前記他のオブジェクトは、前記データベース管理システムに存在する、請求項1〜14のいずれか1項記載のデータベース管理システム。
- 前記他のオブジェクトは、前記データベース管理システムの外部に存在する、請求項1〜14のいずれか1項記載のデータベース管理システム。
- 前記データベース管理システムの外部に存在するオブジェクトの識別子は、製品品目の電子製品コード(EPC(Electronic Product Codes))である、請求項16記載のデータベース管理システム。
- コンピュータシステムで実行されたときに、請求項1〜17のいずれか1項記載のデータベース管理システムを実現するコードを含むことを特徴とするデータ記憶装置。
- データベース管理システムであって、
以下の処理を実行するように適合された演算手段を備え、当該以下の処理は、
複数のビットマップ値を保持する第1のテーブルを識別または判断する処理を含み、前記ビットマップ値は、ビットストリングの複数のビットの各々についての値を有しており、当該以下の処理はさらに、
複数のオブジェクトの定義を保持する第2のテーブルを識別または判断する処理を含み、前記ビットマップ値は、前記複数のオブジェクトの第1のセットを表現し、当該以下の処理はさらに、
前記第1のオブジェクトのセット内の第1のオブジェクトを、オブジェクトの第2のセット内の第2のオブジェクトにマッピングする処理を含み、前記ビットマップ値は、
当該ビットマップ値に表現されている複数ビットのストリングを、前記第2のセットの一部にマップするマッピング指定子と、
前記複数ビットのストリングの表現とを含み、前記第1のセットのメンバーに対応するビットに前記第2のセットのメンバーがマッピングされると、当該複数ビットのストリングの表現においてビットがセットされ、
前記演算手段は、少なくとも、
第1のユーザ指定指示に応答して、前記複数ビットのストリングの前記第2のセットの当該一部へのマッピングを指定するための第1の演算と、
第2のユーザ指定指示に応答して、前記第1のセットに対応する複数ビットのストリング内の1つ以上のビットをセットする第2の演算を実行する、データベース管理システム。 - 前記第2のオブジェクトのセットは、順序付けされている、請求項19記載のデータベース管理システム。
- 前記第2のオブジェクトのセットの順序は、前記第2のオブジェクトのセット内のオブジェクトの値に対応し、
前記マッピング指定子は、前記複数ビットのストリングがマップされるオブジェクトの値の1つまたは複数の範囲を指定することによってマッピングを指定し、
前記複数ビットのストリングの表現は、当該範囲に対応する複数ビットのストリングを表す、請求項20記載のデータベース管理システム。 - 前記マッピング指定子は、開始値および終了値を指定することによって前記オブジェクトの値の範囲を指定する、請求項21記載のデータベース管理システム。
- 前記ビットマップ値は、前記オブジェクトの値の範囲を決定するプレフィックスを含み、
前記マッピング指定子は、当該範囲のためプレフィックスを指定することによって前記オブジェクトの値の範囲を指定する、請求項21記載のデータベース管理システム。 - 前記マッピング指定子は、前記プレフィックスによって指定された範囲の1つまたは複数の部分範囲を指定するため、開始値および終了値を使用して値の範囲をさらに指定する、請求項23記載のデータベース管理システム。
- 前記オブジェクトは、EPCである、請求項19記載のデータベース管理システム。
- 前記ビットマップ値のいくつかは、前記データベース管理システムにおいて永続的である、請求項19記載のデータベース管理システム。
- 前記永続的であるビットマップ値は、前記データベース管理システムのテーブルのユーザ指定のフィールドのビットマップ値を含む、請求項26記載のデータベース管理システム。
- 前記ビットストリングの表現は、当該ビットストリングの圧縮表現である、請求項19記載のデータベース管理システム。
- 前記演算手段は、前記ビットマップ値に関するユーザアクセス可能な演算をさらに実行する、請求項19記載のデータベース管理システム。
- 前記演算手段は、表現された複数ビットのストリングを演算に必要な第2のサブセットにマップする必要に応じて、範囲指定子およびビットストリングの表現を変更する、請求項29記載のデータベース管理システム。
- コンピュータシステムで実行されたときに、請求項19または20記載のデータベース管理システムを実現するコードを含むことを特徴とするデータ記憶装置。
- データベースシステムで使用される方法であって、前記データベースシステムは、ビットマップ値を保持する第1のテーブルと、オブジェクトの定義を含む第2のテーブルとを含み、前記ビットマップ値は、前記オブジェクトの第2のサブセットに含まれる第1のサブセットを表し、
前記ビットマップ値は、
複数ビットのストリングを前記第2のサブセットにマップするマッピング指定子と、
前記複数ビットのストリングの表現とを含み、各ビットは、当該ビットにマップされる第2のサブセットのメンバーが、前記第1のサブセットに属するときに、当該表現された複数ビットのストリングにおいてセットされ、前記方法は、演算手段によって実行される処理を含み、当該処理は、
ユーザ指定指示に応答して、前記複数ビットのストリングのマッピングを前記第2のサブセットに指定するための第1の演算を実行する処理と、
前記演算手段が、ユーザの直接的な指定に応答して、前記第1のサブセットに対応する複数ビットのストリングの複数ビットをセットする第2の演算を実行する処理とを備える、データベースシステムで使用される方法。 - 前記オブジェクトは、EPCを含む、請求項32記載の方法。
- 前記オブジェクトは、順序付けされており、
前記第1の演算を行う処理は、
前記オブジェクトの範囲を指定する範囲指定子を作成する処理と、
前記複数ビットのストリング内のビットを、前記範囲指定子によって指定される範囲にマップする処理とを含む、請求項32記載の方法。 - 前記範囲指定子を作成する処理は、いずれも範囲を指定する、開始値および終了値を作成する処理を含む、請求項34記載の方法。
- 前記範囲指定子を作成する処理は、範囲を指定するプレフィックス値を作成する処理を含む、請求項34記載の方法。
- 前記ビットストリングを圧縮する処理をさらに含む、請求項32記載の方法。
- コンピュータシステムで実行されたときに、請求項32〜37のいずれか1項記載の方法を実現するコードを含むことを特徴とする、データ記憶装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/810,756 | 2004-03-26 | ||
US10/810,756 US20050216518A1 (en) | 2004-03-26 | 2004-03-26 | Database management system with persistent, user-accessible bitmap values |
PCT/US2005/009052 WO2005101250A2 (en) | 2004-03-26 | 2005-03-17 | A database management system with persistent, user- accessible bitmap values |
Publications (3)
Publication Number | Publication Date |
---|---|
JP2007531115A JP2007531115A (ja) | 2007-11-01 |
JP2007531115A5 JP2007531115A5 (ja) | 2008-05-01 |
JP4785833B2 true JP4785833B2 (ja) | 2011-10-05 |
Family
ID=34965705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2007505024A Active JP4785833B2 (ja) | 2004-03-26 | 2005-03-17 | 永続的でユーザアクセス可能なビットマップ値を有するデータベース管理システム |
Country Status (7)
Country | Link |
---|---|
US (1) | US20050216518A1 (ja) |
EP (1) | EP1735727A2 (ja) |
JP (1) | JP4785833B2 (ja) |
CN (1) | CN101036141B (ja) |
AU (1) | AU2005233925B2 (ja) |
CA (1) | CA2560453C (ja) |
WO (1) | WO2005101250A2 (ja) |
Families Citing this family (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2006001089A (ja) * | 2004-06-16 | 2006-01-05 | Konica Minolta Business Technologies Inc | 画像処理装置、画像処理方法、および画像処理プログラム |
KR100643294B1 (ko) * | 2005-05-04 | 2006-11-10 | 삼성전자주식회사 | 홈 네트워크 시뮬레이션 시스템 및 방법 |
US7917482B1 (en) * | 2005-08-10 | 2011-03-29 | Infoblox Inc. | Indexing of database queries |
US7966315B2 (en) * | 2005-11-15 | 2011-06-21 | Vmware, Inc. | Multi-query optimization |
KR100748684B1 (ko) | 2005-12-19 | 2007-08-13 | 삼성전자주식회사 | 방송 시스템의 방송 스케쥴 경합 검사 방법 및 그 장치 |
US9047342B2 (en) * | 2007-12-28 | 2015-06-02 | Sybase, Inc. | Method for accelerating queries containing local range conditions using subtraction of cumulative bitmaps |
US8176021B2 (en) * | 2008-06-02 | 2012-05-08 | Microsoft Corporation | Optimized reverse key indexes |
US9020911B2 (en) * | 2012-01-18 | 2015-04-28 | International Business Machines Corporation | Name search using multiple bitmap distributions |
CN103678556B (zh) | 2013-12-06 | 2017-10-10 | 华为技术有限公司 | 列式数据库处理的方法和处理设备 |
US9785725B2 (en) | 2014-09-26 | 2017-10-10 | Oracle International Corporation | Method and system for visualizing relational data as RDF graphs with interactive response time |
US9575993B2 (en) | 2014-12-30 | 2017-02-21 | Here Global B.V. | Binary difference operations for navigational bit streams |
US10872312B2 (en) * | 2015-04-28 | 2020-12-22 | Oracle International Corporation | Customer order picking by delivery container |
CN106294449B (zh) | 2015-05-28 | 2020-01-03 | 华为技术有限公司 | 一种数据处理方法及装置 |
CN105224828B (zh) * | 2015-10-09 | 2017-10-27 | 人和未来生物科技(长沙)有限公司 | 一种基因序列片段快速定位用键值索引数据压缩方法 |
CN107315535B (zh) * | 2016-04-27 | 2019-09-20 | 北京京东尚科信息技术有限公司 | 信息处理方法和装置 |
US10652248B2 (en) * | 2016-07-28 | 2020-05-12 | Molecula Corp. | Systems and methods of managing data rights and selective data sharing |
US10951467B2 (en) * | 2017-06-02 | 2021-03-16 | Arris Enterprises Llc | Secure enabling and disabling points of entry on a device remotely or locally |
US10728233B2 (en) | 2017-06-02 | 2020-07-28 | Arris Enterprises Llc | Secure key management in a high volume device deployment |
CN109086456B (zh) * | 2018-08-31 | 2020-11-03 | 中国联合网络通信集团有限公司 | 数据索引方法及装置 |
US10860558B2 (en) | 2018-09-28 | 2020-12-08 | Apple Inc. | Techniques for managing index structures for database tables |
CN111414566B (zh) * | 2019-01-04 | 2024-10-18 | 北京京东尚科信息技术有限公司 | 用于推送信息的方法和装置 |
EP3678032B1 (en) | 2019-01-07 | 2024-09-11 | QlikTech International AB | Computer implemented methods and systems for improved data retrieval |
US20210149866A1 (en) * | 2019-11-20 | 2021-05-20 | Google Llc | Universal data index for rapid data exploration |
US11386089B2 (en) | 2020-01-13 | 2022-07-12 | The Toronto-Dominion Bank | Scan optimization of column oriented storage |
US11514697B2 (en) * | 2020-07-15 | 2022-11-29 | Oracle International Corporation | Probabilistic text index for semi-structured data in columnar analytics storage formats |
CN112732174B (zh) * | 2020-12-25 | 2024-09-13 | 北京金山云网络技术有限公司 | 数据的处理方法和装置、电子设备和存储介质 |
CN113190506B (zh) * | 2021-04-30 | 2024-07-09 | 维沃移动通信有限公司 | 对象属性保存方法及装置 |
CN117591520A (zh) * | 2024-01-19 | 2024-02-23 | 深圳市名通科技股份有限公司 | 基于位图组的时空大数据计算方法 |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5237678A (en) * | 1987-05-08 | 1993-08-17 | Kuechler William L | System for storing and manipulating information in an information base |
US5852821A (en) * | 1993-04-16 | 1998-12-22 | Sybase, Inc. | High-speed data base query method and apparatus |
US5560007A (en) * | 1993-06-30 | 1996-09-24 | Borland International, Inc. | B-tree key-range bit map index optimization of database queries |
JP2990000B2 (ja) * | 1993-09-01 | 1999-12-13 | 北海道日本電気ソフトウェア株式会社 | 検索システム |
US5819256A (en) * | 1996-11-20 | 1998-10-06 | Oracle Corporation | Method and apparatus for processing count statements in a database system |
US6081800A (en) * | 1997-02-28 | 2000-06-27 | Oracle Corporation | Creating bitmaps from multi-level identifiers |
US6067540A (en) * | 1997-02-28 | 2000-05-23 | Oracle Corporation | Bitmap segmentation |
US5899988A (en) * | 1997-02-28 | 1999-05-04 | Oracle Corporation | Bitmapped indexing with high granularity locking |
US5884307A (en) * | 1997-02-28 | 1999-03-16 | Oracle Corporation | Updating bitmapped indexes |
US6141658A (en) * | 1997-09-10 | 2000-10-31 | Clear With Computers, Inc. | Computer system and method for managing sales information |
US6026398A (en) * | 1997-10-16 | 2000-02-15 | Imarket, Incorporated | System and methods for searching and matching databases |
US6070164A (en) * | 1998-05-09 | 2000-05-30 | Information Systems Corporation | Database method and apparatus using hierarchical bit vector index structure |
US6282540B1 (en) * | 1999-02-26 | 2001-08-28 | Vicinity Corporation | Method and apparatus for efficient proximity searching |
JP3318834B2 (ja) * | 1999-07-30 | 2002-08-26 | 三菱電機株式会社 | データファイルシステム及びデータ検索方法 |
US6879976B1 (en) * | 1999-08-19 | 2005-04-12 | Azi, Inc. | Data indexing using bit vectors |
EP1211610A1 (en) * | 2000-11-29 | 2002-06-05 | Lafayette Software Inc. | Methods of organising data and processing queries in a database system |
US7127467B2 (en) * | 2002-05-10 | 2006-10-24 | Oracle International Corporation | Managing expressions in a database system |
US7401069B2 (en) * | 2003-09-11 | 2008-07-15 | International Business Machines Corporation | Background index bitmapping for faster query performance |
-
2004
- 2004-03-26 US US10/810,756 patent/US20050216518A1/en not_active Abandoned
-
2005
- 2005-03-17 AU AU2005233925A patent/AU2005233925B2/en active Active
- 2005-03-17 EP EP05735234A patent/EP1735727A2/en not_active Withdrawn
- 2005-03-17 CA CA2560453A patent/CA2560453C/en active Active
- 2005-03-17 CN CN2005800167899A patent/CN101036141B/zh active Active
- 2005-03-17 WO PCT/US2005/009052 patent/WO2005101250A2/en active Search and Examination
- 2005-03-17 JP JP2007505024A patent/JP4785833B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
AU2005233925B2 (en) | 2011-11-03 |
CN101036141A (zh) | 2007-09-12 |
WO2005101250A3 (en) | 2007-08-23 |
US20050216518A1 (en) | 2005-09-29 |
JP2007531115A (ja) | 2007-11-01 |
CA2560453A1 (en) | 2005-10-27 |
AU2005233925A1 (en) | 2005-10-27 |
WO2005101250A2 (en) | 2005-10-27 |
CA2560453C (en) | 2013-07-23 |
CN101036141B (zh) | 2013-01-02 |
EP1735727A2 (en) | 2006-12-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4785833B2 (ja) | 永続的でユーザアクセス可能なビットマップ値を有するデータベース管理システム | |
US7774346B2 (en) | Indexes that are based on bitmap values and that use summary bitmap values | |
US11347741B2 (en) | Efficient use of TRIE data structure in databases | |
US11899641B2 (en) | Trie-based indices for databases | |
US6484181B2 (en) | Method and system for handling foreign key update in an object-oriented database environment | |
JP5833406B2 (ja) | 参照を使用してジェネリック・データ・アイテムに関連するデータ管理アーキテクチャ | |
US6240418B1 (en) | Database apparatus | |
CN110109894B (zh) | 非关系型数据库的实现方法、装置、存储介质和设备 | |
RU2633178C2 (ru) | Способ и система базы данных для индексирования ссылок на документы базы данных | |
US20070271289A1 (en) | Method and apparatus for compressing a data set | |
Millham et al. | Pattern mining algorithms | |
Hammer et al. | Data structures for databases | |
Faust et al. | Footprint reduction and uniqueness enforcement with hash indices in SAP HANA | |
Kharkongor et al. | Bit Representation for Candidate Itemset Generation | |
CA2262593C (en) | Database apparatus | |
CN114201487A (zh) | 智能合约的存储装置和方法 | |
CN118210952A (zh) | 图数据库中存储rdf图数据的方法、系统、程序、存储介质 | |
CN117762984A (zh) | 数据获取方法、装置、电子设备和存储介质 | |
Li et al. | BBTC: A New Update-aware Coding Scheme for Efficient Structure Join |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080313 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080313 |
|
RD03 | Notification of appointment of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7423 Effective date: 20100707 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20100707 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20100707 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20110105 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110404 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110411 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20110502 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20110512 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110525 |
|
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: 20110614 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20110712 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4785833 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140722 Year of fee payment: 3 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |