CN105279171A - 在压缩的可变长度字符串上进行谓词评估的方法和设备 - Google Patents

在压缩的可变长度字符串上进行谓词评估的方法和设备 Download PDF

Info

Publication number
CN105279171A
CN105279171A CN201410301261.7A CN201410301261A CN105279171A CN 105279171 A CN105279171 A CN 105279171A CN 201410301261 A CN201410301261 A CN 201410301261A CN 105279171 A CN105279171 A CN 105279171A
Authority
CN
China
Prior art keywords
predicate
result
assessment
scope
bound
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
Application number
CN201410301261.7A
Other languages
English (en)
Other versions
CN105279171B (zh
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.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Priority to CN201410301261.7A priority Critical patent/CN105279171B/zh
Priority to US14/711,907 priority patent/US9965570B2/en
Publication of CN105279171A publication Critical patent/CN105279171A/zh
Application granted granted Critical
Publication of CN105279171B publication Critical patent/CN105279171B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/903Querying
    • G06F16/90335Query processing
    • G06F16/90344Query 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

在压缩的可变长度字符串上进行谓词评估的方法和设备
技术领域
本发明涉及关系型数据库领域,更具体地,涉及一种在压缩的可变长度字符串上进行谓词评估(predicateevaluation)的方法和设备。
背景技术
近来的研究已经表明,在关系型数据库中进行查询处理时,在数据库中存储的压缩数据上直接进行谓词评估、而不是将压缩数据解压缩之后再对解压缩的数据进行谓词评估能够大大提高查询处理的性能。在本领域中,通常将依序包含自变量、操作关系运算符或逻辑运算符、连接常量且所述自变量不包含函数、表达式、或分句的谓词称作简单谓词,简称谓词。在数据库语言中,所述操作关系运算符或逻辑运算符可以包括“=”、“>”、“>=”、“<”、“<=”、“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]的区间范围内。按照这一思路,在本实施例中,将可变长度字符串谓词改写为谓词范围的形式,并利用统计学中的假阳性(falsepositive)错误和假阴性(falsenegative)错误来确定在压缩的可变长度字符串上的谓词评估的结果是否有问题。
假阳性错误又叫第一型错误,如果在假设检定中零假设事实上成立,但统计检验的结果不支持零假设(拒绝零假设),则这种错误称为第一型错误;假阴性错误又叫第二型错误,如果零假设事实上不成立,但统计检验的结果支持零假设(接受零假设),则这种错误称为第二型错误。例如,对于计算机防病毒软件来说,如果防病毒软件把没有感染病毒的文件报告为感染了病毒,就是假阳性错误,通俗的说就是“误报”;相反,如果防病毒软件把感染了病毒的文件报告为没有感染病毒(即没有检测出病毒),就是假阴性错误,通俗的说就是“漏报”。在本实施例中,对于一个可变长度字符串谓词,分别确定其假阳性范围和假阴性范围,其中假阳性范围是谓词评估的结果可能产生假阳性错误的范围,假阴性范围是谓词评估的结果可能产生假阴性错误的范围。能够理解,假阳性范围比正确的谓词范围要大或至少等于该正确的谓词范围,因此所有满足谓词的可变长度字符串都会落在该范围内(即对于该假阳性范围的谓词评估结果为真),并且一些不满足谓词的可变长度字符串可能也会落在该范围内;假阴性范围比正确的谓词范围要小或至多等于该正确的谓词范围,因此所有落在该范围内(即对于该假阴性范围的谓词评估结果为真)的可变长度字符串都满足谓词,并且一些满足谓词的可变长度字符串可能没有落在该范围内。进一步可以推知,如果压缩字符串对于假阳性范围和假阴性范围内的评估结果一致,即都为真或都为假,则谓词评估结果是正确的;而如果压缩字符串对于假阳性范围和假阴性范围内的评估结果不一致,则无法确定谓词评估结果是什么,因此可以解压缩该压缩的可变长度字符串,并对解压缩后的可变长度字符串进行谓词评估。
回到图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’的假阳性范围的补集和假阴性范围的补集;再比如,对于谓词ColBETWEENval1ANDval2,可以将其拆成Col>=val1ANDCol<=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中所列出的仅仅是几种常见的谓词,其他谓词也可以类似的确定假阳性范围和假阴性范围。例如对于谓词其假阳性范围和假阴性范围分别可以使用上表中示出的谓词的假阳性范围的补集和假阴性范围的补集;再比如,对于谓词ColBETWEENval1ANDval2,可以将其拆成Col>=val1ANDCol<=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 (19)

1.一种在压缩的可变长度字符串上进行谓词评估的方法,包括:
确定谓词的假阳性范围的上下界,所述假阳性范围是所述谓词评估的结果可能产生假阳性错误的范围;
对所述假阳性范围的上下界进行压缩编码;
将所述压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行第一比较;以及
至少根据第一比较的结果确定谓词评估的结果。
2.如权利要求1所述的进行谓词评估的方法,所述至少根据第一比较的结果确定谓词评估的结果进一步包括:
响应于所述压缩的可变长度字符串在由所述压缩编码后的假阳性范围的上下界限定的范围内,确定谓词评估的结果为真。
3.如权利要求1所述的进行谓词评估的方法,还包括:
确定所述谓词的假阴性范围的上下界,所述假阴性范围是所述谓词评估的结果可能产生假阴性错误的范围;
对所述假阴性范围的上下界进行压缩编码;以及
将所述压缩的可变长度字符串与压缩编码后的假阴性范围的上下界进行第二比较,
其中所述至少根据第一比较的结果确定谓词评估的结果包括根据第一比较的结果和第二比较的结果确定谓词评估的结果。
4.如权利要求3所述的进行谓词评估的方法,所述根据第一比较的结果和第二比较的结果确定谓词评估的结果进一步包括:
响应于所述压缩的可变长度字符串在由压缩编码后的假阳性范围的上下界限定的范围内,确定第一评估结果为真,否则确定第一评估结果为假;
响应于所述压缩的可变长度字符串在由压缩编码后的假阴性范围的上下界限定的范围内,确定第二评估结果为真,否则确定第二评估结果为假;
响应于第一评估结果和第二评估结果一致,确定谓词评估的结果为该第一评估结果。
5.如权利要求4所述的进行谓词评估的方法,所述根据第一比较的结果和第二比较的结果确定谓词评估的结果进一步包括:
响应于第一评估结果和第二评估结果不一致,解压缩所述压缩的可变长度字符串,并对该解压缩的可变长度字符串进行谓词评估以得到谓词评估的结果。
6.如权利要求1-5中任一项所述的进行谓词评估的方法,所述假阳性错误是在谓词评估的正确结果为假的情况下错误地确定结果为真的错误,所述假阴性错误是在谓词评估的正确结果为真的情况下错误地确定结果为假的错误。
7.如权利要求1-5中任一项所述的进行谓词评估的方法,其中在尾部空格不敏感语义下进行该谓词评估。
8.如权利要求1-5中任一项所述的进行谓词评估的方法,其中所述压缩的可变长度字符串是利用使得压缩编码后的数据的顺序与尾部空格敏感语义下的顺序一致的压缩编码方法得到的。
9.如权利要求7所述的进行谓词评估的方法,其中在所述谓词包含等于运算符的情况下,假阳性范围的下界为该谓词中的常量字符串中从最高位字符到第一个小于空格的字符的前一个字符形成的字符串,其上界为在所述常量字符串最低位字符之后填充空格至等于所述可变长度字符串的设定长度所形成的字符串;假阴性范围的上下界均是该谓词中的常量字符串自身。
10.如权利要求7所述的进行谓词评估的方法,其中在所述谓词包含大于运算符的情况下,假阳性范围的下界为该谓词中的常量字符串中从最高位字符到第一个小于空格的字符的前一个字符形成的字符串,上界为正无穷;假阴性范围的下界为在所述常量字符串最低位字符之后填充空格至等于所述可变长度字符串的设定长度所形成的字符串,上界为正无穷。
11.如权利要求7所述的进行谓词评估的方法,其中在所述谓词包含小于运算符的情况下,假阳性范围的下界为负无穷,上界为在该谓词中的常量字符串最低位字符后填充空格至等于所述可变长度字符串的设定长度所形成的字符串;假阴性范围的下界为负无穷,上界为所述常量字符串中从最高位字符到第一个小于空格的字符的前一个字符形成的字符串。
12.一种在压缩的可变长度字符串上进行谓词评估的设备,包括:
范围确定单元,配置为确定谓词的假阳性范围的上下界,所述假阳性范围是所述谓词评估的结果可能产生假阳性错误的范围;
编码单元,配置为对所述假阳性范围的上下界进行压缩编码;
比较单元,配置为将所述压缩的可变长度字符串与压缩编码后的假阳性范围的上下界进行第一比较;以及
结果确定单元,配置为至少根据所述第一比较的结果确定谓词评估的结果。
13.如权利要求12所述的进行谓词评估的设备,其中所述结果确定单元响应于所述压缩的可变长度字符串在由压缩编码后的假阳性范围的上下界限定的范围内,确定谓词评估的结果为真。
14.如权利要求12所述的进行谓词评估的设备,其中
所述范围确定单元进一步配置为确定所述谓词的假阴性范围的上下界,所述假阴性范围是所述谓词评估的结果可能产生假阴性错误的范围;
所述编码单元进一步配置为对所述假阴性范围的上下界进行压缩编码;
所述比较单元进一步配置为将所述压缩的可变长度字符串与压缩编码后的假阴性范围的上下界进行比较。
15.如权利要求14所述的进行谓词评估的设备,其中所述结果确定单元进一步包括:
第一子确定单元,配置为响应于所述压缩的可变长度字符串在由所述压缩编码后的假阳性范围的上下界限定的范围内,确定第一评估结果为真,否则确定第一评估结果为假;
第二子确定单元,配置为响应于所述压缩的可变长度字符串在由所述压缩编码后的假阴性范围的上下界限定的范围内,确定第二评估结果为真,否则确定第二评估结果为假;
结果确定子单元,配置为响应于第一评估结果和第二评估结果一致,确定谓词评估的结果为该第一评估结果。
16.如权利要求15所述的进行谓词评估的设备,其中所述结果确定子单元进一步配置为响应于第一评估结果和第二评估结果不一致,解压缩所述压缩的可变长度字符串,并对该解压缩的可变长度字符串进行谓词评估以得到谓词评估的结果。
17.如权利要求12-16中任一项所述的进行谓词评估的设备,所述假阳性错误是在谓词评估的正确结果为假的情况下错误的确定结果为真的错误,所述假阴性错误是在谓词评估的正确结果为真的情况下错误的确定结果为假的错误。
18.如权利要求12-16中任一项所述的进行谓词评估的设备,其中在尾部空格不敏感语义下进行该谓词评估。
19.如权利要求12-16中任一项所述的进行谓词评估的设备,其中所述压缩的可变长度字符串是利用使得压缩编码后的数据的顺序与尾部空格敏感语义下的顺序一致的压缩编码方法压缩得到的。
CN201410301261.7A 2014-06-27 2014-06-27 在压缩的可变长度字符串上进行谓词评估的方法和设备 Active CN105279171B (zh)

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 true CN105279171A (zh) 2016-01-27
CN105279171B CN105279171B (zh) 2018-11-27

Family

ID=54930772

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410301261.7A Active CN105279171B (zh) 2014-06-27 2014-06-27 在压缩的可变长度字符串上进行谓词评估的方法和设备

Country Status (2)

Country Link
US (1) US9965570B2 (zh)
CN (1) CN105279171B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109828789A (zh) * 2019-01-30 2019-05-31 上海兆芯集成电路有限公司 加速压缩方法以及加速压缩装置

Families Citing this family (3)

* Cited by examiner, † Cited by third party
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
CN109802686B (zh) * 2019-01-30 2022-12-06 上海兆芯集成电路有限公司 加速压缩方法以及加速压缩装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1666196A (zh) * 2002-05-10 2005-09-07 甲骨文国际公司 存储和访问数据,以及提高数据库查询语言语句性能的方法和机制
US20100281079A1 (en) * 2009-04-30 2010-11-04 Oracle International Corporation Compression analyzer
US20110078134A1 (en) * 2009-09-30 2011-03-31 International Business Machines Corporation System and method for aviding three-valued logic in predicates on dictionary-encoded data
CN102103538A (zh) * 2011-02-22 2011-06-22 南京航空航天大学 一种基于Agent的码垛机器人控制软件测试方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
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
US8805799B2 (en) * 2007-08-07 2014-08-12 International Business Machines Corporation Dynamic partial uncompression of a database table
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
US7966343B2 (en) * 2008-04-07 2011-06-21 Teradata Us, Inc. Accessing data in a column store database based on hardware compatible data structures
US7868789B1 (en) * 2009-06-28 2011-01-11 Sap Ag Dictionary-based order-preserving string compression for main memory column stores
WO2013086384A1 (en) * 2011-12-08 2013-06-13 Oracle International Corporation Techniques for maintaining column vectors of relational data within volatile memory

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1666196A (zh) * 2002-05-10 2005-09-07 甲骨文国际公司 存储和访问数据,以及提高数据库查询语言语句性能的方法和机制
US20100281079A1 (en) * 2009-04-30 2010-11-04 Oracle International Corporation Compression analyzer
US20110078134A1 (en) * 2009-09-30 2011-03-31 International Business Machines Corporation System and method for aviding three-valued logic in predicates on dictionary-encoded data
CN102103538A (zh) * 2011-02-22 2011-06-22 南京航空航天大学 一种基于Agent的码垛机器人控制软件测试方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109828789A (zh) * 2019-01-30 2019-05-31 上海兆芯集成电路有限公司 加速压缩方法以及加速压缩装置
CN109828789B (zh) * 2019-01-30 2020-11-27 上海兆芯集成电路有限公司 加速压缩方法以及加速压缩装置

Also Published As

Publication number Publication date
US20150379119A1 (en) 2015-12-31
US9965570B2 (en) 2018-05-08
CN105279171B (zh) 2018-11-27

Similar Documents

Publication Publication Date Title
CN108089974B (zh) 利用定义的输入格式来测试应用
US10909319B2 (en) Entity linking method, electronic device for performing entity linking, and non-transitory computer-readable recording medium
US10318484B2 (en) Scan optimization using bloom filter synopsis
CN107305586B (zh) 索引生成方法、索引生成装置及搜索方法
US11023452B2 (en) Data dictionary with a reduced need for rebuilding
US10467203B2 (en) Data de-duplication
CN109471851B (zh) 数据处理方法、装置、服务器和存储介质
CN111597297A (zh) 物品召回方法、系统、电子设备及可读存储介质
CN105279171A (zh) 在压缩的可变长度字符串上进行谓词评估的方法和设备
US9563635B2 (en) Automated recognition of patterns in a log file having unknown grammar
US10146740B1 (en) Sparse data set processing
US10540336B2 (en) Method and system for deduplicating data
CN105447032A (zh) 用于处理消息与订阅信息方法和系统
JP2018067264A (ja) データ検索プログラム、データ検索装置およびデータ検索方法
CN115794861A (zh) 基于特征摘要的离线数据查询复用方法及其应用
US10318483B2 (en) Control method and control device
US11144518B2 (en) Detecting data mapping relationship within database system and optimizing data operation
CN113723436A (zh) 数据的处理方法、装置、计算机设备和存储介质
US20180253071A1 (en) Work supporting system, work supporting method, and computer program product
CN105446711A (zh) 获取用于软件开发任务的上下文信息的方法及装置
CN111831620B (zh) 用于存储管理的方法、设备和计算机程序产品
US10713254B2 (en) Attribute value information for a data extent
CN113407375A (zh) 数据库删除数据的恢复方法、装置、设备和存储介质
CN116992883A (zh) 实体对齐的处理方法和装置
CN112464011A (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
GR01 Patent grant
GR01 Patent grant