CN101036141A - 具有持久性、用户可访问的位图值的数据库管理系统 - Google Patents
具有持久性、用户可访问的位图值的数据库管理系统 Download PDFInfo
- Publication number
- CN101036141A CN101036141A CNA2005800167899A CN200580016789A CN101036141A CN 101036141 A CN101036141 A CN 101036141A CN A2005800167899 A CNA2005800167899 A CN A2005800167899A CN 200580016789 A CN200580016789 A CN 200580016789A CN 101036141 A CN101036141 A CN 101036141A
- Authority
- CN
- China
- Prior art keywords
- bitmap
- bitmap values
- management system
- dbms
- data base
- 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
- 230000002085 persistent effect Effects 0.000 title claims description 5
- 238000013507 mapping Methods 0.000 claims abstract description 53
- 238000007726 management method Methods 0.000 claims description 139
- 238000013500 data storage Methods 0.000 claims description 23
- 230000014509 gene expression Effects 0.000 claims description 22
- 238000000034 method Methods 0.000 claims description 21
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 230000002688 persistence Effects 0.000 claims description 4
- 230000006870 function Effects 0.000 description 24
- 238000005516 engineering process Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 11
- 238000012217 deletion Methods 0.000 description 10
- 230000037430 deletion Effects 0.000 description 10
- 238000006243 chemical reaction Methods 0.000 description 7
- 238000003860 storage Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 229940034610 toothpaste Drugs 0.000 description 4
- 239000000606 toothpaste Substances 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 239000003205 fragrance Substances 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 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
- 230000001133 acceleration Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000003760 hair shine Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 235000003499 redwood Nutrition 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012360 testing method 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
Abstract
一种数据库管理系统,具有位图值,在所述位图值中,在位串表示中的设置位指定其定义被内置于所述数据库管理系统的对象组。所述数据库管理系统还包括对所述位图值的用户可访问的操作。所述位图值借助于映射说明符和位串表示来表示,映射说明符用于指定对象组的范围,位串表示已经被映射到由范围说明符所指定的对象组。所述位串的表示可以被压缩。对所述值的位图操作可以修改范围说明符、位串大小或所述位串中的单个位。由位图值所表示的对象可以是数据库管理系统中的对象或其外部的对象。第一种位图值的例子是用于表示rowid组的位图值。可以使用rowid位图值来为在数据库管理系统的字段中所包含的任何对象组制作属性值的用户定义的索引。第二种位图值的例子是用于表示电子产品代码组的位图值。可以在需要一组ePC代码的紧凑表示的任何应用中使用ePC位图值。
Description
发明背景
1.技术领域
本发明总体上涉及数据库管理系统并且尤其涉及在数据库管理系统中使用位图值来表示一个对象集的子集(subset)。
2.背景技术
以下背景技术从描述由现代数据库管理系统所提供的内置索引系统开始继而描述现代数据库管理系统怎样进一步允许用户定义自己类型的索引系统,以供所述数据库管理系统使用。
通常的索引
借助包括索引使任何很大的信息集合更为有用。例如,如果美国革命战争历史具有索引并且该历史的读者对1776年3月17日HenryKnox将军把英国人赶出波士顿感兴趣,那么所述读者只需要在索引中查找“Knox,Henry”,其中该读者在历史书中会发现提及Knox将军的页面列表。在没有索引的情况下,读者必须扫视书的大部分以便发现他或她所寻找的内容。在用于以下论述的术语中,美国独立战争的历史定义了一个信息集;历史读者常常只对该组信息中的一部分感兴趣;所述部分被称为所述信息的子集。因而,历史索引所做的就是指定信息子集的位置并且由此加速用户对所索引子集的访问。
内置索引系统
数据库管理系统存在以用来管理并提供对大信息集合的访问,并且如人们往往所期望的那样,数据库管理系统具有索引。在关系数据库管理系统中,信息集合被组织为表。数据库表具有多个列并且可以具有多个行。每个行具有对应于每个列的字段。对应于列的字段值具有该列所要求的类型值。例如,以下简单表Employees(雇员)具有四个列和两个行:
Rowid | Name(姓名) | Gender(性别) | Job_Title(职别) |
1 | Smith(史密斯) | F | Manager(经理) |
2 | Jones(琼斯) | M | Laborer(职员) |
每个行表示一个雇员。列Rowid是内置列,其字段包含数据库系统为表中的每个行所分配的行标识符。在数据库管理系统中行标识符唯一地标识行。对应于列Name的字段包含了由行所表示的雇员名字。对应于Gender的字段包含雇员的生物性别;最后对应于Job_Title的字段包含了雇员的职别。为了从表中获得信息,用户向数据库管理系统提供查询,所述查询描述了从中取出信息的行和要从那些行中所取出的信息。例如,查询
SELECT Name FROM Employees WHERE Job_Title=Manager
从Employees中选择其职别字段具有值Manager的行,即其rowid为1的行,并且从该行中返回Name字段的值,即Smith。就介绍性的论述而言,所述查询指定了在Employees中所包含的信息集的子集并且返回所指定的子集。
虽然对于Employees来说制作索引几乎是不值得的,然而人们可以制作一个。实际上,如果Employees是一个10,000行的表,那么作一个索引毫无疑问是值得的。例如,Employees上的Name列值的索引可能会看起来像这样:Jones,2;Smith,1。该索引具有按字母顺序的名字并且每个名字后面有出现该名字的行的rowid。诸如由Oracle公司(Redwood City,CA)所出品的Oracle 9i数据库管理系统之类的现代数据库管理系统包含内置索引功能,其允许用户指定像上面例子中的名字索引之类的索引。数据库管理系统中这种索引的指定看来像这样:
CREATE INDEX employee_name_index ON Employees(Name)
响应于所述指定,数据库管理系统创建索引,当其所属的表改变时更新索引,并且使用所述索引来加速对表的查询。例如,给定以上索引和查询
SELECT Job Title FROM Employees WHERE Name=Smith
数据库管理系统会使用索引来确定Smith的行为行1,而不是向下读取表直到发现其Name字段具有值Smith的行。因而在查询中使用索引完全类似于人类读者使用历史书。
由现代数据库管理系统所生成的一种索引是位图索引。位图是已经被映射到一个对象集的位序列。每个位对应于该集的一个对象。位图值是其中位已经被设置为用于指定该对象集的子集的位图。当对象属于所述子集时,设置对应于位图值中的对象的位。在现代数据库管理系统所使用的位图索引中,位图已经被映射到用于表示表中的行的rowid集。例如,在表Employees中存在两个行,因此rowid集具有两个成员并且位图具有两个位。在我们的例子中,位图的第一位被映射到rowid 1并且第二位被映射到rowid 2。因为位图中的每个位被映射到表中的rowid,所以位图值可以被用为表中的索引。例如,可以使用在表Employees中用于表示一个rowid集的位图值来表明表中Gender字段具有值M的所有行。在这种位图值中,当在行的Gender字段中存在M时用于表示表的给定rowid的位具有值1,否则具有值0。用于在Employees的Gender字段中值M的示例性位图值是0、1。值M被称为位图值的键(key)。为了定位具有值M的行,数据库管理系统查阅该键的位图值并且根据1是位图值中第二位的事实来确定具有该值的行是具有rowid 2的行。
Oracle 9i数据库管理系统允许用户指定为表的列来创建位图索引。数据库管理系统通过制作对于列字段的每个可能值来说包括位图值的位图索引来对这种指定作出响应。例如,Gender列中的字段可以只具有两个值:M和F。因而对于此列来说,数据库管理系统会构建两个位图值,一个用于键M而另一个用于键F。会使Oracle 9i数据库管理系统构建这种索引的指定如下:
CREATE BITMAP INDEX Gender_index ON Employees(Gender)
如上所阐述,用于M键的位图值是0、1;用于F键的位图值是1、0。因而用于M键的位图值指定表Employees的行的子集包含具有rowid 2的行,而用于F键的位图值指定所述子集包含具有rowid 1的行。
位图索引的优点在于只占据非常少的空间而且通过对位图值执行逻辑操作可以非常迅速地对具有位图索引的字段执行逻辑操作,诸如查询中的AND(与)、OR(或)和NOT(非)。例如,查询
SELECT Name FROM Employees WHERE Gender=‘M’ORGender=’F’
会OR其Gender键为M的位图值(即1,0)和Gender键为F的位图值(即0,1),以便生成位图值1,1,所述位图值1,1指定了要选择的Employees中的每个行。在Oracle 9i数据库原理(版本2)的第10-28页的Indexes部分开始详细描述了由Oracle 9i数据库管理系统所提供的内置索引系统,所述Oracle 9i数据库原理由Oracle公司在2002年公布并且可从Oracle公司作为部分号A96524-01获得。通过引用将该描述结合到本专利申请中。
用户定义的索引系统
在设计内置索引系统的数据库管理系统中,在数据库管理系统表的字段中所包含的值必须属于少量内置数据类型之一。内置数据类型典型情况下包括用于名字和字的字符数据类型、用于十进数的十进制数据类型、用于整数的整型数据类型和用于数据库管理系统元数据的系统值数据类型,所述元数据即用于定义表的数据。在示例性的表Employees中,rowid是这种系统数据。其它字段中的数据具有字符数据类型。近年来,数据库管理系统已经包括了用于允许用户定义他或她自己的数据类型并且在数据库管理系统表的字段中使用具有那些数据类型的值的配置。在用户所感兴趣的领域中使用用户定义的数据类型。例如,对摄影感兴趣的用户可以定义适于该领域的数据类型。一个例子可能会是数据类型Photograph。至少,Photograph的定义指定了在数据库管理系统中怎样表示类型Photograph的值。所述定义还可以指定可以对类型值所执行的操作。例如,如果领域要求比较拍摄,那么定义可以指定Like操作,用于比较两个拍摄并且返回相似性测量的结果。最后,定义可以指定用于类型Photograph值的索引系统。为此,用户必须指定怎样定义索引,怎样维护索引以及怎样读取索引。在可从Oracle公司获得的Oracle 9i数据盒式磁带开发者指南(版本2(9.2))部分号A96595-01中描述了在Oracle 9i数据库管理系统中用于用户定义的类型并且对它们进行操作所使用的机制。在第7章构建领域索引中包含对用户定义索引的论述。在此通过引用将整个参考结合到本申请中。
内置和用户定义的索引系统的限制
内置索引系统易于使用且是高效的,但是索引种类的数目受到限制。例如,Oracle 9i数据库管理系统当前提供以下内置索引模式:
●B树索引
●B树群集索引
●散列群集索引
●反向键索引
●位图索引
●位图连接索引
此外,存在某些无法使用这些索引模式来索引的内置数据类型并且内置索引模式只限制以用户定义的类型来使用。内置索引模式的最终缺点在于用户很少控制数据库管理系统构造索引的方式并且不访问内部索引数据。
例如,利用位图索引,系统始终为每个可能的字段值构造位图,所述字段的值正被用为键。系统还要求被用作键的值是互不相交的,而且正为其制作索引的列中的值属于系统定义的类型。然而,在许多情况下,用户只对某些键值的索引或用于重叠值范围的索引感兴趣或者对用户定义类型的索引感兴趣,并且在那些情况中内置位图索引简直没有什么用处。此外,数据库管理系统用来制作并操纵位图值的原语操作永远都不可由用户访问。例如,用户无法制作用于表示由用户定义的查询所返回的rowid的位图值。
用户当然可以制作用户定义的索引系统,所述索引系统使用对被索引数据领域有用的任何索引模式。这种用户定义的索引模式的缺点在于用户必须付出设计并编程索引模式所需要相当多的精力。增加设计并编程这种索引配置所需要的精力的一个方面是程序员不能利用索引原语。
如上所述,因为位图值是对象集的紧凑表示,所以在索引模式中就使用所述位图值。在要求对象集的紧凑表示的其它情况中使用位图值是不可以的,这是因为使用数据库管理系统的程序员既不能访问位图值本身也不能访问对它们的原语操作。
MySQL开放源关系数据库系统具有SET内置数据类型,其用来表示多达64个用户定义对象集。SET类型值表示特定的用户定义对象集的子集,并且所述子集由位图值来表示,所述位图值被映射到特定的用户定义对象集并且具有为属于所述子集的每个对象所设置的位。MySQL为SET类型值提供了原语操作,但是把集中的对象数目限制为64使MySQLSET类型不能用于以下应用中,这种应用要求能够表示大对象集的子集的位图值。这种应用的一大类当然是位图索引。
如从上述可以看出,其中程序员可以访问用于指定大的值集的子集的位图值并且可以对所述位图值进行原语操作的数据库管理系统可能会大大地增加可以使用位图索引的情况数,允许它们用于具有用户定义类的对象,并且通常允许使用位图值来表示大的对象集的子集。这里所公开的本发明的目的是提供这种数据库管理系统。
发明内容
发明目的借助于改进的数据库管理系统来实现。数据库管理系统具有位图值,其中位串表示中的设置位(set bit)指定其定义被内置于数据库管理系统的对象集。数据库管理系统还对位图值进行用户可访问的操作。所述操作包括来自以下的至少一个操作:
●组到位图(set-to-bitmap)操作,其中从给定的对象组来导出位图值;
-组到位图操作,其中所导出的值是用于指定给定组中对象的新位图值;
-组到位图操作,其中所导出的值是现在进一步用于指定给定组中对象的先前存在的位图值;和
-所导出的位图值是现在不再指定给定组中任何对象的先前存在的位图值。
●位图到组(bitmap-to-set)操作,其中从给定的位图值来导出给定位图值中所指定的对象组;
●位图到计数(bitmap-to-count)操作,其中从给定的位图值来导出由给定位图值所指定组中的对象数目;
●存在操作,其中当给定对象属于由给定位图值所表示的对象组时返回用于表示逻辑值TRUE的值;
●对由位图值所表示位串的逻辑操作,所述逻辑操作包括AND、OR、XOR(异或)和MINUS(减)操作;
●位图EQUALS(等于)操作,其中当两个位图值指定相同的对象组时返回用于表示逻辑值TRUE的值;和
●位图分配操作,其中位图源值被分配给目标位图数据项。
在本发明的其它方面,位图值在数据库管理系统中是持久性的并且可以是所述数据库管理系统中表的字段值。可以压缩位图值中的位串。
其定义被内置于数据库管理系统的对象可以是存在于所述数据库管理系统的其它对象的标识符。标识符可以是行标识符并且可以借助在数据库管理系统中所执行的用户定义的查询来返回由位图值所表示的所述行标识符。其定义被内置于数据库管理系统的对象还可以是存在于所述数据库管理系统外部的其它对象的标识符。在本发明的一个方面,标识符是产品项的电子产品代码。
在另一方面,本发明是在数据库管理系统中用来表示第一组第一对象的位图值。第一对象在数据库管理系统以外。第一组对象的成员被映射到第二组第二对象的成员,在数据库管理系统中定义了所述第二组第二对象。位图值包括映射说明符和位串的表示。映射说明符把所表示的位串映射到第二组的子集。当被映射到一个位的第二组成员具有映射到其的第一组成员时,在所表示的位串中设置所述位。
第二组对象可以被排序并且所述组中成员的次序可以对应于成员的值。在这种情况下,映射说明符指定第二排序组的成员值的一个或多个范围并且位串表示代表对应于所述范围的位串。所述范围可以由开始值和结束值和/或前缀值来指定。某些位图操作可以修改范围说明符和对应于其的位串表示。
在进一步方面,本发明是用于表示在数据库管理系统中所定义的行标识符的第一子集的位图值。位图值包括映射说明符和位串表示,并且由数据库管理系统所执行的用户定义查询返回rowid的第一子集。可以使用用于表示行标识符子集的位图值来按照可以被存储在数据库管理系统的表中的任何对象组的属性值构造索引。
在附加方面,本发明是一组电子产品代码的表示。所述表示包括用于指定电子产品代码范围的范围说明符和被映射到由所述范围说明符所指定范围的位串表示,所述范围说明符包括该组的成员。可以在要求一组电子产品代码的空间有效表示的任何地方,使用所述表示。
当熟读以下具体实施方式和附图时那些本领域技术人员可以更加清楚本发明所涉及的其它目的和优点,其中:
附图说明
图1是使用本发明的位图值所制作的用户定义索引的概念性概观;
图2是在优选实施例中用于表示位图值的技术的概观;
图3示出了可以对位图值所执行的转换操作;
图4示出了可以对位图值所执行的对象存在操作;
图5示出了可以对位图值所执行的逻辑操作;
图6示出了用于把表示对象的位插入位图值以及从位图值中删除表示对象的位的操作;
图7示出了在实现本发明的数据库管理系统中的元数据对象;
图8示出了电子产品代码和用于表示电子产品代码组的位图值;
图9示出了包括ePC位图值的聚集事件信息和包括ePC位图值的数据库表;和
图10示出了优选实施例的数据库管理系统中的rowid和用于表示rowid组的位图值。
附图中的附图标记具有三个或更多数字:右侧的两个数字是由其余数字所表明的附图中的附图标记。因而,首次具有附图标记203的项看起来像图2中的项203。
具体实施方式
以下具体实施方式首先给出使用用于表示rowid组的位图值所制作索引的概观,然后给出在数据库管理系统中可以怎样定义位图值以及可以向它们提供操作的一般概观,最后给出了两种不同的位图值,其中一种位图值被映射到rowid组而另一种位图值被映射到电子产品代码(ePC)组。目前,诸如条形码之类的产品代码只标识产品种类,例如一管牙膏的商标和香味。具有该香味的该商标的每管牙膏带有此种牙膏的条形码。单个产品上的ePC不仅标识产品的种类,而且唯一地标识每种单个的产品项。因而,每管牙膏会具有其自己的ePC。
位图值的概观:图1
图1在101示出了rowid位图值111可以怎样与第一表103中的一组行相关并且在第二表115中可以怎样使用所述位图值,所述第二表115充当在第一表的行中所包含信息的索引。在图1中,表列由附图标记标识并且行由用于表示行rowid的整数标识,行中的字段由字段列的附图标记和其rowid的整数来标识;因而在具有表103的rowid 1的行中、属于rowid列105的字段被标识为字段105(1)。在字段中所包含的当然是为该字段所属列所指定的类型值。
从表103开始,表103是履历表,每个履历是可搜寻的电子文档。为了本论述的目的,履历表103具有两个列,包含每个行rowid的rowid列105和包含履历的履历列107。如在Oracle 9i数据库管理系统中所定义,rowid是在特定的Oracle 9i数据库管理系统中唯一标识行的值。在本文中,rowid可以被看作是大整数。对于Oracle 9i数据库管理系统的表中的每行来说存在rowid,并因而每个Oracle 9i表可以被认为具有虚拟的rowid列,而不管rowid列实际上是否出现在表的定义中。rowid列105的虚拟性质由用于在表103中定义它的短划线来表明。
在履历表103下示出了履历字段107(h)的细节。履历字段具有内置型BINARY LARGE OBJECT或BLOB,其意指数据库管理系统把字段内容简单地作为字节集合来处理。数据库管理系统可以对类型BLOB字段所执行的仅有的操作是读取所述字段当前包含的字节或向所述字段写入新字节集合。正是数据库管理系统的用户才适当地解释BLOB的内容。例如,如果BLOB的内容是.pdf文件,那么用户可以从该字段读取BLOB内容继而使用由Adobe系统公司的Acrobat软件来解释或搜索所述.pdf文件。在履历字段107(h)中所包含的是用于形成履历索引的基础的多个条款109。该条款可以包括以下项,诸如履历所属人员所熟悉的计算机语言名称、用户具有的学位或该人所参与过的教育机构。这些条款可以由作为Acrobat软件一部分的搜索实用程序来在履历中定位。
由于每个履历包含在履历表103的独立行中并且可经由表103的行来访问,所以通过指定履历在履历表103中所属的行来索引所述履历。每个行当然由其rowid 105来标识。就像使用内置位图索引一样,一组rowid可以由位图值指定。这里,每个rowid位图值111对于履历表103中每个可能的rowid来说具有一位,并且用于表示rowid位图值111中rowid的位次序对应于rowid的数字次序。履历表103中可能的rowid是在表中最低的rowid和所述表中最高的rowid之间的那些。rowid并不按照履历表103中的值排序,并且在位图值111中可以存在这样的位,对于这些位在表103中没有相应的rowid。
履历索引表115示出了可以怎样使用rowid位图值111来制作各个履历中条款109的索引。示出了履历索引表115具有两个列:搜索条款列119和条款索引列121。搜索条款列119的每个字段包含要求履历索引的一个条款。例如,如果将借助计算机语言和教育机构来索引履历,所述条款可以是用于教育机构的“麻省理工学院”、“北卡罗来纳大学”、“伍斯特工学院”等以及用于编程语言的“C++”、“PL/SQL”、“Java”等。
条款索引列121包含rowid位图值111。因而每个值对于履历表103的每个行来说具有一位。在行117(i)的条款索引值121(i)中的位设置示出了哪些履历包含条款109,所述条款109具有在行的搜索条款119(i)中所指定的值。例如,在行117(x)中,搜索条款是“麻省理工学院”。设置条款索引值121(x)的三个位:对应于rowid 105(e)、105(h)和105(l)的那些位,表明在那些行中的履历107(e)、(h)和(l)包含搜索条款“麻省理工学院”。类似地,搜索条款119(y)是“PL/SQL”并且条款索引值121(y)表明履历107(e)和(j)包含了该搜索条款。如果用户正在寻找知道PL/SQL的、具有MIT学位的某个人,那么他或她可以通过使用数据库管理系统作以下事情来找到该人:
1.从履历索引表115中具有“麻省理工学院”或“PL/SQL”的行中获取位图值121作为它们的搜索条款值119;
2.AND所返回的位图值以便获得一个结果位图值,其中所设置的仅有位用于包含两个搜索条款的履历;
3.确定rowid,其位在结果位图中被设置;并且
4.在由所述rowid所指定的行中取出履历107。
这里应当注意,可以根据搜索条款的位图值所确定的唯一事情是具有rowid的行是否具有所述搜索条款,所述rowid对应于所述位图值中的设置位。位未被设置这一事实可能意味着在对应于位的rowid的表中不存在行或者所述行中的履历没有该搜索条款。
如从上述可以看出,在101所示出的索引配置允许用户把位图值映射到一组对象,以便定义所述组的成员会使对应于所述成员的位在位图值中被设置的条件,并且执行对所述位图值所要求的任何位图操作。因为用户可以定义在位图值和它所表示的对象组之间的映射,并且可以定义对象是由位图值所指定组的成员的条件,所以不再要求位图索引所基于的值具有低基数。这允许位图索引被用于这样的应用中,所述应用索引大组不同模式的出现。这种模式的例子是文本中的标记、生物测定模式、基因组序列或OLAP立方体。还不再要求位图索引所基于的值是互不相交的。因而在101所示出的索引配置允许使用用于指定值重叠范围的组的成员条件。
位图值表示的概观:图2
当然,可以使用把一组对象映射到位串的任何配置来定义位图值。然而在优选实施例中,所述配置如下:
●所述对象被映射到非常大的一组排序唯一值。所述组具有内置于数据库管理系统的定义。
●位图值的位串被映射到所排序唯一值的范围。
因而位图值具有两个部分:用于指定所排序唯一值范围的映射说明符,和位串的表示。位串的表示可以简单地是位串或者可以是使用可用于无损压缩位串的任何技术所压缩的位串。
图2示出了表示位图值的技术201,位图值又表示对象组。在202示出了对象。为了使对象由位图值来表示,它们必须被映射到排序的一组唯一对象标识符203(0..n)。示出了一个这种映射204:对象202(b)被映射到标识符203(i)。因为标识符203被排序并且是唯一的,所以可以通过指定对象标识符203的范围205来指定已经被映射到标识符203的对象组202,所述范围205包括标识符203,所述对象组202已经被映射到所述标识符203。因而指定对象202子集的位图值227具有两个部分:映射说明符209,用于指定位图所映射到的标识符203的范围205,以及位串表示225。位串表示225具有对应于范围205中每个对象标识符的位,并且依照与对象标识符相同的方式来排序所述位。因而,在位串225中的每个位和范围205中的标识符203之间存在映射206。由于映射204和映射206,所以位226(j)已经被映射到对象202(b)。如果对象202(b)处于由位图值227所表示的子集中,那么将设置位226(j)。如果位226(j)未被设置,那么可能意味着对象202(b)并不处于所述子集中或没有对象202被映射到位226(j)。位串表示225可以是简单的位串或者可以使用任何无损耗位串压缩算法来压缩以生成所压缩的位串231。
位图值的重要属性是它们的类型及它们的类,所述类型由所述位图值被映射到的对象标识符的排序组来确定,所述类由所述位图值被映射到的对象标识符的范围来确定。因而,被映射到由映射说明符209所指定的范围205(i)的所有位图值227都具有相同的类。在优选实施例中,存在两种类型的位图值:rowid位图值,被映射到数据库管理系统中包含位图值的rowid值组,和ePC位图值,被映射到组成电子产品代码的值组。在优选实施例中,在位图值的字段的定义或对所述位图值所执行操作的定义中表明位图值或操作所要求的类型。在优选实施例中,位图值的类由位图值的映射说明符209来隐含。在其它实施例中,可以在位图值字段的定义中表明位图值所要求的类。例如,字段所属列的定义可以要求位图值是rowid位图值,其中rowid位图值的rowid的范围是特定表中rowid的范围。可以使用位图值的类型和类来确定对位图的操作是否合法并且用来执行转换。例如,涉及其位图值具有不同类型的操作数的操作是不合法的并且在某些实施例中,可以要求某些操作的位图值操作数具有相同的类。在不要求操作数具有相同类的情况下,执行操作可能要求把所述操作数转换为公共类。
在图2中还示出了用于位图值227的一般形式233以及在映射说明符209表示范围的两种方式,在235中所示。位图值227的一般形式是一组映射说明符209和位串表示225对;因为根据排序对象组的属性需要或因为很少把对象202映射到标识符,所以可以使用一个以上的对,以致指定映射说明符和位串表示对的数目比指定单个映射说明符和位串表示225要求更少的存储空间就足够大了以便包括在映射说明符中所指定的整个范围。
指定映射说明符209中范围边界的一种方式是通过指定其下界219及其上界221,如在217所示。另一方式是通过使用前缀边界说明符,如在223所示。给出一些例子,如果对象的排序组包括100个对象0..99,那么对象20-29可以由范围说明符20-29来指定。作为选择,数目0..99可以被视为均包含前缀,即10位数字,和后缀,即个位数字,并且范围20-29可以由前缀2来表示,范围0-9由前缀0来表示等。使用哪一个当然取决于所想要的范围种类。例如,在Oracle 9i数据库管理系统所使用的rowid中,rowid的对象号、文件号和块号可以被用作rowid范围的前缀,所述rowid会包括属于由对象号所指定的表的所有rowid。
用户可访问的位图操作的概观:图3-6
本发明的用户可访问的位图操作分为四组。在图3-6中详细地示出了所述操作。为了详述操作的语义,参见附图的描述。
1.转换成或者转换到位图值的转换操作:图3
a.位图到组:把位图值转换为由位图值位串中所设置的位所指定的对象标识符组;
b.组到位图:把对象标识符组转换为用于表示该组的位图值;
c.位图到计数:把位图值转换为位图中设置位数目的计数并由此转换为由所述位图所表示的对象组中的对象数目。
2.存在操作:确定由位图值所表示的对象标识符组是否包括特定对象的对象标识符:图4
3.对位图值的逻辑操作:图5
a.位图AND:AND具有相同类的两个位图值;
b.位图OR:OR具有相同类的两个位图值;
c.位图XOR:XOR具有相同类的两个位图值;和
d.位图MINUS:从一个位图值中除去处于由类的一个位图值所指定的组中的对象标识符,其中所述对象标识符还处于由相同类的另一位图值所指定的组中。
4.改变由位图值所表示的对象标识符组:图6
a.位图插入:取一组对象标识符和位图值,并且如果该组中任何对象标识符和位图值不包括在为位图值的类所指定的范围中,那么扩展所述范围并且为所扩展的范围创建新的位图值,其中设置从前设置的位和对应于在所述组中对象标识符的位。
b.位图删除:取一组对象标识符和位图值,并且如果该组中的任何对象标识符和位图值包括在为位图值类所指定的范围中,那么把位图值中对象标识符的位设置为0。
5.位图比较:位图EQUALS操作比较两个位图值并且确定两个值是否表示相同的对象标识符组。参见图4
6.位图分配:向目标变量分配源位图值。所述目标变量表示与源值具有相同类型的位图值。参见图3
转换操作:图3
图3提供了转换操作301和位图分配的例子。在303示出了在以下操作例子中所使用的位图值的类。类的位图值具有用于指定对象标识符203的范围20-29的映射说明符以及其位0..9已经被映射到对象标识符20..29的十位位串。在下面论述中,位图值由符号表示法<lower_bound-upper_bound>:<bitstring>来表示。因而,如在305所示,用于表示对应于标识符22和27的对象组的bitmapval_1使位2和7被设置,并且由符号表示法20-29:0010000100来表示。
在位图到组的操作307中,bitmap_to_set操作者取单个操作数,即位图值,在这种情况下,为位图值bitmapval_1,并且返回由在位串中的设置位所指定的标识符,在这种情况下,为标识符(22)和标识符(27)。
在组到位图的操作309中,set_to_bitmap操作者取一组对象标识符,这里所述组由标识符(20)、标识符(23)和标识符(24)组成,并且返回位图值bitmapval_2,其映射说明符指定了范围20-24并且具有5位的位串,其中对应于那些对象标识符的位(0)、(3)和(4)已经被设置,给出位图值20-24:10101。该位图值已经被分配给变量bitmapval_2。所述变量必须使源位图值类型被分配给它并且在分配之后具有源位图值的类和值。
在位图到计数的操作311中,bitmap_to_count操作者取任何类的位图值并且返回在位图中所设置的位的数目,即在由所述位图所表示的组中的对象标识符的数目。给出两个例子:bitmap_to_count(bitmapval_1)返回2,这是因为在位图值中设置了许多位;bitmap_to_count(bitmapval_2)返回3,这是因为在该位图值中设置了许多位。
存在操作和等于操作:图4
存在操作获取位图值和对应于位图值类型的对象标识符,并且如果对应于所述对象标识符的位在位图值中被设置那么返回1,如果未被设置那么返回0。因而0表明对象标识符处于位图值的范围中但是其位并未被设置或者所述对象标识符并不处于位图值的范围中。在图4中,位图值是bitmapval_1,其中用于表示对象标识符22和27的位被设置。如在405所示,当object_exists操作符使标识符(26)作为其对象标识符自变量时,它返回0,这是因为对象标识符(26)的位并未在bitmapval_1中设置。当操作符使标识符(22)作为其对象自变量时,它返回1,这是因为对象标识符(22)的位在bitmapval_1中设置。
等于操作获取属于相同类型的两个位图值,并且如果两个位图值表示相同的对象标识符组那么返回1,否则返回0。如在407所示,当把bitmapval_1与set_to_bitmap操作的结果相比较时所述操作返回1,其中所述set_to_bitmap操作返回具有为object_id(22)和object_id(27)而设置的位的位图,并且当把bitmapval_1与bitmapval_2相比较时返回0。在此操作中,在进行比较之前把两个位图值均转化为相同的类。
对位图值的逻辑操作:图5
这些操作像对位串所执行的逻辑操作。所述操作都具有属于相同类的两个位图操作数。在优选实施例中,如果两个位图值具有相同的类型,那么两个操作数之一或者两个都被转换为其范围包括两个操作数的类。如果位图值具有不同类型,那么导致错误。在图5的501示出了操作及其结果。操作数是位图值bitmapval_1和bitmapval_2,在503示出了它们的值。在每个这样的操作开始时,bitmapval_2被转换为bitmapval_1的类。位图AND操作是标准的逻辑AND操作,如在505所示;位图OR操作是标准的逻辑OR操作,如在507所示;并且位图XOR操作是标准的逻辑XOR操作,如在509所示。当两个操作数完全相同由此可以用来实现位图EQUALS操作时,位图XOR操作返回包含全0的位串。位图减操作产生这样的位串,其中除在第一和第二操作数中设置相同位的情况下之外在第一操作数中设置位,在这种情况下结果中的相应位被复位。它等价于逻辑操作bitmapval_1 AND(NOT bitmapval_2)。在511示出了操作。
改变由位图值所表示的对象标识符组:图6
当由位图值所表示的对象标识符组改变时,所述位图值必须也改变。所述改变不但可以涉及设置和/或复位已经包含在位图值位串中的位,而且它还可以涉及改变映射说明符和所述位串的长度。用于改变由位图值所表示的对象标识符组的操作是用于向所述组添加对象标识符的位图插入操作和用于从所述组中删除对象标识符的位图删除操作。利用这两个操作,操作数是要改变的位图值和要被添加到位图值或从中删除的一组对象标识符。
在图6的601示出了位图插入和删除操作。位图值操作数是bitmapval_1,在603所示。在605示出了位图插入操作。第二操作数是对象标识符组{object_id(28),object_id(29)}。这些对象中没有一个已经包括在由bitmapval_1所表示的组中;而且第二对象在bitmapval_1的当前范围之外。从而,位图插入操作扩展了bitmapval_1的范围以致它可以包括两个新对象。因而bitmapval_1的新值是20-33:00100001100001,其位串表示用于表示14个位并且其中设置用于表示对象标识符22、27、28和33的位。
在607示出了位图删除操作。这里,第二操作数是对象组{object_id(27),object_id(28)}。这两个对象标识符都在bitmapval_1范围之内,但是只有对象标识符27处于由bitmapval_1所表示的对象标识符组中,因此操作结果是bitmapval_1的新值,其中对应于object_id(27)的位7已经被复位。如已经所解释,一些位图值可以被表示为映射说明符组和位图对;当在这种情况并且位图删除操作删除子范围中的所有对象时,可以从映射说明符组和位图对中删除所述子范围的映射说明符和位图对。
具有位图数据类型的数据库管理系统:图7
图7是属于以下数据库管理系统的数据库对象701的概念性概观,所述数据库管理系统实现了两个位图数据类型:rowid位图数据类型和ePC位图数据类型,在所述rowid位图数据类型中位图值所映射到的对象标识符组是数据库管理系统中的rowid组,并且在所述ePC位图数据类型中所述对象标识符组是一组电子产品代码。数据库对象701分为两类:用于在数据库管理系统中定义所有对象(包括元数据对象本身)的元数据对象,和其中存储用于构成所述对象的数据的数据存储对象732。数据存储对象732被包含在诸如文件系统之类的持久性存储装置中。
随元数据对象703继续,表定义705是其条目为数据库管理系统中表的定义的表。在此表中存在用于每个表的条目。列定义709是其条目为表中所使用列的定义的表。类型定义713是其条目为所述列所指定的数据类型的定义的表。在本发明的数据库管理系统中,类型定义713包括系统定义的类型715和用户定义的类型717。在系统定义的类型中包括rowid位图类型718和ePC位图类型716。与每种类型相关联的,不论是用户定义还是系统定义,都是一组操作。这些在操作定义表721中有所定义。在表721中包括用户定义的操作725的定义和系统定义的操作723的定义。在系统定义的操作之间是用于rowid位图值的操作726和用于ePC位图值的操作724。用户定义的操作可以使用在数据库管理系统中所包含的代码或在所述数据库管理系统以外的代码。最后,rowid表729是用于当前在数据库管理系统中所有行的rowid的表。rowid依照顺序次序来布置,每个数据段733(i)定义了rowid 731(i)的范围。每个rowid指向数据段733中的槽(slot)735,所述数据段733实际上包含了由所述rowid所表明的行的数据。大表可以使数据处于一个以上的数据段733中。
在表定义705中所定义的表由表-rowid关系表727与表行的rowid相关并且由表-列关系表707与表列的列定义709相关。列定义由列-类型关系表711与类型定义相关,并且类型定义类型-操作定义表719与操作定义相关。这些关系表可以确定什么列和行属于在表defs 705中所定义的表,所述列具有什么类型以及所述类型具有什么操作。
rowid位图数据类型
在rowid位图数据类型中,数据库管理系统的rowid组成对象标识符203的排序组。可以被映射到rowid的对象202是在由所述rowid所表示的数据库行中所包含的任何对象。在rowid位图值中,映射说明符209把位串225映射到rowid的范围上。位串的每个位表示在所述范围中的一个rowid。当在位串225中设置位时,所设置的位表示特定值存在于行的一个或多个字段中,其中所述行的rowid对应于所述位串中所设置的位。以下论述始于详述优选实施例中的rowid以及优选实施例中所使用rowid组的表示,然后概括对rowid位图值的操作,并且最后公开了使用rowid位图值来实现履历表103和履历索引表115。
rowid位图数据类型的细节:图10
rowid的形式
在Oracle 9i数据库管理系统中,rowid对于由所述rowid所指定的行,使用物理地址的基础64编码。编码字符是A-Z、a-z、0-9、+和/。扩展的rowid具有四部分格式,OOOOOOFFFBBBBBBRRR:
●OOOOOO:用于标识数据库段的数据对象号。相同段(诸如一簇表)中的模式对象具有相同数据对象号。
●FFF:包含该行的数据文件(datafile)的表空间(tablespace)相对数据文件号。
●BBBBBB:包含该行的数据块。块号相对于它们的数据文件而并非表空间。因此,具有完全相同块号的两个行可以存在于相同表空间的两个不同数据文件中。
●RRR:对于块中该行存储的偏移。
图10示出了rowid 1003,具有数据对象号1005、数据文件号1007、数据块号1009和行偏移1011。
rowid位图值
在图10的1019示出了rowid位图值1019的一般形式。rowid位图值由一个或多个映射说明符1021和位串表示1027的序列组成。在rowid位图值中,映射说明符通过指定rowid范围开始值1023和rowid范围结束值1025来指定rowid的范围。存在对应于每个映射说明符的范围位串表示1027,并且所述位串对于由所述映射说明符所指定范围中的每个rowid具有一位。
其中使用一个以上的映射说明符1021和范围位串1027的一种情况是当位串正被映射到的rowid范围包括在一个以上数据段733中指定位置的rowid时。当映射说明符把位图映射到在一个以上数据段703中所包含的rowid时,对于为把位图值映射到rowid上所必须的所有子范围来说,位图值采取这样的形式<用于在段a中的rowid的范围(i)的映射说明符>:<用于范围(i)的位图表示>、<用于在段b中的rowid的范围(j)的映射说明符>:<用于子范围(j)的位图表示>以及用于把位图映射到rowid所必须的所有子范围的位图表示。此技术当然可以用于其中位图值可以表示其值并未形成连续序列的对象的任何情况下。此技术也可以用在跨过对象范围稀疏地分散感兴趣的对象时。在这种情况下,感兴趣子范围的映射说明符的集合(每个子范围具有其自己的位串表示)可以比单个映射说明符要求更少的存储空间以及对于对象所分散在的整个范围上要求非常大的位串指定。
指定表中rowid位图值的列
用于指定履历索引表115的DDL看来像这样:
CREATE TABLE ResumeIndexTable
(SearchTerm CHAR(30),
TermIndex ROWIDBITMAP);
在优选实施例中,列TermIndex的字段必须包含rowid位图值,但是可以包含任何类的rowid位图值。在其它实施例中,DDL可以指定被映射到位图值的rowid所属的表,并且在该情况下,列中的位图值可以由数据库管理系统约束为属于被映射到表rowid的位图值的类。
对rowid位图值的操作
在操作定义721中为rowid位图值定义了以下操作:
1)转换操作
a)BITMAP2ROWIDS:此函数把rowid位图值转换为相应的rowid组。
b)BITMAP2COUNT:此函数把rowid位图值转换为行的相应计数,在rowid位图值中为该行设置位。
c)ROWIDS2BMAP:此函数把一组行标识符转换为rowid位图值。
2)存在操作:ROWIDEXISTS:此函数确定rowid是否属于由rowid位图值所表示的rowid组。
3)逻辑操作:
a)BITMAP_AND:此函数取两个rowid位图值并且返回是两个操作数的AND的rowid位图值;
b)BITMAP_OR:此函数取两个rowid位图值并且返回是两个值的OR的rowid位图值。
c)BITMAP_XOR:此函数取两个rowid位图值并且返回是两个值的XOR的rowid位图值。
d)BITMAP_MINUS:此函数返回第一rowid位图自变量MINUS第二rowid位图自变量的结果。
4)改变由rowid位图值所表示的rowid组:
a)BITMAP_INSERT:此函数取rowid位图值和rowid组作为自变量并且对应于所述组中的rowid来设置所述rowid位图值中的位。
b)BITMAP_DELETE:此操作取rowid位图值和rowid组作为自变量并且对应于所述组中的rowid来复位所述rowid位图值中的位。
5)BITMAP_EQUALS:此操作取两个rowid位图值作为自变量并且如果所述位图值表示相同的rowid组那么返回用于表示TRUE的值,否则返回用于表示FALSE的值。在执行操作之前,所述值可以被转换为相同的类。
6)分配:此操作向rowid位图目标变量(诸如表中的字段)分配源rowid位图值。在操作结束,目标变量具有源值的类和值。
对rowid位图值的操作如在位图操作的一般讨论中所述那样工作。在优选实施例中,根据在结果位图中所包含的rowid来确定在ROWIDS2BMAP、BITMAP_INSERT和BITMAP_DELETE操作中的结果位图的类。利用逻辑操作,操作数被转换为以下类的位图值,所述类包括在操作数位图值中所指定的所有rowid。在分配位图值中,目标位图获取源位图值的类和值。其它实施例可以要求源和目标位图值在分配操作中具有相同的类或者逻辑操作中的操作数具有相同的类。
利用rowid位图值实现履历表103和履历索引表115
ResumeTable 103
ResumeTable 103具有列,Resume(履历)107,其值为用户定义的类Resume的对象。对此类感兴趣的用户定义的操作是取字符串和履历对象作为操作数的contains(包含)操作。所述操作使用Acrobat搜索操作来确定履历是否包含特定的字符串。此操作的存在可以向履历表103查询包含特定字符串的履历。
ResumeIndexTable 115
ResumeIndexTable 115具有列,TermIndex 121,其值是用于表示ResumeTable 103中行的rowid组的rowid位图值,还具有列,SearchTerm 119,其值是在表103的履历中所感兴趣的条款。由ResumeIndexTable 115的特定行中的TermIndex值所表示的ResumeTable 103的rowid组由来自以下行的ResumeTable 103的rowid组成,在所述行中,履历字段中的履历在ResumeIndexTable 115的特定行中包含SearchTerm 119值。
在ResumeIndexTable 115中设置位图值
对履历表103的查询可以用来设置条款索引列121中的位图值,其中所述查询使用来自履历索引表115中搜索条款列119的值。查询的一个版本看起来像这样:
UPDATE ResumeIndexTable
SET TermIndex:=ROWIDS2BITMAP(TO_SET(
SELECT rowid FROM ResumeTable
WHERE contains(Resume,“麻省理工学
院”)))
WHERE SearchTerm=“麻省理工学院”;
此查询把ResumeIndexTable的每行中的TermIndex设置为对应于ResumeTable中行的rowid的位图值,该行的Resume字段包含具有由SearchTerm所指定的搜索条款的履历。rowid由使用用户定义的contians(包含)函数的SELECT查询来查找,并且查询结果由TO SET操作转换为rowid组,并且所述rowid组被ROWIDS2BITMAP转换为位图值。
使用位图值来定位ResumeTable 103中的履历
生成那些来自ResumeTable 113的履历的查询可能看起来像下面这样,在所述查询中出现了条款“麻省理工学院”和“PL/SQL”:
SELECT resume FROM ResumeTable
WHERE rowid IN BITMAP2ROWIDS(BITMAP_AND(
(SELECT TermIndex FROM ResumeIndexTable WHERE
SearchTerm=“麻省理工学院”),
(SELECT TermIndex FROM ResumeIndexTable WHERE
SearchTerm=“PL/SQL”)));
在此查询中,根据ResumeIndexTable中的位图值示出的rowid来从ResumeTable中选择履历,其具有包含了搜索条款“麻省理工学院”和“PL/SQL”的履历。起始于该查询的底部,使用两个搜索条款来选择TermIndex位图值;于是,这些位图值是BITMAP_AND操作的操作数;结果形成BITMAP_AND操作的位图值对于ResumeTable中每一行的rowid来说包含设置位,每一行的Resume字段包含了这两个搜索条款。然后,结果位图值被用为BITMAP2ROWIDS操作中的操作数,所述BITMAP2ROWIDS操作生成在结果位图值中所指定的rowid组,并且随后这些被用来选择包含所想要履历的履历字段。
维护TermIndex列121中的位图值
每当ResumeTable 103中的行被更新或向表103添加行或从中删除行时,TermIndex行121中的位图值必须被重新计算以便使得它们反映ResumeTable 103中履历的当前状态。在优选实施例的关系数据库管理系统中,借助于一个或多个触发器程序来完成这种重新计算,所述触发器程序为ResumeTable 103所编写并且每当行在ResumeTable 103中被修改、从所述表中删除或添加时就执行所述触发器程序。
进行重新计算的一种方式是让触发器执行上述所公开的查询,用于计算TermIndex列121中的所有位图值。然而,此方法要求搜索表中的每个履历,并且随着ResumeTable 103大小的增长,此方法的开销也相应增长。可以通过使用BITMAP_INSERT操作和BITMAP_DELETE操作来减小开销,所述BITMAP_INSERT操作只要求搜索所添加行中的履历,所述BITMAP_DELETE操作只是复位在rowid位图中对应于删除行的位。当ResumeTable 103的行被更新时,其被视为行的删除随后是插入新的行。用于在ResumeIndexTable 115上触发器的代码可能看起来像下面这样,当向ResumeIndexTable 115添加行时,所述代码更新TermIndex列121中的值:
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的每个行执行触发器中的代码。对于触发器内的位图值来说使用两个位图变量。SELECT语句确定在该行中字段SearchTerm的值是否在ResumeTable 115的新行的字段Resume中被发现了。如果它被发现的话,那么用于ResumeIndexTable 115行的字段TermIndex中的位图被拷贝到位图变量BitmapIn。
然后使用ROWID_BITMAP_INSERT来按照ResumeTable相关的新行的要求那样修改BitmapIn中的位图值。所修改的位图值处于BitmapOut中。如果对应于rowid的位已经处于BitmapIn的rowid值中,那么它在BitmapOut中被设置;如果在BitmapIn中没有对应于所述rowid的位,那么修改BitmapOut的映射说明符以便包括所述rowid,对应于映射说明符和在BitmapIn中所设置的位来制作位图,以及在BitmapOut中设置用于新的rowid的位。然后使用UPDATE语句来把在ResumeIndexTable 115的相关行中的TermIndex位图值设置为在BitmapOut中所包含的位图值。
rowid位图值的其它应用
关系数据库管理系统中的每一行具有rowid并且任何查询可以返回满足所述查询的行的rowid;从而,rowid位图值可以用来表示数据库管理系统中可以为其定义查询的任何对象组的子集。由于行可以包含许多对象,由给定rowid位图值所表示的具体对象组取决于用来获得该rowid的查询。
rowid位图值可以用来表示可以为其定义查询的任何对象组子集这一事实的后果在于:可以使用关于图1所示出的技术来为满足以下条件的任何对象组来制作位图索引:
●属于所述组的对象可以被表示为数据库表的一个或多个列;并且
●所述组中的对象具有一个或多个可查询的属性。
索引所要求的是具有以下列的一个或多个主表和索引表,所述列的值表示正被索引的对象,其中所述索引表至少包含其值是正被索引的对象的可查询属性的列和其值是rowid位图值的列。在索引表的每个行中,行的位图值示出了在主表中正被索引的哪些对象具有在所述索引表的行中所指定的可查询属性的值。有关对可以使用rowid的位图所能索引的内容的仅有限制在于:正被索引的每个对象在数据库管理系统的表中需要有它自己的行。在正被索引的对象的数目确实很大的情况下,所需要的行数可能超过数据库管理系统的容量。
任何可查询属性都可以确定在位图中是否设置了位这一事实的后果在于:可以依照任何属性的特性来设置所述位图。例如,如果可以对属性值执行大于和小于操作,那么查询可以是基于属性值的范围的并且因为属性值的每个范围可以对应于不同的位图值,所以属性值的范围可以重叠。给出简单的一个例子,如果正被索引的对象具有温度属性,那么可以存在华氏范围32-98.6和32-212的位图值。
在大部分基本级,rowid位图值是数据库管理系统中行组的持久性表示。此外,由于每个查询返回一个rowid组,所以任何查询可以持久地由用于指定所返回rowid组的rowid位图值来表示。例如,
BitmapValue:=ROWIDS2BITMAP(TO_SET(
SELECT rowid FROM ResumeTable
WHERE(contains(
ResumeTable.Resume,
ResumeIndexTable.SearchTerm
))));
把位图变量BitmapValue设置为由SELECT语句所返回的rowid的位图。只要ResumeTable中的rowid不改变,就可以使用BitmapValue来获取由查询所指定的行,从所述查询设置了BitmapValue。
ePC位图数据类型
太大而不能通过制作每个对象具有一行的表来表示的对象组的例子是由ePC所标识的对象组。由于此原因,图7的数据库管理系统的优选实施例包括内置EPC位图数据类型716和系统定义的ePC位图操作724。以下论述首先详细地描述ePC,然后描述被映射到ePC由此具有ePC位图数据类型的位图值、ePC位图数据类型的操作以及最后是使用ePC位图值的例子。
ePC:图8
电子产品代码或ePC是用于唯一地标识单个产品项的标准产品代码。ePC的标准仍然处于发展中。如在2004年2月16日的“EPCTM TagData Standards Version 1.1 Rev.1.23”中所述,ePC可以具有64或96位,Last Call Working Draft,版权2003,EPC全球,在此通过引用加以结合以供参考。在图8的801示出了96位ePC的一般形式。96位值被分成四个字段:8位首部字段803,用于定义以下字段的大小以及它们将被怎样解释;总管理者字段805,用于标识实体,诸如管理一组ePC代码的制造商;对象类字段807,标识对象类,例如由在字段805中所标识的制造商所制造的产品;和序列号字段809,用于标识由对象类标识符807所指定的单个产品项。ePC值常常被分成两个部分:由字段803-807组成的前缀811和由序列号字段809组成的后缀813。后缀的长度可以由首部803中的信息来确定。从字段805、807和809所表明的十进制容量可以看出,96位的ePC可以标识庞大的对象数目。64位ePC较小,但是与96位ePC具有相同的总体形式。在优选实施例中,存在用于表示ePC组的两种类型的位图值。用于表示96位ePC组的位图值属于一种类型,而用于表示64位ePC组的位图值属于另一种类型。ePC位图值的以下论述适用于这两种类型的ePC位图值。
ePC位图值
对于管理清单的数据库管理系统来说ePC值所存在的问题在于:每个产品项现在具有96位(或64位)的唯一标识符。如果使用用于表示对象的通常数据库管理系统技术,那么产品项将用表中的字段来标识,对于产品项的ePC来说,每个产品项具有表中的一行并且每行需要一个字段。此外,用于表明什么产品项处于清单中的消息对于每个产品项来说也需要一个ePC。如果一组产品项由位图值来表示,所述位图值的映射说明符把值的位图映射到一组ePC上,那么可以大大地减少在数据库管理系统内或在用于表明产品项处于清单中的消息内所需要的空间量。如果一个特定ePC所属于的产品项存在于一组产品项中,那么在位图值中就设置对应于所述ePC的位。因而,位图值可以代替与在位图值中所存在位一样多的一列ePC。
在815和816示出了用于实现ePC位图值的方式。ePC位图值的最简单形式单独把ePC前缀811用作映射说明符817,并且位串819表示可以具有所述前缀的所有后缀。当具有所述后缀的项存在于在位图值中所表示的ePC组中时,就设置所述位图值中所述项的位。在许多情况下,在所感兴趣的一组ePC中的序列号都具有相同的最高有效位。在这种情况下,可以把映射说明符817扩展到ePC前缀811以外以便包括相同的最高有效位。于是,位串表示具有相同前缀811和相同最高有效位的所有序列号组。
ePC位图值的形式816连同一组范围开始819和范围结束821值一起使用ePC前缀811,所述范围开始819和范围结束821值把后缀值的范围指定为映射说明符。每对开始和结束值(819(i),821(i))对应于包含以下位图的范围位图823(i),所述位图已经被映射到由所述开始和结束值(819(i),821(i))所指定的后缀范围。在后缀值的整个范围上稀疏地分布后缀值的情况下,形式816的位图值允许充分地减小所述位图值的大小。当然,可以借助于任何可用的无损压缩技术来压缩在ePC位图值的两种实现方式中的位串。此外,可以利用所扩展的映射说明符前缀(像在817所示出的)来使用范围开始和范围结束值。
ePC位图操作
在给出ePC的性质时,ePC位图操作是人们会期望的:
1.转换操作
a.EPC_BITMAP2EPCS:此函数把ePC位图值转换为由ePC位图值所表示的ePC组。
b.EPCS2EPC_BITMAP:此函数把一组ePC转换为ePC位图值。
c.EPC_BITMAP2COUNT:此函数把ePC位图值转换为由ePC位图值中的设置位数目所表示的ePC的计数。
2.存在操作:EPC_BITMAP_EXISTS:此函数根据是否在ePC位图值(第一自变量)中设置用于表示给定ePC的位(第二自变量)来返回1或0。
3.逻辑操作:
a.EPC_BITMAP_AND:此函数取两个ePC位图值并且返回所述位图值的AND;
b.EPC_BITMAP_OR:此函数取两个ePC位图值并且返回所述位图值的OR;
c.EPC_BITMAP_XOR:此函数取两个ePC位图值并且返回所述ePC位图值的XOR。
d.EPC_BITMAP_MINUS:此函数取两个ePC位图值并且返回第一ePC位图值减第二ePC位图值。
4.改变由ePC位图值所表示的对象组:
a.EPC_BITMAP_INSERT:此函数取ePC位图值和一组ePC并且对应于所述组中的ePC来在所述位图值中设置位。
b.EPC_BITMAP_DELETE:此函数取ePC位图值和一组ePC并且对应于所述组中的ePC来在所述位图中复位该位。
5.比较两个ePC位图值是否相等:EPC_BITMAP_EQUALS:此函数取两个ePC位图值并且如果所述位图值表示相同的ePC组那么返回用于表示逻辑值TRUE的值,否则返回用于表示FALSE的值。
6.ePC位图值分配:源ePC位图值被分配给目标ePC位图变量,诸如ePC位图字段的值。在此操作结束,所述目标具有源的值和类。
这些操作按照在位图操作的一般讨论中所述那样工作。在映射说明符指定后缀值范围的情况下,所述操作可以按要求改变所述范围以便提供用于表示整个结果ePC组的结果位图值。在把一组ePC转换为ePC位图值或修改在ePC位图值中所包含的ePC组的操作中,所述操作可以包括用于指定在ePC中位数目的参数,所述位将被认为是前缀位。
ePC位图值的应用
减少跨网络转送ePC列表所要求的带宽
利用跟踪设备来进行具有ePC的清单跟踪,所述跟踪设备掌握当前在容器(诸如商店货架)中的产品项的ePC。跟踪设备周期地向中央清单数据库发送聚集事件信息,所述聚集事件信息表明什么产品项当前正处于容器中。这种消息是清单跟踪系统中的一种事件信息。图9示出了这种聚集事件信息901。所述消息采用XML。消息分量由<component_name>...</component_name>来划界,并且分量可以包含嵌套分量。事件信息901是AggregationEvent。消息的下一分量是所述事件的标识符903。然后出现的是作为事件信息源的容器的标识符。接下来出现的是当前处于容器中的产品项的ePC的列表907。接下来出现的是用于表明制作ePC列表时间的时间戳909。
当所述容器无论如何都是任何大小时,容器中ePC的列表变得非常长。如果大部分清单控制利用ePC来完成,像消息901的消息数目就变得非常大并且对承载该消息的网络赋予了很重的负担。事件信息911示出了可以怎样使用ePC位图值来减少涉及ePC列表的事件信息的大小。如在913所示,ePC 907的列表被替换为ePC位图值913的列表。列表上的每项具有带有映射说明符的ePC位图值,所述映射说明符包括用于容器中一个或多个项的ePC前缀811。设置位串表示中的位,所述位对应于属于由ePC前缀811所指定的种类的项的后缀。如果容器中的所有项具有相同的前缀,那么在ePC位图值列表913中将存在单个条目。否则,对于在容器中存在项的每个ePC前缀来说都存在条目。
在数据库管理系统表中使用ePC位图值
许多情况下,聚集事件信息被发送到中央位置,所述中央位置使用数据库管理系统来掌握清单。在那些中央位置的表中可以使用ePC位图值来减小该表的大小并且加速执行对ePC的许多有用操作。在图9中示出了这种表的例子,InventoryTable 915。用于创建所述表的DDL可以看起来像这样:
CREATE TABLE InventoryTable
(Container_EPC RAW(12),
Product_EPC_prefix RAW(12),
Time_checked TIMESTAMP,
Item_suffix_bitmap EPC96BITMAP);
所述表具有四列:Container_EPC 917,包含用于其清单正被控制的容器的ePC;Product_EPC_prefix 919,是用于表示特定类产品项的ePC的对象类807;Time_checked 921,用于表明是何时最后检查的由字段917所表明的容器中的产品,所述产品属于由字段919所表明的种类;和Item_suffix_bitmap 923,包含ePC位图值,ePC位图值用于表明在由字段921所表明的时间时由字段919所表明的哪些产品项处于由字段917所表明的容器中。如对Item_suffix_bitmap的类型声明所表明的,由位图值所表示的ePC组包含96位的ePC。
存在可以在表915中使用ePC位图操作的许多方式。例如,为了找出在特定容器中存在多少特定类的产品项,人们可以使用像这样的EPC_BITMAP2COUNT函数:
item_count:=EPC_BITMAP962COUNT(TO_SET(
SELECT Item_suffix_bitmap
FROM InventoryTable
WHERE(Container_EPC=container)AND
(Product_EPC_prefix=prod_prefix)));
在清单信息经由聚集事件信息911进入的情况下,可以通过向字段921分配聚集消息的时间戳并且向字段923分配其特定容器和产品的ePC位图来简单地更新所述特定容器和产品的清单表行。在更新期间,可以使用位图逻辑操作来检测在字段923的旧位图值和在聚集事件信息中所接收位图之间的改变。如果旧的位图值和所接收的位图值被XOR并且结果位串具有全“0”位,那么在货架上的产品项中一直没有改变。因而XOR可以用来实现EQUALS操作。EPC_BITMAP_OR可以用来求和整个表上的产品项,并且COUNT函数可以应用于求和OR操作的结果以便找出在容器中所存在的项总数,所述项在表中具有条目。EPC_BITMAP_MINUS可以用来检测项的插入和删除。EPC_BITMAP_EXISTS可以在查询中用来查找由特定ePC所表明的项位于什么容器中。
利用包含ePC列表的聚集事件信息,列表可以按照前缀和用于为容器和产品设置字段923的EPCS2EPC_BITMAP来分类。类似地,如果包含表915的系统需要向特定容器中的特定产品项提供一列ePC,那么可以通过向容器和产品的字段923应用EPC_BITMAP2EPCS来进行该提供。如果聚集事件信息简单地报告从容器中所移除项的ePC或向所述容器添加的项的ePC,那么可以使用EPC_BITMAP_DELETE和EPC_BITMAP_INSERT来更新字段923中的位图值。
用户定义的位图数据类型
如已经所指出,rowid位图值可以表示任何对象组,所述rowid位图值使得在数据库表的一个或多个列中存储所述对象组是有意义的。因而不需要用户定义的位图数据类型来表示在数据库系统中所存储的对象组。然而,用户定义的位图数据类型可以用于由位图值所表示的对象处在数据库系统之外的情况下。如先前所述,这种位图数据类型所要求的全部就是排序的标识符组。本发明的其它实施例可以允许用户在数据库系统中定义标识符组并且根据该标识符组来定义位图数据类型。位图数据类型的定义往往涉及为位图数据类型定义映射说明符,为数据类型定义位串表示,以及对位图数据类型值的操作语义。
结论
上述具体实施方式已经向那些相关技术领域技术人员公开了怎样制作并使用本发明的位图值并且进一步公开了发明人目前这样做所已知的最佳模式。显然对这里所公开技术的许多变化也是可以的。例如,在这里所公开的位图值中,通过把位串中的位设置为1来标记对象存在于由位图值所表示的组中;否则把该位设置为0;在某些实施例中,也可以反过来,如果存在对象时把该位设置为0,否则设置为1。在其它实施例中可以借助用于方便目的的任何技术来表示位串中的位和范围说明符中的范围;特别地是,任何压缩方法可以被应用于位图值的位串,所述位串保留了在所述位串中所包含的信息,所述信息涉及对象存在于该组中。可以有用地应用这里所描述的关于用于表示rowid组和ePC组的位图值的技术来制作并使用用于表示任何大的排序对象组的位图值。怎样使用这种位图值当然取决于由所述位图值所表示的对象所属的领域。可以在数据库管理系统中使用表示rowid的位图值不仅用来构造用户定义的索引,而且用于对维护rowid组的紧凑表示来说有用的任何目的。可以制作与这里所描述的所公开位图操作具有不同语义或语法的操作版本。此外,因为所要求操作的种类取决于由位图值所表示的对象,其它实施例可以定义并使用除这里所描述的对位图值操作之外的操作。由于所有以上原因,详细具体实施方式在各个方面被认为是示例性的而并非是限制性的,并且这里所公开的本发明宽度并不根据具体实施方式来确定,而是应当根据权利要求来确定而被解释为专利法所允许的完整宽度。
Claims (57)
1.一种改进的数据库管理系统,包括:
位图值,所述位图值具有位串的表示,其中设置位指定其定义被内置于所述数据库管理系统的对象组,和
对所述位图值的用户可访问的操作。
2.如权利要求1所述的数据库管理系统,其中所述用户可访问的操作至少包括:
组到位图操作,其中从给定的对象组来导出位图值。
3.如权利要求2所述的数据库管理系统,其中:
所导出的位图值是用于指定给定组中对象的新位图值。
4.如权利要求2所述的数据库管理系统,其中:
所导出的位图值是现在用于进一步指定给定组中对象的先前存在的位图值。
5.如权利要求2所述的数据库管理系统,其中:
所导出的位图值是现在不再指定给定组中任何对象的先前存在的位图值。
6.如权利要求1所述的数据库管理系统,其中所述用户可访问的操作至少包括:
位图到组操作,其中从给定的位图值来导出在给定位图值中所指定的对象组。
7.如权利要求1所述的数据库管理系统,其中所述用户可访问的操作至少包括:
位图到计数操作,其中从给定的位图值来导出在给定位图值中所指定的组中对象的数目。
8.如权利要求1所述的数据库管理系统,其中所述用户可访问的操作至少包括:
存在操作,其中当给定对象属于由给定位图值所表示的对象组时,返回用于表示逻辑值TRUE的值。
9.如权利要求1所述的数据库管理系统,其中所述用户可访问的操作至少包括:
对由第一位图值所表示的第一位串和由第二位图值所表示的第二位串的逻辑操作。
10.如权利要求1所述的数据库管理系统,其中所述用户可访问的操作至少包括:
对第一位图值和第二位图值的比较操作,其中当所述第一位图值和第二位图值指定相同的对象组时,返回用于表示逻辑值TRUE的值。
11.如权利要求1所述的数据库管理系统,其中:
所述位图值包括可设置的位图值;并且
所述用户可访问的操作至少包括分配操作,所述分配操作根据源位图值来设置目标可设置的位图值。
12.如权利要求1所述的数据库管理系统,其中:
所述位图值包括在所述数据库管理系统中是持久性的位图值。
13.如权利要求12所述的数据库管理系统,其中:
持久性位图值包括在所述数据库管理系统表的字段中的位图值。
14.如权利要求1所述的数据库管理系统,其中:
所述位串被压缩。
15.如权利要求1所述的数据库管理系统,其中:
所述对象是用于存在于所述数据库管理系统的其它对象的标识符。
16.如权利要求15所述的数据库管理系统,其中:
用于所述其它对象的标识符是所述数据库管理系统中行的行标识符。
17.如权利要求16所述的数据库管理系统,其中:
所述行标识符是由在所述数据库管理系统中所执行的用户定义的查询所返回的行标识符。
18.如权利要求17所述的数据库管理系统,其中:
当所述行中的字段具有在查询中所指定的属性时,所述查询返回行标识符,
借此所述位图值表示具有所指定属性的字段组。
19.如权利要求1所述的数据库管理系统,其中:
所述对象是存在于所述数据库管理系统外部的其它对象的标识符。
20.如权利要求19所述的数据库管理系统,其中:
存在于所述数据库管理系统外部的对象的标识符是产品项的电子产品代码。
21.一种数据存储设备,所述数据存储设备其特征在于:
所述数据存储设备包含以下代码,所述代码当在计算机系统中执行时实现如权利要求1所述的数据库管理系统。
22.一种在数据库管理系统中所使用的位图值,所述位图值表示第一组第一对象,所述第一对象处在所述数据库管理系统以外并且第一组的成员被映射到在所述数据库管理系统中所定义的第二组第二对象的成员,并且
所述位图值包括:
映射说明符,用于把位串映射到第二组的子集;和
所述位串的表示,其中当被映射到一个位的第二组成员具有映射到其的第一组成员时,在所表示的位串中设置所述位。
23.如权利要求22所述的位图值,其中:
所述第二组被排序。
24.如权利要求23所述的位图值,其中:
第二排序组的成员次序对应于其成员的值;
所述映射说明符通过指定所述位串被映射到的第二排序组的成员值的一个或多个范围来指定映射;并且
所述位串表示用于表示对应于所述范围的位串。
25.如权利要求24所述的位图值,其中:
所述映射说明符通过指定开始值和结束值来指定值的范围。
26.如权利要求24所述的位图值,其中:
所述值包括用于确定值范围的前缀;并且
所述映射说明符通过指定所述范围的前缀来指定值的范围。
27.如权利要求26所述的位图值,其中:
所述映射说明符通过使用开始值和结束值来指定由所述前缀所指定的范围的一个或多个子范围以进一步指定所述值的范围。
28.如权利要求24所述的位图值,其中:
第二排序组中的对象是所述第一组中对象的标识符。
29.如权利要求28所述的位图值,其中:
第一组中对象的标识符是所述对象的电子产品代码。
30.如权利要求22所述的位图值,其中:
在所述数据库管理系统中存在多个位图值;并且
某些位图值在所述数据库管理系统中是持久性的。
31.如权利要求30所述的位图值,其中:
持久性位图值包括在所述数据库管理系统表的字段中的位图值。
32.如权利要求22所述的位图值,其中:
所述位串表示是其压缩表示。
33.如权利要求22所述的位图值,其中:
在所述数据库管理系统中存在多个位图值;并且
所述数据库管理系统提供多个对所述位图值的用户可访问的操作。
34.如权利要求33所述的位图值,其中:
某些用户可访问的操作按要求修改范围说明符和位串表示以便把所表示的位串映射到所述操作所需要的第二组的子集。
35.一种数据存储设备,所述数据存储设备其特征在于:
所述数据存储设备包含以下代码,所述代码当在计算机系统中执行时实现如权利要求22所述的位图值。
36.一种在制作位图值的数据库系统中所使用的方法,所述位图值表示在所述数据库系统以外的第一组对象,
所述方法包括在所述数据库系统执行以下步骤:
把所述对象映射到在所述数据库管理系统中所定义的第二排序组标识符上;
把用位图值所表示的位串映射到第二组的子集上,所述子集包括对象已经被映射到其上的标识符;并且
设置在对应于所述对象已经被映射到其上的标识符的位串中的位。
37.如权利要求36所述的方法,其中:
在映射所述对象的步骤中,第二组中的标识符与在所述数据库系统外部用来标识所述对象的标识符相同。
38.如权利要求37所述的方法,其中:
在所述第二组中,所述标识符是电子产品代码。
39.如权利要求36所述的方法,其中映射位串的步骤包括步骤:
制作用于指定所排序标识符组范围的范围说明符,所述排序标识符组范围包括所述对象已经被映射到其上的标识符;并且
把所述位串中的位映射到所指定的范围。
40.如权利要求39所述的方法,其中制作范围说明符的步骤包括步骤:
制作用于一起指定所述范围的开始值和结束值。
41.如权利要求39所述的方法,其中制作范围说明符的步骤包括步骤:
制作用于指定所述范围的前缀值。
42.如权利要求36所述的方法,还包括步骤:
压缩所述位串。
43.一种数据存储设备,所述数据存储设备其特征在于:
所述数据存储设备包含以下代码,所述代码当在计算机系统中执行时实现如权利要求36所述的方法。
44.一种在数据库管理系统中用来表示在所述数据库管理系统中所定义的行标识符的第一子集的位图值,
所述位图值包括:
映射说明符,用于把位串映射到行标识符组的第二子集;和
位串表示,其中当被映射到一个位的第二子集的成员对应于第一子集的成员时,在所表示的位串中设置所述位;和
所述第一子集由所述数据库管理系统所执行的用户定义的查询来返回。
45.如权利要求44所述的位图值,其中:
所述数据库管理系统动态地按要求修改所述映射说明符和位串表示以便把位串表示映射到行标识符的第二子集,所述第二子集包括所述行标识符的第一子集。
46.如权利要求44所述的位图值,其中:
当由一个行标识符所标识的行中的字段具有在查询中所指定的属性时,所述查询返回所述行标识符,
借此所述位图值表示其值具有所指定属性的字段组。
47.一种数据存储设备,所述数据存储设备其特征在于:
所述数据存储设备包含以下代码,所述代码当在计算机系统中执行时实现如权利要求44所述的方法。
48.一种用于减小一列电子产品代码大小的方法,
所述方法包括步骤:
制作包括范围说明符和位串表示的位图值,所述范围说明符用于指定在列表中包括一个或多个电子产品代码的电子产品代码的范围,并且所述位串表示用于表示被映射到所指定范围的位串,并且
当一个位对应于所包括的电子产品代码时,在所述位串表示中设置所述位。
49.如权利要求48所述的方法,还包括步骤:
压缩所述位串表示。
50.如权利要求48所述的方法,其中:
所述范围说明符包括由一个或多个电子产品代码所共享的前缀。
51.一种数据存储设备,所述数据存储设备其特征在于:
所述数据存储设备包含以下代码,所述代码当在计算机系统中执行时实现如权利要求48所述的方法。
52.一种用于数字系统中的一组电子产品代码的表示,所述数字系统转送或处理电子产品代码,
所述表示包括:
范围说明符,用于指定包括所述组成员的电子产品代码的范围;和
位串表示,用于表示其位已经被映射到由所述范围说明符所指定的范围的位串,当一个位对应于所述组的成员时,在所表示的位串中设置所述位。
53.如权利要求52所述的电子产品代码组的表示,其中:
所述范围说明符包括由所述组的成员共享的前缀。
54.如权利要求52所述的电子产品代码组的表示,其中:
所述位串表示是所述位串的压缩表示。
55.一种数据存储设备,所述数据存储设备其特征在于:
所述数据存储设备包含以下代码,所述代码当在计算机系统中执行时实现如权利要求52所述的电子产品代码组的表示。
56.一种用于在数据库管理系统中索引第一表的对象列的字段中所包含的一组对象的方法,依照适用于所述对象的属性来进行索引,并且
所述方法包括步骤:
在所述数据库管理系统中构造第二表,所述第二表具有列,所述列包括
属性说明符列,其字段用于指定属性,依照所述属性进行索引,和
位图列,其字段包含用于包括位串表示的位图值,所述位串表示用于表示被映射到行标识符的位串,所述行标识符用于标识第一表的行;并且
对于第二表的每个行来说,
使用在所述行中所指定的属性来查询第一表以便确定所述第一表的行的行标识符,所述第一表的对象列字段满足在所述行中所指定的属性,并且
在所述行的位图值中,设置对应于在由位图值的位串表示所表示的位串中所确定的行标识符的位。
57.一种数据存储设备,所述数据存储设备其特征在于:
所述数据存储设备包含以下代码,所述代码当在计算机系统中执行时实现如权利要求56所述的方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/810,756 US20050216518A1 (en) | 2004-03-26 | 2004-03-26 | Database management system with persistent, user-accessible bitmap values |
US10/810,756 | 2004-03-26 | ||
PCT/US2005/009052 WO2005101250A2 (en) | 2004-03-26 | 2005-03-17 | A database management system with persistent, user- accessible bitmap values |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101036141A true CN101036141A (zh) | 2007-09-12 |
CN101036141B CN101036141B (zh) | 2013-01-02 |
Family
ID=34965705
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2005800167899A Active CN101036141B (zh) | 2004-03-26 | 2005-03-17 | 具有持久性、用户可访问的位图值的数据库管理系统 |
Country Status (7)
Country | Link |
---|---|
US (1) | US20050216518A1 (zh) |
EP (1) | EP1735727A2 (zh) |
JP (1) | JP4785833B2 (zh) |
CN (1) | CN101036141B (zh) |
AU (1) | AU2005233925B2 (zh) |
CA (1) | CA2560453C (zh) |
WO (1) | WO2005101250A2 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224828A (zh) * | 2015-10-09 | 2016-01-06 | 人和未来生物科技(长沙)有限公司 | 一种基因序列片段快速定位用键值索引数据压缩方法 |
WO2017186049A1 (zh) * | 2016-04-27 | 2017-11-02 | 北京京东尚科信息技术有限公司 | 信息处理方法和装置 |
CN112732174A (zh) * | 2020-12-25 | 2021-04-30 | 北京金山云网络技术有限公司 | 数据的处理方法和装置、电子设备和存储介质 |
CN113190506A (zh) * | 2021-04-30 | 2021-07-30 | 维沃移动通信有限公司 | 对象属性保存方法及装置 |
US20220019784A1 (en) * | 2020-07-15 | 2022-01-20 | Oracle International Corporation | Probabilistic text index for semi-structured data in columnar analytics storage formats |
Families Citing this family (23)
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 | 华为技术有限公司 | 一种数据处理方法及装置 |
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 |
US10951599B2 (en) | 2017-06-02 | 2021-03-16 | Arris Enterprises Llc | Secure shell (SSH) server public key validation by a SSH client 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 |
CN111414566A (zh) * | 2019-01-04 | 2020-07-14 | 北京京东尚科信息技术有限公司 | 用于推送信息的方法和装置 |
EP3678032A1 (en) | 2019-01-07 | 2020-07-08 | 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 |
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 |
US5899988A (en) * | 1997-02-28 | 1999-05-04 | Oracle Corporation | Bitmapped indexing with high granularity locking |
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 |
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 CA CA2560453A patent/CA2560453C/en active Active
- 2005-03-17 CN CN2005800167899A patent/CN101036141B/zh active Active
- 2005-03-17 JP JP2007505024A patent/JP4785833B2/ja active Active
- 2005-03-17 EP EP05735234A patent/EP1735727A2/en not_active Withdrawn
- 2005-03-17 WO PCT/US2005/009052 patent/WO2005101250A2/en active Search and Examination
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224828A (zh) * | 2015-10-09 | 2016-01-06 | 人和未来生物科技(长沙)有限公司 | 一种基因序列片段快速定位用键值索引数据压缩方法 |
CN105224828B (zh) * | 2015-10-09 | 2017-10-27 | 人和未来生物科技(长沙)有限公司 | 一种基因序列片段快速定位用键值索引数据压缩方法 |
WO2017186049A1 (zh) * | 2016-04-27 | 2017-11-02 | 北京京东尚科信息技术有限公司 | 信息处理方法和装置 |
CN107315535A (zh) * | 2016-04-27 | 2017-11-03 | 北京京东尚科信息技术有限公司 | 信息处理方法和装置 |
CN107315535B (zh) * | 2016-04-27 | 2019-09-20 | 北京京东尚科信息技术有限公司 | 信息处理方法和装置 |
US20220019784A1 (en) * | 2020-07-15 | 2022-01-20 | Oracle International Corporation | Probabilistic text index for semi-structured data in columnar analytics storage formats |
US11514697B2 (en) * | 2020-07-15 | 2022-11-29 | Oracle International Corporation | Probabilistic text index for semi-structured data in columnar analytics storage formats |
CN112732174A (zh) * | 2020-12-25 | 2021-04-30 | 北京金山云网络技术有限公司 | 数据的处理方法和装置、电子设备和存储介质 |
CN113190506A (zh) * | 2021-04-30 | 2021-07-30 | 维沃移动通信有限公司 | 对象属性保存方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
EP1735727A2 (en) | 2006-12-27 |
JP2007531115A (ja) | 2007-11-01 |
WO2005101250A2 (en) | 2005-10-27 |
WO2005101250A3 (en) | 2007-08-23 |
CA2560453A1 (en) | 2005-10-27 |
AU2005233925B2 (en) | 2011-11-03 |
US20050216518A1 (en) | 2005-09-29 |
CN101036141B (zh) | 2013-01-02 |
AU2005233925A1 (en) | 2005-10-27 |
CA2560453C (en) | 2013-07-23 |
JP4785833B2 (ja) | 2011-10-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101036141A (zh) | 具有持久性、用户可访问的位图值的数据库管理系统 | |
CN1194319C (zh) | 对表格式数据进行查找、列表及分类的方法和装置 | |
CN1144145C (zh) | 用于数据仓库的选择聚集层和交叉产品层的方法和装置 | |
CN1666196A (zh) | 存储和访问数据,以及提高数据库查询语言语句性能的方法和机制 | |
CN1604082A (zh) | 用于任意数据模型的映射体系结构 | |
CN1653452A (zh) | 管理数据库系统中的表达式 | |
CN1132564A (zh) | 用于数据存储与检索的方法与装置 | |
CN1728140A (zh) | 信息检索系统中基于短语的索引编制 | |
CN1317116A (zh) | 值一实例连接的计算机实现的数据库 | |
CN1759397A (zh) | 对数据的函数应用的结果进行结构化索引 | |
CN1053852A (zh) | 目录数据库中的名字判定 | |
CN1846207A (zh) | 类型路径索引 | |
CN1552032A (zh) | 数据库 | |
CN1728142A (zh) | 信息检索系统中的短语识别 | |
CN1726495A (zh) | 规定用于关系olap引擎的多维计算 | |
CN1728143A (zh) | 基于短语产生文献说明 | |
CN1203430C (zh) | 数据管理系统和数据管理方法 | |
CN1728141A (zh) | 信息检索系统中基于短语的搜索 | |
CN1679026A (zh) | Web服务设备和方法 | |
CN1647076A (zh) | 查询关系数据库的方法和设备 | |
CN1670729A (zh) | 使用隐含谓词的改善的查询优化器 | |
CN1508728A (zh) | 使用元数据在关系数据库中创建多维数据集的方法和系统 | |
CN1310173C (zh) | 表格式数据显示方法、插入方法、删除方法和更新方法 | |
CN1591403A (zh) | 版本兼容数据处理系统 | |
CN1276575A (zh) | 数据库存取系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20070912 |
|
CI01 | Publication of corrected invention patent application |
Correction item: Rejection of patent application Correct: Dismiss False: Reject Number: 32 Volume: 26 |
|
ERR | Gazette correction |
Free format text: CORRECT: PATENT APPLICATION REJECTION OF AFTER PUBLICATION; FROM: REJECTION TO: REVOCATION REJECTED |
|
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |