CN105279171B - 在压缩的可变长度字符串上进行谓词评估的方法和设备 - Google Patents
在压缩的可变长度字符串上进行谓词评估的方法和设备 Download PDFInfo
- Publication number
- CN105279171B CN105279171B CN201410301261.7A CN201410301261A CN105279171B CN 105279171 B CN105279171 B CN 105279171B CN 201410301261 A CN201410301261 A CN 201410301261A CN 105279171 B CN105279171 B CN 105279171B
- Authority
- CN
- China
- Prior art keywords
- predicate
- result
- range
- bound
- predicate evaluation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000011156 evaluation Methods 0.000 title claims abstract description 174
- 230000006835 compression Effects 0.000 title claims abstract description 105
- 238000007906 compression Methods 0.000 title claims abstract description 105
- 238000000034 method Methods 0.000 title claims abstract description 51
- 230000004044 response Effects 0.000 claims description 14
- 230000006837 decompression Effects 0.000 claims description 12
- 230000035945 sensitivity Effects 0.000 claims description 2
- 238000012545 processing Methods 0.000 abstract description 23
- 230000008901 benefit Effects 0.000 abstract description 11
- 238000003860 storage Methods 0.000 description 18
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 12
- 235000013399 edible fruits Nutrition 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 241000700605 Viruses Species 0.000 description 3
- 230000002155 anti-virotic effect Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000005056 compaction Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000003825 pressing Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- INJRKJPEYSAMPD-UHFFFAOYSA-N aluminum;silicic acid;hydrate Chemical compound O.[Al].[Al].O[Si](O)(O)O INJRKJPEYSAMPD-UHFFFAOYSA-N 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000009385 viral infection Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 230000001133 acceleration Effects 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000004321 preservation Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/90335—Query processing
- G06F16/90344—Query processing by using string matching techniques
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
公开了一种在压缩的可变长度字符串上进行谓词评估的方法和设备。所述方法包括:确定谓词的假阳性范围的上下界,所述假阳性范围是所述谓词评估的结果可能产生假阳性错误的范围;对所述假阳性范围的上下界进行压缩编码;将所述压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行第一比较;以及至少根据第一比较的结果确定谓词评估的结果。该方法充分利用了在压缩数据上进行谓词评估的性能优势,提高了查询处理的性能。
Description
技术领域
本发明涉及关系型数据库领域,更具体地,涉及一种在压缩的可变长度字符串上进行谓词评估(predicate evaluation)的方法和设备。
背景技术
近来的研究已经表明,在关系型数据库中进行查询处理时,在数据库中存储的压缩数据上直接进行谓词评估、而不是将压缩数据解压缩之后再对解压缩的数据进行谓词评估能够大大提高查询处理的性能。在本领域中,通常将依序包含自变量、操作关系运算符或逻辑运算符、连接常量且所述自变量不包含函数、表达式、或分句的谓词称作简单谓词,简称谓词。在数据库语言中,所述操作关系运算符或逻辑运算符可以包括“=”、“>”、“>=”、“<”、“<=”、“NOT”、“IN”、“LIKE”、“BETWEEN”等。所谓对数据进行谓词评估,即确定该数据是否满足该谓词,如果满足则谓词评估结果为真,否则谓词评估结果为假。
在数据库中存储的压缩数据上直接进行谓词评估的关键是压缩编码的保序,即压缩数据的顺序关系应当与解压缩(原始)数据的顺序关系保持一致,以确保谓词评估的结果正确。例如,假设谓词是‘age<10’,则对于满足该谓词的age的值(例如,1,2,…,9),其压缩编码后的值encoded(age)应当小于该谓词中的常量“10”压缩编码后的值encoded(10)。目前,对于诸如整型、小数、双精度、定长字符串等数据类型,本领域中已经提出了一些能够较好地保序的压缩编码方案。然而,对于可变长度字符串数据类型,尚无令人满意的解决方法,其原因在于在关系型数据库中,可变长度字符串存在两种比较语义:尾部空格不敏感语义和尾部空格敏感语义。
在尾部空格不敏感语义下对可变长度字符串进行比较时,具有不同长度的字符串将在低位用空格字符填充至相同长度后再进行比较;而在尾部空格敏感语义下,具有不同长度的字符串将直接按照字母顺序进行比较。例如,对于如下5个用16进制的ASCII码表示的可变长度字符串{x'31',x'3118',x'3120',x'312020',x'3132'},在尾部空格不敏感语义下,低位填充空格字符(空格字符的ASCII码为20)后分别对应于{x'312020',x'311820',x'312020',x'312020',x'313220'},因此其排序是x'3118'<x'31'=x'3120'=x'312020'<x'3132';而在尾部空格敏感语义下这5个可变长度字符串的排序则是x'31'<x'3118'<x'3120'<x'312020'<x'3132'。可见,在尾部空格不敏感语义和尾部空格敏感语义下,可变长度字符串具有不同的排序,因此很难找到一种对于这两种语义均能够保序的适当的压缩编码方式。
针对这一情况,现有的解决方案通常是在对原始数据进行压缩编码时采用使得压缩编码后的数据的顺序与尾部空格敏感语义下的顺序一致的压缩编码方法,该方案在按照尾部空格敏感语义进行谓词评估时,可以直接在压缩编码的数据上进行谓词评估,而如果希望按照尾部空格不敏感语义进行谓词评估,则需要对压缩编码的数据进行解压缩,随后对解压缩的数据进行谓词评估。显然,这种解决方案不支持按照尾部空格不敏感语义在压缩编码的数据上进行谓词评估,因此不能很好地利用在压缩数据上直接进行谓词评估的性能优势。
发明内容
鉴于以上问题而提出了本发明。本发明的目的并不是提出一种对于尾部空格不敏感语义和尾部空格敏感语义均能够保序的新的压缩编码方式,而是提供一种在对于按照与尾部空格敏感语义下的顺序一致的压缩编码方式编码的可变长度字符串按照尾部空格不敏感语义进行谓词评估时、不需进行解压缩就能够直接在压缩编码的可变长度字符串上进行谓词评估的方法和设备。
根据本发明的一个方面,提供了一种在压缩的可变长度字符串上进行谓词评估的方法,包括:确定谓词的假阳性范围的上下界,所述假阳性范围是所述谓词评估的结果可能产生假阳性错误的范围;对所述假阳性范围的上下界进行压缩编码;将所述压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行第一比较;以及至少根据第一比较的结果确定谓词评估的结果。
根据本发明的另一个方面,提供了一种在压缩的可变长度字符串上进行谓词评估的设备,包括:范围确定单元,配置为确定谓词的假阳性范围的上下界,所述假阳性范围是所述谓词评估的结果可能产生假阳性错误的范围;编码单元,配置为对所述假阳性范围的上下界进行压缩编码;比较单元,配置为将所述压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行第一比较;以及结果确定单元,配置为至少根据所述第一比较的结果确定谓词评估的结果。
根据本发明上述方面的方法和设备在对于按照与尾部空格敏感语义下的顺序一致的压缩编码方式编码的可变长度字符串按照尾部空格不敏感语义进行谓词评估时,能够直接在压缩编码的可变长度字符串上进行谓词评估而不需解压缩所述字符串,从而利用了在压缩数据上进行谓词评估的性能优势,提高了查询处理的性能。另一方面,通过根据本发明上述方面的方法和设备,使得与尾部空格敏感语义下的顺序一致的压缩编码方式可以同时支持在两种语义下在压缩数据上的谓词评估,从而增强了可用性。
附图说明
通过结合附图对本公开示例性实施方式进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显,其中,在本公开示例性实施方式中,相同的参考标号通常代表相同部件。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。
图2示出了根据本发明第一实施例的在压缩的可变长度字符串上进行谓词评估的方法的流程图。
图3示出了在根据本发明第一实施例的方法中根据第一比较的结果和第二比较的结果确定谓词评估的结果的处理的流程图。
图4示出了根据本发明第二实施例的在压缩的可变长度字符串上进行谓词评估的方法的流程图。
图5例示了根据本发明实施例的在压缩的可变长度字符串上进行谓词评估的设备的结构的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实施方式。虽然附图中显示了本公开的优选实施方式,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实施方式所限制。相反,提供这些实施方式是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
图1示出了适于用来实现本发明实施方式的示例性计算机系统/服务器12的框图。图1显示的计算机系统/服务器12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图1所示,计算机系统/服务器12以通用计算设备的形式表现。计算机系统/服务器12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
计算机系统/服务器12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被计算机系统/服务器12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。计算机系统/服务器12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图1未显示,通常称为“硬盘驱动器”)。尽管图1中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括——但不限于——操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
计算机系统/服务器12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该计算机系统/服务器12交互的设备通信,和/或与使得该计算机系统/服务器12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,计算机系统/服务器12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与计算机系统/服务器12的其它模块通信。应当明白,尽管图中未示出,可以结合计算机系统/服务器12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
[第一实施例]
下面将参考图2对根据本发明第一实施例的在压缩的可变长度字符串上进行谓词评估的方法进行描述。在该实施例中,以压缩的可变长度字符串是利用使得压缩编码后的数据的顺序与尾部空格敏感语义下的顺序一致的压缩编码方法压缩得到的、并且在尾部空格不敏感语义下进行所述谓词评估为例进行说明。
首先对本实施例的基本思想及所涉及的技术术语进行简单的说明。
尽管如上文中提到的,在尾部空格不敏感语义和尾部空格敏感语义下,可变长度字符串具有不同的排序,因此很难找到一种对于这两种语义均能够保序的适当的压缩编码方式,但是实际大多数可变长度字符串在这两种语义下的排序大致是相同的,仅少部分特殊字符串的排序可能是不同的。因此,对于一种语义(例如尾部空格敏感语义)严格保序的压缩编码方式对于另一种语义(例如尾部空格不敏感语义)是大致保序的。也就是说,在例如对于按照与尾部空格敏感语义下的顺序一致的压缩编码方式压缩的可变长度字符串按照尾部空格不敏感语义进行谓词评估时,大多数压缩字符串的谓词评估结果是正确的,仅很少一部分的谓词评估结果可能是错误的。例如,假设谓词是col>‘b’,col包括如下7个varchar(3)类型的可变长度字符串{‘b’,‘ba’,,‘ab’,‘ght’,‘bΔ’(假设Δ代表小于空格字符的特殊字符),‘bbΔ’}。能够理解,这7个字符串在尾部空格不敏感语义下的排序是 而其采用与尾部空格敏感语义下的顺序一致的压缩编码方式压缩后的排序为 由此可见,在尾部空格不敏感语义下直接在压缩的字符串上进行谓词评估时,大多数字符串的谓词评估结果都是正确的,仅尾部包含空格字符或小于空格字符的特殊字符的字符串‘bΔ’和的谓词评估结果是错误的。更明确的说,由于在尾部空格不敏感语义下,‘bΔ’<‘b’,因此在对它们进行谓词评估时,评估结果应当为假;然而,由于压缩编码后的encoded(‘bΔ’)>encoded(‘b’), 所以在直接在压缩后的字符串上进行谓词评估时,错误地确定评估结果为真。鉴于上述情况,在本实施例中,在尾部空格不敏感语义下进行谓词评估时,直接在压缩编码的可变长度字符串上进行谓词评估,并且仅当谓词评估的结果有问题时,解压缩该压缩的可变长度字符串,并对解压缩后的可变长度字符串进行谓词评估以得到正确的谓词评估的结果。
具体的,本领域中已知,对于诸如整型谓词、小数谓词、定长字符串谓词等,均可以改写为谓词范围的形式。例如,整型谓词‘age>10’可以改写为age在(10,+∞)的区间范围内;定长字符串谓词‘name=8’可以改写为name在[8,8]的区间范围内。按照这一思路,在本实施例中,将可变长度字符串谓词改写为谓词范围的形式,并利用统计学中的假阳性(false positive)错误和假阴性(false negative)错误来确定在压缩的可变长度字符串上的谓词评估的结果是否有问题。
假阳性错误又叫第一型错误,如果在假设检定中零假设事实上成立,但统计检验的结果不支持零假设(拒绝零假设),则这种错误称为第一型错误;假阴性错误又叫第二型错误,如果零假设事实上不成立,但统计检验的结果支持零假设(接受零假设),则这种错误称为第二型错误。例如,对于计算机防病毒软件来说,如果防病毒软件把没有感染病毒的文件报告为感染了病毒,就是假阳性错误,通俗的说就是“误报”;相反,如果防病毒软件把感染了病毒的文件报告为没有感染病毒(即没有检测出病毒),就是假阴性错误,通俗的说就是“漏报”。在本实施例中,对于一个可变长度字符串谓词,分别确定其假阳性范围和假阴性范围,其中假阳性范围是谓词评估的结果可能产生假阳性错误的范围,假阴性范围是谓词评估的结果可能产生假阴性错误的范围。能够理解,假阳性范围比正确的谓词范围要大或至少等于该正确的谓词范围,因此所有满足谓词的可变长度字符串都会落在该范围内(即对于该假阳性范围的谓词评估结果为真),并且一些不满足谓词的可变长度字符串可能也会落在该范围内;假阴性范围比正确的谓词范围要小或至多等于该正确的谓词范围,因此所有落在该范围内(即对于该假阴性范围的谓词评估结果为真)的可变长度字符串都满足谓词,并且一些满足谓词的可变长度字符串可能没有落在该范围内。进一步可以推知,如果压缩字符串对于假阳性范围和假阴性范围内的评估结果一致,即都为真或都为假,则谓词评估结果是正确的;而如果压缩字符串对于假阳性范围和假阴性范围内的评估结果不一致,则无法确定谓词评估结果是什么,因此可以解压缩该压缩的可变长度字符串,并对解压缩后的可变长度字符串进行谓词评估。
回到图2,如图2所示,在步骤S21中,确定谓词的假阳性范围的上下界,所述假阳性范围是所述谓词评估的结果可能产生假阳性错误的范围;在步骤S22中,确定所述谓词的假阴性范围的上下界,所述假阴性范围是所述谓词评估的结果可能产生假阴性错误的范围。
如前所述,假阳性错误和假阴性错误是统计学中的公知术语。能够理解,在本实施例中,假阳性错误是指在谓词评估的正确结果为假的情况下错误地确定结果为真的错误,假阴性错误是指在谓词评估的正确结果为真的情况下错误地确定结果为假的错误。假阳性范围的上下界和假阴性范围的上下界可以根据具体的谓词来确定,以下举例予以说明。
在一个示例中,对于谓词Col=‘ab’(假设Col为varchar(6)类型),能够理解,在对于按照与尾部空格敏感语义下的顺序一致的压缩编码方式编码的可变长度字符串按照尾部空格不敏感语义进行谓词评估时,诸如 等尾部为空格的可变长度字符串的谓词评估结果可能是有问题的。因为上述字符串采用与尾部空格敏感语义下的顺序一致的压缩编码方式压缩编码得到的值均大于谓词中的常量‘ab’压缩编码后的值,由此会导致认为字符串不满足谓词Col=‘ab’;但是在尾部空格不敏感语义下,具有不同长度的字符串将在低位用空格字符填充至相同长度后再进行比较,因此与‘ab’是相等,即实际应该是满足谓词Col=‘ab’的。因此对于谓词Col=‘ab’,可以将假阳性范围设为从而将上述等包含在该范围内,进而使得这些字符串对于假阳性范围的谓词评估结果为真。可以看出,该假阳性范围比正确的谓词范围要大,因此所有满足谓词的可变长度字符串都会落在该范围内。另一方面,对于谓词Col=‘ab’,可以将假阴性范围设为[‘ab’,‘ab’]。如上文所述,该假阴性范围比正确的谓词范围要小,其可能会漏掉诸如等实际满足谓词的字符串,但是所有落在该范围内的可变长度字符串都满足谓词。可以按照这一思路类似的确定其他谓词的假阳性范围和假阴性范围。例如,表1示出了当Col为varchar(6)类型时,对于几种常见的谓词所确定的示例性的假阳性范围的上下界和假阴性范围的上下界。
表1
表1中所列出的仅仅是几种常见的谓词,其他谓词也可以类似的确定假阳性范围和假阴性范围。例如对于谓词Col<>‘ab’,其假阳性范围和假阴性范围分别可以使用上表中示出的谓词Col=‘ab’的假阳性范围的补集和假阴性范围的补集;再比如,对于谓词ColBETWEEN val1AND val2,可以将其拆成Col>=val1AND Col<=val2,并分别应用上表中列出的范围。
此外,表1中是以谓词中包含的常量为具体值‘ab’为例而给出的假阳性范围和假阴性范围,其对于谓词中包含的常量为诸如‘bc’、‘XYZ’、‘X12ab’等的情形也同样适用。更明确的说,如果我们用padForUB(val)来表示在谓词中包含的常量val尾部填充空格至等于可变长度字符串的设定长度(例如,如果Col为varchar(6)则填充空格至长度为6),则上面的表1可以一般化为如下的表1’。
表1’
谓词 | 假阳性范围 | 假阴性范围 |
Col=val | [val,padForUB(val)] | [val,val] |
Col<val | [-∞,padForUB(val)) | [-∞,val) |
Col<=val | [-∞,padForUB(val)] | [-∞,val] |
Col>val | [val,+∞] | (padForUB(val),+∞] |
Col>=val | [val,+∞] | [padForUB(val),+∞] |
另一方面,表1中对于各个谓词所给出的假阳性范围和假阴性范围仅仅是一个示例,本领域技术人员可以根据具体的谓词以及具体要求(例如,谓词评估的准确度、速度等)来确定假阳性范围的上下界和假阴性范围的上下界,只要确保假阳性范围比正确的谓词范围大或至少等于该正确的谓词范围以保证所有满足谓词的可变长度字符串都会落在该范围内、而假阴性范围比正确的谓词评估的范围小或至多等于该正确的谓词范围以保证所有落在该范围内的可变长度字符串都满足谓词即可。例如,对于表1中的谓词Col=‘ab’,Col<‘ab’,Col<=‘ab’,可以将其假阳性范围的上界扩展至‘ab!’或者‘ab#’或者‘ab*’等等(‘!’、‘#’、‘*’字符的ASCII码均比空格字符的ASCII码大),甚至进一步扩展至‘aba’、‘ac’、+∞等等。再比如,对于谓词Col>‘ab’,Col>=‘ab’,可以将其假阴性范围的下界缩窄至‘ab!’或者‘ab#’或者‘ab*’等等,甚至进一步缩窄至‘aba’、‘ac’、+∞等等,并且可以将其假阳性范围的下界扩展至‘aa’、‘aZ’、-∞等等。
在另一个示例中,对于谓词(假设Col为varchar(6)类型),能够理解,在对于按照与尾部空格敏感语义下的顺序一致的压缩编码方式编码的可变长度字符串按照尾部空格不敏感语义进行谓词评估时,诸如‘ab’的可变长度字符串的谓词评估结果可能是有问题的。因为该字符串采用与尾部空格敏感语义下的顺序一致的压缩编码方式压缩编码得到的值小于谓词中的常量压缩编码后的值,由此会导致认为字符串‘ab’不满足谓词 但是在尾部空格不敏感语义下,具有不同长度的字符串将在低位用空格字符填充至相同长度后再进行比较,因此‘ab’是大于的,即‘ab’实际应该是满足谓词的。因此对于谓词可以将假阳性范围设为[‘ab’,+∞],从而将上述‘ab’包含在该范围内,进而使得该字符串对于假阳性范围的谓词评估结果为真。可以看出,该假阳性范围比正确的谓词范围要大,因此所有满足谓词的可变长度字符串都会落在该范围内。另一方面,对于谓词可以将假阴性范围设为如上文所述,该假阴性范围比正确的谓词范围要小,其可能会漏掉一些实际满足谓词的字符串,但是所有落在该范围内的可变长度字符串都满足谓词。可以按照这一思路类似的确定其他谓词的假阳性范围和假阴性范围。例如,表2示出了当Col为varchar(6)类型时,对于几种常见的谓词所确定的示例性的假阳性范围的上下界和假阴性范围的上下界。
表2
表2中所列出的仅仅是几种常见的谓词,其他谓词也可以类似的确定假阳性范围和假阴性范围。例如对于谓词其假阳性范围和假阴性范围分别可以使用上表中示出的谓词的假阳性范围的补集和假阴性范围的补集;再比如,对于谓词Col BETWEEN val1AND val2,可以将其拆成Col>=val1AND Col<=val2,并分别应用上表中列出的范围。
此外,表2中是以谓词中包含的常量为具体值为例而给出的假阳性范围和假阴性范围,其对于谓词中包含的常量为诸如‘bcΔa’、‘X1aΔa’等的情形也同样适用。更明确的说,如果我们用stripForLB(val)来表示谓词中包含的常量字符串val中从最高位字符到第一个小于空格的字符的前一个字符形成的字符串,用padForUB(val)来表示在谓词中包含的常量val尾部填充空格至等于可变长度字符串的设定长度(例如,如果Col为varchar(6)则填充空格至长度为6),则上面的表2可以一般化为如下的表2’。
表2’
另一方面,与表1中类似,表2中对于各个谓词所给出的假阳性范围和假阴性范围仅仅是一个示例,本领域技术人员同样可以根据具体的谓词以及具体要求(例如,谓词评估的准确度、速度等)来确定假阳性范围的上下界和假阴性范围的上下界,只要确保假阳性范围比正确的谓词范围大或至少等于该正确的谓词范围以保证所有满足谓词的可变长度字符串都会落在该范围内、而假阴性范围比正确的谓词评估的范围小或至多等于该正确的谓词范围以保证所有落在该范围内的可变长度字符串都满足谓词即可。例如,对于谓词 可以将其假阴性范围的下界缩窄至‘abΔa!’或者‘abΔa#’或者‘abΔa*’等等,甚至进一步缩窄至‘abΔaa’、‘ac’、+∞等等。再比如,对于谓词 可以将其假阳性范围的下界设为‘abΔ’、‘abΔa’等等,并且可以将其上界扩展至或者或者等等(‘!’、‘#’、‘*’字符的ASCII码均比空格字符的ASCII码大),甚至进一步扩展至‘abΔaa’、‘ac’、+∞等等。
以上已经通过示例描述了如何确定谓词的假阳性范围的上下界以及假阴性范围的上下界。如上文所述,表1’和表2’中所给出的假阳性范围和假阴性范围仅仅是一个示例,本领域技术人员可以根据具体的谓词以及诸如谓词评估的精确度、速度等具体要求来确定假阳性范围的上下界和假阴性范围的上下界。例如,能够理解,为了获得较快的谓词评估速度,在能够确保所有满足谓词的字符串都落在假阳性范围内的前提下,假阳性范围越小越好,而在能够确保落在假阴性范围内的所有字符串都满足谓词的前提下,假阴性范围越大越好。
回到图2,随后,在步骤S23中,对所述假阳性范围的上下界进行压缩编码。
在该步骤中,采用对可变长度字符串进行压缩编码时使用的编码方法对假阳性范围的上下界进行压缩编码。例如,假设谓词是col>‘abc’,假阳性范围的上下界分别为+∞和‘abc’,则压缩编码后的假阳性范围的上下界分别为encoded(+∞)和encoded(‘abc’)。
在步骤S24中,对所述假阴性范围的上下界进行压缩编码。
与步骤S23中类似,在该步骤中,也采用对可变长度字符串进行压缩编码时使用的编码方法对假阴性范围的上下界进行压缩编码。例如,假设假阴性范围的上下界分别为+∞和则压缩编码后的假阳性范围的上下界分别为encoded(+∞)和encoded
在步骤S25中,将所述压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行第一比较。
在该步骤中,通过将压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行比较,来确定该压缩的可变长度字符串是否落在压缩编码后的假阳性范围的上下界限定的范围(下文中简称为“压缩编码后的假阳性范围”)中。例如,假设所述压缩的可变长度字符串是encoded(‘abca’),在该步骤中将其与步骤S23中作为示例给出的压缩编码的上下界encoded(+∞)和encoded(‘abc’)进行比较,以确定encoded(‘abca’)是否在压缩编码的假阳性范围[encoded(+∞),encoded(‘abc’)]内。
在步骤S26中,将所述压缩的可变长度字符串与压缩编码后的假阴性范围的上下界进行第二比较。
与步骤S25中类似,在该步骤中,通过将压缩的可变长度字符串与压缩编码后的假阴性范围的上下界进行比较,来确定该压缩的可变长度字符串是否落在压缩编码后的假阴性阳性范围的上下界限定的范围(下文中简称为“压缩编码后的假阴性范围”)中。例如,在该步骤中将压缩的可变长度字符串encoded(‘abca’)与步骤S24中作为示例给出的压缩编码的上下界encoded(+∞)和encoded进行比较,以确定encoded(‘abca’)是否在压缩编码的假阴性范围[encoded(+∞),encoded]内。
随后,在步骤S27,根据第一比较的结果和第二比较的结果确定谓词评估的结果。
在该步骤中,根据压缩的可变长度字符串是否落在压缩编码后的假阳性范围中以及是否落在压缩编码后的假阳性范围中,来确定谓词评估的结果。下面将参考图3对这一处理过程进行描述。
如图3所示,在步骤S31,响应于所述压缩的可变长度字符串在由压缩编码后的假阳性范围的上下界限定的范围内,确定第一评估结果为真,否则确定第一评估结果为假。
例如,对于如上述步骤S25中所示的示例,由于压缩的可变长度字符串encoded(‘abca’)在压缩编码的假阳性范围[encoded(+∞),encoded(‘abc’)]内,因此,确定第一评估结果为真。
在步骤S32,响应于所述压缩的可变长度字符串在由压缩编码后的假阴性范围的上下界限定的范围内,确定第二评估结果为真,否则确定第二评估结果为假。
例如,对于如上述步骤S26中所示的示例,由于压缩的可变长度字符串encoded(‘abca’)在压缩编码的假阳性范围[encoded(+∞),encoded]内,因此,确定第二评估结果为真。
随后,在步骤S33,响应于第一评估结果和第二评估结果一致,确定谓词评估的结果为该第一评估结果。
如上文中所述,如果压缩字符串对于假阳性范围和假阴性范围内的评估结果一致,即都为真或都为假,则谓词评估结果是正确的。例如,如上述步骤S31和步骤S32中所例示的,第一评估结果和第二评估结果均为真,即压缩的可变长度字符串encoded(‘abca’)对于假阳性范围和假阴性范围内的评估结果是一致的,均为真。此时,可以确定在该压缩的可变长度字符串encoded(‘abca’)上的谓词评估结果为真,即与第一评估结果一致(当然,也与第二评估结果一致)。
至此,完成了不进行解压缩直接在压缩的可变长度字符串上进行谓词评估的处理。
可选的,根据本实施例的在压缩的可变长度字符串上进行谓词评估的方法还可以包括:在步骤S34,响应于第一评估结果和第二评估结果不一致,解压缩所述压缩的可变长度字符串,并对该解压缩的可变长度字符串进行谓词评估以得到谓词评估的结果。
如前所述,如果压缩字符串对于假阳性范围和假阴性范围内的评估结果不一致,则无法确定谓词评估结果是什么,因此在该步骤中,解压缩该压缩的可变长度字符串,并采用本领域中公知的传统方法、在尾部空格不敏感语义下对该解压缩后的可变长度字符串进行谓词评估以确定谓词评估的结果。
为了便于理解,下面结合具体示例,对根据本实施例的在压缩的可变长度字符串上进行谓词评估的方法进行说明。
假设谓词是Col>‘ab’,Col为varchar(6)类型。假设在步骤S21和S22中,采用表1中示出的示例,确定了该谓词的假阳性范围的上下界分别为+∞,‘ab’,假阴性范围的上下界分别为+∞,随后,在步骤S23对所述假阳性范围的上下界压缩编码,得到压缩编码后的假阳性范围的上下界encoded(+∞)和encoded(‘ab’),在步骤S24对所述假阴性范围的上下界压缩编码,得到压缩编码后的假阴性范围的上下界encoded(+∞)和encoded
在一个示例中,假设压缩的可变长度字符串是encoded(‘abc’)。在该情形下,在步骤S25中,将其与压缩编码后的假阳性范围的上下界encoded(+∞)和encoded(‘ab’)进行比较,并确定encoded(‘abc’)在[encoded(+∞),encoded(‘ab’)]内;类似的,在步骤S26中,将其与压缩编码后的假阴性范围的上下界encoded(+∞)和encoded进行比较,并确定encoded(‘abc’)在[encoded(+∞),encoded]内。随后,在步骤S27,根据步骤S25的比较结果,确定第一评估结果为真,并根据步骤S26的比较结果,确定第二评估结果也为真。由于第一评估结果和第二评估结果一致,均为真,从而可以确定‘abc’的谓词评估的结果为真。
在另一个示例中,假设压缩的可变长度字符串是encoded(‘aa’)。在该情形下,在步骤S25中,将其与压缩编码后的假阳性范围的上下界encoded(+∞)和encoded(‘ab’)进行比较,并确定encoded(‘aa’)不在[encoded(+∞),encoded(‘ab’)]内;类似的,在步骤S26中,将其与压缩编码后的假阴性范围的上下界encoded(+∞)和encoded进行比较,并确定encoded(‘aa’)不在[encoded(+∞),encoded]内。随后,在步骤S27,根据步骤S25的比较结果,确定第一评估结果为假,并根据步骤S26的比较结果,确定第二评估结果为假。由于第一评估结果和第二评估结果一致,均为假,从而可以确定‘aa’的谓词评估的结果为假。
在又一个示例中,假设压缩的可变长度字符串是encoded(‘abΔ’)。在该情形下,在步骤S25中,将其与压缩编码后的假阳性范围的上下界encoded(+∞)和encoded(‘ab’)进行比较,并确定encoded(‘abΔ’)在[encoded(+∞),encoded(‘ab’)]内;类似的,在步骤S26中,将其与压缩编码后的假阴性范围的上下界encoded(+∞)和encoded进行比较,并确定encoded(‘abΔ’)不在[encoded(+∞),encoded]内。随后,在步骤S27,根据步骤S25的比较结果,确定第一评估结果为真,并根据步骤S26的比较结果,确定第二评估结果为假。由于第一评估结果和第二评估结果不一致,在步骤S27中解压缩所述压缩的可变长度字符串encoded(‘abΔ’)得到解压缩的可变长度字符串‘abΔ’,并根据本领域中传统的谓词评估方法判断出在尾部空格不敏感语义下,‘abΔ’不满足Col>‘ab’,由此确定谓词评估的结果为假。
需要说明的是,虽然以上按照从步骤S21到S27的顺序对根据本实施例的在压缩的可变长度字符串上进行谓词评估的方法进行了说明,但这仅仅是一种示例,所述步骤S21到S27并非必须按照所描述的顺序来执行。例如,可以在顺序执行了步骤S21、S23、S25之后再顺序执行步骤S22、S24、S26,或者可以在执行步骤S21、S23、S25的同时并行的执行步骤S22、S24、S26,等等。
以上已经对根据本发明第一实施例的在压缩的可变长度字符串上进行谓词评估的方法进行了描述。在该实施例中,在对于按照与尾部空格敏感语义下的顺序一致的压缩编码方式编码的可变长度字符串按照尾部空格不敏感语义进行谓词评估时,通过利用谓词的假阳性范围和假阴性范围,在压缩编码的可变长度字符串上直接进行谓词评估而不进行解码,并且仅当谓词评估的结果有问题时,解压缩该压缩的可变长度字符串,并对解压缩后的可变长度字符串进行谓词评估以得到正确的谓词评估的结果。该实施例充分利用了在压缩数据上进行谓词评估的性能优势,从而提高了查询处理的性能。
[第二实施例]
在根据第一实施例的在压缩的可变长度字符串上进行谓词评估的方法中,对于一个可变长度字符串谓词,分别确定其假阳性范围和假阴性范围,并且随后根据压缩的可变长度字符串是否落在压缩编码的假阳性范围和假阴性范围中,来确定谓词评估的结果。然而,事实上,在很多情况下,并不需要确定假阴性范围并随后确定压缩的可变长度字符串是否落在压缩编码的假阴性范围中(即第一实施例中的步骤S21、S24和S26中的处理)。下面,将举例进行说明。
比如,根据上文中的描述可知,假阳性范围大于等于假阴性范围,因此如果压缩编码的可变长度字符串没有落在压缩编码的假阳性范围内,则其必然也不会落在压缩编码的假阴性范围内。在这样的情况下,显然不再需要确定假阴性范围并随后确定压缩的可变长度字符串是否落在压缩编码的假阴性范围内。
再比如,如果假阴性范围的上下界压缩编码后的值与假阳性范围的上下界压缩编码后的值分别相等,则显然不再需要确定压缩的可变长度字符串是否落在压缩编码的假阴性范围内。
再比如,对于查询中例如通过外键关系而生成的中间谓词,由于执行该谓词后还要进行其他查询处理,因此对于该中间谓词的谓词评估结果不需要太准确。由于假阳性范围大于等于正确的谓词范围从而所有满足谓词的字符串都会落在该范围内,因此可以仅采用假阳性范围进行谓词评估,并在后续的其他查询处理进一步过滤掉实际上不满足该谓词的字符串。事实上,能够理解,除了查询中通过外键关系而生成的中间谓词外,在其他对于谓词评估结果的准确性要求不高的情形中,也可以仅采用假阳性范围进行谓词评估。
在根据本实施例的在压缩的可变长度字符串上进行谓词评估的方法中,仅确定假阳性范围而不确定假阴性范围,并根据压缩的可变长度字符串是否落在压缩编码的假阳性范围中,来确定谓词评估的结果。图4示出了根据本实施例的在压缩的可变长度字符串上进行谓词评估的方法的流程图。下面,将参考图4进行描述。
如图4所示,在步骤S41中,确定谓词的假阳性范围的上下界,所述假阳性范围是所述谓词评估的结果可能产生假阳性错误的范围。
在该步骤中,可以类似的采用例如第一实施例中给出的表1’和表2’中例示的假阳性范围。当然,表1’和表2’中例示的假阳性范围仅仅是一个示例,而并非是限制性的。本领域技术人员可以根据具体的谓词以及诸如谓词评估的精确度、速度等具体要求来确定假阳性范围的上下界。例如,能够理解,为了获得较快的谓词评估速度,在能够确保所有满足谓词的压缩字符串都落在假阳性范围内的前提下,假阳性范围越小越好。
该步骤S41中的操作与上文中描述的步骤S21中的操作相同,此处不再赘述。
在步骤S42中,对所述假阳性范围的上下界进行压缩编码。
在该步骤中,采用对可变长度字符串进行压缩编码时使用的编码方法对假阳性范围的上下界进行压缩编码。例如,假设谓词是col>‘abc’,假阳性范围的上下界分别为+∞和‘abc’,则压缩编码后的假阳性范围的上下界分别为encoded(+∞)和encoded(‘abc’)。
在步骤S43中,将所述压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行第一比较。
在该步骤中,通过将压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行比较,来确定该压缩的可变长度字符串是否落在压缩编码后的假阳性范围中。例如,假设所述压缩的可变长度字符串是encoded(‘abca’),在该步骤中将其与步骤S42中作为示例给出的压缩编码的上下界encoded(+∞)和encoded(‘abc’)进行比较,以确定encoded(‘abca’)是否在压缩编码的假阳性范围[encoded(+∞),encoded(‘abc’)]内。
随后,在步骤S44中,根据第一比较的结果确定谓词评估的结果。
具体的,如果第一比较的结果是压缩的可变长度字符串落在压缩编码后的假阳性范围中,则确定谓词评估的结果为真,否则确定谓词评估的结果为假。
例如,对于如上述步骤S43中所示的示例,由于压缩的可变长度字符串encoded(‘abca’)在压缩编码的假阳性范围[encoded(+∞),encoded(‘abc’)]内,因此,确定谓词评估的结果为真。
以上对根据本发明第二实施例的在压缩的可变长度字符串上进行谓词评估的方法进行了描述。在该实施例中,在对于按照与尾部空格敏感语义下的顺序一致的压缩编码方式编码的可变长度字符串按照尾部空格不敏感语义进行谓词评估时,通过利用谓词的假阳性范围,在压缩编码的可变长度字符串上直接进行谓词评估而不进行解码。该实施例充分利用了在压缩数据上进行谓词评估的性能优势,从而提高了查询处理的性能。另一方面,与第一实施例相比,在本实施例中仅利用假阳性范围进行谓词评估,由于不需要设定假阴性范围并进行与该范围相关的操作,因此进一步提高了查询处理的速度。
下面,参照图5来描述根据本发明实施例的在压缩的可变长度字符串上进行谓词评估的设备的结构框图。具体的,在下文中,以压缩的可变长度字符串是利用使得压缩编码后的数据的顺序与尾部空格敏感语义下的顺序一致的压缩编码方法压缩得到的、并且在尾部空格不敏感语义下进行所述谓词评估为例进行说明。
根据本发明实施例的进行谓词评估的设备500可以执行以上各个实施例中所述的在压缩的可变长度字符串上进行谓词评估方法。如图5所示,该进行谓词评估的设备500包括:范围确定单元501,编码单元502,比较单元503,以及结果确定单元504。
范围确定单元501确定谓词的假阳性范围的上下界,所述假阳性范围是所述谓词评估的结果可能产生假阳性错误的范围。如前所述,假阳性错误是在谓词评估的正确结果为假的情况下错误的确定结果为真的错误。具体的,范围确定单元501可以类似的采用例如第一实施例中给出的表1’和表2’中例示的假阳性范围。当然,表1’和表2’中例示的假阳性范围仅仅是一个示例,而并非是限制性的。本领域技术人员可以根据具体的谓词以及诸如谓词评估的精确度、速度等具体要求通过范围确定单元501来确定假阳性范围的上下界。例如,能够理解,为了获得较快的谓词评估速度,在能够确保所有满足谓词的压缩字符串都落在假阳性范围内的前提下,假阳性范围越小越好。
编码单元502对所述假阳性范围的上下界进行压缩编码。具体的,编码单元502采用对可变长度字符串进行压缩编码时使用的编码方法对由范围确定单元501确定的假阳性范围的上下界进行压缩编码。
比较单元503将压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行第一比较。具体的,比较单元503通过将压缩的可变长度字符串与从编码单元502得到的压缩编码后的假阳性范围的上下界进行比较,来确定该压缩的可变长度字符串是否落在压缩编码后的假阳性范围中。
结果确定单元504根据所述第一比较的结果确定谓词评估的结果。具体的,如果比较单元503确定的第一比较的结果是压缩的可变长度字符串落在压缩编码后的假阳性范围中,则结果确定单元504确定谓词评估的结果为真,否则确定谓词评估的结果为假。
可选的,范围确定单元501还可以进一步确定谓词的假阴性范围的上下界,所述假阴性范围是所述谓词评估的结果可能产生假阴性错误的范围。如前所述,假阴性错误是在谓词评估的正确结果为真的情况下错误的确定结果为假的错误。具体的,范围确定单元501可以类似的采用例如第一实施例中给出的表1’和表2’中例示的阴阳性范围。当然,表1’和表2’中例示的假阴性范围仅仅是一个示例,而并非是限制性的。本领域技术人员可以根据具体的谓词以及诸如谓词评估的精确度、速度等具体要求通过范围确定单元501来确定假阴性范围的上下界。
可选的,编码单元502可以进一步对所述假阴性范围的上下界进行压缩编码。具体的,编码单元502采用对可变长度字符串进行压缩编码时使用的编码方法对由范围确定单元501确定的假阴性范围的上下界进行压缩编码。
可选的,比较单元503可以进一步将压缩的可变长度字符串与压缩编码后的假阴性范围的上下界进行第一比较。具体的,比较单元503通过将压缩的可变长度字符串与从编码单元502得到的压缩编码后的假阴性范围的上下界进行比较,来确定该压缩的可变长度字符串是否落在压缩编码后的假阴性范围中。
可选的,结果确定单元504也可以根据所述第一比较的结果和第二比较的结果确定谓词评估的结果。如图5所示,结果确定单元504可以进一步包括第一子确定单元5041、第二子确定单元5042和结果确定子单元5043。具体的,第一子确定单元5041根据比较单元503的比较结果确定第一评估的结果,即如果比较单元503确定压缩的可变长度字符串在由压缩编码后的假阳性范围的上下界限定的范围内,则第一子确定单元5041确定第一评估结果为真,否则确定第一评估结果为假。第二子确定单元5042同样根据比较单元503的比较结果确定第二评估的结果,即如果比较单元503确定压缩的可变长度字符串在由所述压缩编码后的假阴性范围的上下界限定的范围内,则第二子确定单元5042确定第二评估结果为真,否则确定第二评估结果为假。结果确定子单元5043根据第一评估和第二评估结果,来确定谓词评估的结果。具体的,如果第一评估结果和第二评估结果一致,则结果确定子单元5043确定谓词评估的结果为该第一评估结果;如果第一评估结果和第二评估结果不一致,则结果确定子单元5043解压缩所述压缩的可变长度字符串,并对该解压缩的可变长度字符串进行谓词评估以得到谓词评估的结果。
以上对根据本发明实施例的在压缩的可变长度字符串上进行谓词评估的设备进行了描述。在该实施例中,在对于按照与尾部空格敏感语义下的顺序一致的压缩编码方式编码的可变长度字符串按照尾部空格不敏感语义进行谓词评估时,通过利用谓词的假阳性范围(和假阴性范围),在压缩编码的可变长度字符串上直接进行谓词评估而不进行解码。该实施例充分利用了在压缩数据上进行谓词评估的性能优势,从而提高了查询处理的性能。
本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。
这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (17)
1.一种在压缩的可变长度字符串上进行谓词评估的方法,包括:
确定谓词的假阳性范围的上下界,所述假阳性范围是所述谓词评估的结果可能产生假阳性错误的范围;
对所述假阳性范围的上下界进行压缩编码;
将所述压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行第一比较;
确定所述谓词的假阴性范围的上下界,所述假阴性范围是所述谓词评估的结果可能产生假阴性错误的范围;
对所述假阴性范围的上下界进行压缩编码;
将所述压缩的可变长度字符串与压缩编码后的假阴性范围的上下界进行第二比较,
根据第一比较的结果和第二比较的结果确定谓词评估的结果。
2.如权利要求1所述的进行谓词评估的方法,进一步包括:
响应于所述压缩的可变长度字符串在由所述压缩编码后的假阳性范围的上下界限定的范围内,确定谓词评估的结果为真。
3.如权利要求1所述的进行谓词评估的方法,所述根据第一比较的结果和第二比较的结果确定谓词评估的结果进一步包括:
响应于所述压缩的可变长度字符串在由压缩编码后的假阳性范围的上下界限定的范围内,确定第一评估结果为真,否则确定第一评估结果为假;
响应于所述压缩的可变长度字符串在由压缩编码后的假阴性范围的上下界限定的范围内,确定第二评估结果为真,否则确定第二评估结果为假;
响应于第一评估结果和第二评估结果一致,确定谓词评估的结果为该第一评估结果。
4.如权利要求3所述的进行谓词评估的方法,所述根据第一比较的结果和第二比较的结果确定谓词评估的结果进一步包括:
响应于第一评估结果和第二评估结果不一致,解压缩所述压缩的可变长度字符串,并对该解压缩的可变长度字符串进行谓词评估以得到谓词评估的结果。
5.如权利要求1-4中任一项所述的进行谓词评估的方法,所述假阳性错误是在谓词评估的正确结果为假的情况下错误地确定结果为真的错误,所述假阴性错误是在谓词评估的正确结果为真的情况下错误地确定结果为假的错误。
6.如权利要求1-4中任一项所述的进行谓词评估的方法,其中在尾部空格不敏感语义下进行该谓词评估。
7.如权利要求1-4中任一项所述的进行谓词评估的方法,其中所述压缩的可变长度字符串是利用使得压缩编码后的数据的顺序与尾部空格敏感语义下的顺序一致的压缩编码方法得到的。
8.如权利要求6所述的进行谓词评估的方法,其中在所述谓词包含等于运算符的情况下,假阳性范围的下界为该谓词中的常量字符串中从最高位字符到第一个小于空格的字符的前一个字符形成的字符串,其上界为在所述常量字符串最低位字符之后填充空格至等于所述可变长度字符串的设定长度所形成的字符串;假阴性范围的上下界均是该谓词中的常量字符串自身。
9.如权利要求6所述的进行谓词评估的方法,其中在所述谓词包含大于运算符的情况下,假阳性范围的下界为该谓词中的常量字符串中从最高位字符到第一个小于空格的字符的前一个字符形成的字符串,上界为正无穷;假阴性范围的下界为在所述常量字符串最低位字符之后填充空格至等于所述可变长度字符串的设定长度所形成的字符串,上界为正无穷。
10.如权利要求6所述的进行谓词评估的方法,其中在所述谓词包含小于运算符的情况下,假阳性范围的下界为负无穷,上界为在该谓词中的常量字符串最低位字符后填充空格至等于所述可变长度字符串的设定长度所形成的字符串;假阴性范围的下界为负无穷,上界为所述常量字符串中从最高位字符到第一个小于空格的字符的前一个字符形成的字符串。
11.一种在压缩的可变长度字符串上进行谓词评估的设备,包括:
范围确定单元,配置为确定谓词的假阳性范围的上下界以及确定所述谓词的假阴性范围的上下界,所述假阳性范围是所述谓词评估的结果可能产生假阳性错误的范围,所述假阴性范围是所述谓词评估的结果可能产生假阴性错误的范围;
编码单元,配置为对所述假阳性范围的上下界进行压缩编码,以及对所述假阴性范围的上下界进行压缩编码;
比较单元,配置为将所述压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行第一比较,以及为将所述压缩的可变长度字符串与压缩编码后的假阴性范围的上下界进行第二比较;以及
结果确定单元,配置为根据所述第一比较的结果和所述第二比较的结果确定谓词评估的结果。
12.如权利要求11所述的进行谓词评估的设备,其中所述结果确定单元响应于所述压缩的可变长度字符串在由压缩编码后的假阳性范围的上下界限定的范围内,确定谓词评估的结果为真。
13.如权利要求11所述的进行谓词评估的设备,其中所述结果确定单元进一步包括:
第一子确定单元,配置为响应于所述压缩的可变长度字符串在由所述压缩编码后的假阳性范围的上下界限定的范围内,确定第一评估结果为真,否则确定第一评估结果为假;
第二子确定单元,配置为响应于所述压缩的可变长度字符串在由所述压缩编码后的假阴性范围的上下界限定的范围内,确定第二评估结果为真,否则确定第二评估结果为假;
结果确定子单元,配置为响应于第一评估结果和第二评估结果一致,确定谓词评估的结果为该第一评估结果。
14.如权利要求13所述的进行谓词评估的设备,其中所述结果确定子单元进一步配置为响应于第一评估结果和第二评估结果不一致,解压缩所述压缩的可变长度字符串,并对该解压缩的可变长度字符串进行谓词评估以得到谓词评估的结果。
15.如权利要求11-14中任一项所述的进行谓词评估的设备,所述假阳性错误是在谓词评估的正确结果为假的情况下错误的确定结果为真的错误,所述假阴性错误是在谓词评估的正确结果为真的情况下错误的确定结果为假的错误。
16.如权利要求11-14中任一项所述的进行谓词评估的设备,其中在尾部空格不敏感语义下进行该谓词评估。
17.如权利要求11-14中任一项所述的进行谓词评估的设备,其中所述压缩的可变长度字符串是利用使得压缩编码后的数据的顺序与尾部空格敏感语义下的顺序一致的压缩编码方法压缩得到的。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410301261.7A CN105279171B (zh) | 2014-06-27 | 2014-06-27 | 在压缩的可变长度字符串上进行谓词评估的方法和设备 |
US14/711,907 US9965570B2 (en) | 2014-06-27 | 2015-05-14 | Performing predicate evaluation on compressed character string of variable length |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410301261.7A CN105279171B (zh) | 2014-06-27 | 2014-06-27 | 在压缩的可变长度字符串上进行谓词评估的方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105279171A CN105279171A (zh) | 2016-01-27 |
CN105279171B true CN105279171B (zh) | 2018-11-27 |
Family
ID=54930772
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410301261.7A Expired - Fee Related CN105279171B (zh) | 2014-06-27 | 2014-06-27 | 在压缩的可变长度字符串上进行谓词评估的方法和设备 |
Country Status (2)
Country | Link |
---|---|
US (1) | US9965570B2 (zh) |
CN (1) | CN105279171B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104217165B (zh) * | 2014-09-16 | 2016-07-06 | 百度在线网络技术(北京)有限公司 | 文件的处理方法及装置 |
US11232104B2 (en) * | 2019-01-21 | 2022-01-25 | International Business Machines Corporation | Join and predicate filtering using string lengths for variable character fields |
CN109828789B (zh) * | 2019-01-30 | 2020-11-27 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
CN109802686B (zh) * | 2019-01-30 | 2022-12-06 | 上海兆芯集成电路有限公司 | 加速压缩方法以及加速压缩装置 |
US20240086392A1 (en) * | 2022-09-14 | 2024-03-14 | Sap Se | Consistency checks for compressed data |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1666196A (zh) * | 2002-05-10 | 2005-09-07 | 甲骨文国际公司 | 存储和访问数据,以及提高数据库查询语言语句性能的方法和机制 |
CN102103538A (zh) * | 2011-02-22 | 2011-06-22 | 南京航空航天大学 | 一种基于Agent的码垛机器人控制软件测试方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07104868B2 (ja) * | 1988-04-08 | 1995-11-13 | インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン | データ記憶検索システム |
US6006232A (en) * | 1997-10-21 | 1999-12-21 | At&T Corp. | System and method for multirecord compression in a relational database |
CA2326962A1 (en) * | 1999-11-29 | 2001-05-29 | John O. Lamping | Flexible data structure in an information system having a computer readable medium |
US20110219035A1 (en) * | 2000-09-25 | 2011-09-08 | Yevgeny Korsunsky | Database security via data flow processing |
US20080159332A1 (en) * | 2006-12-29 | 2008-07-03 | John Christian Martinez | Methods and devices for using variable length subpackets in data transmissions |
US20090006399A1 (en) * | 2007-06-29 | 2009-01-01 | International Business Machines Corporation | Compression method for relational tables based on combined column and row coding |
US7747585B2 (en) * | 2007-08-07 | 2010-06-29 | International Business Machines Corporation | Parallel uncompression of a partially compressed database table determines a count of uncompression tasks that satisfies the query |
US8805799B2 (en) * | 2007-08-07 | 2014-08-12 | International Business Machines Corporation | Dynamic partial uncompression of a database table |
US7966343B2 (en) * | 2008-04-07 | 2011-06-21 | Teradata Us, Inc. | Accessing data in a column store database based on hardware compatible data structures |
US8356060B2 (en) * | 2009-04-30 | 2013-01-15 | Oracle International Corporation | Compression analyzer |
US7868789B1 (en) * | 2009-06-28 | 2011-01-11 | Sap Ag | Dictionary-based order-preserving string compression for main memory column stores |
US8244765B2 (en) | 2009-09-30 | 2012-08-14 | International Business Machines Corporation | Avoiding three-valued logic in predicates on dictionary-encoded data |
CN107545066B (zh) * | 2011-12-08 | 2021-01-15 | 甲骨文国际公司 | 用于在易失性存储器内保持关系型数据的列向量的技术 |
-
2014
- 2014-06-27 CN CN201410301261.7A patent/CN105279171B/zh not_active Expired - Fee Related
-
2015
- 2015-05-14 US US14/711,907 patent/US9965570B2/en not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1666196A (zh) * | 2002-05-10 | 2005-09-07 | 甲骨文国际公司 | 存储和访问数据,以及提高数据库查询语言语句性能的方法和机制 |
CN102103538A (zh) * | 2011-02-22 | 2011-06-22 | 南京航空航天大学 | 一种基于Agent的码垛机器人控制软件测试方法 |
Also Published As
Publication number | Publication date |
---|---|
US20150379119A1 (en) | 2015-12-31 |
US9965570B2 (en) | 2018-05-08 |
CN105279171A (zh) | 2016-01-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105279171B (zh) | 在压缩的可变长度字符串上进行谓词评估的方法和设备 | |
US9760593B2 (en) | Data dictionary with a reduced need for rebuilding | |
WO2019141144A1 (zh) | 确定网络故障的方法和装置 | |
US11892999B2 (en) | Faster access for compressed time series data: the block index | |
CN107239479A (zh) | 一种基于区块链的数据存储以及查询的方法及装置 | |
US20130307709A1 (en) | Efficient techniques for aligned fixed-length compression | |
CN105095237A (zh) | 用于生成非关系数据库的模式的方法和设备 | |
CN108027713A (zh) | 用于固态驱动器控制器的重复数据删除 | |
CN112115684B (zh) | 高级数据库解压缩 | |
WO2016124070A1 (zh) | 一种数据处理的方法和设备 | |
US20170099064A1 (en) | Non-transitory computer-readable recording medium, encoding method, encoding device, decoding method, and decoding device | |
CN111626064A (zh) | 神经机器翻译模型的训练方法、装置及存储介质 | |
US8542137B2 (en) | Decoding encoded data | |
US20230325357A1 (en) | Data Compression and Decompression Facilitated By Machine Learning | |
WO2021236252A1 (en) | Compression/decompression using index correlating uncompressed/compressed content | |
US20230060055A1 (en) | Computer Data Compression Utilizing Multiple Symbol Alphabets And Dynamic Binding Of Symbol Alphabets | |
CN115395961A (zh) | 基于联合中间件的数据无损压缩及加密传输方法 | |
US9998142B1 (en) | Techniques for invariant-reference compression | |
CN114220505A (zh) | 病历数据的信息抽取方法、终端设备及可读存储介质 | |
Duvignau et al. | Piecewise linear approximation in data streaming: Algorithmic implementations and experimental analysis | |
WO2021072872A1 (zh) | 基于字符转换的姓名存储方法、装置、计算机设备 | |
US9787323B1 (en) | Huffman tree decompression | |
US8417665B2 (en) | Information extraction method, extractor rebuilding method, and system and computer program product thereof | |
US10223399B2 (en) | Global filter factor estimation | |
US10771095B2 (en) | Data processing device, data processing method, and computer readable medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20181127 |