CN1462399A - 用于提高数据库系统中的高速缓存性能的压缩方案 - Google Patents

用于提高数据库系统中的高速缓存性能的压缩方案 Download PDF

Info

Publication number
CN1462399A
CN1462399A CN02801435A CN02801435A CN1462399A CN 1462399 A CN1462399 A CN 1462399A CN 02801435 A CN02801435 A CN 02801435A CN 02801435 A CN02801435 A CN 02801435A CN 1462399 A CN1462399 A CN 1462399A
Authority
CN
China
Prior art keywords
node
tree
mbr
qrmbr
index
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.)
Pending
Application number
CN02801435A
Other languages
English (en)
Inventor
金起弘
车相均
权槿周
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Transact In Memory Inc
Original Assignee
Transact In Memory Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Transact In Memory Inc filed Critical Transact In Memory Inc
Publication of CN1462399A publication Critical patent/CN1462399A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2264Multidimensional index structures
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99933Query processing, i.e. searching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99941Database schema or data structure
    • Y10S707/99942Manipulating data structure, e.g. compression, compaction, compilation

Abstract

本发明揭示了一种高速缓存感知类型的R-tree,被称为CR-tree。为了把更多条目组合在一个节点内,CR-tree压缩MBR关键字,这些MBR关键字占用索引数据的主要部分。CR-tree首先相对于MBR的父母MBR的左下角来表示MBR关键字的坐标,以便从相对坐标表示中消除前导零。然后,CR-tree使用固定位数来量化相对坐标,以便进一步切掉尾随较低有效位。因此,CR-tree比普通R-tree宽得多和小得多,实验和分析结果表明,二维CR-tree执行搜索的速度比普通R-tree快,同时保持类似的更新性能,并耗用较少存储空间。

Description

用于提高数据库系统中的高速缓存性能的压缩方案
技术领域
本发明一般涉及数据库系统,具体涉及用于提高主存储器数据库系统中的索引高速缓存性能的压缩方案。
背景技术
随着服务器DRAM模块继续走低,很多数据库表格和索引现可装入现代计算机系统的主存储器。预计在十年左右内,数据库将普遍具有万亿字节的主存储器。
采用这种大容量存储器,磁盘存取的传统瓶颈几乎消失,尤其是对于搜索事物处理来说,更是如此。然而,存储器存取成为一种新的瓶颈。最近在商用DBMS方面的研究表明,当整个数据库都驻留在存储器内时,一半执行时间将花在存储器存取上。
由于为换取容量而牺牲了DRAM芯片的速度,因而在CPU速度和DRAM速度之间的差距在过去十年中已显著拉大。在当今计算机系统中,每次存储器存取都要用去几十个处理器周期。为了克服这种差距,现代处理器采用高达数兆字节的SRAM作为高速缓存,这只需一个或两个处理器周期就可存取。
意识到CPU速度和DRAM速度之间差距的不断拉大,已强调了高速缓存性能在主存储器索引设计中的重要性。现已表明,高速缓存感知(cache-conscious)搜索树(“CSS-tree”)在只读环境中执行查找的速度比对分搜索树和T-tree都快。B+-tree及其变型已表明具有比较好的高速缓存性能。
例如,CSB+-tree(“高速缓存敏感(cache sensitive)B+-tree”)把子女节点连续存储在存储器内,以消除节点中的除第一子女指针以外的大多数子女指针。第i个子女节点的位置从第一子女节点的位置来计算。通过为节点内的关键字提供更多空间,这种指针消除方案可有效地使B+-tree的扇出(fanout)增加一倍。考虑到节点大小约为高速缓存块的大小,使扇出增加一倍将减小B+-tree的高度,而这又会在树遍历过程中使高速缓存未命中数减少。
注意,这种指针消除技术在扇出典型地约为几百的基于盘的索引方面不会提供很多好处,并且使扇出增加一倍也不会导致树高度立即减小。
然而,指针消除技术不能直接应用于诸如R-tree那样的多维索引结构,而多维索引结构具有众多应用领域,例如,时空数据库,数据仓库,以及目录服务器。
存储在R-tree中的数据对象由在多维索引空间中的所谓的最小边界矩形(“MBR”)近似,其中,各MBR均是用于封闭相应数据对象的最小超矩形(即:二维或更高维矩形或盒)。本领域技术人员将意识到,MBR可扩展成包括盒或棱锥在内的多维形状。
典型的是,MBR比指针大得多。因此,单单指针消除不能加宽索引树来显著减小树高度。例如,当16字节MBR用于二维关键字时,仅消除4字节指针最多能为关键字提供增加25%的空间,这种增加不足以大到能为提高高速缓存性能而使树高度发生任何大的差异。
因此,需要一种方案,用于在存取多维索引时提高高速缓存性能,以便存取主存储器数据库。
发明内容
意识到MBR关键字占用多维索引R-tree内的大多数索引数据,本发明可使MBR关键字的压缩成本低廉,以提高索引高速缓存性能。本发明的优选实施例被称为“CR-tree”(高速缓存感知R-tree),在该“CR-tree”中,子女节点被组合成父母节点,以使各节点仅占用其父母节点的数据空间的一小部分。在CR-tree中,MBR相对于其父母MBR来表示,以使所得的相对MBR的坐标具有带许多前导零的较少有效位数。为了进一步减少每个MBR的位数,CR-tree还通过量化来切掉尾随无效位。
分析结果和实验结果一致表明,该压缩技术可把MBR大小减少到未压缩MBR的四分之一以下,从而把扇出增加150%以上。所提出的这种技术存在一个潜在问题是,由量化引起的信息损耗可能造成假命中,而假命中必须通过后续提纯步骤予以筛出。然而,需要该提纯步骤本身不是问题,因为这在大多数多维索引中都是需要的,并且通过合适选择量化层数,可将假命中数保持小到可忽略不计,这样,通过显著避免高速缓存未命中,可补偿假命中筛出的成本。
本发明在CR-tree的设计方面还包括多个替代实施例,无论是使用在CSB+-tree中引入的指针消除技术,还是把所提出的压缩技术应用于叶节点,这些替代实施例都包括量化层数的选择以及节点大小的选择。实验结果表明,所有得到的CR-tree变型在搜索性能和空间要求方面都大大优于R-tree。仅使用所提出的这种技术的基本CR-tree执行搜索操作的速度比R-tree快,同时执行类似于R-tree的更新操作,并使用较少存储空间。与基本CR-tree相比,CR-tree的大多数变型以少量的算法开销使用较少的存储空间。
附图说明
图1A、图1B和图1C是本发明的QRMBR技术的说明图。
图2A、图2B和图2C是CR-tree的数据结构的说明图。
图3A~图3G是有关CR-tree的处理的流程图。
图4A~图4C是CR-tree三个变型的数据结构变化的说明图。
图5A和图5B是示出R-tree和CR-tree中的节点存取的图。
图6A和图6B是示出R-tree和CR-tree中的高速缓存未命中的图。
图7A和图7B是示出在二维R-tree和CR-tree中的最佳节点大小随查询选择性而增加的图。
图8A和图8B是示出由QRMBR大小和维数引起的假命中率的图。
图9A和图9B是示出大量装有均匀数据集的二维树的搜索性能的图。
图10A和图10B是示出大量装有非均匀数据集的二维树的搜索性能的图。
图11A和图11B是示出具有变化基数的二维R-tree和CR-tree的搜索时间的图。
图12A和图12B是示出大量装有均匀数据集的树的更新性能的图。
图13A和图13B是示出在插入或删除之后的搜索性能的图。
图14A、图14B和图14C是示出由量化引起的假命中率的图。
图15A和图15B是示出MBR大小随不同量化层数而增加的图。
图16A、图16B和图16C是示出采用不同量化层数的搜索时间的图。
图17A和图17B是示出存取索引数据量的图。
图18A和图18B是示出L2高速缓存未命中数的图。
图19A和图19B是示出关键字比较数的图。
图20A和图20B是示出4种类型DRAM的存取速度的图。
图21A和图21B是示出二维CR-tree的分析结果和实验结果的比较的图。
本发明的最佳实施例
本发明的基础是,通过压缩MBR来使R-tree对高速缓存感知。R-tree是一种专为给数据库中的多维数据对象加索引而设计的高度平衡树结构。它存储具有二维或更高维数据对象的最小边界矩形(“MBR”),作为叶页面中的关键字。本发明还可适用于R-tree的一种变型,被称为R*-tree,它使用更好的试探法来提高搜索性能,该试探法用于重新分配条目,并在插入过程中动态重组该树。本领域技术人员将意识到,本发明可容易地适用于R-tree的其他变型,例如,R+-tree,Hilbert R-tree,或者X-tree。
图1示出了本发明中使用的压缩方案。图1A示出了R0~R3的绝对坐标。图1B示出了相对于R0的左下角来表示的R1~R3的坐标。这些相对坐标的有效位数比绝对坐标少。图1C示出了通过切断尾随无效位而量化为16层或四位的R1~R3的坐标。所得MBR被称为量化MBR(“QRMBR”)。注意,QRMBR可略大于原始MBR。
本发明的优选实施例是一种被称为CR-tree(“高速缓存感知R-tree”)的索引树,它是R-tree的一个变型,其使用QRMBR作为索引关键字。对于CR-tree内的所有节点来说,量化层数可以相同。
图2A示出了CR-tree节点的数据结构。各节点均可包含最多M个条目。此外,该节点保持有:标志201,其表示节点是叶节点还是非叶节点(内部节点);所存储条目的数量202;参考MBR 203,其紧紧封闭它全部子女MBR;以及多个条目,例如204。参考MBR用于计算存储在节点内的QRMBR。
图2B示出了以(QRMBR 211,ptr 212)形式存储条目的非叶节点(内部节点),其中,QRMBR 211是子女节点MBR的量化相对表示,ptr 212是子女节点的地址。
图2C示出了以(QRMBR 221,ptr 222)形式存储条目的叶节点,其中,QRMBR 221是对象MBR的量化相对表示,ptr 222是指一个数据对象。典型的是,x坐标和y坐标均量化成256层或一个字节。
本发明的一个目的是,尤其是使用多维索引来缩短主存储器数据库中的索引搜索时间。在基于磁盘的索引中,当节点大小适中时,磁盘存取成本几乎与节点大小无关,而存储器存取成本几乎与节点大小成正比。尽管基于磁盘的索引被设计成把磁盘存取次数降至最少,然而主存储器索引需要设计成把存取索引数据量或c·Nnode access降至最少,其中,c表示高速缓存块中的节点大小,Nnode access表示存取节点数。
在主存储器索引中,搜索时间主要由关键字比较时间和存储器存取时间组成,而存储器存取时间由高速缓存未命中产生。如果发生高速缓存未命中,则CPU必须等待,直到对遗漏数据进行高速缓存。高速缓存未命中会由于三种原因而发生,即:数据遗漏,指令遗漏,以及TLB(表后备缓冲区)条目遗漏,需要TLB条目来把虚存地址映射为物理地址。因此,该目的被表示为使下列结果最小 T indexsearch ≅ T keycompare + T datacache + T TLBcache
式中,Tkey compare是对高速缓存后的关键字进行比较所花的时间,Tdata cache是对数据进行高速缓存所花的时间,TTLB cache是对TLB条目进行高速缓存所花的时间。为了说明起见,将遗漏指令的高速缓存时间忽略不计,因为指令遗漏数主要取决于所用的编译程序,并且高速缓存时间难以控制。
假定c是高速缓存块中的节点大小,并假定Nnode access是通过处理一个查询而存取的节点数。假定Ckey compare是每个高速缓存块的关键字比较成本,并且Ccache miss是高速缓存块的更换成本。假定CTLB miss是一次TLB遗漏的处理成本。当节点大小小于存储页面大小时,每次存取节点均最多产生一次TLB遗漏。为了说明起见,假定节点已随机分配,并且最初不对节点和TLB条目进行高速缓存。于是得出,
Tindex search
c×Ckey compare×Nnode access+c×Ccache miss×Nnode access+CTLB miss×Nnode access
=c×Nnode access×(Ckey compare+Ccache miss+CTLB miss/c)
由于Ccache miss和CTLB miss对于给定平台来说是常数,因而可控制三个参数:c,Ckey compare以及Nnode access。其中,预计不显著减小Ckey compare,因为关键字比较一般非常简单。此外,CTLB miss和Ccache miss典型地具有相似值。因此,索引搜索时间主要取决于c·Nnode access
可以看出,通过压缩索引条目,可最大限度地减少存取的索引数据量。c·Nnode access可采用三种方法降至最小,即:改变节点大小,以使c·Nnode access最小;把更多个条目组合成一个固定大小的节点;把索引条目有效地聚类成节点。第二种方法经常被称为压缩,而第三种方法经常被称为聚类。
在一维情况下,最佳节点大小等于高速缓存块的大小。在比如B+-tree那样的一维树中,由于即便对于范围查询,对每个高度也是存取正好一个内部节点,因而被访内部节点数随节点大小而以对数形式减少。另一方面,被访叶节点数随节点大小而以线性形式减少,并且c随节点大小而以线性形式增加。因此,c·Nnode access随节点大小而增加,这样当c是1时,c·Nnode access最小。
在多维索引中,即便对于精确匹配查询,也可存取同一高度的一个以上内部节点,并且同一高度的存取节点数随节点大小增加而减少。由于这种减少与树高度的对数标度减少相结合,因而存在以下可能,即:节点存取的组合减少速度超过c的线性增加速度。分析表明,最佳节点大小取决于多种因素,例如,查询选择性和基数(索引结构中的条目数)。
压缩索引条目相当于增加节点大小,而不增加c。也就是说,这可减少Nnode access,同时保持c固定。因此,这是非常合乎需要的。在基于磁盘的索引中总是频繁地使用压缩,因为这可减少树高度,但专用工作很少,尤其是在多维索引中。以下分析表明,为何压缩在基于磁盘的索引中不重要,而在主存储器索引中却重要。
假设树A可平均把f个条目组合在一个节点内,并且树B使用良好压缩方案把2f个条目组合在一个节点内。于是,它们的期望高度分别是logfN和log2fN。因此,B的高度是A的高度的1/log2f+1(=logfN/log2fN)分之一。在基于磁盘的索引中,节点的典型大小从4KB到64KB不等。假定节点大小是8KB并且节点为70%已满,则对于B+-tree索引,f是716(
Figure A0280143500121
8192×0.7/8),对于二维R-tree,f约为286(
Figure A0280143500122
8192×0.7/20)。因此,1/log2f典型地约为0.1。另一方面,节点大小在主存储器索引中较小。在节点占用两个高速缓存块或128字节的情况下,对于B+-tree,f约为11,对于二维R-Tree,f约为4。因此,对于B+-tree,1/log2f是0.29,对于R-tree,1/log2f是0.5。总之,由于节点大小较小,因而节点压缩可大大减少主存储器索引的高度。
在基于磁盘的索引结构中,聚类一直得到广泛研究。在聚类方面,B+-tree在一维空间内最佳,但对于多维情况,最佳聚类方案还未知。不过,许多试探方案已在各种多维索引结构中得到研究。本发明可与大多数这些聚类方案一起使用。
MBR压缩
对于MBR压缩方案,有两种期望特征。一种特征是无解压缩的重叠检查。两个MBR重叠与否,可从相应的压缩MBR中直接来判定,而不用将其解压缩。基本R-tree操作是检查节点内的各MBR是否与一个给定查询矩形重叠。因此,当把压缩MBR存储在节点内时,该特征可通过压缩一次查询矩形就能执行R-tree操作,而不用将节点内的所有压缩MBR解压缩。
另一特征是简化性。压缩和解压缩应计算简单,并只能使用已高速缓存后的数据来进行。常规无损压缩算法,正如在GNU gzip程序中使用的那种算法,在计算和存储器存取这两方面都很昂贵,因为这些算法大多含有基于熵的的映射表,并查阅该表用于压缩和解压缩。尽管这些算法可用于基于磁盘的索引,然而它们却不适用于主存储器索引。
RMBR技术
一种压缩方法是相对于节点内的一个参考MBR来表示关键字。如果MBR的坐标是相对于其父母MBR的左下角来表示,则所得的相对坐标具有许多前导零。在MBR的相对表示(“RMBR”)中,切掉这些前导零可有效减少MBR大小。
假定P和C是MBR,它由其左下坐标和右上坐标(xl,yl,xh,yh)来表示,并假定P封闭C。于是,C针对的相对表示具有相对于P的左下角的坐标。
RMBRP(C)=(C.xl-P.xl,C.yl-P.yl,C.xh-P.xl,C.yh-P.yl)
然而,以下简单分析表明,RMBR技术可仅节省约每MBR 32位。为了简化起见,假设MBR的坐标均匀分布在其域中,并且同一高度的R-tree节点大致具有同一大小的方形MBR。在不失通用性的情况下,假定x坐标域具有单位长度,并由间隔相等的232个不同值组成。
假定f是叶节点的平均扇出,并假定N是数据对象的总数。于是,大致有N/f个叶节点,其MBR的面积为f/N,并且沿各轴的边长为 由于沿各轴的单位区间内有232个不同值,因而在长度为
Figure A0280143500132
的区间内有
Figure A0280143500133
个不同值。因此,对于各x坐标值,均可节省 32 - log 2 ( 2 32 f / N ) 位或 log 2 N / f 位。当N是一百万并且f是11时,可节省约8.2位。通过乘以4,可节省约每MBR 32位。注意,只要节省位数小于原始位数,节省位数就不取决于原始位数。
可容易扩展该分析结果,以使节省位数通过维数进一步参数化。扩展结果是 log 2 N / f d 或者是
               (log2N-log2f)/d        (1)
公式(1)在N方面以对数形式增加,在f方面以对数形式减少,但随着d以线性方式减少。因此,节省位数主要取决于维数。在一维空间中,该相对表示技术可为每个标量节省几乎16位,但是随着维数增加而变得无用。
QRMBR技术
除了RMBR技术之外,可进行量化,作为进一步压缩的附加步骤。在量化RBMR(“QRMBR”)技术中,量化步骤从RMBR中切掉尾随无效位,而RMBR技术从MBR中切掉前导非鉴别位。以下表明,对RMBR进行量化不会影响索引搜索的正确性,并且通过显著避免高速缓存未命中,使得由量化引起的少量开销被认为是合理的。
假定I是参考MBR,并假定l是期望的量化层数。于是,MBR,C的相应量化相对表示被定义为:
QRMBRI,l(C)=(φI.xl,I.xh,l(C.xl),φI.yl,I.yh,l(C.yl),ΦI.xl,I.xh,l(C.xh),ΦI.yl,I.yh,l(C.yh))式中,φa,b,l:R→{0,...,l-1}和Φa,b,l:R→{1,...,l}是:
Figure A0280143500141
以下引理表明,QRMBR满足两个期望特征中的第一个特征。因此,QRMBR技术的计算开销是把查询矩形压缩成每个被访节点的QRMBR所花的成本。在该实施中,把MBR压缩成QRMBR最多用去约60条指令。由于流水线技术,这相当于在一个400MHz处理器上花费不到120ns。此外,这也不会招致存储器存取,只要对查询MBR和立即存取时节点的MBR进行高速缓存就行。
引理1:假定A和B是MBR。对于任何MBR I和整数1来说都成立的是,如果QRMBRI,l(A)和QRMBRI,l(B)不重叠,则A和B也不重叠。
证明:通过对换置位命题,即:如果A和B重叠,则QRMBRI,l(A)和QRMBRI,l(B)重叠这一换置位命题进行证明来证明。根据定义,当且仅当两个矩形共享至少一个点时,这两个矩形才重叠。因此,A和B共享至少一个点。假定(x,y)表示该点。于是,以下公式成立。
    A.xl≤x≤A.xh,A.yl≤y≤A.yh
    B.xl≤x≤B.xh,B.yl≤y≤B.yh
为了简化起见,下标a、b和l从量化函数φ和Φ中省略。由于φ和Φ是单调非下降函数,并且对于任何r∈R都有φ(r)≤Φ(r),因而
φ(A.xl)≤φ(x)≤Φ(x)≤Φ(A.xh),φ(A.yl)≤φ(y)≤Φ(y)≤Φ(A.yh)
φ(B.xl)≤φ(x)≤Φ(x)≤Φ(B.xh),φ(B.yl)≤φ(y)≤Φ(y)≤Φ(B.yh)
因此,QRMBRI,l(A)和QRMBRI,l(B)共享至少点(φ(x),φ(y))。因此,它们重叠,证明完毕。
由于一般无法从MBR的QRMBR恢复MBR的原始坐标,因而存在对两个MBR之间的重叠关系判定不正确的可能。然而,引理1保证没有把两个实际重叠的MBR说成不重叠的可能。因此,QRMBR技术不会遗漏一个满足查询的数据对象。
然而,还有一种可能是两个实际不重叠的MBR会重叠。也就是说,索引搜索结果会包含假命中,该假命中必须通过后续提纯步骤来筛出。该提纯步骤对于大多数多维索引结构是需要的,因为经常存在以下情况,即:MBR不是数据对象的确切关键字。因此,需要提纯步骤本身并不是一项开销,而假命中数会是一项开销。通过正确选择量化层数,可使假命中数小到忽略不计,例如小于百分之一。
本发明的CR-tree
图3A至图3G示出了与本发明的CR-tree相关的过程。在CR-tree和那些常规R-tree变型的算法之间的两大区别是:CR-tree把QRMBR存储在节点内,并随着其MBR放大或缩小而保持这些QRMBR。
图3A示出了搜索过程的流程图,该搜索过程类似于在其他R-tree变型中使用的搜索过程,只不过CR-tree需要把查询矩形与节点内的QRMBR进行比较。CR-tree使用各节点的MBR作为参考MBR,把查询矩形变换为相应QRMBR,而不是从QRMBR恢复MBR。然后,它比较两个QRMBR,以判定其是否重叠。
搜索过程:已知CR-tree和查询矩形Q,查找其QRMBR与Q重叠的所有索引记录。
1.把根节点推入最初空的栈S(步骤301)。
2.如果S处于空状态(步骤302),则返回结果集(步骤303)并停止(步骤304)。
3.如果S不是处于空状态(步骤302),则把一个节点N从S中弹出(步骤305),并把R设定为QRMBRN.MBR,l(Q)(步骤306)。
4.如果N不是叶节点(步骤307),则检查各条目E,以判定E.QRMBR是否与R重叠。如果重叠,则把E.ptr推入S(步骤308)。
5.如果N是叶节点(步骤307),则检查所有条目E,以判定E.QRMBR是否与R重叠。如果重叠,则把E.ptr添加给结果集(步骤309)。
6.从步骤2开始重复。
图3B示出了Insert过程的流程图。Insert过程通过调用ChooseLeaf和Install过程,把其MBR是C的新数据对象O插入CR-tree。如果需要,也可调用SplitNode和AdjustTree过程。Install过程通过把N.MBR放大成使其封闭C,并且通过生成条目(QRMBRN.MBR,l(C),p)并将其附加给N,把一对MBR C和数据对象指针p安装在节点N内。如果N.MBR已放大,则通过存取N内所有QRMBR的实际MBR来重新计算N内的所有QRMBR,并调用通过N的AdjustTree过程。
为了插入新数据对象(步骤315),CR-tree通过选择子女节点,把自身从根节点下降,该子女节点需要最少放大来封闭对象MBR的新关键字。如果节点的MBR封闭新关键字(步骤316),则为新条目计算相对关键字(步骤317)。如果节点的MBR未封闭新关键字(步骤316),则节点的MBR必须放大,以封闭新关键字(步骤318)。
当访问一个内部节点以选择其一个子女节点时,使用节点MBR作为参考MBR,把对象MBR首先变换为QRMBR。然后,在一对QRMBR之间计算放大。为所有条目计算相对关键字(步骤319)。当达到页节点时,首先调整节点MBR,以使其封闭对象MBR。然后,在该节点内创建数据对象的索引条目。如果节点MBR已作调整,则重新计算节点内的QRMBR,因为其参考MBR已改变。
如果节点溢出(步骤312),则该节点被分割(步骤313),并且分割沿树向上传播。
图3C示出了ChoosLeaf过程的流程图,该过程选择一叶节点,在该叶节点内将放有一新MBR,使CR-tree从根节点下降。从根节点开始,如果选择节点不是叶节点(步骤332),则相对于节点的MBR形成插入关键字(步骤335),并选择一子女节点,该子女节点需要最小放大来封闭相对插入关键字(步骤336)。重复该处理,直到达到叶节点(步骤333)。
图3D示出了SplitNode过程的流程图,该过程根据R-tree所用的线性分割算法,把节点一分为二。节点内的QRMBR需要根据其MBR来重新计算。可使用R-tree及其变型所用的其他分割算法例如二次分割算法来进行分割。
最远条目对被选为种籽(步骤341)。形成两个节点,并且把每个种籽指配给一节点(步骤342)。挑选任一剩余条目(步骤344),并把该条目指配给一节点,该节点需要其MBR的最小放大以包括所选条目(步骤347)。如果一个节点具有(M-m)个条目(步骤345),其中,M是一个节点中的最大条目数,而m是一个节点中的预定义最小条目数,则应把所有剩余条目指配给另一节点(步骤346)。该步骤使各节点均具有至少m个条目。如果指配所有条目(步骤343),则可获得各节点的MBR,并可计算各节点内的相对关键字(步骤348)。
如果在分割中的节点是根节点,则形成新根节点,并且两个分割节点被添加给该根节点,作为其子女节点(步骤349)。重新计算该根节点的MBR和相对关键字(步骤351)。如果在分割中的节点不是根节点,并且如果父母节点已满(步骤352),则父母节点被分割(步骤353)。如果父母节点未满(步骤352),并且如果父母节点的MBR封闭新关键字(步骤355),则仅为两个新条目重新计算相对关键字(步骤376)。如果父母节点的MBR未封闭新关键字(步骤355),则父母节点的MBR被放大以便封闭新关键字(步骤357),并且为所有条目重新计算节点内的相对关键字(步骤358),并调整该树(步骤359)。
图3E示出了AdjustTree过程,该过程从叶节点L上升直至根节点,限据需要调整节点的MBR并传播节点分割。当一个节点MBR已作调整时,重新计算节点中的QRMBR。首先,检查放大节点是否是根节点(步骤371)。如果放大节点不是根节点,并且如果父母节点的MBR封闭该节点的MBR(步骤373),则更新父母节点的条目,并重新计算相对关键字(步骤374)。如果父母节点的MBR未封闭该节点的MBR(步骤373),则放大父母节点的MBR以封闭放大节点的MBR(步骤375)。更新父母节点的条目,并重新计算父母节点的所有相对关键字(步骤377),并且把父母节点设定成放大节点(步骤378)。
图3F示出了Delete过程的流程图,该过程从CR-tree中消除索引记录E。相对于节点的MBR来变换删除关键字(步骤386)。如果节点是叶节点(步骤387),则把节点内的各条目与删除对象进行比较(步骤389)。如果任何条目与删除对象匹配(步骤390),则从叶节点中删除该条目(步骤391)。如果删除条目的关键字接触叶节点的MBR(步骤393),则重新计算各条目的相对关键字(步骤394),并压缩该树(步骤395)。
图3G示出了CondenseTree过程的流程图。如果叶节点L中已删除一条目并因而使该叶节点几乎不留有条目,则CondenseTree过程消除该节点,并把所有其条目重新定位。根据需要,使节点消除向上传播。调整通往根节点的路径上的节点的所有MBR,如有可能,缩小这些MBR。当一节点的MBR已作调整时,重新计算该节点中的QRMBR。
首先,查找父母节点中的收缩节点条目(步骤401)。如果该条目的关键字未接触父母节点的MBR(步骤402),则使父母节点中的收缩节点条目更新(步骤409)和停止(步骤410)。如果该条目的关键字接触父母节点的MBR(步骤402),则把条目的关键字和收缩节点的MBR进行比较(步骤403)。如果父母节点不会收缩(步骤404),则使父母节点中的收缩节点条目更新(步骤405)。但是,如果父母节点会收缩(步骤404),则使父母节点中的收缩节点条目更新(步骤405)。重新计算父母节点的MBR(步骤406),并且还重新计算父母节点中的各条目的相对关键字(步骤407)。把父母节点设定成收缩节点(步骤408)。
本领域技术人员将意识到,也可采用在R-tree和R*-tree中所用的任何删除算法,并稍作修改。
大量装入
大量装入CR-tree大量装入其他R-tree变型没有不同。只要正确保持QRMBR,就可直接使用现有的自底向上装入算法。
CR-tree变型
图4A、图4B和图4C示出了本发明的CR-tree的三个变型,即:PECR-tree,SE CR-tree,以及FF CR-tree。
图4A示出了第一变型,被称为PE(“指针消除”)CR-tree,类似于CSB+-tree,它从内部节点中消除指向子女节点的指针,除了第一条目的指针之外。各节点均包括:字段421,用于表示节点是叶节点还是非叶(内部)节点;字段422,用于表示节点中的条目数;字段423,用于存储参考MBR;字段424,用于存储指向子女节点的指针;以及字段,例如425,用于存储QRMBR。
PE CR-tree通过消除大部分指针来显著加宽CR-tree,因为eR-tree的关键字大小小于例如R-tree。如果QRMBR大小是4字节,则当指针是4字节时,该扩展使内部节点的扇出增加一倍。
注意,指向存储在叶节点内的数据对象的指针很少会被消除。当内部节点和叶节点的平均扇出是10时,内部节点数约为叶节点数的九分之一。因此,扇出总增加仅约10%。
另一方面,由于指针消除技术通过将子女节点与同一父母节点连续存储来起作用,因而节点分割会很昂贵。采用分割创建的新节点必须与其兄弟一起连续存储,这经常需要分配新空间,并把兄弟移入该空间。
图4B示出了第二变型,被称为SE(“空间有效”)CR-tree,它从基本CR-tree的节点中消除参考MBR。它利用以下事实,即:各节点的参考MBR可从其父母节点中的匹配条目来获得。
该图示出了除根节点之外的节点的结构。它包括:字段431,用于表示节点是叶节点还是非叶(内部)节点;字段432,用于表示节点中的条目数;字段433,用于存储指向子女节点的指针;以及字段,例如434,用于存储QRMBR。注意,除根节点之外,在各节点中均不存在参考MBR。
当MBR大小是16字节并且QRMBR大小是4字节时,SE CR-tree可使内部节点的扇出增加4,并可使叶节点的扇出增加2。当节点大小与一个或两个高速缓存块一样小时,这种扇出增加会大于在PE CR-tree中获得的增加。
图4C示出了基本CR-tree的第三扩展,被称为FF(“无假命中”)CR-tree,它与上述两种扩展相比会减少叶节点的扇出,而上述两种扩展会增加叶节点的扇出。由于QRMBR技术是一种有损压缩方案,因而搜索结果会成为给定查询的实际应答的超集。只有当QRMBR技术仅应用于内部节点并把原始非相对MBR存储在叶节点内时,才可避免这一点。
该图示出了一种叶节点的结构,在该结构中,对象的MBR 441采用原始非相对格式与指向对象442的指针一起存储。当后续提纯步骤极其昂贵时,FF CR-tree很有用。例如,当管理区域的复杂边界多边形由其MBR加索引时,用于把给定查询形状与通过搜索索引所获得的数据对象的实际形状进行比较的提纯步骤会很昂贵。
表1示出了根据本发明的索引结构的各种实施例的空间要求,其中,N是叶节点条目数,S是以字节为单位的节点大小。假定MBR大小是16字节,则QRMBR大小是4字节,并且指针大小是4字节。假定节点为70%已满,则当N是1,000,000并且S是128时,可计算典型索引大小。注意,PE R-tree是由于使用指针消除技术而成为R-tree的扩展。通过把叶空间除以内部节点的平均扇出减去1,可计算内部节点空间。该分析表明,PE CR-tree在空间要求方面与CR-tree并无不同,并且PE R-tree与R-tree并无不同。
表1
树类型          最大扇出                     节点空间   典型索引大小
   内部    叶         内部     叶
  R-tree     m     m    NS/0.7m(0.7m-1)   NS/0.7m   38.15 MB
  PE R-tree   1.25m     m    NS/0.7m(0.875m-1)   NS/0.7m   35.90 MB
CR-tree 2.5m-4 2.5m-4  NS/(1.75m-2.8)(1.75m-1.8)  NS/(1.75m-2.8) 17.68 MB
PE CR-tree 5m-5 2.5m-4  NS/(1.75m-2.8)(3.5m-2.5)  NS/(1.75m-2.8) 16.71 MB
SE CR-tree 5m-1 2.5m-2 NS/1.75m(3.5m-0.7)  NS/(1.75m-1.4) 14.07 MB
  FF CR-tree   2.5m-4     m   NS/0.7m(1.75m-2.8)  NS/0.7m   32.84 MB
分析结果
在不失通用性的情况下,假定有单位超方形的数据范围。为了简化起见,假定数据对象均匀分布在该范围内,并且查询MBR是超方形。还假定同一高度的R-tree节点大体具有象其他分析工作那样的同一大小的方形MBR。Mathematica 3.0用于进行为目视比较分析结果所需的数值计算。
假定h表示节点高度或层数,并假定叶节点高度为1。假定Mh表示高度为h的节点数。从以上假定得出,
假定ah表示高度为h的节点所覆盖的平均面积。于是,ah是1/Mh。使用Minkowski求和技术,高度为h的节点与给定查询矩形重叠的概率是 ( s d + a h d ) d , 其中,s表示查询矩形大小。于是,与查询矩形重叠的高度为h的节点数是 M h ( s d + a h d ) d 或者是
Figure A0280143500214
通过从叶到根对该公式求和,在R-tree中存取的节点总数是
Figure A0280143500221
另一方面,CR-tree把QRMBR进行比较,以便在R-tree把MBR进行比较的同时,判定是否访问节点。由于QRMBR比其原始MBR大,并且大出平均为一个量化单元(cell)的长度,因而节点存取次数在CR-tree中增加一位。
假定l表示量化层数。于是,各节点均具有ld个量化单元,并且各单元的边长是
Figure A0280143500222
其中,h表示节点高度。由于访问子女节点与否是通过把查询矩形的QRMBR与该子女节点的存储的QRMBR进行比较来判定,因而子女节点的访问概率为 ( s d + a h d / l + a h - 1 d + a h d / l ) d . 通过乘以Mh并从叶到根求和,在CR-tree中存取的节点总数为
Figure A0280143500224
图5A和图5B针对基数为一百万和查询选择性为0.01%示出了公式(2)和(3)。假定指针大小是4字节,并且各节点均为70%已满。还假定MBR大小在二维(“2D”)情况下为16字节,并且随着维数增加而以线性方式增加。假定QRMBR大小为MBR大小的四分之一。
分析结果表明,存取节点数随节点大小增加而减少。减少速度最初较大,但随节点大小增加而减小。对于所有节点大小和所有三维来说,CR-tree超过R-tree两倍以上。
高速缓存未命中数
通过把公式(2)和(3)乘以一次节点存取发生的高速缓存未命中数,可容易计算高速缓存未命中数。为了获得结果,将公式(2)和(3)乘以S/64,其中,S是以字节为单位的节点大小。
图6A和图6B示出了与图4A和图4B相同构成的所计算的高速缓存未命中数。分析结果表明,随着节点大小增加,高速缓存未命中数快速接近最小值,然后缓慢增加。在高速缓存未命中方面,CR-tree大大胜过R-tree达4.3倍。
图6A给出了锯齿形图形,该图形表明,高速缓存未命中数在一定节点大小时突减,而一般随着节点大小而增加。当树高度较小时,会发生这种冲击。例如,当节点大小是448字节或512字节时,4D R-tree的高度为7,但是当节点大小为576字节时,其高度为6。也就是说,当由于高度减少所引起的增益超过由于节点大小增加所引起的开销时,会发生这种冲击。
尽管在高速缓存未命中数方面,最佳一维节点大小被显示为上述高速缓存块大小,然而图6A和图6B表明,节点大小的这种选择在上述多维情况下不是最佳。
图7A和图7B对在查询选择性从0.001%到1%范围内变化的情况下所计算的高速缓存未命中数作了比较。可以看出,在R-tree和CR-tree中,最佳节点大小随着查询选择性增加而增加。
图7A表明,随着查询选择性增加,最佳节点大小按照128B(字节)、192B、320B、640B和960B的次序增加。图7B表明,随着查询选择性增加,最佳节点大小按照64B、128B、128B、256B和320B的次序增加。随着基数和维数增加,最佳节点大小以相同方式增加。
由量化引起的假命中率
叶节点的各量化单元的面积为f/ldN,沿各轴的边长为 并且查询MBR的QRMBR和对象MBR重叠的概率为 ( s d + a d + 2 f / l d N d ) d .
因此,假命中发生概率为 ( s d + a d + 2 f / l d N d ) d - ( s d + a d ) d . 由量化引起的假命中率与实际应答之比除以 ( s d + a d ) d ( 1 + 2 f / l d N d / ( s d + a d ) ) d - 1 . - - - ( 3 )
图8A和图8B示出了当基数为一百万并且查询选择性为0.01%时的公式(4)。在此,假定指针大小是4字节,并且各节点均为70%已满。图8A针对三种不同的QRMBR大小,即:2字节、4字节和8字节,示出了2D CR-tree中的假命中率,图8B针对三种不同维数,即:二维(“2D”)、三维和四维,示出了假命中率。假命中率随着节点大小和维数而增加。在该构成中,采用4字节的QRMBR会发生约一次假命中,但是如图6A和图6B所示,这可避免几十次或几百次高速缓存未命中。
实验结果
为了证实本发明的CR-tree及其变型的优点,在一种运行Solaris2.7的SUN UltraSPARC平台(400MHz CPU,带有8MB L2高速缓存)上进行了一系列实验。
采用了六种索引结构,即:原始R-tree,PE R-tree,CR-tree,PECR-tree,SE CR-tree,以及FF CR-tree。还采用了大量装入算法。在所采用的索引结构内,节点大小从64字节到1024字节不等。使用了16字节MBR,并且QRMBR大小从2字节到8字节不等。除非另有规定,QRMBR的缺省大小是4字节,并且节点为70%已满。
生成了两个合成数据集,这两个合成数据集由位于单位方形内的一百万个小矩形组成。一个数据集均匀分布在单位方形内,而另一数据集具有围绕中心点(0.5,0.5)的高斯(Gaussian)分布,标准偏差为0.25。矩形的平均边长被设定为0.001。
搜索性能
在处理二维区域查询所花的挂钟时间方面,对本发明的各种索引树的搜索性能作了比较。生成同一大小的10000个不同查询矩形,其中心点均匀分布。查询矩形大小从数据空间的0.01%到1%变化。由于数据空间是单位方形,因而查询选择性大致与查询矩形大小相同。
图9A和图9B示出了搜索各种索引所花的测量经过时间,各种索引大量装有均匀数据集,以使各节点为70%已满。随着节点大小增加,搜索时间快速接近最小值。在经过最小值之后,搜索时间缓慢增加。随着查询选择性增加,最小值向右移动。这种趋势对所有六种树都成立,从而与分析结果一致。
CR-tree、PE CR-tree和SE CR-tree形成最快组。R-tree和PE R-tree形成最慢组。FF CR-tree位于这两组之间。
尽管SE CR-tree比CR-tree和PE CR-tree都宽,然而其性能较两者都差。这是由于SE CR-tree使用一节点的父母节点中的匹配条目来计算该节点的参考MBR。在本实施中,该计算涉及约40条指令和16字节的存储器写入。
图10A和图10B示出了搜索大量装有非均匀数据集的索引所花的测量经过时间。从图10A和图10中看出,差别不是很明显,这表明,就任何节点大小而言,所有六种树针对非均匀性或多或少是具有鲁棒性的。
图11A和图11B表明,CR-tree随着基数而很好地改变比例。在本实验中,查询矩形大小被设定为基数的倒数,以使所查找到的数据对象数几乎相同。
更新性能
为了测量更新性能,把100000个数据对象插入大量装有1M均匀数据集的树,然后从该树中消除100000个随机选择的数据对象。
图12A和图12B分别示出了每次插入和删除的测量经过时间。对于给定节点大小,当插入时,CR-tree花费的时间比R-tree约多15%。然而,当扇出相同(例如,CR-tree的节点大小为256字节,R-tree的节点大小为640字节)时,CR-tree的性能与R-tree相同或好于R-tree。原因如下。
当把树下降以用于插入时,选择需要最小放大的子女节点。由于在本实施中,放大计算用去约30条指令,因而它在CR-tree及其变型中,比高速缓存未命中要昂贵。由于在CR-tree中,单个高速缓存块包含约5.6个QRMBR,因而放大计算成本约为每个高速缓存块168条指令,但在400MHz UltraSPARC II上,高速缓存未命中花费约80~100个处理器周期。另一方面,由于针对各个高度,插入仅存取一个节点,因而存取节点数在扇出方面以对数形式减少,但是各节点的放大计算数随着扇出而以线性方式增加。因此,放大计算总数随着扇出而增加。
PE R-tree的性能比R-tree略差,因为它使扇出增加不到25%。由于CR-tree的扇出比R-tree的扇出约大150%,因而就给定节点大小而言,CR-tree的性能比R-tree差。由于PE CR-tree的扇出比R-tree的扇出约大400%,因而就给定节点大小而言,PE CR-tree的性能比R-tree差得多。另一方面,当扇出相同时,通过当节点MBR放大或缩小时避免高速缓存未命中和QRMBR更新开销来确定CR-tree的排序。
图12B表明,删除排序略微不同于插入排序。删除是高选择搜索和节点更新的组合。正如从图9A和图9B预计的那样,随着查询选择性减少,CR-tree的性能类似于R-tree。另一方面,随着节点大小增加,节点更新更昂贵,因为QRMBR的更新成本增加。因此,当节点大小较少时,CR-tree的性能比R-tree好,但随着节点大小增加,两者性能会交叠。
图13A和图13B示出了在插入和删除之后的测量搜索时间。进行本实验是为了检查插入和删除是否影响树的质量。如图9A和图9B所示,就动态插入和删除而言,这些树具有鲁棒性。
量化层数的影响
为了评价量化层数的影响,对由量化引起的假命中率、以MBR大小为单位的量化误差、以及三种不同量化层数,即:24、28和216的搜索时间作了测量。这三种不同量化层数分别与2字节、4字节和8字节的QRMBR对应。本实验使用大量装有1M均匀数据集的树。
图14A、图14B和图14C示出了针对不同量化层数而测量的假命中率。以上表明,假命中率可通过 ( 1 + 2 f / l 2 N / ( s + a ) ) 2 - 1 来估算。假命中率随着扇出或者节点大小而增加,并且随着量化层数和查询选择性而减少。测量结果与分析结果一致。当量化成16位时,搜索结果几乎与查询的精确应答相同。当量化成8位时,搜索结果包含的数据对象与精确应答相比最多多1%。只有当查询选择性较高时,才能使用量化成4位这种作法。
图15A和图15B示出了针对不同量化层数所测量的MBR大小的增加。上述分析表明,对于叶节点,量化单元大小大致为f/(l2N),并且QRMBR把其原始MBR沿各轴延伸了单元长度。因此,QRMBR大小随着扇出或者节点大小而增加,并且随着量化层数而减少。测量结果与分析结果一致。当量化成16位时,MBR大小增加不到0.01%。当量化为8位时,根据节点大小,MBR大小可增加1~7%,但这不会导致与图15A、图15B和图15C所示的搜索结果大小相同的增加。
图16A、图16B和图16C示出了在不同量化层数情况下所测量的搜索时间。这些图表明,当查询选择性较低并且节点大小较大时,粗量化会导致搜索时间延长。这是由于假命中数较大所致。总之,随着查询选择性和基数增加,可量化成较少位,但是随着节点大小增加,有必要量化成更多位。
图17A和图17B示出了存取索引数据量,当最初未对索引数据进行高速缓存时,或者在高速缓存未命中的最坏情况下,该存取索引数据量为L2高速缓存未命中数。就最坏情况的高速缓存未命中而言,六种树从最好到最坏的排列次序为:SE CR-tree,PE CR-tree,CR-tree,FF CR-tree,PE R-tree,R-tree。如图9A和图9B所示,前三个形成一组,后两个形成另一组。该测量结果也与图6A和图6B的分析结果一致。
图18A和图18B示出了使用Perfmon工具测量的L2高速缓存未命中数。UltraSPARC处理器提供两个寄存器计数器,用于测量处理器事件。Perfmon工具用于使这些寄存器计数器对L2高速缓存未命中计数,并用于读取存储在计数器内的值。由于高速缓存命中和遗漏指令,因而L2高速缓存未命中数略微不同于存取索引数据量。由遗漏指令引起的L2高速缓存未命中解释了当节点大小和查询选择性都较低时,测量高速缓存未命中数为何会大于图17A和图17B中的最坏情况高速缓存未命中数。
还可看出,高速缓存命中率随着节点大小而增加。这可由处理器的高速缓存置换策略来解释。由于存储器块被循环地映射为高速缓存块(例如,由物理地址模数以高速缓存大小为模),因而高速缓存后的存储器块将不由连续存储器块来置换。随着节点大小增加,对连续存储器块的存取部分增加,因此,高速缓存命中率也随后增加。
图19A和图19B示出了在不同选择性的情况下测量的关键字比较数。与高速缓存未命中数相比,QRMBR技术不会减少关键字比较数,而是使其略微增加。由于在本实施中,两个MBR之间的重叠测试用去平均不到10条指令,因而避免L2高速缓存未命中比避免至少10个重叠测试更值得。R-tree和PE R-tree具有类似的扇出,并形成一组。PE CR-tree和SECR-tree也具有类似的扇出,并形成另一组。
并行性控制
为了使通过CR-tree实现的性能改善保持显著,需要对索引并行性控制方案进行匹配优化。
由于常规基于散列的加锁/解锁操作对于主存储器数据库来说太昂贵,因而提出了一种更快速的加闩锁和解闩锁操作。通过静态分配加闩锁数据结构,并使其直接可寻址而无需散列,该加闩锁和解闩锁操作使用约20条CISC(IBM 370)指令,这可相当于约100条RISC指令。然而,加闩锁和解闩锁操作对于主存储器索引树的并行性控制来说仍很昂贵,因为使用CSB+-tree和公知加锁耦合技术的本实验表明,各节点仅被加锁约40个处理器周期。
为了防止加锁操作产生附加的高速缓存未命中,用于加锁的数据结构需要保持在匹配索引节点内。为了使之可行,用于加锁的数据结构应尽可能小。例如,本提议从各节点仅使用一个字节。
即使出现加锁冲突,然而这将典型地在几十或几百个时钟周期内予以解决。因此,用于加锁的自旋优于封锁,后者会导致上下文转接用去最多数千条指令。
除了使加锁操作廉价之外,合乎需要的是减少加锁操作次数。这可通过倾向于在诸如目录服务器那样的查找强化应用中搜索来实现。例如,如果现在未进行更新,可使搜索操作给整个树加锁,或者通过使用反转技术使搜索操作不进行任何加锁。
恢复
由于本发明可把索引大小减少几乎60%,因而本发明还可通过缩短磁盘存取时间来加速检查点(checkpointing)和崩溃后重新启动过程。
在主存储器数据库系统中,事务处理耐久性可通过日志记录和临时检查点来实现。主存储器数据库中的检查点是把内存驻留数据库的快照(snapshot)保存到磁盘上的处理。崩溃后重新启动处理包括:装入最新快照,以及重放在最新检查点之后生成的日志记录。因此,显而易见,在检查点和重新启动过程中的磁盘存取时间随着索引大小收缩而减少。例如,与B+-tree相比,CSB+-tree的磁盘存取时间减少10%,并且与R-tree相比,CR-tree的磁盘存取时间减少到不足一半。
图20A和图20B表明,分析结果与实验结果一致。
尽管已参照优选实施例对本发明作了说明,然而本发明不限于这些实施例。本领域普通技术人员将意识到的是,可在不背离本发明的精神和范围的情况下,可对上述实施例的结构和形式作许多修改。

Claims (32)

1.一种方法,用于提高对驻留在主存储器内的多维索引结构进行存取的高速缓存性能,以有助于查看存储在数据库中的数据对象,其中,索引结构包括:内部节点,其具有指向子女节点的指针;以及叶节点,其具有指向数据库对象的指针;该方法包括以下步骤:
使最小边界矩形(“MBR”)与每个节点相关,其中,各MBR均是最小超矩形,其在叶节点情况下封闭相应数据对象,并在内部节点情况下封闭在子女节点内的所有超矩形;
采用MBR的相对表示(“RMBR”)来逐个表示一个或多个所述MBR,MBR的相对表示是相对于一个参考MBR的坐标所表示的MBR的坐标;以及
通过按照有限精度来量化各RMBR并在量化后切掉尾随无效位,把各RMBR压缩成量化RMBR(“QRMBR”)。
2.根据权利要求1所述的方法,其中,所述多维索引结构是R-tree。
3.根据权利要求1所述的方法,其中,所述多维索引结构是R*-tree。
4.根据权利要求1所述的方法,其中,所述多维索引结构是R+-tree。
5.根据权利要求1所述的方法,其中,所述多维索引结构是Hilbert R-tree。
6.根据权利要求1所述的方法,其中,各内部节点均具有多个条目,其中,第一条目具有QRMBR和指针,而剩余条目仅具有QRMBR。
7.根据权利要求1所述的方法,其中,各节点均存储一个参考MBR。
8.根据权利要求1所述的方法,其中,一节点的参考MBR是从存储在该节点的父母节点中的相应QRMBR来获得。
9.根据权利要求1所述的方法,其中,内部节点存储QRMBR,而叶节点存储MBR。
10.根据权利要求1所述的方法,其中,所述数据库驻留在主存储器内。
11.根据权利要求1所述的方法,其中,所述数据库驻留在磁盘内。
12.一种方法,用于提高对驻留在主存储器内的多维索引结构进行存取的高速缓存性能,以有助于查看存储在数据库中的数据对象,其中,索引结构包括:内部节点,其具有指向子女节点的指针;以及叶节点,其具有指向数据库对象的指针;该方法包括以下步骤:
使最小边界形状与每个节点相关,最小边界形状是一个多维形状,该多维形状在叶节点情况下封闭相应数据对象,并在内部节点情况下封闭在子女节点内的所有最小边界形状;
采用相对表示来逐个表示一个或多个所述最小边界形状,该相对表示是相对于一个参考最小边界形状的坐标所表示的最小边界形状的坐标;以及
通过按照有限精度来量化各相对表示并在量化后切掉尾随无效位,把各相对表示压缩成量化表示。
13.根据权利要求12所述的方法,其中,各内部节点均具有多个条目,其中,第一条目具有量化表示和指针,而剩余条目仅具有量化表示。
14.根据权利要求12所述的方法,其中,一节点的参考最小边界形状是从存储在该节点的父母节点中的相应量化表示来获得。
15.根据权利要求12所述的方法,其中,所述数据库驻留在主存储器内。
16.根据权利要求12所述的方法,其中,所述数据库驻留在磁盘内。
17.一种多维索引结构,用于有助于查看存储在数据库中的数据对象,该多维索引结构包括:
多个节点,用于形成树,该多个节点包括:内部节点,其具有指向子女节点的指针;以及叶节点,其具有指向数据对象的指针;
最小边界矩形(“MBR”),其中,各MBR均是最小超矩形,其在叶节点情况下封闭相应数据对象,并在内部节点情况下封闭在子女节点内的所有超矩形;以及
量化的参考MBR(“QRMBR”),针对一个参考MBR,相对于该量化的参考MBR计算一个MBR的相对表示,并按照有限精度来量化该相对表示。
18.根据权利要求17所述的索引结构,其中,所述树是R-tree。
19.根据权利要求17所述的索引结构,其中,所述树是R*-tree。
20.根据权利要求17所述的索引结构,其中,所述树是R+-tree。
21.根据权利要求17所述的索引结构,其中,所述树是HilbertR-tree。
22.根据权利要求17所述的索引结构,其中,各内部节点均具有多个条目,其中,第一条目具有QRMBR和指针,而剩余条目仅具有QRMBR。
23.根据权利要求17所述的索引结构,其中,各节点均存储一个参考MBR。
24.根据权利要求17所述的索引结构,其中,一节点的所述参考MBR是从该节点的父母节点中的参考MBR来获得。
25.根据权利要求17所述的索引结构,其中,所述参考MBR仅被存储在根节点内。
26.根据权利要求17所述的索引结构,其中,内部节点存储QRMBR,而叶节点存储MBR。
27.根据权利要求17所述的索引结构,其中,所述数据库驻留在主存储器内。
28.根据权利要求17所述的索引结构,其中,所述数据库驻留在磁盘内。
29.一种索引树,用于有助于查看存储在数据库中的数据对象,该索引树包括:
多个节点,其包括:内部节点,其具有指向子女节点的指针;以及叶节点,其具有指向数据对象的指针;
最小边界形状,其是一种最小多维形状,该最小多维形状在叶节点情况下封闭相应数据对象,并在内部节点情况下封闭在子女节点内的所有边界形状;以及
最小边界形状的量化相对表示,其是相对于一个参考边界形状而计算,并通过切掉尾随无效位按照有限精度来量化。
30.根据权利要求29所述的索引树,其中,所述多个节点形成R-tree。
31.根据权利要求29所述的索引树,其中,所述数据库驻留在主存储器内。
32.根据权利要求29所述的索引树,其中,所述数据库驻留在磁盘内。
CN02801435A 2001-03-05 2002-03-05 用于提高数据库系统中的高速缓存性能的压缩方案 Pending CN1462399A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US27282801P 2001-03-05 2001-03-05
US60/272,828 2001-03-05

Publications (1)

Publication Number Publication Date
CN1462399A true CN1462399A (zh) 2003-12-17

Family

ID=23041480

Family Applications (1)

Application Number Title Priority Date Filing Date
CN02801435A Pending CN1462399A (zh) 2001-03-05 2002-03-05 用于提高数据库系统中的高速缓存性能的压缩方案

Country Status (5)

Country Link
US (5) US7283987B2 (zh)
EP (1) EP1366437A1 (zh)
JP (1) JP2004519774A (zh)
CN (1) CN1462399A (zh)
WO (1) WO2002071270A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440280A (zh) * 2013-08-13 2013-12-11 江苏华大天益电力科技有限公司 一种应用于海量空间数据检索的索引方法及装置

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7283987B2 (en) * 2001-03-05 2007-10-16 Sap Ag Compression scheme for improving cache behavior in database systems
US7080065B1 (en) * 2001-06-22 2006-07-18 Oracle International Corporation Query pruning using interior rectangles in an R-tree index
US8019788B1 (en) 2002-09-30 2011-09-13 Siemens Product Lifecycle Management Software Inc. Data compression and file segmentation in directmodel JT datastores
US7039646B2 (en) * 2002-12-18 2006-05-02 International Business Machines Corporation Method and system for compressing varying-length columns during index high key generation
US20040230554A1 (en) * 2003-05-15 2004-11-18 Ning An Method of adding data in bulk to a spatial database
US7181457B2 (en) * 2003-05-28 2007-02-20 Pervasive Software, Inc. System and method for utilizing compression in database caches to facilitate access to database information
US7296030B2 (en) * 2003-07-17 2007-11-13 At&T Corp. Method and apparatus for windowing in entropy encoding
US7509618B1 (en) * 2004-05-12 2009-03-24 Altera Corporation Method and apparatus for facilitating an adaptive electronic design automation tool
US7328222B2 (en) * 2004-08-26 2008-02-05 Oracle International Corporation Method and apparatus for preserving data coherency in a database by generating a command object that includes instructions for writing a data record to a local cache
US7444343B2 (en) * 2006-03-31 2008-10-28 Microsoft Corporation Hybrid location and keyword index
US7646940B2 (en) * 2006-04-04 2010-01-12 Microsoft Corporation Robust indexing and retrieval of electronic ink
US7650431B2 (en) * 2006-08-28 2010-01-19 Microsoft Corporation Serving locally relevant advertisements
JP5220301B2 (ja) * 2006-11-10 2013-06-26 ペンタックスリコーイメージング株式会社 交換レンズ及びレンズデータ通信方法
JP5071478B2 (ja) * 2007-05-11 2012-11-14 日本電気株式会社 データベース構造化支援システム
EP2158765A1 (en) * 2007-06-04 2010-03-03 BAE Systems PLC Indexing and compression of results of computational fluid dynamics simulations
US8204313B2 (en) * 2007-08-30 2012-06-19 Leica Geosystems Ag Rapid, spatial-data viewing and manipulating including data partition and indexing
US8244705B1 (en) * 2008-02-22 2012-08-14 Adobe Systems Incorporated Rating system and spatial searching therein
US8024288B2 (en) * 2008-08-27 2011-09-20 Oracle International Corporation Block compression using a value-bit format for storing block-cell values
US9047330B2 (en) * 2008-10-27 2015-06-02 Ianywhere Solutions, Inc. Index compression in databases
US8855665B2 (en) * 2008-12-17 2014-10-07 Avaya Inc. Location privacy enforcement in a location-based services platform
US20100318588A1 (en) * 2009-06-12 2010-12-16 Avaya Inc. Spatial-Temporal Event Correlation for Location-Based Services
US9251214B2 (en) * 2010-04-08 2016-02-02 Microsoft Technology Licensing, Llc In-memory database system
US8819076B2 (en) * 2010-08-05 2014-08-26 Wavemarket, Inc. Distributed multidimensional range search system and method
US8527546B2 (en) 2010-11-25 2013-09-03 International Business Machines Corporation Generating a checkpoint image for use with an in-memory database
US8370338B2 (en) * 2010-12-03 2013-02-05 Xerox Corporation Large-scale asymmetric comparison computation for binary embeddings
US8548057B2 (en) 2011-01-25 2013-10-01 Microsoft Corporation Video coding redundancy reduction
US8924365B2 (en) 2011-02-08 2014-12-30 Wavemarket, Inc. System and method for range search over distributive storage systems
US9155320B2 (en) 2011-07-06 2015-10-13 International Business Machines Corporation Prefix-based leaf node storage for database system
US8712961B2 (en) * 2011-09-23 2014-04-29 International Business Machines Corporation Database caching utilizing asynchronous log-based replication
CN102521020B (zh) * 2011-10-26 2014-05-21 华为终端有限公司 用于移动终端的应用屏幕截图方法和装置
US8843456B2 (en) * 2011-12-06 2014-09-23 International Business Machines Corporation Database table compression
JP5863494B2 (ja) * 2012-02-13 2016-02-16 キヤノン株式会社 情報処理装置、及びその制御方法、プログラム
US20140330578A1 (en) * 2012-03-13 2014-11-06 Theodore Pincus Electronic medical history (emh) data management system for standard medical care, clinical medical research, and analysis of long-term outcomes
US9749645B2 (en) * 2012-06-22 2017-08-29 Microsoft Technology Licensing, Llc Coded-block-flag coding and derivation
US8612402B1 (en) 2012-10-26 2013-12-17 Stec, Inc. Systems and methods for managing key-value stores
US9772864B2 (en) 2013-04-16 2017-09-26 Arm Limited Methods of and apparatus for multidimensional indexing in microprocessor systems
US9800684B2 (en) 2014-01-20 2017-10-24 Prevoty, Inc. Systems and methods for statistical caching
US9772848B2 (en) * 2014-11-14 2017-09-26 Intel Corporation Three-dimensional morton coordinate conversion processors, methods, systems, and instructions
GB201515950D0 (en) * 2015-09-09 2015-10-21 Ibm Method for processing large data tables
US9984004B1 (en) * 2016-07-19 2018-05-29 Nutanix, Inc. Dynamic cache balancing
CN106649859B (zh) * 2016-12-30 2019-10-29 中国移动通信集团江苏有限公司 用于对基于字符串的文件进行压缩的方法和装置
US11016888B2 (en) * 2018-12-20 2021-05-25 Ebay Inc. Compressed cache using dynamically stacked roaring bitmaps
US11416485B2 (en) 2019-03-28 2022-08-16 Sap Se Dynamic query expressions
US11360977B2 (en) 2019-04-01 2022-06-14 Sap Se Selectively allowing query optimization in query processing
US11640469B2 (en) 2019-06-21 2023-05-02 Ventech Solutions, Inc. Method and system for cloud-based software security vulnerability diagnostic assessment
US11544385B2 (en) 2019-07-29 2023-01-03 Ventech Solutions, Inc. Method and system for dynamic testing with diagnostic assessment of software security vulnerability
US11455304B2 (en) 2019-09-20 2022-09-27 Sap Se Graph-based predictive cache

Family Cites Families (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06223198A (ja) * 1993-01-26 1994-08-12 Hitachi Ltd 光線追跡による画像生成装置及び方法
AU679553B2 (en) * 1993-07-07 1997-07-03 European Computer-Industry Research Centre Gmbh Database structures
US6427147B1 (en) * 1995-12-01 2002-07-30 Sand Technology Systems International Deletion of ordered sets of keys in a compact O-complete tree
US5781906A (en) * 1996-06-06 1998-07-14 International Business Machines Corporation System and method for construction of a data structure for indexing multidimensional objects
US5968109A (en) * 1996-10-25 1999-10-19 Navigation Technologies Corporation System and method for use and storage of geographic data on physical media
US5852822A (en) * 1996-12-09 1998-12-22 Oracle Corporation Index-only tables with nested group keys
US5963956A (en) * 1997-02-27 1999-10-05 Telcontar System and method of optimizing database queries in two or more dimensions
JP3466054B2 (ja) * 1997-04-18 2003-11-10 富士通株式会社 グループ化と集計演算処理方式
US6014466A (en) * 1997-07-10 2000-01-11 Hughes Electronics Corporation Object-based video coding of arbitrarily shaped objects using lapped orthogonal transforms (LOTs) defined on rectangular and L-shaped regions
US6252605B1 (en) * 1997-08-01 2001-06-26 Garmin Corporation System and method for packing spatial data in an R-tree
US6061678A (en) * 1997-10-31 2000-05-09 Oracle Corporation Approach for managing access to large objects in database systems using large object indexes
US6134541A (en) * 1997-10-31 2000-10-17 International Business Machines Corporation Searching multidimensional indexes using associated clustering and dimension reduction information
US6148295A (en) * 1997-12-30 2000-11-14 International Business Machines Corporation Method for computing near neighbors of a query point in a database
KR100280090B1 (ko) * 1998-01-23 2001-02-01 이계철 공간 데이터베이스 시스템에서 최소최대점필터를 이용한 다중 여과처리 방법
US6154746A (en) * 1998-04-22 2000-11-28 At&T Corp. High-dimensional index structure
US6263334B1 (en) * 1998-11-11 2001-07-17 Microsoft Corporation Density-based indexing method for efficient execution of high dimensional nearest-neighbor queries on large databases
US6415227B1 (en) * 1999-04-21 2002-07-02 American Gnc Corporation Enhanced global positioning system and map navigation process
US6381605B1 (en) * 1999-05-29 2002-04-30 Oracle Corporation Heirarchical indexing of multi-attribute data by sorting, dividing and storing subsets
US6470344B1 (en) * 1999-05-29 2002-10-22 Oracle Corporation Buffering a hierarchical index of multi-dimensional data
KR100344530B1 (ko) * 1999-12-20 2002-07-24 한국과학기술원 시계열 데이터베이스에서 윈도우 구성의 이원성을 사용한 서브시퀀스 매칭방법
JP3513562B2 (ja) * 2000-04-20 2004-03-31 インターナショナル・ビジネス・マシーンズ・コーポレーション 形状解析システム、3次元形状モデルの差分検出システム、類似形状検索システム、形状解析方法及び記憶媒体
US6636846B1 (en) * 2000-04-28 2003-10-21 International Business Machines Corporation Method for providing a system maintained materialized functionally dependent column for a database management system
US6868410B2 (en) * 2000-06-05 2005-03-15 Stephen E. Fortin High-performance location management platform
US6757686B1 (en) * 2000-06-14 2004-06-29 International Business Machines Corporation Method and apparatus for representing database and query information using interval hash tree
US6691126B1 (en) * 2000-06-14 2004-02-10 International Business Machines Corporation Method and apparatus for locating multi-region objects in an image or video database
US6601062B1 (en) * 2000-06-27 2003-07-29 Ncr Corporation Active caching for multi-dimensional data sets in relational database management system
US20020087570A1 (en) * 2000-11-02 2002-07-04 Jacquez Geoffrey M. Space and time information system and method
GB0117157D0 (en) * 2001-07-16 2001-09-05 Imec Inter Uni Micro Electr Extraction, hierarchical representation and flexible compression of surface meshes derived from 3D data
US6801661B1 (en) * 2001-02-15 2004-10-05 Eastman Kodak Company Method and system for archival and retrieval of images based on the shape properties of identified segments
US7283987B2 (en) * 2001-03-05 2007-10-16 Sap Ag Compression scheme for improving cache behavior in database systems
US6671694B2 (en) * 2001-06-04 2003-12-30 Hewlett-Packard Development Company, L.P. System for and method of cache-efficient digital tree with rich pointers
US6654760B2 (en) * 2001-06-04 2003-11-25 Hewlett-Packard Development Company, L.P. System and method of providing a cache-efficient, hybrid, compressed digital tree with wide dynamic ranges and simple interface requiring no configuration or tuning
US7080065B1 (en) * 2001-06-22 2006-07-18 Oracle International Corporation Query pruning using interior rectangles in an R-tree index
KR100518781B1 (ko) * 2001-10-17 2005-10-06 한국과학기술원 하이퍼사각형 기반의 다차원 데이터 세그먼테이션 장치,클러스터링 장치 및 그 방법
KR20040055901A (ko) * 2002-12-23 2004-06-30 한국전자통신연구원 점진적인 공간 데이터 서비스 시스템 및 방법
US7640516B2 (en) * 2003-09-30 2009-12-29 Hewlett-Packard Development Company, L.P. Arranging graphic objects on pages

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103440280A (zh) * 2013-08-13 2013-12-11 江苏华大天益电力科技有限公司 一种应用于海量空间数据检索的索引方法及装置

Also Published As

Publication number Publication date
US9069809B2 (en) 2015-06-30
JP2004519774A (ja) 2004-07-02
US20140081930A1 (en) 2014-03-20
US8589369B2 (en) 2013-11-19
WO2002071270A1 (en) 2002-09-12
EP1366437A1 (en) 2003-12-03
US20100287144A1 (en) 2010-11-11
US20080033989A1 (en) 2008-02-07
US20120124010A1 (en) 2012-05-17
US8121987B2 (en) 2012-02-21
US7283987B2 (en) 2007-10-16
US20020169784A1 (en) 2002-11-14
US7797296B2 (en) 2010-09-14

Similar Documents

Publication Publication Date Title
CN1462399A (zh) 用于提高数据库系统中的高速缓存性能的压缩方案
Manegold et al. Optimizing database architecture for the new bottleneck: memory access
Sidirourgos et al. Column imprints: a secondary index structure
US7158996B2 (en) Method, system, and program for managing database operations with respect to a database table
US8396861B2 (en) Determining a density of a key value referenced in a database query over a range of rows
CN107077480B (zh) 一种构建列存储数据库的方法和系统
Weber et al. An approximation based data structure for similarity search
US20060085484A1 (en) Database tuning advisor
Yu et al. Two birds, one stone: a fast, yet lightweight, indexing scheme for modern database systems
Pibiri et al. Handling massive N-gram datasets efficiently
Dziedzic et al. Columnstore and B+ tree-Are Hybrid Physical Designs Important?
Amur et al. Memory-efficient groupby-aggregate using compressed buffer trees
He et al. Cache-oblivious databases: Limitations and opportunities
Zhang et al. CARMI: a cache-aware learned index with a cost-based construction algorithm
Begley et al. Mcjoin: A memory-constrained join for column-store main-memory databases
Shen et al. An efficient LSM-tree-based SQLite-like database engine for mobile devices
CN113485638B (zh) 一种面向海量天文数据的存取优化系统
Villarroya et al. Enabling efficient distributed spatial join on large scale vector-raster data lakes
Li et al. Optimizing nonindexed join processing in flash storage-based systems
Dittrich et al. Dwarfs in the rearview mirror: How big are they really?
Nimako et al. Chunked extendible dense arrays for scientific data storage
Wang et al. HICAMP bitmap: space-efficient updatable bitmap index for in-memory databases
US8140520B2 (en) Embedding densities in a data structure
Byun et al. A column-aware index management using flash memory for read-intensive databases
Olken Physical database support for scientific and statistical database management

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication