CN104937593A - 用于数据库搜索的***和方法 - Google Patents

用于数据库搜索的***和方法 Download PDF

Info

Publication number
CN104937593A
CN104937593A CN201480005413.7A CN201480005413A CN104937593A CN 104937593 A CN104937593 A CN 104937593A CN 201480005413 A CN201480005413 A CN 201480005413A CN 104937593 A CN104937593 A CN 104937593A
Authority
CN
China
Prior art keywords
threshold
data acquisition
key
pattern
filtrator
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
CN201480005413.7A
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Publication of CN104937593A publication Critical patent/CN104937593A/zh
Pending legal-status Critical Current

Links

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/24Querying
    • G06F16/245Query processing
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24554Unary operations; Data partitioning operations
    • G06F16/24557Efficient disk access during query execution

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

在一项实施例中,用于搜索数据库的方法包括处理器接收来自用户的指示查询184的消息,其中所述查询包括模式;以及所述处理器根据所述数据库186的数据集确定第一阈值。所述方法还包括所述处理器比较所述模式和所述数据集合的第一键以产生比较188,以及所述处理器根据所述比较和所述第一阈值194确定是跳到所述数据集合的第二键还是扫描至所述数据集合的第三键,包括当所述比较的绝对值大于所述第一阈值198时,跳到所述数据集合的所述第二键,和当所述比较的所述绝对值小于或等于所述第一阈值196时,扫描至所述数据集合的所述第三键,其中所述第一键和所述第三键是连续的。

Description

用于数据库搜索的***和方法
本发明要求2014年2月19日递交的发明名称为“用于数据库搜索的***和方法(System and Method for Database Searching)”的第14/184582号美国非临时专利申请案以及2013年2月19日递交的发明名称为“用于多维数据库索引的快速键模式搜索的***和方法(System and Method for aFast Key Pattern Search for a Multidimensional Database Index)”的第61/766299号美国临时专利申请案的在先申请优先权,这两个在先申请的内容以引入的方式并入本文本中。
技术领域
本发明涉及用于数据库的***和方法,尤其涉及用于数据库搜索的***和方法。
背景技术
现代数据仓库通常包含万亿条记录,每条记录都包含多个属性。业务智能任务,例如分析查询、在线分析处理(OLAP)、数据挖掘等应相对较快地获取针对数据的临时分析查询的答案。由于数据量,所以额外标引是有问题的,并且这些查询通过使用数据的全扫描来回答。甚至当数据分布在簇中时,全扫描可能花费较长时间。传统关系数据仓库技术通常与非关系分布式处理***组合或被非关系分布式处理***替代。扩展性和性能要求对于业务智能应用是至关重要的。
发明内容
一种用于搜索数据库的实施例方法包括处理器接收来自用户的指示查询的消息,其中所述查询包括模式;以及所述处理器根据所述数据库的数据集确定第一阈值。所述方法还包括所述处理器比较所述模式和所述数据集的第一键以产生比较,以及所述处理器根据所述比较和所述第一阈值确定是跳到所述数据集的第二键还是扫描至所述数据集的第三键,包括当所述比较的绝对值大于所述第一阈值时,跳到所述数据集的所述第二键,和当所述比较的所述绝对值小于或等于所述第一阈值时,扫描至所述数据集的所述第三键,其中所述第一键和所述第三键是连续的。
一种用于搜索数据库的另一实施例方法包括处理器接收来自用户的指示查询的消息,其中所述查询包括模式;以及所述处理器比较所述模式和所述数据库的数据集的第一键以产生比较。所述方法还包括所述处理器根据所述比较记录结果以产生记录的结果以及所述处理器根据所述比较确定是跳跃还是按序扫描。此外,所述方法包括所述处理器将所述记录的结果发送给所述用户。
一种实施例计算机包括处理器和数据库,所述数据库包括多维数据库索引。所述计算机还包括一种存储由所述处理器执行的程序的计算机可读存储介质。所述程序包括进行以下操作的指令:接收来自用户的消息,其中所述消息指示查询,并且所述查询包括模式;以及根据所述数据库的数据集确定第一阈值。所述程序还包括进行以下操作的指令:比较所述模式和所述数据集的第一键以产生比较。此外,所述程序包括进行以下操作的指令:根据所述比较和所述第一阈值确定是跳到所述数据集的第二键还是扫描至所述数据集中的第三键,包括当所述比较的绝对值大于所述第一阈值时,跳到所述数据集的所述第二键,和当所述比较的所述绝对值小于或等于所述第一阈值时,扫描至所述数据集的所述第三键,其中所述第一键和所述第三键是连续的。
上文相当宽泛地概述了本发明的实施例的特征,目的是让人能更好地理解下文对本发明的详细描述。下文中将描述本发明的实施例的额外特征和优点,其形成本发明的权利要求书的标的物。所属领域的技术人员应了解,所公开的概念和具体实施例可容易地用作修改或设计用于实现本发明的相同目的的其它结构或过程的基础。所属领域的技术人员还应意识到,此类等效构造不脱离所附权利要求书中所提出的本发明的精神和范围。
附图说明
为了更完整地理解本发明及其优点,现在参考下文结合附图进行的描述,其中:
图1示出了gz曲线的示例;
图2示出了投射到坐标向量的掩码;
图3示出了点模式搜索问题(PSP)的解决方案轨迹的实施例结构;
图4示出了范围PSP的解决方案轨迹的实施例结构;
图5示出了数据库搜索的实施例方法的流程图;
图6示出了若干过滤器组合的爬虫和草蜢策略的查询时间的图;
图7示出了不同数据存储的爬虫和草蜢策略的查询时间的图;
图8示出了呼叫详细记录(CDR)数据集的爬虫和草蜢策略的查询时间的图;
图9示出了事务处理性能委员会决策支持(TPC-DS)数据集的爬虫和草蜢策略的查询时间的图;
图10示出了TPC-DS数据集的爬虫和草蜢策略的查询时间的另一图;以及
图11示出了通用计算机***的实施例的方框图。
除非另有指示,否则不同图中的对应标号和符号通常指代对应部分。绘制各图是为了清楚地说明实施例的相关方面,因此未必是按比例绘制的。
具体实施方式
最初应理解,尽管下文提供一个或多个实施例的说明性实施方案,但可使用任意数目的当前已知或现有的技术来实施所公开的***和/或方法。本发明决不应限于下文所说明的所述说明性实施方案、图式和技术,包含本文所说明并描述的示范性设计和实施方案,而是可以在所附权利要求书的范围以及其均等物的完整范围内修改。
数据仓库中使用的多维数据库通过使用字典和特定键复合将客户数据转换为键值对。可按键顺序存储键值对。所有可能键的多维空间配有空间填充曲线,这样每个可能键都对应曲线上的一个点。使用非常大的整数参数化这些点。针对客户数据的基于任意属性的点、范围或集合过滤器的查询,以及基于这些属性的以上查询的组合都可以转化为基于复合键的模式搜索问题。
实施例在表征复合键的有序整数集合内执行快速子集过滤。一实施例可用于在无需额外标引的情况下加速针对数据仓库的临时分析查询。多个实施例可用于任意组合的多个属性上的点、范围和集合约束。点过滤器为同等约束,范围过滤器为区间约束,以及集合过滤器为子集约束。使用了跳过大部分无关键的顺序爬行的组合。可根据底层数据存储的特征自适应地确定是否进行跳跃。
临时联机分析处理(OLAP)查询是一种可在一些参与变量上放置多个过滤器并且可聚合量度值的查询。OLAP实施方式可使用字典来使用连续整数对维属性值进行编码。对于具有代理键的有序属性,代理键可以是整数。对于无序属性,整数可能是连续的。对于无序属性,可保留顺序。
维属性域的笛卡尔乘积形成复合键空间。向量依赖F随后将复合键与含量度的向量形成映射。多维数据库技术基于给复合键空间赋予空间填充曲线,这样空间的每个元素都对应曲线上的单个点,反之亦然。存在多种方式来选择该曲线。在一项示例中,使用了广义z曲线(gz曲线)。在gz曲线中,使用整数对曲线上的每个点进行编码,其中整数来自复合键的分量的值。针对多维数据库的任意具有点、范围或集合过滤器的查询转化为gz曲线上的模式搜索问题。
在OLAP字段中存在向量函数依赖:
F:(D1...DN)→(M1...MM)。
自变量Di是维度(维属性),而因变量Mi是量度。使用涉及维属性的其它函数依赖来增强该依赖。独立属性是高级维属性。它们导致它们依赖的属性域内的分组,从而导致对量度进行聚合操作。依赖可形成无回路有向图(DAG)。
可使用整数对维属性进行编码。如果属性为整数值,那么可在不进行额外编码的情况下使用该属性。如果属性不是整数值,那么创建编码字典。对于自然序属性,编码保留该顺序。可以使用由连续整数进行的密集编码。或者,不使用密集编码。在一项示例中,每个维属性的基数是2的幂。
随后用编码术语表示维属性,例如表示为整数或字节数组。字典和依赖可提供常数查询时间。
感兴趣的维属性可参与复合键的形成。在键中包括高级属性可向模型增加稀疏性,但无需查询时间处的连接。
使用复合键的编码将函数依赖F的数据转换为键值格式。存储部件负责保存键值格式的数据并在查询时间获取相关键值对。
针对多维数据库的简单查询将某些属性约束为它们的值的子集并且请求满足约束的数据。在一项示例中,在维属性上存在一类约束,例如属性域上的点、范围和集合约束。
当查询到达时,***查找对字典的约束中涉及的属性值并将它们转化为整数。这些整数随后用于形成对复合键的约束。这些整数被传递到存储部件用于获取相关键值对,这些相关键值被聚合和存储。最终,再次使用字典将最终结果转化回原始属性域。
无论复合键是如何产生的,它都在键搜索空间中提供潜在点的整数编码,键搜索空间为编码属性域的笛卡尔乘积。因此,复合键在搜索空间中为空间填充曲线提供整数参数化。在一示例中,二进制表示形式的整数复合键由参与分量的键的比特位建成,这样预留了每个分量的比特位顺序。该过程产生了固定长度的键。
gz曲线的形状取决于分量的比特位组成复合键的方式法。图1示出了两个变量的一些形状,其中水平和垂直维度的比特位分别标记为x和y。曲线150所示为比特位顺序为yxyxyx的传统各向同性z曲线。曲线152所示为计程仪曲线,比特位顺序为yyyxxx,对应于将键按y排序然后按x排序。相比其它维度,计程仪曲线极力支持一个维度。计程仪的位置靠高位的维度上的对具有过滤器的查询的回答位于曲线的单个相邻分段内,然而对于位置靠低位的维度上的过滤器,回答分散在曲线上。曲线154示出了比特位顺序yyxyxx,曲线156示出了比特位顺序xxyyyx。在图1中,阴影区域为顺序4的基本区域的示例。
示例方法应用于任意维度的子集而不一定是完整集合上的点、范围和集合过滤器的任意组合。这些方法可提高任意基本键值存储***的临时OLAP查询的性能,底层键值存储***使按复合键的顺序保存数据并支持某简单操作。当存储***有效支持所需操作时,可能会发生显著的性能增益。一种方法基本上仅具有存储的某些特征,例如顺序访问和随机访问成本之比。假设一查询,计算出特定阈值,如果在爬行时查询遇到合适的障碍,那么超过该阈值后,查询将跳跃。可用代数方法确定阈值并用几何方法解释该阈值。
一示例具有很少关于存储***的知识,但具有跳跃能力。它可跳过存储的相同单元内的键,或它可跳跃着陆在存储的不同单元上。可使用数据存储提供的其它信息,例如gz曲线上由键区间划分的分区的边界。这些分区可对应于例如UB树或Hbase区域的页面。分区可以是分层的并且特定于存储。该方法随后可确定是否检查该区域的内容或跳过该区域的内容。可并行处理例如HBase区域和每个分区。此外,在该分区内,可减少该问题的维度。接着,该方法可直接在减少的可进行因式分解的键上进行操作,而不恢复原始键。
一个或多个属性上的点约束涉及固定键中的比特位模式,因此查询问题转换为关于键集合的固定模式搜索问题(PSP)。范围和集合约束导致更为复杂的模式。如果n是复合键中的总比特位数,那么所有键的空间S为 是残差组上的n维线性空间;
比特位在S中形成有序基e1,…,en并且S的元素按系数以字母顺序排列,这些系数与整数顺序一致。
在一项示例中,使用了具有至多n个二进制数字的以二进制表示的整数集合上的比特位屏蔽运算符。在另一项示例中,函数集从提取日历中提取日历部分,其中日历表示日期和时间。在一其它示例中,使用多分辨率测量***等计程仪。或者,使用时间序列、傅里叶变换或小波变换。
掩码是投射到d维坐标线性子空间S的运算符。假设d个基向量ei1,…,eid,操作符m屏蔽掉剩下的n-d个坐标。S(m)表示掩码m投射到的子空间。如果两个或两个以上掩码投射到的子空间两两不相交,那么这两个或两个以上掩码不相交,也就是说,它们不具任何公共基础元素。
对于gz曲线,掩码mD对应于每个维属性D。掩码定义其在复合键中的比特位位置。将掩码应用于复合键获取D的贡献值。对应于不同维属性的掩码不相交。
A是S的子集,表示多维数据库事实数据的复合键。具有属性D上的点过滤器D=p的针对多维数据库的任意查询转化为模式搜索问题(P):找到所有x∈A,使得x&mD=p。对于属性掩码的合集m和对应模式的合集p,具有多个属性Di上的点过滤器Di=pi的查询转化为找到x&m=p的解决方案的类似问题。
S上的任意掩码可被视为对应于某虚拟属性。因此,具有多个点过滤器的查询相当于具有合适虚拟属性上的单个点过滤器的查询。
具有范围过滤器D∈[a,b]的查询还转化为PSP(R):找到所有x∈A,使得x&mD∈[a,b]。然而,不同于点查询,将两个或两个以上此类查询合并为针对某虚拟属性的单个类似表达的查询可能是有问题的。元素可同时满足某些模式。
以类似的方式转换集合查询。假设E={ai,…,aN},过滤器D∈E对应于PSP(S):x&mD∈E。可将多个属性的过滤器合并为针对某虚拟属性的类似表达的查询。由于得到的约束集合是坐标约束的笛卡尔乘积,对于实用目的而言其基数可能过大,因此多模式搜索也可以用于实用目的。任何搜索条件的解决方案还满足约束范围x&mD∈[min(E),max(E)]。
关于集合的模式搜索问题的一种解决方案通过以全扫描方式检查对每个元素A的模式约束来实现。如果平均而言,模式搜索问题的解决方案比蛮力解决方案更快且总是快于蛮力解决方案,那么该模式搜索问题的解决方案可被称为有效。该平均相对于对任意合适数目的属性约束的固定组合的随机模式约束的集合,且该平均是所有这些组合的平均值。根据该定义,允许一有效算法比一些模式上的全扫描差,但不允许其平均而言比全扫描差。
如果集合可表示为S的至少两个子集的笛卡尔积,那么是可进行因式分解的。除了S自身,满足(P)类约束的所有元素的集合是可进行因式分解的。对于(R)类和(S)类约束,可进行因式分解的子集的示例包括具有公共前缀的区间或具有公共模式的集合。
{Sj}是一种将S划分为可进行因式分解的子集的分区,例如每个子集具有其自身的因子。所引起的由集合Aj=A∩Sj对任意的划分的分区也是可进行因式分解的。
当处理可进行因式分解的分区,尤其是处理按键区间或具有公共模式的集合划分的分区时,示例草蜢方法提供了额外的优势。当底层存储实施前缀或公共模式压缩时,示例方法可能尤其有效。
示例草蜢方法通过组合顺序爬行和跳过大部分无关键来避免执行数据的全扫描。为了适用于任何底层数据结构,在模式搜索、数据存储和模式匹配器中使用的设备间分离功率。
键值存储可包含键值对,这些键值对的键是的元素。如果数据存储支持获取、扫描和寻找操作,那么数据存储是基本的。获取操作具有x∈A中的键并获取合适的值。扫描操作具有x∈A中的键并获取A中的下一键。寻找操作具有x∈S中的键并获取大于或等于x的A中的下一键。获取A的统计数据,例如基数、第一和最后键的成本可忽略不计。分区的数据存储能够为分区的每个元素提供分区标准和处理基础数据存储的元素。
匹配器协助模式搜索并具有执行匹配操作、失配操作和提示操作的功能。对于x∈S,匹配操作告知x是否满足给定的模式约束。失配操作是指,对于x∈S,如果x满足给定的模式约束,则返回0,否则返回不匹配的最高比特位的位置,该位置指示在该位置以上或以下的部分失配。对于带有失配y的元素x∈S,提示操作建议下一元素h∈S,h>x,可理论上满足模式约束。
存储和匹配器的操作是不同的。存储知道有关集合A的一切,但对掩码和模式一无所知。另一方面,匹配器知道有关掩码和模式的一切,但对集合A一无所知。对于不同实施例,匹配器中存在变体。
为了在数据存储中搜索查询,爬虫、青蛙和草蜢方法收集匹配给定模式集合的数据和将这些匹配放进包中。爬虫、青蛙和草蜢都具有一个匹配器。通过使用匹配器,它们能够计算S上的理论查询包围区间[PSPmin,PSPmax]并将其与区间[min(A),max(A)]相交以获取实际包围区间[a,b]。
爬虫按顺序扫描。示例爬虫伪码为:
bag=0;x=a;
while x≤b{
if Match(x),add(x,Get(x))to bag;
x=Scan(x);
}
青蛙尽快跳跃。示例青蛙伪码为:
bag=0;x=a;
while x≤b{
y=Mismatch(x)
if y=0,add(x,Get(x))to bag,x=Scan(x);
else x=Seek(Hint(x,y));
}
草蜢只在失配的绝对值大于阈值t时跳跃、如果失配的绝对值不高于阈值t,那么草蜢爬行。示例草蜢伪码为:
bag=0;x=a;
while x≤b{
y=Mismatch(x)
if y=0,add(x,Get(x))to bag,x=Scan(x);
else if|y|≤t,x=Scan(x);
else x=Seek(Hint(x,y));
}
当提示操作无任何建议时,其返回∞,且对应循环终止。
可以开发出用于扫描方法的成本模型。所有三种方法为匹配PSP约束的这些x执行相同数目的扫描和获取操作,所以它们可被排除在成本估计之外。对于不解决PSP的元素,爬虫执行匹配和扫描操作,青蛙执行失配、提示和寻找操作,而草蜢有时执行匹配和扫描操作有时执行失配、提示和寻找操作。假设匹配器的操作所需时间与数据存储的操作相比可忽略不计,爬虫的成本为N0·成本(扫描),青蛙的成本为N1·成本(寻找),草蜢的成本为N2·成本(寻找)+N3·成本(扫描),其中N0是失配元素的数目,N1是青蛙跳跃的次数,N2是草蜢跳跃的次数,N3是草蜢爬行的次数。
R可以被定义为:
R = cos t ( s c a n ) cos t ( s e e k ) .
R是数据存储的属性,该属性可通过实验确定。
如果N1<N0·R,则青蛙会在爬虫之前完成。项N0可以根据参与属性的值的对应选择性分布来估计。然而,对N0的粗略估计为:
card(A)·(1-2d-n)。
因此,如果出现以下情况,则青蛙较好:
N1<R·card(A)·(1-2d-n)。
等式右侧不依赖于掩码的几何形状,即属性参与键复合的方式。相反,N1十分依赖掩码。
如果草蜢提前确定了青蛙肯定会胜过爬虫,那么草蜢可设置阈值t=0以充当青蛙。然而,存在青蛙肯定不敌爬虫的情况,例如如果掩码仅由第一比特位组成,那么S的每两个点解决PSP。匹配器无法建议任何比准确跳到下一点更好的方法,即失败策略。
如果草蜢确定爬虫总是胜利,那么其可将阈值设置为t=n,从而防止任何跳跃。然而,该策略不满足效率标准。
对于掩码m,存在映射到剩余n-d坐标上的互补掩码或共掩码m。都可从到S(m)和S(~m)上的映射恢复任何n维向量x,即:
x=m(x)|~m(x)。
共掩码定义可扩展至补偿掩码集合m1,…,m,具有与S(mi)的范围正交的子空间。
掩码m可按升序投射到S(m)中的比特位ei1,…,eid。tail(m)被定义为ei-1,head(m)被定义为id。如果掩码m投射到相邻比特位上,则掩码m是相邻的,或者等效地,head(m)=tail(m)+d。
图2示出了一些术语。点100表示从右至左的坐标向量。掩码m映射到坐标4、6、9、10和11上。坐标1至3组成尾,坐标12至15组成头,坐标5、7和8形成孔。
对于S的基的掩码m和元素ei,m>i、m=i和m<i分别是m在基向量ei+1,…,en,ei和ei,…,ei-1上的投射。因此:
m=m>i|m=i|m<i
具有投射空间的类似关系。一个或多个投射可以是空的。类似地,模式p可分解为:
p=p|p=i|p<i
所有坐标都是0(1)的子空间的的元素表示为0T(1T)。0m用于0S(m)
集合掩码上的部分顺序被定义为:
m 1 > m 2 &DoubleLeftRightArrow; t a i l ( m 1 ) &GreaterEqual; h e a d ( m 2 ) .
在按相邻掩码划分的掩码m的分区中,m的标准分区是具有最小掩码数目的分区。它们按从高比特位到低比特位的降序列出。
匹配S中的固定模式p的最小元素的形式为0~m|p,而最大元素PSPmax的形式为1~m|p。这些元素形成固定模式搜索问题的包围区间。尽管它们取决于p,但它们的差异,spread(m,PSP)不取决于p。即,spread(m,PSP)=1~m|0。
对于具有最小元素a和最大元素b的范围或集合模式,我们得到PSPmin=0~m|a和PSPmax=1~m|b。对于相邻掩码,差幅仅取决于b–a的差值。但这在一般情况下并不是真的。
如上文所述,gz曲线用作整数的N个属性域的笛卡尔积T的空间填充曲线。每个域Di的基数都是2的幂,且其参与形成gz曲线的元素的方式由域掩码mDi表示。
由于gz曲线穿过空间T,顺序r的基本区域Tr为具有与gz曲线的区间对应的量2r的矩形框,其中r=0,…,n。每个T0区域为单个点且Tn=T。区间的末尾与2的对应幂一致。每个基本区域包含低阶基本区域。给定顺序r的所有区域为彼此的副本,且它们中的gz曲线的形状是相同的。它们在T中的数目为2n+1-r。当无混淆产生时,gz曲线上的对应区间还将被称为是基础。
gz曲线上的PSP的解决方案轨迹包括特定区间或簇,在某些情况下,它们退化为点。空隙为簇间的间隙,不包括曲线末尾处的间隙。表示点PSP的轨迹的特定量包括簇数、簇长度、总空隙长度和单个空隙长度。
在示例中,m是投射到d个维度的任意掩码,{mi}是其标准分区。那么,x&m=p是点PSP。那么,PSP的轨迹是由总长度spread(m,PSP)-2n-d的空隙隔开的长度为长度2tail(m)区间的2n-d-tail(m)。区间空隙长度为部分总和:
&Sigma; i &GreaterEqual; j &lsqb; 2 h e a d ( m i ) - 2 t a i l ( m i ) &rsqb; .
对于具有d个比特位的连续掩码,基本区域Thead(m)内的2tail(m)大小的2d个相邻区间中仅一个区间符合具有掩码m的给定固定模式约束,且那一个区间也是基本区域Ttail(m)。还存在2n-head(m)个此类区域。因此,满足约束的gz曲线上的点的轨迹是长度为2head(m)–2tail(m)的空隙隔开的长度为2tail(m)的2n-head(m)个簇。图3示出了图示点PSP的轨迹的结构的图160。
在每个基本区域Ttail(m)内重复基础论据之后进行归纳。对于掩码的下一分量,考虑用先前识别的匹配簇代替S。考虑区域边缘处的间隙。
在一示例中,m是投射到d个维度的掩码,p是S(m)的元素。对于子集固定模式搜索问题PSP(m,p)是找到所有元素x∈A使得x&m=p。任何掩码分区{mi}还会引起模式分区{pi}。当且仅当对于每个i,A的元素匹配mi上的pi时,则A的元素匹配m上的p。
对于失配操作,匹配器检查PSP(mi,pi),每次检查一个比特位。如果x&mi≠pi,则ej是最高比特位,则ej是不匹配pi模式的最高比特位。如果x&mi>pi,则匹配器返回j,且如果x&mi<pi,则匹配器返回–j。如果x&mi=pi,则匹配器前进到PSP(mi+1,pi+1)等。如果没有检测到失配,则匹配器返回0。
I是S上的标识掩码,即该掩码投射到S上。
对于提示操作,假设一元素x∈S和位置j处的失配,如果失配为负值且指示位置j处的失配,则匹配器返回:
hint(x,j)=xj|1I=j|mm<j|0~m<j
变化的最高比特位位置为j。在几何学上,这意味着点x属于某基本区域Tj-1,该基本区域Tj-1不与PSP的轨迹相交。通过改变该比特位,结果被放置在下一此类区域内。由于j上没有比特位被改变,因此结果在包含x的相同基本区域Tj内。
如果失配为正值,那么该操作的几何意义是类似的,但与PSP轨迹相交的下一基本区域Tj-1位于比包含x的基本区域更高阶的不同基本区域内。为了找到该区域,找到增长点gi,其是x&(m)>j中的置零(0)比特位的j上的最小位置。如果该位置不存在,那么搜索结束并返回∞。否则,返回提示hint(x,g)的值。
可估计出青蛙跳跃的次数N1。仅当检测到失配且x属于某空隙时发生跳跃。跳跃之后,青蛙着陆到下一簇上。因此,跳跃的次数不能超过空隙数2n-d-tail(m)–1。如果该数字小于R·card(A)·(1-2d-n),则青蛙在爬虫之前结束。这适用于一些掩码,例如适用于相邻无头掩码,因为n=d+tail(m)。在该示例中: R > R 1 ( m , A ) = 2 n - d - t a i l ( m ) - 1 c a r d ( A ) &CenterDot; ( 1 - 2 d - n ) .
在另一估计中,S中存在A的均匀分布。dA=card(A)/card(S)是A的平均密度。所有空隙中预期点数目为dA(spread(m,PSP)–2n–d)。这可以重写为:
c a r d ( A ) . 2 n - m &OverBar; - 2 n - d 2 n = c a r d ( A ) &CenterDot; ( 1 - 2 - d - 2 - n m &OverBar; ) .
因此,对N1的估计可以重写为:
( 1 - 2 - d - 2 - n m &OverBar; ) < R &CenterDot; ( 1 - 2 d - n ) ,
或写为:
R > R 2 ( m ) = 1 - 2 - d - 2 - n m &OverBar; 1 - 2 d - n .
扫描对寻找比率R小于1,但R2(m)<1。当m是投射到d个最低比特位上的相邻无尾掩码时获得的最小值。因此,
min ( m &OverBar; ) = 2 d - 1 ,
以及
R 2 ( m ) &le; 1 - 2 - d - 2 - n ( 2 d - 1 ) 1 - 2 d - n = ( 1 - 2 d - n ) ( 2 - d - 2 - n ) 1 - 2 d - n = 1 - 2 - d < 1.
在一示例中,m是投射到d个维度或S的比特位的掩码,且A是S的非空子集。R1(m,A)被定义为:
R 1 ( m , A ) = 2 n - d - t a i l ( m ) - 1 c a r d ( A ) &CenterDot; ( 1 - 2 d - n ) .
另外,R2(m)被定义为:
R 2 ( m ) = 1 - 2 - d - 2 - n m &OverBar; 1 - 2 d - n .
如果数据存储的扫描对寻找比率满足估计R>min(R1(m,A),R2(m)),那么青蛙策略可能胜过爬虫策略。在一示例中,草蜢方法验证该条件。如果该条件成立,那么将阈值设置为0,且草蜢将跟在青蛙后面。
然而,草蜢有胜过爬虫的其它选择。仅在匹配器检测到非零失配时跳跃,这在当前元素x∈A属于PSP的轨迹的簇之间的空隙时发生。草蜢方法确定空隙的大小足够包含足够数目的A的元素,因此当草蜢跳到下一簇时,其跳过它们。如果空隙的大小足够包含X个元素,那么当草蜢遇到空隙的第一元素时,草蜢将跳过X–1个元素,而爬虫访问每个元素。比较爬虫方法和草蜢策略涉及比较X·N2成本(扫描)和N2·成本(寻找)。当X>1/R时草蜢胜利。假设扫描对寻找比率R,草蜢确定是否存在包含不少于X个元素的足够长度的空隙。
如果A的元素平均分布,那么长度为L的空隙中的A的元素的平均数目被估计为dA·L。因此,空隙的长度应大于1/(dA·R)。从分区{mi}的最后一个元素开始评估各空隙长度的一系列的部分和直到总和大于1/(dA·R)。如果元素mj中发生上述操作,那么将t=tail(mj)设置为阈值。如果总和永远不够大,那么草蜢方法将阈值设置为n并充当爬虫。可提前计算dA和R。
在一示例中,m是使用标准分区{mi}投射到d个维度或S的比特位的掩码,其中A是S的非空子集。此外,R是数据存储的扫描对寻找比率且j0是j的最小值,其中部分和超过
2 n c a r d ( A ) &CenterDot; R .
如果值j0存在,那么具有阈值t=tail(mj0)的草蜢方法可能胜过爬虫方法。
如果对于x,匹配器返回负失配值–y,那么x属于基本区域Ty内的空隙且PSP轨迹的下一簇位于相同的基本区域中。如果失配为正值,那么x位于比y更高阶的两个基本区域之间的较大空隙中。因此,草蜢应操作两个不同的阈值且在遇到正失配之后跳得更多。
在另一实施例中,可以通过找到一个位置增强扫描部分的能力,该位置属于PSP轨迹中某个簇的最后一个点的位置。接着,该方法盲目地选择在该终点之前遇到的元素。这意味着,验证不等式而不是验证匹配。这两个操作的成本大致相同。在遇到不满足不等式的元素之后,仍然验证其是否匹配该模式。计算簇的末端很简单但还承受额外成本。其效率取决于如何实施存储接口。
一项实施例方法用于分区案例。如果将数据进行分区且对分区进行并行扫描,那么草蜢方法从确定特定于特定部分的阈值中得到额外收益。
当该分区可进行因式分解时,则存在用于所有元素的公共模式。在一项示例中,存在按区间进行分区。如果S中的区间L是可进行因式分解的,那么存在公共前缀模式P和映射到dL个维度上的对应前缀掩码ML,使得L=P|L`,其中L`是(n–dL)维空间中的区间。一些存储可使用前缀压缩技术来保存前缀的单个副本并仅保存每键的n–dL比特位。如果该存储还使用降维提供对截断的键的访问,那么效率增加。如果该访问不可用,那么存储执行多个存储器分配和副本以组装全长键。
根据L的边界计算前缀是合理的,且额外缩减是可能的。例如,公式可以是:
S′=S(m)∩S(ML),
其可通过掩码操作实现。如果则m’是对应的相交掩码。如果pm′≠Pm′,则整个区间L位于PSP轨迹之外作为精细失配,并且可被略过。接着,如果m’=m:
S ( M L ) &Subset; S ( m ) ,
因此,整个区间L位于PSP轨迹内作为精细匹配,这样在不检查的情况下将其中的点添加到包中。否则,PSP中的掩码可被替换为m”=m\m’,并且模式被替换为pm”。当计算阈值时,S(ML)的维度可降低维度n。
在另一实施例中,存在范围约束。在一示例中,模式约束为类(R):
x&m∈[a,b]。
首先,实施例方法检查是否a=b。当a=b时,存在点约束,且当a不等于b时,存在范围约束。接着,确定间隔是否是可进行因式分解的。计算出a和b的最大公共前缀p。如果此公共前缀存在,那么:
[a,b]=[p|a′,p|b′]=p|[a′,b′],
该区间内的所有点都具有相同前缀p。这导致将掩码m分解为前缀和后缀掩码:
m=mprefix|msuffix
原始PSP转换为两个PSP的***:
x&mprefix=p,
以及:
x&msuffix∈[a′,b′]。
在一示例中,原始PSP的轨迹是轨迹结构的子集。因此,可使用分区案例。对于范围特定技术,可考虑不可进行因式分解的区间[a,b]。
元素a和b分别具有不同的高比特位0和1。否则,它们具有公共前缀。如果a的所有比特位都是0且b的所有比特位都是1,则区间是完整的。对于完整区间,A的所有元素都是解决方案。
如果区间是可进行因式分解的且其后缀区间[a’,b’]是完整的,那么区间是后缀完整的。例如,区间[12,15]是后缀完整,因为[12,15]=12|[0,3],但区间[11,14]不完整,因为[11,14]=8|[3,6]。对于后缀完整区间,原始范围PSP转化为点PSP。
假设区间不完整且不可因式分解,区间将扫过几乎整个对应d维子空间。因此,PSP轨迹几乎是整个空间S。区间越小,越接近点示例,且存在更多跳过较大空隙的机会。
点PSP的轨迹具有相等长度的区间,这些区间之间具有间隙。范围约束并非是这样的情况。
在范围示例中,m是投射到d个维的任意掩码,且{mi}是其标准分区。x&m=[a,b]是范围PSP,r是[a,b]的基数,ri是[ami,bmi]的基数。PSP的轨迹通常包含不同长度的簇,这些簇由总长的空隙隔开:
spread(m,PSP)–r..2n-d
差幅可计算为:
b|1~m-a|0~m+1。
单独空隙长度是部分总和:
&Sigma; i &GreaterEqual; j &lsqb; 2 h e a d ( m i ) - r i &CenterDot; 2 t a i l ( m i ) &rsqb; .
如果S中的每个基本区域Thead(m)内掩码m是相邻的,和点查询一样,那么PSP的轨迹是大小为r·2tail(m)的单个区间,其中r=b–a+1是区间的长度。因此,区间之间的空隙为:
2head(m)-r·2tail(m)
在非相邻情况下,不同于点查询,每个掩码的部分PSP都不是独立的。第二PSP取决于第一问题的状态。例如,对于PSP1:
x&m1∈[am1,bm1]。
在该示例中,x肯定解决了原始PSP,且不考虑用于第二掩码的PSP。如果x&m1<am1或x&m1>bm1,那么x肯定不是解决方案。如果x&m1=am1或x&m1=bm1,那么x是解决方案,其按以下公式解决第二PSP,PSP2:
x&m2∈[am2,1m2],
由PSP2(a)表示,或者
x&m2∈[0m2,bm2],
由PSP2(b)表示。对应区间的其中之一或两者可退化为点。
在一示例中,r2(a)和r2(b)分别是PSP2(a)和PSP2(b)的区间的长度。在每个基本区域Thead(m1)内,PSP1的轨迹具有长度为r1·2tail(m1)的单个区间,为1阶区间。基本区域内的原始PSP的轨迹包含在该区间内,并且包含具有以下长度的区间:
(r1-2)·2tail(m)
这对应于内部部分:
(am1,bm1)=[am1+1,bm1-1]
如果后者非空。在1阶区间内但在该内部部分之外,在每个基本区域Thead(m2)中存在对应于分别位于1阶区间的内部部分左边和右边的PSP2(a)和PSP2(b)的两个2阶区间系列。每个系列中的2阶区间中的一个与来自对应侧的1阶区间相邻,该基本域内的总区间数目最多是:
2·(2tail(m1)-head(m2)-1)。
这由图4中的轨迹结构170示出。
如果掩码具有三个分量,那么图以类似方式变化。每个2阶区间都具有属于PSP轨迹的它们的内部部分。在2阶区间与其内部部分的空间内具有两系列3阶区间。
对于失配操作,匹配器检查每个PSP(mi,[ai,bi]),每次检查一个。如果x&mi∈(ai,bi),匹配器返回0,指示匹配。如果则ej是最高比特位,则ej是不匹配[ai,bi]模式的最高比特位。如果x&mi>bi,则匹配器返回j,且如果x&mi<ai,则匹配器返回–j。如果x&mi=ai或x&mi=bi,则匹配器继续到PSP(mi+1,[ai+1,bi+1]),其中区间为[ami+1,1mi+1]或[0mi+1,bmi+1]。
在一示例中,I是S上的标识掩码,即该掩码投射到全部S上。
对于提示操作,假设元素x∈S和匹配位置j,如果失配为负值,则匹配器按以下公式计算预提示h1
xI>j|1I=j|0~m<j
如果预提示不在[a,b]内,[a,b]取决于x的级别,则提示被纠正为:
h1|am<j
变化的最高比特位位置是j。
如果失配为正值,则匹配器确定增长点g,增长点g是x&m(~m)>j中的置零(0)的j上的最小位置。如果此位置不存在,那么搜索结束,并返回∞。否则,如上使用g而不是j计算提示。
对范围查询的分区案例的处理与点查询的类似,但对于分区中的每个区间,计算出合适的范围限制。
在另一实施例中,执行集合查询。存在(S)类的模式约束:x&m∈E,其中E是某个集合。在一项示例中,将该集合排序。首先,检查E的差幅以确定其是否等于其基数。如果E的差幅等于E的基数,则E为范围。这还排除了单个元素集合。
接着,确定该集合是否可进行因式分解。计算出所有元素E的最大公共模式p。如果此公共模式存在,那么E=p|E’,且随着掩码的分解,m=mcommon|mresidue。原始PSP转换为两个PSP的***,x&mcommon=p并且xxx。对于第一问题,轨迹结构已知,且原始PSP的轨迹是它的子集。使用对点查询的考虑。对于集合特定技术,考虑不可因式分解的集合E。
由于一个集合包含多个单独点,集合PSP的轨迹是对应点PSP的轨迹的合集。这建议PSP轨迹中所有簇都具有相同大小且它们的总数目在card(E)因子上与点查询不同。正如在范围查询中,如果集合几乎是整个空间S(m),那么解决方案空间可能较大。此外,取决于集合元素之间的距离,单个空隙大小差别很大。
然而,由于集合完全包含在范围[min(E),max(E)]内,因此对合适基本区域的边缘周围的空隙的估计与范围查询类似。如果它们的大小不足以调整跳跃,则存在选项用于寻找与集合元素之间的间隙对应的足够大的空隙。
匹配器不将集合PSP的轨迹分解为点PSP的合集。相反,匹配器由掩码分区的分量将集合PSP分解为类似部分集合PSP。
正如在范围查询中,每个下一PSP都依赖于前一PSP的状态。对于具有约束x&m1∈E1的第一PSP,如果x&m1≠E1,那么搜索作为净失配立即被中断。如果y=x&m1∈E1,则将进一步搜索降低至E的子集E2(y),E的子集E2(y)作为前缀匹配y。下一PSP将是x&m2=E2,其中x&m2=E2。匹配器跟踪所有这些元素,以及可选地紧挨它们之下的一个元素以确定正确的失配位置。伴随每个下一PSP,Ei的基数迅速减小。
类似地,当提供提示时,匹配找到合适的最小元素,其可从当前位置移动到合适的最小元素。
正如在范围PSP中,由区间进行的分区带来新的方面,对于特定区间,集合PSP可变为范围或点PSP。
在其它实施例中,处理多个同时约束。由于同时PSP的轨迹是多个单独PSP的轨迹的交集,因此空隙的长度是累加的。因此,可能设置单个阈值。
当存在多种各类型模式约束时,匹配器从执行减少模式约束开始。将从点过滤器和范围的因式分解以及区间查询所得的固定模式组合成单个固定模式。完整残差区间PSP被消除。匹配器具有点PSP和/或多个范围和集合PSP。匹配器接着为每个PSP的采取多个单独匹配器,并使它们竞争最高失配位置。当给出了失配时,计算提示以满足相同时间的所有约束。如果失配是负值,那么计算预提示,且如果必要的话校正每个单独匹配器。当失配是正值时,所有匹配器竞争最低增长位置,且随后和在负失配中一样操作。
在一示例中,使用各种阈值测试草蜢策略并将其与爬虫策略进行比较,爬虫策略包括使用青蛙策略的阈值0。由于具有较低阈值,因此以较短跳跃为代价跃点数目增加。
图5示出了用于数据库搜索的方法的流程图180。首先,在步骤182中创建索引。创建与所有相关维属性有关的数据字典,将每条记录转换为复合键值对,复合键值对按键分类,键是由一组固定长度的字节表示的非常大的整数。可使用z排序构成键。键值对按键顺序存储。在一示例中,通过从分量的字典获取的整数对复合键进行编码。在一示例中,将比特位混合在一起,其中一个属性的比特位可紧邻下一属性的比特位。
接着,在步骤184中,数据库接收到查询。该查询接收自用户。查询可具有任意属性上的点、范围或集合过滤器以及针对客户数据的多个这些过滤器的组合。
接着,在步骤186中,数据库建立一个阈值。该阈值可取决于扫描比率和数据集合的密度,其中为数据集合计算阈值。在一项示例中,为单独查询确定阈值。点、范围和集合查询的阈值可能不同。或者,阈值基于数据集合,独立于单独查询。在一项示例中,将阈值设置为0,且方法始终跳跃。在另一项示例中,将阈值设置为n,且方法始终爬行。或者,将阈值设置为0和n之间的整数。可针对正失配和负失配设置单独阈值。
在步骤188中,数据库确定键是否匹配索引。一示例直接与键一起,而不与分量一起运作。执行模式搜索。可使用广义z曲线,其中存在形成较大z的小zs的二维方。存在具有复合键的值的矩形空间,矩形中具有垂直和水平线。如果键匹配索引,那么***前进到步骤190以记录该匹配。接着,在步骤196中,数据库继续按顺序搜索下一匹配,并返回步骤188。如果键不与索引匹配,那么***前进到步骤192。
在步骤192中,数据库确定失配。失配可以为正或为负。确定键和索引不一致的最高比特位,这就是失配。
接着,在步骤194中,数据库确定来自步骤192的失配是否大于步骤186中建立的阈值。如果失配小于或等于阈值,那么在步骤196中,数据库继续按顺序搜索。如果失配大于阈值,那么在步骤198中,数据库跳跃。当到范围空间的当前元素的投射错过了范围时,下一匹配候选是投射到范围开始的最近元素。然而,该跳跃长度小于点模式搜索中的跳跃长度。实际上,如果范围几乎是所有范围空间,那么给定区域中的几乎所有点都符合范围。
在步骤198中,数据库跳跃。可根据最后一个不合格键作出跳跃。在跳跃之后,数据库前进到步骤188以确定键是否与索引匹配。
示例匹配器代码是以Java语言编写的,具有表示为字节数组的键。实施不带符号的较大整数算术和按比特位运算。应用编程接口(API)用于创建架构和查询过滤器。可插式存储适配器接口使用不同的数据存储进行试验。测试分布式数据场景和内存场景。用于内存场景的数据存储适配器基于B+树和MVStore,基于B+树的键值存储位于开源H2数据库之后。对于大数据测试,使用Apache HBase,这是一种来自Hadoop家族的开源分布式键值存储。在该适配器内,通过Hbase协同处理器机制调用草蜢算法。Hbase将数据分区为键范围或区域,每个区域都指派有区域服务器节点。协同处理器有利于访问每个区域,这反过来有利于基于分区的草蜢策略。另一协同处理器跟踪每个区域的统计数据。
对于内存测试,使用具有i5中央处理器(CPU)的膝上型计算机和在64比特位Windows 7操作***上运行的16Gb的随机存取存储器(RAM)。数据随机地在计算机运行过程中生成或从文件中读取。模仿架构的呼叫详细记录(CDR)与电信中产生的相同。存在范围在2至214之间的十六个维属性。总的复合键长度为116,产生15个字节键。使用含1亿条记录的数据集合。最大Java堆大小为12Gb。内存测试单线程运行。
例如,分布式存储测试使用如下配置:具有商用Linux簇上安装的Hadoop上的运行版本为0.94的Hbase的12个区域服务器节点上的128个区域。使用了若干数据集合,包括一个具有CDR架构和1.5亿条记录的数据集合、一个具有10个属性和146万条记录的数据集合、以及具有5个属性和5.5亿条记录的事务处理性能委员会决策支持(TPC-DS)基准数据集合。结构化查询语言(SQL)中将查询表达为SELECT COUNT(1)FROM dataset WHERE filter,其中过滤器为数据集合的一些维属性上的点、范围或集合约束。查询过滤器值随机在计算机过程中生成。对于内存场景,执行至多三个具有点、范围和集合约束的属性过滤器的穷尽查询组合。对于大数据场景,随机选择属性。每个查询运行10次,使用具有不同阈值的爬虫和草蜢策略。消除最小和最大运行次数,对于每个策略,对剩余运行次数进行平均。计算所有组合的平均值。
前导属性的计程仪键复合策略产生非常低的延迟。对于其它情况,草蜢只爬行。草蜢策略整体是有效的。对于临时查询,按属性基数的降序交错的单个比特位产生更好的结果。在许多情况下,加快每个属性上的临时查询。提供了对任意gz曲线组合类型的全扫描的改进,但对于每个属性而言并不都是必要的。
当维度增长时,可利用草蜢技术的属性的数目可限制为掩码头足够高的属性的数目。键中有用比特位的数目大致为log2(card(A)·R)。因此,将阈值设置为n–t最接近最佳选择。这些t比特位可分布在最受欢迎的属性之间。
在一示例中,对于草蜢,实现了最佳结果。对于内存数据集合,青蛙比爬虫平均慢3至5倍,而草蜢比爬虫更快。对于分布式数据集合,青蛙和草蜢胜过爬虫若干数量级。在最佳阈值内,CDR数据集合上的草蜢比青蛙快6.5%,而TPC-DS数据集合上的草蜢比青蛙快13%。对于14.5亿条记录的数据集合,两个策略重叠,阈值为0。
具有适当选择的阈值的草蜢不比爬虫差。
图6示出了对于爬虫202和草蜢204,使用TreeMap作为数据存储的单位为ms的查询时间的图。过滤器的组合包括建立在1亿条记录的数据集上的有16个维度的点(P)、范围(R)和集合(S)约束。使用穷尽组合测量这些结果。青蛙(未图示)平均比爬虫慢4.3倍。越多约束,草蜢策略的性能增益越大。
图7示出了比较用于爬虫212和草蜢214的内存数据存储之间的查询时间的查询,所有数据存储都受益于使用草蜢策略。为具有1亿条记录的数据集的16个维度上的单点过滤器的数据存储示出使用TreeMap、MV-store和基础B+Tree的查询时间,以ms为单位。使用穷尽组合测量这些结果。青蛙(未图示)至少比爬虫慢3.8倍。
对于内存测试,在大多数情况下,理论计算的草蜢跳跃的阈值都是最佳的。对于内存数据存储,测量出扫描到寻找比率R的范围为0.35至0.8。对于1亿条记录的CDR数据集合,理论阈值接近95。因此,21(116-95)个键比特位都是有用的,且16个维度都可受益于草蜢策略。
在一项示例中,1.5亿条记录的CDR数据集合的最佳阈值为64,具有52个有用比特位。
在Hbase中,区域数据被内部划分为块。跳过块是有利的,但不可从协同处理器获取块统计。这些块内的搜索是按顺序的,因此寻找操作非常慢,除非其跳过全部这些块。
由最慢的节点确定查询完成的时间。如果数据不是均匀分布的,那么结果难以预测。图8示出了CDR数据集合上每个区域的两个策略的测试时间,其示出了爬虫232和草蜢234结果。图8示出了使用HBase作为针对使用随机组合测得的16个维度和1.5亿条记录的数据集上的单点过滤器的数据存储的每HBase区域的查询时间,以ms为单位。青蛙(未图示)平均比草蜢慢6.5%。
图9示出了爬虫242和草蜢244的TPC-DS数据集合的结果。该图所示为使用Hbase作为具有5.5亿条记录的TPC-DS数据集的5个维度上的单点和多点过滤器的数据存储的对数尺度上的查询时间,以ms为单位。青蛙(未图示)平均比草蜢慢13%。
图10示出了222爬虫和224草蜢的14.5亿条记录集合的结果。该图示出了使用Hbase作为针对14.6亿行数据集的10个维度上的单点和多点过滤器的数据存储的对数尺度上的查询时间,以ms为单位。阈值为0,因此草蜢和青蛙策略重叠。
图11示出了处理***270的方框图,可用于实现本文公开的设备和方法。特定设备可以利用所示的所有部件,或仅部件的子集,而集成水平可随设备而异。此外,设备可包含部件的多个实例,例如多个处理单元、处理器、存储器、发射器、接收器等等。处理***可包括配备一个或多个输入设备,如麦克风、鼠标、触摸屏、小键盘、键盘等的处理单元。另外,处理***270可配备一个或多个输出设备,例如,扬声器、打印机、显示器等。处理单元可以包括中央处理器(CPU)274、存储器276、大容量存储器设备278、视频适配器280以及连接至总线的I/O接口288。
总线可以是任意类型的若干总线架构中的一个或多个,包括存储总线或存储控制器、外设总线、视频总线等等。CPU274可包括任意类型的电子数据处理器。存储器276可包括任何类型的***存储器,例如静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、同步DRAM(SDRAM)、只读存储器(ROM)或其组合等等。在实施例中,存储器可包括在开机时使用的ROM以及执行程序时使用的程序和数据存储器的DRAM。
大容量存储器设备278可以包括任意类型的存储器设备,其用于存储数据、程序和其它信息,并使这些数据、程序和其它信息可通过总线访问。大容量存储器设备278可以包括如下项中的一种或多种:固态磁盘、硬盘驱动器、磁盘驱动器、光盘驱动器等等。大容量存储器设备可包括硬件数据压缩电路板等等。
视频适配器280和I/O接口288提供接口以耦合外部输入输出设备至处理单元。如图所示,输入输出设备的示例包括耦合至视频适配器的显示器和耦合至I/O接口的鼠标/键盘/打印机。其它设备可以耦合到处理单元,并且可以利用附加的或更少的接口卡。例如,可使用串行接口卡(未示出)将串行接口提供给打印机。
处理单元还包括一个或多个网络接口284,其可包括以太网电缆等有线链路和/或接入节点或不同网络的无线链路。网络接口284允许处理单元通过网络与远程单元通信。例如,网络接口可通过一个或多个发射器/发射天线和一个或多个接收器/接收天线提供无线通信。在一实施例中,处理单元耦合到局域网或广域网用于数据处理并与远程设备,例如其它处理单元、互联网、远程存储设施等进行通信。
虽然本发明中已提供若干实施例,但应理解,在不脱离本发明的精神或范围的情况下,本发明所公开的***和方法可以以许多其他特定形式来体现。本发明的实例应被视为说明性而非限制性的,且本发明并不限于本文本所给出的细节。例如,各种元件或部件可以在另一***中组合或合并,或者某些特征可以省略或不实施。
此外,在不脱离本发明的范围的情况下,各种实施例中描述和说明为离散或单独的技术、***、子***和方法可以与其它***、模块、技术或方法进行组合或合并。展示或论述为彼此耦合或直接耦合或通信的其它项也可以采用电方式、机械方式或其它方式通过某一接口、设备或中间部件间接地耦合或通信。其它变化、替代和改变的示例可以由本领域的技术人员在不脱离本文精神和所公开的范围的情况下确定。

Claims (22)

1.一种用于搜索数据库的方法,其特征在于,所述方法包括:
藉由处理器接收来自用户的指示查询的消息,其中所述查询包括模式;
藉由所述处理器根据所述数据库的数据集合确定第一阈值;
藉由所述处理器比较所述模式和所述数据集合的第一键以产生比较;以及
藉由所述处理器根据所述比较和所述第一阈值确定是跳到所述数据集合的第二键还是扫描至所述数据集合的第三键包括
当所述比较的绝对值大于所述第一阈值时,跳到所述数据集合的所述第二键,以及
当所述比较的所述绝对值小于或等于所述第一阈值时,扫描至所述数据集合的所述第三键,其中所述第一键和所述第三键是连续的。
2.根据权利要求1所述的方法,其特征在于,进一步包括根据所述数据集合生成索引。
3.根据权利要求2所述的方法,其特征在于,其中生成所述索引包括将所述数据集合的多条记录转换为多个复合键值对。
4.根据权利要求1所述的方法,其特征在于,其中确定所述第一阈值包括根据所述数据集合的寻找-扫描比率和所述数据集合的密度确定所述第一阈值。
5.根据权利要求1所述的方法,其特征在于,其中确定所述第一阈值包括根据所述查询确定所述第一阈值。
6.根据权利要求1所述的方法,其特征在于,其中所述查询包括点过滤器。
7.根据权利要求1所述的方法,其特征在于,其中所述查询包括范围过滤器。
8.根据权利要求1所述的方法,其特征在于,其中所述查询包括集合过滤器。
9.根据权利要求1所述的方法,其特征在于,其中所述查询包括第一点过滤器和第二点过滤器、第一范围过滤器和第二范围过滤器、第一集合过滤器和第二集合过滤器、所述第一点过滤器和所述第一范围过滤器、所述第一点过滤器和所述第一集合过滤器、或所述第一范围过滤器和所述第一集合过滤器。
10.根据权利要求1所述的方法,其特征在于,其中划分所述数据集合。
11.根据权利要求1所述的方法,其特征在于,其中不划分所述数据集合。
12.根据权利要求1所述的方法,其特征在于,其中比较所述模式和所述数据集合的所述第一键包括减少所述模式的比特位数。
13.根据权利要求1所述的方法,其特征在于,其中确定所述第一阈值包括将所述第一阈值设置为1。
14.根据权利要求1所述的方法,其特征在于,其中确定所述第一阈值包括将所述第一阈值设置为大于1的整数。
15.根据权利要求1所述的方法,其特征在于,进一步包括根据所述数据集合确定第二阈值,其中确定是跳跃还是扫描包括当所述比较为负值时比较所述比较和所述第一阈值以及当所述比较为正值时比较所述比较和所述第二阈值。
16.一种用于搜索数据库的方法,其特征在于,所述方法包括:
藉由处理器接收来自用户的指示查询的消息,其中所述查询包括模式;
藉由所述处理器比较所述模式和所述数据库的数据集合的第一键以产生比较;
藉由所述处理器根据所述比较记录结果以产生记录的结果;
藉由所述处理器根据所述比较确定是跳跃还是按序扫描;以及
藉由所述处理器向所述用户发送所述记录的结果。
17.根据权利要求16所述的方法,其特征在于,其中所述模式包括点过滤器。
18.根据权利要求16所述的方法,其特征在于,其中所述模式包括范围过滤器。
19.根据权利要求16所述的方法,其特征在于,其中所述模式包括集合过滤器。
20.根据权利要求16所述的方法,其特征在于,其中所述模式包括第一点过滤器和第二点过滤器、第一范围过滤器和第二范围过滤器、第一集合过滤器和第二集合过滤器、所述第一点过滤器和所述第一范围过滤器、所述第一点过滤器和所述第一集合过滤器、或所述第一范围过滤器和所述第一集合过滤器。
21.根据权利要求16所述的方法,其特征在于,其中确定跳跃还是扫描包括比较所述比较和阈值。
22.一种计算机,其特征在于,包括:
处理器;
数据库,包括多维数据库索引;以及
计算机可读存储介质,存储由所述处理器执行的程序,所述程序包括进行如下操作的指令:
接收来自用户的消息,其中所述消息指示查询,且所述查询包括模式,
根据所述数据库的数据集合确定第一阈值,
比较所述模式和所述数据集合的第一键以产生比较;以及
根据所述比较和所述第一阈值确定是跳到所述数据集合的第二键还是扫描至所述数据集合中的第三键,包括
当所述比较的绝对值大于所述第一阈值时,跳到所述数据集合的所述第二键,以及
当所述比较的所述绝对值小于或等于所述第一阈值时,扫描至所述数据集合的所述第三键,其中所述第一键和所述第三键是连续的。
CN201480005413.7A 2013-02-19 2014-02-19 用于数据库搜索的***和方法 Pending CN104937593A (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201361766299P 2013-02-19 2013-02-19
US61/766,299 2013-02-19
PCT/US2014/017220 WO2014143514A1 (en) 2013-02-19 2014-02-19 System and method for database searching

Publications (1)

Publication Number Publication Date
CN104937593A true CN104937593A (zh) 2015-09-23

Family

ID=51352065

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201480005413.7A Pending CN104937593A (zh) 2013-02-19 2014-02-19 用于数据库搜索的***和方法

Country Status (4)

Country Link
US (1) US20140236960A1 (zh)
EP (1) EP2948890A4 (zh)
CN (1) CN104937593A (zh)
WO (1) WO2014143514A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110398370A (zh) * 2019-08-20 2019-11-01 贵州大学 一种基于hts-cnn模型的轴承故障诊断方法

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104239576A (zh) * 2014-10-09 2014-12-24 浪潮(北京)电子信息产业有限公司 查找HBase表列值中所有行的方法和装置
CN104537003B (zh) * 2014-12-16 2018-01-09 北京中交兴路车联网科技有限公司 一种Hbase数据库的通用高性能数据写入方法
CN104699839B (zh) * 2015-03-31 2021-03-02 北京奇艺世纪科技有限公司 一种文件查找方法及装置
CN106933833B (zh) * 2015-12-30 2020-04-07 中国科学院沈阳自动化研究所 一种基于空间索引技术的位置信息快速查询方法
CN105930441B (zh) * 2016-04-18 2019-04-26 华信咨询设计研究院有限公司 一种无线电监测数据查询方法
CN107577680B (zh) * 2016-07-05 2021-04-09 北京嘀嘀无限科技发展有限公司 基于HBase大数据的实时全文检索***及其实现方法
CN107391765A (zh) * 2017-09-01 2017-11-24 云南电网有限责任公司电力科学研究院 一种电网自然灾害数据仓库模型实现方法
US10747783B2 (en) 2017-12-14 2020-08-18 Ebay Inc. Database access using a z-curve
CN109284434A (zh) * 2018-09-12 2019-01-29 东莞数汇大数据有限公司 基于r语言的网页内容爬取方法、***和存储介质
CN109299106B (zh) * 2018-10-31 2020-09-22 中国联合网络通信集团有限公司 数据查询方法和装置
JP7131314B2 (ja) * 2018-11-09 2022-09-06 富士通株式会社 情報管理プログラム、情報管理方法、情報管理装置、情報処理プログラム、情報処理方法及び情報処理装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513028B1 (en) * 1999-06-25 2003-01-28 International Business Machines Corporation Method, system, and program for searching a list of entries when search criteria is provided for less than all of the fields in an entry
CN102306176A (zh) * 2011-08-25 2012-01-04 浙江鸿程计算机***有限公司 一种基于数据仓库内在特征的olap关键词查询方法
US20120215801A1 (en) * 2000-04-07 2012-08-23 Washington University Method and Apparatus for Adjustable Data Matching
CN102663114A (zh) * 2012-04-17 2012-09-12 中国人民大学 面向并发olap的数据库查询处理方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4891781A (en) * 1987-03-04 1990-01-02 Cylink Corporation Modulo arithmetic processor chip
US5924088A (en) * 1997-02-28 1999-07-13 Oracle Corporation Index selection for an index access path
US6353821B1 (en) * 1999-12-23 2002-03-05 Bull Hn Information Systems Inc. Method and data processing system for detecting patterns in SQL to allow optimized use of multi-column indexes
US20020002550A1 (en) * 2000-02-10 2002-01-03 Berman Andrew P. Process for enabling flexible and fast content-based retrieval
GB2359641B (en) * 2000-02-25 2002-02-13 Siroyan Ltd Mapping circuitry and method
US6931418B1 (en) * 2001-03-26 2005-08-16 Steven M. Barnes Method and system for partial-order analysis of multi-dimensional data
DE60300019D1 (de) * 2003-02-18 2004-09-09 Tropf Hermann Datenbank und Methode für das Organisieren der Datenelemente
TW201006175A (en) * 2008-07-31 2010-02-01 Ibm Method, apparatus, and computer program product for testing a network system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6513028B1 (en) * 1999-06-25 2003-01-28 International Business Machines Corporation Method, system, and program for searching a list of entries when search criteria is provided for less than all of the fields in an entry
US20120215801A1 (en) * 2000-04-07 2012-08-23 Washington University Method and Apparatus for Adjustable Data Matching
CN102306176A (zh) * 2011-08-25 2012-01-04 浙江鸿程计算机***有限公司 一种基于数据仓库内在特征的olap关键词查询方法
CN102663114A (zh) * 2012-04-17 2012-09-12 中国人民大学 面向并发olap的数据库查询处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ALEXANDER RUSSAKOVSKY: "Hopping over Big Data:Accelerating Ad-hoc OLAP Queries with Grasshopper Algorithms", 《COMPUTER SCIENCE》 *
FRANK RAMSAK等: "Integrating the UB-Tree into Database System Kernel", 《PROCEEDINGS OF THE 26TH INTERNATIONAL CONFERENCE ON VERY LARGE DATABASE,MORGAN KAUFMANN PUBLISHERS INC》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110398370A (zh) * 2019-08-20 2019-11-01 贵州大学 一种基于hts-cnn模型的轴承故障诊断方法
CN110398370B (zh) * 2019-08-20 2021-02-05 贵州大学 一种基于hts-cnn模型的轴承故障诊断方法

Also Published As

Publication number Publication date
EP2948890A4 (en) 2016-04-06
WO2014143514A1 (en) 2014-09-18
US20140236960A1 (en) 2014-08-21
EP2948890A1 (en) 2015-12-02

Similar Documents

Publication Publication Date Title
CN104937593A (zh) 用于数据库搜索的***和方法
Deshpande et al. Independence is good: Dependency-based histogram synopses for high-dimensional data
Hu et al. Matching large ontologies: A divide-and-conquer approach
US9189520B2 (en) Methods and systems for one dimensional heterogeneous histograms
CN105701200A (zh) 一种内存云计算平台上的数据仓库安全olap方法
US10210280B2 (en) In-memory database search optimization using graph community structure
US20200401563A1 (en) Summarizing statistical data for database systems and/or environments
CN104137095A (zh) 用于演进分析的***
CN104700190A (zh) 一种用于项目与专业人员匹配的方法和装置
Ramkumar et al. A survey on mining multiple data sources
Golfarelli et al. Materialization of fragmented views in multidimensional databases
Aluç et al. chameleon-db: a workload-aware robust RDF data management system
Al-Amin et al. Big data analytics: Exploring graphs with optimized SQL queries
Borah et al. Tree based frequent and rare pattern mining techniques: a comprehensive structural and empirical analysis
Ordonez-Ante et al. A workload-driven approach for view selection in large dimensional datasets
Saha et al. Symbolic support graph: A space efficient data structure for incremental tabled evaluation
König et al. A framework for the physical design problem for data synopses
Rodrigues et al. Virtual partitioning ad-hoc queries over distributed XML databases
CN112667859A (zh) 基于内存的数据处理方法及装置
Venkat et al. A Succinct, Dynamic Data Structure for Proximity Queries on Point Sets.
Serrano et al. Condensed representation of frequent itemsets
Buccafurri et al. Fast range query estimation by n-level tree histograms
Fazzinga et al. A compression-based framework for the efficient analysis of business process logs
Mampaey et al. Summarising data by clustering items
König et al. Automatic tuning of data synopses

Legal Events

Date Code Title Description
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20150923