CN102246163A - 数据库中的索引压缩 - Google Patents
数据库中的索引压缩 Download PDFInfo
- Publication number
- CN102246163A CN102246163A CN2009801500327A CN200980150032A CN102246163A CN 102246163 A CN102246163 A CN 102246163A CN 2009801500327 A CN2009801500327 A CN 2009801500327A CN 200980150032 A CN200980150032 A CN 200980150032A CN 102246163 A CN102246163 A CN 102246163A
- Authority
- CN
- China
- Prior art keywords
- index
- value
- scope
- termination
- database
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—Management thereof
-
- 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/2246—Trees, e.g. B+trees
-
- 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/2255—Hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9017—Indexing; Data structures therefor; Storage structures using directory or table look-up
- G06F16/902—Indexing; Data structures therefor; Storage structures using directory or table look-up using more than one table in sequence, i.e. systems with three or more layers
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
此处描述了用于压缩数据库索引的系统、方法和计算机程序产品。一系统实施例包括:顺序确定器,以扫描数据库索引并确定在所述数据库索引的一个或更多个索引页面中持续变化的值的范围起始和范围终止;以及,索引更新器,以基于由所述顺序确定器确定的顺序来更新所述数据库索引,同时暂停处于所述值的所述范围起始和所述范围终止之内的一个或更多个值的写入。一方法实施例包括:扫描索引;确定所述索引的一个或更多个索引页面中值的变化模式;以及,基于所述确定步骤选择性地更新所述索引,以使索引插入最少化。该方法实施例还包括:确定索引页面中值的范围的起始和所述值的范围的终止;设定适当的位,以识别所述值的范围的起始和值的范围的终止;确定将要插入的条目是否可以被添加到所述值的范围的终止处;以及,通过暂停存在于所述值的范围的起始和所述值的范围的终止之间的一个或更多个值的写入来压缩所述索引。
Description
技术领域
本发明涉及数据库,更具体地,涉及与数据库相关联的索引。
背景技术
数据库系统一般提供索引以提高数据检索过程的速度。数据库索引在概念上与存在于书末尾处的索引的相类似处在于:这两种索引都包括兼带信息位置的信息序列表。表格的一列或更多列中的值被存储在索引中,其通常与实际的数据库表格(或基本表)分开保存。索引中的信息序列表允许快速扫描以找到目标值或值的范围。此外,由于传统的索引仅存储用作索引键、指针以及唯一行标识符的一列或更多列中的值(如有必要),因此与全表扫描(如果不使用索引,则必须使用全表扫描)相比,读入存储器的数据块的数目会显著减少。
为了节省存储索引所需的存储空间并且减少查询处理所涉及的数据传输量,可使用不同的压缩技术来压缩索引。不同类型的索引压缩技术包括采用可变长度的编码或固定长度的索引键压缩的技术。虽然这些压缩技术有助于节省一些磁盘空间,但是它们需要独立的压缩阶段和解压缩阶段。其结果是,为了改善缓存利用并且加快磁盘至存储器的传输,解压缩速度必须很快。此外,由于独立的压缩和解压缩阶段需要对索引进行重写,因此现有的索引压缩方法计算量太大。
因此,需要一种在某种意义上克服现有索引压缩技术局限的压缩索引的系统、方法和计算机程序产品。
发明内容
简单地说,本发明包括用于压缩数据库索引的系统、方法、计算机程序产品实施例及其组合和子组合。在一个实施例中,顺序确定器扫描数据库索引页面以确定索引键和行标识符的值是否持续发生变化。然后索引更新器利用该确定结果来标记索引键和标识符持续变化的范围的起始和终止;同时在不输入处于该范围之内的中间值的情况下填充该索引。
这样,可以在对索引进行填充的同时完成对索引的压缩。此外,使用本发明实施例而实现的索引压缩的计算量较小。
下文中将结合附图详细描述本发明的更多实施例、特征和优点以及本发明各种实施例的结构和操作。
附图说明
并入于此并构成说明书一部分的附图例示了本发明的实施例,其与说明书一起用于进一步解释本发明的原理并且用于使有关领域技术人员能够制造和使用本发明。
图1是根据本发明实施例的用于索引压缩的系统的示意图。
图2例示了根据本发明实施例的数据库管理器。
图3A例示了根据本发明实施例的示例性索引。
图3B例示了根据本发明实施例的示例性叶子节点索引页面。
图3C例示了根据本发明实施例的索引页面中的不同标识符。
图4为例示了根据本发明实施例的使用内联压缩(inlinecompression)的索引插入的示例性流程图。
图5例示了有助于实现本发明实施例的组件的实例计算机。
通过下文结合附图给出的详细描述,本发明的特征和优点将变得更明显。在附图中,相同的附图标记通常表示相同的、功能相似的和/或结构相似的元件。通常,元件第一次出现在其中的附图由相应参考标记中最左边的数字表示。
具体实施方式
本发明涉及用于压缩数据库索引的系统、方法和计算机程序产品。在一个实施例中,顺序确定器(sequence determiner)扫描数据库索引页面以确定索引键和行标识符的值是否持续发生变化。然后索引更新器利用该确定结果来标记索引键和标识符持续变化的范围的起始和终止,同时在不输入处于该范围之内的中间值的情况下填充该索引。
这样,可以在对索引进行填充的同时完成对索引的压缩。此外,利用本发明实施例而实现的索引压缩的计算量不会很大。
虽然此处结合用于特定应用的例示性实施例描述了本发明,但是应该理解本发明不限于此。能够获得在此提供的教导的本领域技术人员将会识别出在其范围以及本发明具有重要实用性的其它领域内的其它修改、应用和实施例。
系统
图1例示了根据本发明实施例的系统100,其为用于压缩数据库索引的一般系统结构。(虽然以下就数据库和数据库索引进行描述,但是本发明不限于此实施例。本发明可应用于通常具有图1的结构或可以从在此描述的功能中获益的任何系统。)
系统100包括数据库管理器110和数据库120。数据库120还可以包括索引140和表格数据150。
数据库管理器110可以是任意形式的数据库管理系统(DBMS),并且可以包括但不限于具有用于执行和存储指令的处理器和存储器的器件。在一个实例中,但不用于限制本发明,数据库管理器110可以是比如SYBASE Adaptive Sever Enterprise的DBMS。数据库管理器110可包括软件、固件和硬件或一些其组合。软件可包括操作系统和一个或更多个应用。硬件可包括但不限于处理器、存储器和用户界面显示器。可使用可选的输入器件,例如鼠标、手写笔或任意其他指向器件。
数据库管理器110可在数据库120中存储并操作数据。在一个实施例中,数据库管理器110提供软件例程以操作数据库120中的数据。数据库管理器110可以作为软件包的组件直接被系统用户使用,或者可以用于向独立的软件包提供各种服务。
如本领域技术人员已知地,数据库120可以是数据集合,其由数据库管理器110根据各种逻辑数据模型或浏览所存储的数据来管理和操作。当前数据库市场中,逻辑数据模型的实例包括使用工业标准SQL查询语言的关系模型。例如,关系结构系统中的数据操作包括可能存在于数据库120中的表格、共享列和索引的操作。
数据库120还可包括索引140和表格数据150。表格数据150可包括一个或更多个数据库表格。数据库表格对于本领域技术人员而言是已知的,其还可包括若干纪录,每条记录由若干个域组成。
索引140可以提供快速、有效的方式来查找表格数据150中的数据行。在一个实施例中,索引140实现为索引页面的集合。例如,每个索引页面包括一个或更多个数据对。每个数据对包括索引键和相关联的数据。相关联的数据可包括行标识符(RID)形式的指针,其指向在物理上位于表格数据150的表中的、具有特定索引键值的行。例如,数据库管理器110可以使用RID来将行定位在表格数据150中。
在一个实施例中,但不用于限制本发明,索引140实现为包括不同类型的索引页面的B-树索引(索引页面为B-树节点)。在另一实施例中,索引140实现为本领域技术人员已知的B-树索引的任意变型或任意其它形式的数据结构。B-树索引对于本领域技术人员而言是已知的,其可包括一个根节点、两个或更多个分支节点以及多个叶子节点。例如,根节点包括指向分支节点的节点指针,分支节点包括指向叶子节点或其他分支节点的指针,叶子节点包括索引键值,并且在某些情况下包括指向其它叶子节点的横向指针。
图3A例示了示例性B-树索引,该B-树索引例示了根节点302、分支节点304A-B和叶子节点306A-D。如图3A所示,每个索引页面或B-树节点还包括索引键和RID。该实例是例示性的,不用于限制本发明。
例如,当数据库管理器110为表格数据150创建索引140时,数据库管理器110可初始分配单个索引页面。此页面代表根节点并可保持为空,直到数据库管理器110将数据插入表格数据150中。首先,根节点以与叶子节点相同的方式运行。对于每一由数据库管理器110插入表格数据中的行,数据库管理器110创建索引键并将其插入根节点中。
当根节点充满索引键时,数据库管理器110可通过创建两个叶子节点并将一些根节点条目重新定位到每个新创建的叶子节点处来分裂根节点。随着数据库管理器110将新的行加入到表格数据150中,数据库管理器110将索引键加入到叶子节点中。当叶子节点充满时,数据库管理器110可创建新的叶子节点,并将充满的索引节点的部分内容移至新节点,以及将“节点指针”加入到根节点中的新的叶子节点中。
B-树的上述结构和生成方法是示例性的,并不用于限制本发明。
图2更详细地例示了根据本发明实施例的数据库管理器110。如图2所示,数据库管理器110还包括顺序确定器210和索引更新器220。在一个实施例中,顺序确定器210确定与索引140相关联的索引页面中索引键的持续变化的值。索引更新器220基于由顺序确定器210确定的顺序来更新索引140。下文将描述顺序确定器210和索引更新器220。
由顺序确定器210确定顺序
图3B例示了根据本发明实施例的B-树索引内逻辑级处的示例性索引叶子页面。
图3B中例示的实例索引页面包括用于索引叶子页面的一部分的索引键310和行标识符(RID)320。
参考示例性图3B,可以看出:区域350中的索引键310和RID 320都持续增加。例如,索引键310以值1持续增加,从值“7255”开始直到达到值“7260”。区域350内对应于索引键的RID也以值1持续增加,在区域350内从值“页107槽17”开始到值“页107槽22”终止。区域360为邻近于区域350的另一区域,在区域360中,索引键310和RID 320类似地持续增加。应该注意:在区域350之前,存在对应于RID“页102槽42”的索引键值“7254”。由于该索引键值与持续变化(例如增大或减少)的范围的起始不对应,因此它不包含在例如区域350中。这是因为紧跟在“页102槽42”之后的RID值为“页107槽17”。这与(42-17)个槽或25个槽的变化相关联,该变化与之前描述的区域350中持续增加1不同。虽然图3B中例示的实例示出了以值“1”增加的持续变化的值,但是应理解,持续变化的值不限于增加“1”,也可以增加或减少任意正数或负数值(例如-2、1、5、11.5等)。在另一实例中,但不用于限制本发明,范围内的RID是有顺序的。例如,这些值可以遵循任意算法顺序并且本发明的实施例可以在散列值上操作。
在一个实施例中,顺序确定器210确定索引页面中索引键和RID的持续变化的值。顺序确定器210还确定不在持续变化范围内的索引键和RID的值。这种不在范围内的值可以被称为“单例”。参见图3B例示的示例性索引叶子页面,顺序确定器210确定单例值“7254”及其对应的RID“页102槽42”为单例。
在一个实施例中,当对索引进行填充时,索引更新器220识别出索引中将要插入RID的位置,顺序确定器210检查位于该索引页面内的周围的RID,以确定这些RID是否正持续变化(例如,RID正持续增大)。在对索引进行填充时,如果索引键处于持续变化的条目的范围之内,则索引更新器220避免插入该索引键及其对应的RID,以有效压缩索引140。如果不能将索引键及其对应的RID以处于持续变化的值的范围之内的方式插入,则将该索引键识别为“单例”。下面参考图3C描述此操作。
使用索引更新器220更新索引
图3C例示了由索引更新器220更新的图3B中的示例性索引页面。如图3C所示,索引更新器220可基于来自顺序确定器210的输入而明确地标记单例、范围的起始和范围的终止。此外,在对索引进行填充时,如果索引键邻近于持续变化的条目的范围,则索引更新器220确定没有必要插入该索引键及其对应的RID。在此情况下,如这里所描述地,由于可以确定或计算出索引值,因此不必插入该索引值及其对应的RID。在图3C中,索引更新器220没有将中间索引键值“7256”至“7259”及其对应的RID插入索引页面中,这是因为它们处于由索引键值“7255”和“7260”界定的持续变化的范围之内。如图3C所示,索引键“7254”、“7255”、“7260”和“7261”已经分别被明确地标记为与索引键320相关联的列中的“单例”、“范围_起始”、“范围_终止”和“范围_起始”。如先前参考图3B所描述地,“7255”与持续增加的值的范围的起始相关联,“7260”与从“7255”开始的持续增加的值的范围的终止相关联。
虽然图3C以“单例”、“范围_起始”和“范围_终止”示出了标识符,但是这些标识符可以实现为能够被数据库管理器110使用的“标志”,以确定当数据库管理器110读取索引140时,在索引页面中的“范围_起始”标识符和“范围_终止”标识符之间是否缺少条目(即索引键和RID)。在一个实施例中,“单例”、“范围_起始”和“范围_终止”标识符实现为包括一位或更多位的标志。这些位可邻近于索引键。例如,这些位的一种顺序表示范围的起始,并且这些位的另一种顺序表示范围的终止。这些位可以存在于存储索引键的结构中,或者存在于嵌入包括索引键的一位或更多位内的结构中。
参见图3C,在一个实施例中,“单例”、“范围_起始”和“范围_终止”标识符中的每一个占用相同数目的位。例如,如果每个索引键条目为8个字节长,该8个字节内的2位可被保留用于“单例”、“范围_起始”和“范围_终止”标识符。然后索引更新器220修改这2位以标记“单例”、“范围_起始”和“范围_终止”索引键值。
这样,索引更新器220可使用来自顺序确定器210的输入,从而除标记不处于任何持续变化的值的范围之内的值(例如单例)之外,还标记范围的起始和范围的终止。
来自被压缩的索引页面的检索值
一般地,将索引键“x”的值设为“VAL(x)”且将索引键“x”的RID设为“RID(x)”。使给定的索引键的值为“VAL(给定)”。假定已经确定了给定的索引条目处于条目范围_起始和范围_终止之间的压缩范围之内。为了确定“RID(给定)”(其为存储在索引中的值VAL(给定)的RID),使
范围_大小=RID(范围_终止)-RID(范围_起始)
然后,可以得到增加值val_增加:
val_增加=(VAL(范围_终止)-VAL(范围_起始))/范围_大小
此外,可以得到“VAL(给定)”的位置:
位置=(VAL(给定)-VAL(范围_起始))/val_增加
使用这些值,可以得到RID(给定):
RID(给定)=RID(范围_起始)+位置
参考图3C,如果数据库管理系统110试图检索与索引键值“7259”相对应的行,则其扫描索引140并使用“范围_起始”和“范围_终止”标识符,这能够识别出索引键值“7259”在范围[7255,7260]内。
在此实例中,RID(范围_终止)为22,RID(范围_起始)为17,VAL(范围_终止)为7260,VAL(范围_起始)为7255,以及VAL(给定)为7259。
现在,使用如上所述的示例性普适方程,如下所示确定“范围_大小”、“val_增加”和“位置”的值:
范围_大小=RID(范围_起始)-RID(范围_终止)=22-17=5
val_增加=(VAL(范围_终止)-VAL(范围_起始))/范围_大小=(7260-7255)/5=1
位置=(VAL(给定)-VAL(范围_起始))/val_增加=(7259-7255)/1=4
因此,RID(给定)=RID(范围_起始)+位置=17+4=21
这样,数据库管理系统110能够检索到与给定索引键值“7259”相对应的RID“21”。可以理解,此实例纯属示例性的,并非用于限制本发明。
此外,将索引条目表示为(v,[p,s]),其中“v”为索引条目的值,[p,s]为RID(页p,槽s)。在一个实施例中,如先前所述,如果索引页面具有条目(v+0,[p,s+0])、(v+k,[p,s+1])、(v+2k,[p,s+2])、(v+3k,[p,s+3])、…、(v+nk,[p,s+n]),则索引更新器220可以以端点值(即范围的起始和范围的终止)(v+0,[p,s+0])、(v+nk,[p,s+nk])来替换这些值,由于没有将中间索引键值输入索引页面中,这可以有效地压缩索引。在一个实施例中,可以将标志(例如范围_终止)添加到范围终止处的条目((v+nk,[p,s+nk]))上。如先前所述地,可以将索引键值内的位用作标志,以避免增加索引140的大小。
在另一实施例中,索引更新器220可在索引页面上顺序地复制索引键值上。然后,仍可以通过先前描述的方法使用k=0来压缩键的分布。这使得这些索引键值在非唯一索引中是唯一的,从而使索引更新器220能够使用先前所述的方法压缩索引。
虽然本发明的实施例允许使用范围_起始和范围_终止标识符来压缩索引,但实施例也允许数据库管理器110使索引140返回到未压缩或初始状态。
在存在指向在其页面上邻接的行、通常顺序增大的键值的情况下,可使用本发明的实施例来实现高压缩因数。
由于由索引更新器220填充的索引需要仅将范围_起始、范围_终止和单例标识符添加到索引键值上,因此可以省略叶子页面上的索引条目。即使当索引更新器220正在对索引进行填充,此方法也能有效压缩索引。
使用内联压缩的索引插入
现在将参考图4中的流程图400更详细地描述根据本发明实施例的使用内联压缩的索引插入的示例性方法。
使“v/r”为将要插入索引140中的索引键值/RID的组合。在开始插入之前,通过索引140进行查找,并且记录条目应被插入处的位置“p”。作为该查找的一部分,我们还记录“p”之前的条目“p1”的位置和“p1”之前的条目“p2”的位置。
在步骤402中,开始方法400,在步骤404中,顺序确定器210检查索引页面(例如索引140中的索引页面)以查看条目(p1)是否与持续变化值的范围的起始相关联。
如果条目(p1)与范围的起始相关联(步骤404),则索引更新器220将该范围分成较小的范围和/或单例,如有需要,将条目具体化(解压缩)(步骤406)。然后,方法400继续至步骤408。
回到步骤404,如果条目(p1)与范围起始标识符不相关联,则方法400继续执行步骤408,在步骤408中,顺序确定器210检查条目(p)是否与范围终止标识符相关联。
如果条目(p1)与范围终止标识符相关联(步骤408),则顺序确定器210确定将要插入的索引键是否可以被添加到该范围终止上(步骤410)。如果索引键值可以被添加到该范围终止上(步骤410),则通过提升当前在范围终止处的RID和值来将该索引键值添加到该范围终止上(步骤412)。否则,执行常规(单例)插入,其中将索引键值插入到位置p处(步骤418)。
回到步骤408,如果条目(p1)与范围终止标识符不相关联,则顺序确定器210检查条目(p1)和“v/r”是否具有连续的RID(步骤414)。如果条目(p1)和v/r具有连续的RID,则索引更新器220在条目中设定适当的范围位(range bit)来标记范围的起始或终止(步骤416),并且方法400继续至步骤418。
回到步骤414,如果条目(p1)和“v/r”不具有连续的RID,则索引更新器220在位置“p”处执行常规(单例)插入操作(步骤418)。
这样,不需要为了压缩索引140而在不同位置重写索引140。
示例性计算机实施例
在本发明的实施例中,此处描述的实施例的系统和组件可以使用公知的计算机来实现,比如图5所示的实例计算机502。例如,数据库管理器110或数据库120可以使用计算机502来实现。
计算机502可以是市售且公知的能够执行此处描述的功能的任何计算机,例如来自国际商业机器(International Business Machines)、苹果(Apple)、Sun、惠普(HP)、戴尔(Dell)、康柏(Compaq)、Digital、Cray等的计算机。
计算机502包括一个或更多个处理器(也称为中央处理单元或CPU),比如处理器506。处理器506与通信总线504连接。
计算机502还包括主存或主存储器508,比如随机存取存储器(RAM)。主存储器508将控制逻辑525A(计算机软件)和数据存入其中。
计算机502还包括一个或更多个辅助存储器件510。辅助存储器件510包括例如硬盘驱动器512和/或可移动存储器件或驱动器514以及其它类型的存储器件,比如存储卡和记忆棒。可移动存储驱动器514意味着软盘驱动器、磁带驱动器、CD驱动器、光存储器件、磁带备份等等。
可移动存储驱动器514与可移动存储单元516交互作用。可移动存储单元516包括计算机可用或可读存储介质524,在该计算机可用或可读存储介质524中存储有计算机软件528B(控制逻辑)和/或数据。可移动存储单元516意味着软盘、磁带、CD、DVD、光存储盘或任意其它计算机数据存储器件。可移动存储驱动器514以公知的方式从可移动存储单元516读取数据和/或向其写入数据。
计算机502还包括输入/输出/显示器件522,比如显示器、键盘、定点器件等等。
计算机502还包括通信或网络接口518。网络接口518使计算机502能够与远程器件通信。例如,网络接口518允许计算机502通过通信网络或介质524B(表示一种计算机可用或可读介质的形式)进行通信,比如LAN、WAN、Internet等等。网络接口518可以经由有线或无线连接与远程站点或网络接口。
控制逻辑528C可经由通信介质524B传输至计算机502,或从计算机502传输出。更具体地,计算机502可经由通信介质524B接收和传输使用控制逻辑调制的载波(电磁信号)530。
此处,包括存储有控制逻辑(软件)于其内的计算机可用或可读介质的任意设备或制造品被称为计算机程序产品或程序存储器件。这包括但不限于计算机502、主存储器508、辅助存储器件510、可移动存储单元516和使用控制逻辑调制的载波530。这种存储有控制逻辑于其内的计算机程序产品代表本发明的实施例,当由一个或更多个数据处理器件来执行时,该控制逻辑使得这种数据处理器件如此处所述地运行。
本发明可以与除以上所描述之外的其它软件、硬件和/或操作系统实现方式一起工作。可以使用适于执行此处描述的功能的任何软件、硬件和操作系统实现方式。
结论
可以理解,具体说明部分(而非发明内容和摘要部分)旨在用于解释权利要求。发明内容和摘要部分可阐明一个或更多个,但并非所有的,由发明人认真思考得出的本发明的示例性实施例,因此其不旨在以任何方式限制本发明和所附权利要求。
已经在上文中借助于例示了特定功能及其关系的实现方式的功能性构建模块描述了本发明。为了描述方便,在此任意地限定了这些功能性构建模块的范围。只要可以适当地执行这些特定的功能及其关系,也可以限定其它的范围。
特定实施例的上述描述将完全揭示本发明的一般性质,在不脱离本发明的一般概念下,其他人不需要过度试验即可通过应用本领域内的知识容易地修改和/或调整这些特定实施例的各种应用。因此,基于此处呈现的教导和指导,这种调整和修改将落入所公开的实施例的等同物的含义和范围内。可以理解,此处的术语或措辞是为了描述的目的而非限制,因此本说明书的术语或措辞应由技术人员根据所述教导和指导进行解释。
本发明的广度和范围不应受上述任何示例性实施例限制,其仅应根据所附权利要求书和其等同物来限定。
Claims (18)
1.一种用于压缩数据库索引的方法,包括:
扫描索引;
确定所述索引的一个或更多个索引页面中值的变化模式;以及,
基于所述确定步骤选择性地更新所述索引,以使索引插入最少化。
2.如权利要求1所述的方法,还包括:
确定索引页面中值的范围的起始和所述值的范围的终止;
设定适当的位,以识别所述值的范围的起始和所述值的范围的终止;
确定将要插入所述索引页面中的值是否可以被添加到所述值的范围的所述终止上;以及,
通过暂停存在于所述值的范围的起始和所述值的范围的终止之间的一个或更多个值的写入来压缩所述索引。
3.如权利要求1所述的方法,还包括识别不处于所述值的变化模式之内的值。
4.如权利要求3所述的方法,还包括使用所识别的不处于所述值的变化模式之内的值的单例标识符来更新所述索引。
5.如权利要求1所述的方法,其中所述值的变化模式包括持续增加值。
6.如权利要求1所述的方法,还包括确定与索引键对应的行标识符。
7.如权利要求6所述的方法,其中确定行标识符还包括:
接收索引键值;
识别所述索引中索引页面内的值的范围,其中可以包含所述索引键值;以及,
至少基于与所述值的范围的起始相对应的索引键值和行标识符值来确定与所述索引键值对应的行标识符。
8.一种用于压缩数据库索引的系统,包括:
顺序确定器,以扫描数据库索引并且确定所述数据库索引的一个或更多个索引页面中持续变化的值的范围的起始和范围的终止;以及,
索引更新器,以基于所述范围来更新所述数据库索引,同时暂停处于值的所述范围的所述起始和所述范围的所述终止之内的一个或更多个值的写入。
9.如权利要求8所述的系统,其中所述数据库索引包括一个或更多个索引页面。
10.如权利要求9所述的系统,其中每个索引页面包括一个或更多个索引键和与所述索引键相关联的行标识符。
11.如权利要求8所述的系统,其中所述索引更新器使用范围起始标识符和范围终止标识符来标记所述索引页面中值的范围的起始和值的范围的终止。
12.如权利要求8所述的系统,其中如果一个值不处于所述值的范围的起始和所述值的范围的终止之内,则所述索引更新器使用单例标识符来标记这个值。
13.如权利要求11所述的系统,其中所述范围起始标识符和所述范围终止标识符包括一位或更多位。
14.如权利要求12所述的系统,其中所述单例标识符包括一位或更多位。
15.如权利要求14所述的系统,其中所述位包含在索引键值内。
16.如权利要求8所述的系统,其中所述数据库索引为B-树索引。
17.一种计算机程序产品,其具有存储在其中的控制逻辑,所述控制逻辑使处理器能够压缩数据库索引,所述控制逻辑包括:
第一计算机可读程序代码装置,用于使处理器能够扫描数据库索引;
第二计算机可读程序代码装置,用于使处理器能够确定所述索引的一个或更多个索引页面中值的变化模式;以及,
第三计算机可读程序代码装置,用于使处理器能够基于所述值的变化模式来选择性地更新所述索引,从而使索引插入最少化。
18.如权利要求17所述的计算机程序产品,还包括:
第四计算机可读程序代码,用于使处理器能够确定索引页面中值的范围的起始和所述值的范围的终止;
第五计算机可读程序代码装置,用于使处理器能够设定适当的位以识别所述值的范围的起始和值的范围的终止;
第六计算机可读程序代码装置,用于使处理器能够确定将要插入所述索引页面中的值是否可以被添加到所述值的范围的所述终止上;以及,
第七计算机可读程序代码装置,用于通过暂停存在于所述值的范围的起始和所述值的范围的终止之间的一个或更多个值的写入来使处理器能够压缩所述索引。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/258,861 US9047330B2 (en) | 2008-10-27 | 2008-10-27 | Index compression in databases |
US12/258,861 | 2008-10-27 | ||
PCT/US2009/062053 WO2010062554A2 (en) | 2008-10-27 | 2009-10-26 | Index compression in databases |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102246163A true CN102246163A (zh) | 2011-11-16 |
CN102246163B CN102246163B (zh) | 2015-03-25 |
Family
ID=42132688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980150032.7A Active CN102246163B (zh) | 2008-10-27 | 2009-10-26 | 数据库中的索引压缩 |
Country Status (4)
Country | Link |
---|---|
US (1) | US9047330B2 (zh) |
EP (1) | EP2344959B1 (zh) |
CN (1) | CN102246163B (zh) |
WO (1) | WO2010062554A2 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521256A (zh) * | 2011-11-17 | 2012-06-27 | 广东电网公司电力科学研究院 | 高可靠性的实时/历史数据库数据保护方法 |
CN103870492A (zh) * | 2012-12-14 | 2014-06-18 | 腾讯科技(深圳)有限公司 | 一种基于键排序的数据存储方法和装置 |
CN105930104A (zh) * | 2016-05-17 | 2016-09-07 | 百度在线网络技术(北京)有限公司 | 数据存储方法和装置 |
Families Citing this family (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8843449B2 (en) | 2009-06-16 | 2014-09-23 | Bmc Software, Inc. | Unobtrusive copies of actively used compressed indices |
US8935233B2 (en) | 2010-09-28 | 2015-01-13 | International Business Machines Corporation | Approximate index in relational databases |
US9256762B1 (en) * | 2011-12-20 | 2016-02-09 | Amazon Technologies, Inc. | Securing a remote database |
US9792312B2 (en) * | 2012-11-27 | 2017-10-17 | Sap Se | Row identification column authorization profiles |
US20150032720A1 (en) * | 2013-07-23 | 2015-01-29 | Yahoo! Inc. | Optimizing database queries |
US9864764B2 (en) * | 2014-08-29 | 2018-01-09 | Accenture Global Solutions Limited | Evolving data archives |
US10366067B2 (en) * | 2014-12-16 | 2019-07-30 | Oracle International Corporation | Adaptive index leaf block compression |
US9779023B1 (en) | 2015-06-30 | 2017-10-03 | EMC IP Holding Company LLC | Storing inline-compressed data in segments of contiguous physical blocks |
KR20170028825A (ko) * | 2015-09-04 | 2017-03-14 | 퓨어 스토리지, 아이앤씨. | 압축된 인덱스들을 사용한 해시 테이블들에서의 메모리 효율적인 스토리지 및 탐색 |
US11789923B2 (en) | 2015-10-23 | 2023-10-17 | Oracle International Corporation | Compression units in an index block |
US11181875B2 (en) | 2016-01-22 | 2021-11-23 | Johnson Controls Tyco IP Holdings LLP | Systems and methods for monitoring and controlling a central plant |
US11086864B2 (en) * | 2016-11-23 | 2021-08-10 | Sap Se | Optimizing search for data |
US10746428B2 (en) | 2017-03-09 | 2020-08-18 | Johnson Controls Technology Company | Building automation system with a dynamic cloud based control framework |
US10706375B2 (en) | 2017-03-29 | 2020-07-07 | Johnson Controls Technology Company | Central plant with asset allocator |
US10845083B2 (en) | 2017-04-25 | 2020-11-24 | Johnson Controls Technology Company | Predictive building control system with neural network based constraint generation |
US11271769B2 (en) | 2019-11-14 | 2022-03-08 | Johnson Controls Tyco IP Holdings LLP | Central plant control system with asset allocation override |
US10838961B2 (en) | 2017-09-29 | 2020-11-17 | Oracle International Corporation | Prefix compression |
US10678779B2 (en) | 2017-12-12 | 2020-06-09 | International Business Machines Corporation | Generating sub-indexes from an index to compress the index |
US11782774B2 (en) | 2021-03-19 | 2023-10-10 | Oracle International Corporation | Implementing optional specialization when compiling code |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918225A (en) * | 1993-04-16 | 1999-06-29 | Sybase, Inc. | SQL-based database system with improved indexing methodology |
US6055526A (en) * | 1998-04-02 | 2000-04-25 | Sun Microsystems, Inc. | Data indexing technique |
US6460046B1 (en) | 1999-06-01 | 2002-10-01 | Navigation Technologies Corp. | Method and system for forming, storing and using sets of data values |
US7152165B1 (en) * | 1999-07-16 | 2006-12-19 | Intertrust Technologies Corp. | Trusted storage systems and methods |
GB2406679B (en) * | 2000-11-30 | 2005-05-18 | Coppereye Ltd | Database |
US7283987B2 (en) * | 2001-03-05 | 2007-10-16 | Sap Ag | Compression scheme for improving cache behavior in database systems |
AU2002318380A1 (en) * | 2001-06-21 | 2003-01-08 | Isc, Inc. | Database indexing method and apparatus |
US6694323B2 (en) * | 2002-04-25 | 2004-02-17 | Sybase, Inc. | System and methodology for providing compact B-Tree |
CN100399325C (zh) * | 2002-10-25 | 2008-07-02 | 联想(北京)有限公司 | 一种嵌入式数据库的数据备份和恢复方法 |
US7539685B2 (en) * | 2003-12-30 | 2009-05-26 | Microsoft Corporation | Index key normalization |
US7448047B2 (en) * | 2004-04-29 | 2008-11-04 | Sybase, Inc. | Database system with methodology for providing stored procedures as web services |
US7734581B2 (en) * | 2004-05-18 | 2010-06-08 | Oracle International Corporation | Vector reads for array updates |
US7865501B2 (en) * | 2005-11-15 | 2011-01-04 | International Business Machines Corporation | Method and apparatus for locating and retrieving data content stored in a compressed digital format |
CN100401300C (zh) * | 2006-04-29 | 2008-07-09 | 上海世纪互联信息系统有限公司 | 具有自动分类功能的搜索引擎 |
US8108355B2 (en) * | 2006-10-27 | 2012-01-31 | Hewlett-Packard Development Company, L.P. | Providing a partially sorted index |
-
2008
- 2008-10-27 US US12/258,861 patent/US9047330B2/en active Active
-
2009
- 2009-10-26 WO PCT/US2009/062053 patent/WO2010062554A2/en active Application Filing
- 2009-10-26 CN CN200980150032.7A patent/CN102246163B/zh active Active
- 2009-10-26 EP EP09829567.8A patent/EP2344959B1/en active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521256A (zh) * | 2011-11-17 | 2012-06-27 | 广东电网公司电力科学研究院 | 高可靠性的实时/历史数据库数据保护方法 |
CN103870492A (zh) * | 2012-12-14 | 2014-06-18 | 腾讯科技(深圳)有限公司 | 一种基于键排序的数据存储方法和装置 |
CN103870492B (zh) * | 2012-12-14 | 2017-08-04 | 腾讯科技(深圳)有限公司 | 一种基于键排序的数据存储方法和装置 |
CN105930104A (zh) * | 2016-05-17 | 2016-09-07 | 百度在线网络技术(北京)有限公司 | 数据存储方法和装置 |
CN105930104B (zh) * | 2016-05-17 | 2019-01-18 | 百度在线网络技术(北京)有限公司 | 数据存储方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
EP2344959B1 (en) | 2017-05-03 |
EP2344959A2 (en) | 2011-07-20 |
EP2344959A4 (en) | 2014-01-15 |
CN102246163B (zh) | 2015-03-25 |
WO2010062554A2 (en) | 2010-06-03 |
US20100114843A1 (en) | 2010-05-06 |
US9047330B2 (en) | 2015-06-02 |
WO2010062554A3 (en) | 2010-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102246163A (zh) | 数据库中的索引压缩 | |
US9805079B2 (en) | Executing constant time relational queries against structured and semi-structured data | |
US9639542B2 (en) | Dynamic mapping of extensible datasets to relational database schemas | |
US11455280B2 (en) | Synchronization of metadata in a distributed storage system | |
US8255398B2 (en) | Compression of sorted value indexes using common prefixes | |
US6725223B2 (en) | Storage format for encoded vector indexes | |
US8554561B2 (en) | Efficient indexing of documents with similar content | |
US10289714B2 (en) | Compression of serialized B-tree data | |
US20120197900A1 (en) | Systems and methods for search time tree indexes | |
Ahn et al. | ForestDB: A fast key-value storage system for variable-length string keys | |
US20140222418A1 (en) | Fixed string dictionary | |
EP2924594A1 (en) | Data encoding and corresponding data structure in a column-store database | |
CN109299086B (zh) | 最优排序键压缩和索引重建 | |
CN102362273A (zh) | 用于关系数据库系统中高效数据存取的动态散列表 | |
CN107423422A (zh) | 基于网格的空间数据分布式存储及检索方法和系统 | |
CN102890678A (zh) | 一种基于格雷编码的分布式数据布局方法及查询方法 | |
US7676487B2 (en) | Method and system for formatting and indexing data | |
US12050580B2 (en) | Data segment storing in a database system | |
US9600578B1 (en) | Inverted index and inverted list process for storing and retrieving information | |
US20160012090A1 (en) | Inverted index and inverted list process for storing and retrieving information | |
CN105447166A (zh) | 一种基于关键字查找信息的方法及系统 | |
CN111722962A (zh) | 一种针对cdp数据的存储系统及其方法 | |
CN110020272A (zh) | 缓存方法、装置以及计算机存储介质 | |
US10409799B2 (en) | Supporting updatable repeated values over variable schema | |
CN111752954B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |