CN105074724B - 使用列式数据库中的直方图进行有效查询处理 - Google Patents

使用列式数据库中的直方图进行有效查询处理 Download PDF

Info

Publication number
CN105074724B
CN105074724B CN201480008818.6A CN201480008818A CN105074724B CN 105074724 B CN105074724 B CN 105074724B CN 201480008818 A CN201480008818 A CN 201480008818A CN 105074724 B CN105074724 B CN 105074724B
Authority
CN
China
Prior art keywords
data
bucket
row
histogram
block
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.)
Active
Application number
CN201480008818.6A
Other languages
English (en)
Other versions
CN105074724A (zh
Inventor
A·W·古普塔
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.)
Amazon Technologies Inc
Original Assignee
Amazon Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Amazon Technologies Inc filed Critical Amazon Technologies Inc
Priority to CN201711101185.5A priority Critical patent/CN107766568B/zh
Publication of CN105074724A publication Critical patent/CN105074724A/zh
Application granted granted Critical
Publication of CN105074724B publication Critical patent/CN105074724B/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2237Vectors, bitmaps or matrices
    • 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
    • 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/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/278Data partitioning, e.g. horizontal or vertical partitioning
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP

Landscapes

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

Abstract

一种概率数据结构被生成用于使用列式数据库的列中的未分类数据的直方图进行有效查询处理。确定列式数据库表单中的列的直方图的多个桶的桶范围大小。在至少一些实施方案中,所述直方图可以为高度平衡直方图。一种概率数据结构被生成来指示针对所述直方图中的哪些特定桶存在存储在所述数据块中的数据值。在接收涉及所述列的对选择的数据的查询的指示时,可以检验存储所述列的数据的所述数据块中的每个的概率数据结构以确定所述数据块中无需读取的特定数据块以便服务对所述选择的数据的所述查询。

Description

使用列式数据库中的直方图进行有效查询处理
背景技术
随着用以创建、追踪和保持信息的组织的技术能力持续增强,已开发出用于管理和存储处于上升趋势的信息的各种不同技术。例如,数据库系统对客户端提供诸多不同专用或定制配置的硬件和软件以管理存储的信息。然而,必须存储和管理的数据组织的量增加通常对应地增加数据存储和管理技术(如同数据库系统)的大小和复杂度,其转而升级为增加维护信息的成本。新技术越来越多地寻求在改善数据存储和数据管理的效率的同时,降低维护数据的复杂度和存储需求两者。
一种此类技术涉及随着数据存储在数据库表单中而使用面向列的数据库表单(通常称为“列式”)修改数据的定向或排列以减少管理数据所要的访问操作的次数。通常,访问操作(诸如各种输入(例如,写入数据)和输出(例如,读取数据))已被证明在存储和管理数据时最昂贵且最低效。对于某些类型的数据,在例如数据库系统响应于查询主要出现于数据库表单的列而非数据库表单的行中的信息时,列式数据库显著地减少访问操作的次数。又,甚至随着诸如列式数据库表单的技术的出现,收集的信息的持续增长要求对数据存储和管理的进一步优化。
附图说明
图1示出根据一些实施方案的使用列式数据库的列的高度平衡直方图进行有效查询处理的数据流方框图。
图2为示出根据一些实施方案的示例性分布式数据库库存服务的方框图。
图3为示出根据一些实施方案的示例性分布式数据库存群集的方框图。
图4A为示出根据一些实施方案的示例性领导节点的方框图。
图4B为示出根据一些实施方案的示例性计算节点的方框图。
图5为示出根据一些实施方案的用以使用列式数据库表单的列的直方图处理查询的方法的高级流程图。
图6为示出根据一些实施方案的用以确定表示列式数据库表单中的列的数据的均匀分布的直方图的桶范围大小的方法的高级流程图。
图7为示出根据一些实施方案的用以生成表示列式数据库表单中的列中的数据的直方图中的每个桶的位图的方法的高级流程图。
图8示出根据一些实施方案的用以响应于查询列式数据库表单的列中的数据而确定哪些数据块无需读取的方法的流程图。
图9示出根据一些实施方案的用以响应于检测再平衡事件而修改数据块的概率数据结构的方法的流程图。
图10示出根据一些实施方案的用以更新数据块的概率数据结构的方法的流程图。
图11示出根据一些实施方案的示例性系统。
虽然本文中通过对若干实施方案和说明图举例来描述实施方案,但所属领域的技术人员将认识到,实施方案不限于所述实施方案或图。应了解,所述图和其详述并非意在将实施方案限于所公开的特定形式,但相反,意在涵盖落在如由所附权利要求书界定的精神和范围内的所有修改、等效物和替代物。本文中所使用的标题仅用于组织目的且并非意在用以限制本发明描述或权利要求书的范围。如贯穿本申请所使用,在许可意义(即,意指可能)而非强制性意义(即,意指必须)上使用单词“可以”。相似地,单词“包括(include、including和includes)”意指包括但不限于。
具体实施方式
在下文详述中,陈述众多特定详情以完全地了解所要求主题。然而,所属领域的技术人员将了解,可以在没有这些特定详情的情况下实践所要求主题。在其它实例中,不详细描述所属领域的一般技术人员已知的方法、装置或系统以免使所要求主题不清楚。
还将了解,尽管术语第一、第二等可以在本文中用以描述各种元件,但这些元件不应受限于这些术语。这些术语仅用以区别一个元件与另一元件。例如,在不背离本发明的范围的情况下,第一接触件可称为第二接触件,且相似地,第二接触件可称为第一接触件。第一接触件和第二接触件均为接触件,但不是相同接触件。
本发明描述中所使用的术语仅用于描述特定实施方案的目的且并非意在限制本发明。如本发明描述和所附权利要求书中所使用,除非上下文另有清楚指示,否则单数形式“一(a)”、“一(an)”和“所述”也意在包括复数形式。还将了解,如本文中所使用的术语“和/或”指代且涵盖相关联所列项中的一个或多个的任何和所有可能组合。还将了解,术语“包括(includes、including、comprises和/或comprising)”在本说明书中被使用时指定所述特征、整数、步骤、操作、元件和/或组件的存在,但不排除一个或多个其它特征、整数、步骤、操作、元件、组件和/或其群组的存在或添加。
如本文中所使用,术语“如果”可以被解释为意指“在…时”、“在…之后”或者“响应于确定”或“响应于检测”,这取决于上下文。相似地,术语“如果确定”或“如果检测到[所述条件或事件]”可以被解释为意指“在确定…之后”或“响应于确定”或者“在检测到[所述条件或事件]之后”或“响应于检测到[所述条件或事件]”,这取决于上下文。
本文中描述使用列式数据库的列的直方图进行有效查询处理的各种实施方案。数据库管理服务(诸如分布式数据库存系统或其它数据库管理系统)可以实施面向列的数据库表单(后文中称为“列式数据库表单”)以对客户端提供有效数据管理。通常,根据数据库表单中的一列(诸如按日期)对列式数据库表单中的数据进行分类。在确定是否阻止针对列对数据进行分类时(根据其对数据进行分类),可以存储或估计每个数据块的不同范围,从而允许查询仅引导具有已知可能存储在数据块中的请求的数据的所述数据块的读取。然而,仅可以在响应于查询列中的数据时(根据其对列式数据库表单进行分类)应用这种技术,因为一次仅可以对一列进行分类。
直方图表示通常称为桶的不同值范围内的数据集的分布。例如,天气温度的直方图可以示出条线图,其示出高温在90s、80s、70s等的天数。表示直方图的条线图中的条线的高度可以变化很大,因为一些值范围可以具有数据集中的更多频遇值。然而,高度平衡直方图提供值范围的不同大小(即,桶),使得所绘直方图的条线的高度将是均匀的或平衡的。列式数据库表单的列可以包括不同频率的数据值。可以使用基于这些数据值生成的直方图来识别存储在数据块中的值的不同范围,且因此确定哪些块无需读取。在至少一些实施方案中,基于这些数据值生成的高度平衡直方图可以提供足够多的选择性(例如,特定桶中的数据值的判别或概率)来处理查询,使得在接收到查询时,可以使用列的高度平衡直方图来确定存储列数据的哪些数据块无需读取。例如,接着可以执行少数读取操作(或其它各种访问操作)以获得用以服务接收的查询的数据。因此,通过使用列式数据库的列的直方图或高度平衡直方图来处理查询,一些实施方案可以提供对大量数据的更有效管理和访问。
对客户端(或顾客、组织、实体等)来说,不少见的是收集可能要求后续存储或管理的大量数据。尽管一些客户端可能希望对这个数据实施自身的数据管理系统,但越来越明显的是,获得数据管理服务可以证明是不希望管理自身数据的那些客户端的更有效且划算的选择。例如,小企业可能希望维护销售记录和相关数据用于未来数据分析。或者,小企业可能发现更有效的是,承包数据管理服务来存储和管理其数据而非直接投资在数据管理系统中来维护数据以及设置和维护系统所要的专业知识。
数据管理服务(诸如下文关于图2到图4B所论述的分布式数据库存服务)可以根据其各种需要对客户端提供各种不同数据管理服务。在一些情况中,客户端可能希望存储和维护大量数据,诸如销售记录营销、管理报告、业务流程管理、预算预测、财务报告、网站分析或诸多其它类型或种类的数据。客户端对数据的使用还可以影响用以存储数据的数据管理系统的配置。例如,对于某些类型的数据分析和其它操作(诸如将来自少数列的大数据集聚合在每行内的操作),列式数据库表单可以提供更有效的性能。换句话来说,来自数据库表单的列信息可以存储到磁盘上的数据块中,而非将整行的列信息存储在每个数据块中(如在传统数据库方案中)。
在一些实施方案中,以这种列式方式存储表单数据可以降低对各种查询的总磁盘I/O需求且可以改善分析查询性能。例如,以列式方式存储数据库表单信息可以减少在作为处理查询的部分而将数据检索到存储器中以执行数据库操作时(例如,在检索表单中的所有行的所有列字段值时)执行的磁盘I/O请求的次数且可以减少需要在处理查询时从磁盘加载的数据量。相反地,对于给出次数的磁盘请求,相比于每个数据块存储整个表单行的情况,可以检索多得多的行的列字段值。在一些实施方案中,还可以使用匹配列式存储数据类型的压缩方法降低磁盘需求。例如,因为每个块包括统一数据(即,均为相同数据类型的列字段值),所以还可以通过应用最适于特定列数据类型的压缩方法降低磁盘存储和检索需求。在一些实施方案中,用于在磁盘上存储仅包括单列的字段值的数据块的空间的节省可以转化成在检索数据且接着将该数据存储在系统存储器中时(例如,在分析或以其它方式处理检索的数据时)的空间的节省。例如,对于仅需要对一列或少数列进行访问和/或操作一次的数据库操作,相比于传统基于行的存储,可能要求更少的存储器空间,因为仅存储实际上需要执行查询的特定列中的数据的数据块可以被检索并存储在存储器中。为了提高实施列式数据库表单的效率,可以生成列式数据库的列的直方图以创建用以在响应于查询时确定无需读取的数据块的概率数据结构。
图1示出根据一些实施方案的使用列式数据库的列的高度平衡直方图进行有效查询处理的数据流方框图。可以基于存储在列式数据库表单的列132中的多个数据块中的数据值创建高度平衡直方图110。可以确定直方图110的桶范围大小使得数据值均匀地分布在所述直方图的桶120当中。可以创建指示高度平衡直方图110中的桶110中的哪些特定桶存在存储在数据块中的数据值的概率数据结构。更一般来说,可以使用概率数据结构来测试给出值是否为数据集的成员,诸如存储在数据块中的数据值的集。概率数据结构可以确定无疑地指示特定值不是数据值的集的成员。为了服务于涉及列132的对选择数据的查询140,可以检验超级块数据结构100中的各自条目以确定哪些块无需读取。
存储装置130可以为一个或多个存储器件,诸如被配置来存储列式数据库表单的数据的存储磁盘器件或其它类型的存储器件。在图1中,存储装置130被配置来存储多列数据,包括列132。例如,数据可以为以下项的清单:日期、引文、数量或网络度量和更一般来说能够存储在列式数据库表单的列的数据块中的任何其它类型或形式的数据值。在各种实施方案中,不对存储在列中的数据值进行分类。数据块可以为将这些数据值存储在数据库或其它存储系统中的数据存储单元(例如,数据页)、逻辑抽象或物理存储块。列式数据库表单可以为被配置来将列的数据值存储在一起的面向列的数据存储系统。在至少一些实施方案中,可以跨分布式数据库系统中的多个不同节点分布存储装置130。
可以基于存储在列132中的数据块的数据值生成直方图110。为了确定桶120的桶范围大小,可以获得来自数据块的列数据。接着可以生成多个桶,其可以明显多于可以存储在数据块中的值的数量。可以设置所述桶的桶范围大小,使得列数据均匀地分布在所述桶当中。图1示出不同桶120的范围大小。例如,零售商可以将关于在一定时间周期内从零售商购买物品的顾客的人口统计信息(诸如年龄)存储在列式数据库表的列中。如果顾客年龄高度集中于某个年龄范围(例如,45到60岁)而其余顾客年龄较分散,那么具有均匀桶大小范围(例如,10年)的直方图可以具有具高数量的40-50和50-60个顾客的2个桶以及具少得多的数量的顾客的其它桶。替代地,桶范围大小可以在桶范围大小上变化,使得一些桶范围可以包括年龄0-25,而其它桶可以较小(45-47),使得跨所有桶均匀地分布每个桶中表示的顾客的数量。
可以基于桶范围大小120生成每个数据块的概率数据结构。这些概率数据结构指示针对桶120中的哪些桶数据值在由所述桶表示且存储在数据块内的值的范围内。在一些实施方案中,如图1示出,概率数据结构可以存储为位图。位图的每个位可以对应于直方图的桶。设置位指示桶范围内的数据值存储在数据块内。因此,例如在处理查询且检验某些数据值的位图的情况下,如果已设置表示包括查询中寻求的数据值的桶的位图的位,那么数据值可能存储在数据块中。如果不是,那么可以无需读取数据块。尽管示出为高度平衡直方图110,但在至少一些实施方案中,可以使用非高度平衡直方图来生成概率数据结构。
概率数据结构可以存储在块元数据数据结构中,诸如超级块数据结构100,其将关于数据块的信息存储在列中。每个数据块可以在超级块数据结构100中具有各自条目。在一些实施方案中,随着接收列的新数据,可以生成新概率数据结构以指示哪些桶具有在桶范围内的存储在数据块中的数据值。在至少一些实施方案中,可以检测再平衡事件,诸如添加到列的新数据的某个阈值,或自从创建直方图以来已经过的一定时间量。在一些实施方案中,将存储的额外列数据的一定偏斜量也可以触发再平衡事件。可以修改桶范围大小,且可以更新概率数据结构,诸如存储在超级块数据结构中的概率数据结构。随着在涉及列的未来查询的服务中使用修改的概率数据结构,可以通过更新概率数据结构以更准确地反映存储在数据块中的数据值来校正误检率(即,在概率数据结构指示数据值存储在桶大小范围内,但事实上数据块不存储桶大小范围内的值时)。在一些实施方案中,可以创建用于服务查询的新超级块数据结构来取代当前超级块数据结构使得在更新概率数据结构时可以不中断查询处理。
可以在各种不同数据库管理系统中实施使用列式数据库的列的直方图进行有效查询处理的实施方案。数据管理服务(诸如提供给客户端的分布式数据库存服务或其它数据库服务)可以使用列式数据库的列的直方图针对随数据管理服务存储的客户端数据实施查询处理。相似地,客户端拥有的、操作的或控制的数据库系统还可以实施列的查询处理的直方图。更一般来说,将数据存储在列式数据库表单中的任何系统可以实施使用列式数据库的列的直方图进行有效查询处理的各种实施方案,且因此,先前实例无需限于预想的各种其它系统。
实施分布式数据库存服务中的查询处理的直方图
如上文所论述,各种客户端(或顾客、组织、实体或用户)可能希望使用数据管理服务存储和管理数据。图2示出根据一些实施方案的可以将数据管理服务提供给客户端的示例性分布式数据库存系统。具体来说,数据库存群集可以连同诸多其它数据管理或存储服务响应于存储请求(例如,用以将数据写入到存储装置中)或对数据的查询(举例来说,诸如对选择的数据的服务器查询语言请求(SQL))。
多个用户或客户端可以访问数据库存群集以获得数据库存服务。根据一些实施方案,客户端可以包括用户、客户端应用和/或数据库存服务订户)。在这个实例中,客户端250a到250n中的每个能够分别访问分布式数据库存服务280中的数据库存群集225和235。分布式数据库存群集225和235可以包括可以代表具有对所述群集的访问权的客户端250a到250n将数据存储在其上的两个或两个以上节点。
客户端(诸如客户端250a到250n)可以经由以下装置与数据库存群集225或235进行通信:桌上型计算机、膝上型计算机、平板计算机、个人数字助理、移动器件、服务器或任何其它计算系统或其它器件,诸如下文关于图11所述的计算机系统1000,其被配置来将请求发送到数据库存群集225和235和/或从分布式数据库存群集225和235接收响应。请求例如可以格式化为包括与由数据库存群集提供的特定功能或服务相关联的参数和/或数据的消息。这个消息可以根据诸如可扩展标记语言(XML)的特定标记语言来格式化,和/或可以使用诸如简单对象访问协议(SOAP)的协议来封装。可以实施应用程序员接口(API)以诸如在客户端与分布式数据库存服务管理器202进行通信时对客户端提供标准化消息格式。
客户端250a到250n可以与通过分布式数据库存服务280托管的分布式数据库存群集225和235使用各种不同通信方法(诸如通过广域网(WAN)260(例如,互联网))进行通信。专用网、内联网和其它形式的通信网络也可以促进客户端与数据库存群集之间的通信。客户端可以汇编包括请求的消息并将所述消息递送到网络端点(例如,对应于数据库存群集的统一资源定位符(URL))。例如,客户端250a可以经由运行本地软件应用(其被配置来通过WAN 260将超文本传送协议(HTTP)请求发送到数据库存群集225,诸如网络客户端)的桌上型计算机进行通信。可以按相似方式格式化发送到客户端的响应或其它数据。
在至少一些实施方案中,如在280处所指示,分布式数据库存服务可以托管分布式数据库存群集,诸如群集225和235。分布式数据库存服务280可以提供到所述群集的存储客户端250a到250n的网络端点,其允许客户端250a到250n直接将请求和其它消息发送到特定群集。如上文所述,网络端点例如可以为指向特定群集的特定网络地址,诸如URL。例如,客户端250a可以被给予网络端点“http://mycluster.com”以发送各种请求消息到此。多个存储客户端(或特定存储客户端的用户)可以被给予用于特定群集的网络端点。可以实施各种安全性特征以防止未经授权的用户访问群集。相反地,客户端可以被给予用于多个群集的网络端点。
分布式数据库存群集(诸如数据库存群集225和235)可以由一个或多个节点构成。这些群集可以包括不同数量的节点。节点可以为服务器、桌上型计算机、膝上型计算机或更一般来说任何其它计算器件,诸如下文关于图11中的计算机系统1000所述的那些。在一些实施方案中,可以诸如通过群集缩放请求修改数据库存群集中的节点的数量。数据库存群集的节点可以实施用于存储数据的一个或多个数据切片。这些数据切片可以为存储器件的部分,诸如下文关于图3和图4B所论述的磁盘存储器件。群集可以被配置来通过WAN 260从存储客户端(诸如客户端250a到250n)接收请求和其它通信。群集可以被配置来经由所述群集的网络端点从多个客户端接收请求。
在一些实施方案中,分布式数据库存服务280可以实施为网络服务的部分,其允许用户设置、操作和缩放云计算环境中的数据库存。由网络服务托管的数据库存群集可以提供企业级数据库查询和管理系统,其允许用户诸如通过将群集缩放请求发送到由网络服务实施的群集控制接口来缩放群集。缩放群集可以允许网络服务的用户更有效地执行其数据库存功能,诸如通过结构化数据进行的快速查询能力、与各种数据加载和ETL(提取、变换和加载)工具的整合、客户端与一流商业智能(BI)报告、数据挖掘和分析工具的连接和对复杂分析查询(包括多表单连接、子查询和聚合的那些)的非常快速执行的最优化。
在各种实施方案中,分布式数据库存服务280可以对客户端(诸如,由分布式数据库存系统提供的数据库存服务的订户)提供可以响应于来自存储客户端的请求而创建、配置、管理、缩放和终止的数据存储和管理资源。例如,在一些实施方案中,分布式数据库存服务280可以对系统的客户端提供由虚拟计算节点组成的数据库存群集。这些虚拟计算节点可以为由虚拟机(诸如硬件虚拟机或被实施来模拟硬件配置的其它形式的软件)实施的节点。虚拟节点可以被配置来执行与在物理硬件上实施的节点相同的任务、功能和/或服务。
可以由大集合的计算器件(诸如定制或现成计算系统、服务器或计算系统或器件的任何其它组合,诸如下文关于图11所述的各种类型的器件)实施分布式数据库存服务280。可以由分布式数据库存服务管理器202控制这些计算器件的不同子集。分布式数据库存服务管理器202例如可以提供群集控制接口到客户端诸如客户端250a到250n或者希望与由分布式数据库存管理器202管理的分布式数据库存群集(其在这个示例性图示中为数据库存群集225和235)进行交互的任何其它客户端或用户。例如,分布式数据库存服务管理器202可以生成用于存储客户端的一个或多个图形用户接口(GUI),其接着可以用以选择由所述控制接口提供的各种控制功能用于分布式数据库存服务280中托管的数据库存群集。
图3为示出根据一个实施方案的分布式数据库存服务中的分布式数据库存群集的方框图。如这个实例中所示,分布式数据库存群集300可以包括领导节点320以及计算节点330、340和350,其可以通过互连件360彼此进行通信。领导节点320可以生成和/或维护对分布式数据库存群集300执行查询的一个或多个查询计划325。如本文中所述,分布式数据库存群集的每个节点可以包括可以代表客户端(例如,用户、客户端应用和/或分布式数据库存服务订户)将数据块存储在其上的多个磁盘。在这个实例中,计算节点330可以包括磁盘331-338,计算节点340包括磁盘341-348,且计算节点350包括磁盘351-358。在一些实施方案中,分布式数据库存群集的组件(或其作为组件所在的分布式数据库存系统)可以使用各种适用的负载平衡技术的任一种支持负载平衡。例如,在一些实施方案中,领导节点320可以包括负载平衡组件(未示出)。
在至少一些实施方案中,分布式数据库存群集300可以实施为基于网络的数据库存服务(诸如上文所述的数据库存服务)的部分,且包括领导节点320和多个计算节点,诸如计算节点330、340和350。领导节点320可以管理与存储客户端(诸如上文关于图2所论述的存储客户端250a到250n)进行的通信。例如,领导节点可以为服务器,其从各种存储客户端程序(例如,应用)和/或订户(用户)接收请求,接着解析请求并开发执行计划(例如,查询计划325)以实行相关联数据库操作。更具体来说,领导节点可以开发获得复杂查询和连接的结果所必需的一系列步骤。领导节点320也可以管理在被指示对存储在数据库存群集300中的数据实行数据库操作的计算节点330到350当中进行的通信。例如,编译码可以通过领导节点320分布到计算节点330到350中的各个以实行执行查询所需的步骤,和那些查询的中间结果可以发送回到领导节点320。领导节点320可以从计算节点330、340和350接收数据和查询响应或结果。可以由领导节点320管理和存储存储在计算节点当中的数据的数据库模式和/或其它元数据信息,诸如存储在群集中的数据表单。
分布式数据库存群集300也可以包括计算节点,诸如计算节点330、340和350。可以例如在服务器或其它计算器件(诸如下文关于图11中的计算机系统1000所述的那些)上实施这些一个或多个计算节点,且每个计算节点可以包括例如对于服务器的多核心处理器中的每个核心定义的个别查询处理“切片”。计算节点可以基于从领导节点320发送到计算节点330、340和350的指令执行数据库操作(诸如查询)的处理。指令可以例如为来自可由指令所发送到的特定数据计算节点执行的执行计划段和步骤的编译码。数据计算节点可以将来自查询的中间结果发送回到领导节点320用于最终聚合。每个数据计算节点可以被配置来访问某个存储器和磁盘空间(诸如图4B中所示的),以便针对发送到计算节点330、340或350中的一个或多个的查询(或其它数据库操作)处理工作负载的一部分。因此,计算节点330例如可以访问磁盘431、432直到磁盘438为止。
磁盘(诸如图3中所示的磁盘331到358)可以可以实施为适于存储可供数据计算节点访问的数据的任何类型的存储器件和/或存储系统中的一个或多个,包括但不限于:廉价磁盘冗余阵列(RAID)器件、磁盘驱动器或磁盘驱动器阵列(诸如集束磁盘(JBOD)(用以指代并非根据RAID配置的磁盘))、光学存储器件、磁带驱动器、RAM磁盘、存储区域网络(SAN)、网络访问存储装置(NAS)或其组合。在各种实施方案中,可以格式化磁盘以通过各种面向列的数据库模式存储列式数据库表单。
在一些实施方案中,分布式数据库存群集中的计算节点中的每个可以实施在节点服务器的(或其它计算器件的)操作系统上运行的程序集,所述操作系统管理与领导节点进行的通信,例如以接收命令,发送回数据,和将编译码路由到个别查询程序(例如,针对节点上的每个核心或切片)以便执行给出查询。在一些实施方案中,计算节点中的每个包括用于存储在节点上的块的元数据。在至少一些实施方案中,这个块元数据可以一起聚合成超级块数据结构,所述超级块数据结构为其条目存储信息(例如,关于存储在所述节点上的数据块中的每个的元数据)(即,每个数据块一个条目)的数据结构(例如,数据阵列)。在一些实施方案中,超级块数据结构中的每个条目包括各自块的唯一ID,且所述唯一ID可以用以执行与数据块相关联的各种操作。例如,应用于存储在数据块中的数据的列特有压缩技术的指示、应用于存储在数据块中的数据的默认压缩技术的指示或指示未存储在数据块中的数据值的概率数据结构均可以存储在数据块的各自条目中。在一些实施方案中,在数据块首先写入到分布式数据库存系统中时,可以由领导节点或计算节点生成唯一ID(且由领导节点或计算节点在超级块中创建对应条目)。
图4A示出根据一些实施方案的示例性领导节点。如上所论述,领导节点400可以与分布式数据库存系统中的各种客户端交互以接收各种消息和查询以管理额外数据并将其存储在列式数据库表单中。除开发查询计划410以实行相关联数据库操作外,在一些实施方案中,领导节点也可以包括直方图生成器420。各种不同硬件和软件器件可以单独地或组合地用以实施直方图生成器420。直方图生成器420可以被配置来确定表示数据在列式数据库表单的列中的多个桶当中的分布的高度平衡直方图的桶范围大小。直方图生成器420可以生成用于查询处理的不同直方图,诸如高度平衡直方图。在一些实施方案中,列式数据库表单的列的数据可以物理地存储在诸多不同计算节点(诸如图4B中所示的计算节点450)上。因此,直方图生成器420可以从不同计算节点获得列数据作为输入,生成列中的数据的直方图的桶,和设置桶中的每个的桶范围大小使得数据均匀地分布在桶当中。直方图生成器420也可以基于列中的数据的直方图的桶生成存储列数据的一个或多个数据块中的每个数据块的概率数据结构。如上文所论述,概率数据结构指示给出值是否可能在值(诸如存储在数据块中的数据值)的集内。因此,在基于列中的数据的直方图(诸如高度平衡直方图)时,概率数据结构可以指示针对直方图的多个桶中的哪些桶存在存储在数据块中的在桶范围大小中的数据值。
直方图生成器420也可以确定何时再生成给出列的直方图,包括生成列中的数据块的新概率数据结构。在一些实施方案中,诸如在自从最近生成列的高度平衡直方图以来经过一段时间时或在一定量的新数据已存储在列中时,可以针对高度平衡直方图检测再平衡事件。在至少一些实施方案中,直方图生成器420可以被配置来修改列的高度平衡直方图的桶范围大小,且可以根据修改的桶范围大小修改概率数据结构。或者,在一些实施方案中,直方图生成器420可以被配置来确定存储在给出列中的数据值的新高度平衡直方图的新桶范围大小。
图4B示出根据一些实施方案的计算节点的实例。可以在计算节点450处接收访问请求452,诸如发送到领导节点(诸如领导节点320)和从领导节点发送到计算节点的各种查询和消息。查询执行模块460可以处理访问请求,将读取、写入和其它访问操作引导到磁盘450到458。各种不同硬件和软件器件可以单独地或组合地用以实施查询执行模块460。在处理查询时,查询执行模块460可以检验存储列数据的每个数据块的概率数据结构以确定无需读取的数据块以便服务查询,且接着读取存储列数据的数据块,但无需读取的那些数据块除外。
在一些实施方案中,计算节点450也可以包括超级块数据结构470,诸如本地存储在计算节点处或远程地存储但可供计算节点访问的上文所述超级块数据结构,其可以包括存储在计算节点450上的数据块的各自条目472,其存储包括数据块的概率数据结构的块元数据。然而,应注意,在一些实施方案中,数据块的元数据可以存储在多个不同位置中,诸如在数据块自身或其它个别数据结构中。因此,超级块数据结构470并非意在限于可以应用于保留数据块的元数据信息的各种其它结构、位置、方法或技术。
如上文所述,图2到图4示出使用列式数据库表单的列的直方图处理查询的示例性实施方案且并非意在限于可以用于存储和管理列式数据库表单的其它架构、系统、组件或排列。例如,上文关于图3所述的分布式数据库存群集300可以不包括领导节点,或可以包括执行不同功能以存储和管理数据的一个或多个其它不同节点。
使用高度平衡直方图处理查询的工作流程
如上文已论述,数据库管理系统可以被配置来利用列式数据库表单来提供更有效的数据管理功能。为了更有效地执行这些功能,可以基于列式数据库表单中的列的数据的直方图,生成存储所述列中的数据的数据块的概率数据结构。在至少一些实施方案中,这个直方图为高度平衡直方图。图5为示出根据一些实施方案的用以确定表示列式数据库表单的列的数据的分布的直方图的桶范围大小的方法的高级流程图。各种不同系统和器件可以实施下文所述的各种方法和技术。直方图生成器(诸如上文关于图4所述的直方图生成器420)可以与查询执行模块(诸如查询执行模块460)一起工作,以实施各种方法。或者,不同系统和器件的组合(诸如图3中所示的一起工作的多个计算节点)例如也可以执行下述方法和技术。因此,如提及为执行所示方法的上述实例和或任何其它系统或器件并非意在限于其它不同个体或配置的系统和器件。
在各种实施方案中,如在500处所指示,可以确定列式数据库表单的列的直方图的桶的桶范围大小。如上文所论述,直方图表示数据跨通常称为“桶”的值范围的分布。通常,这些桶可以大小相等。例如,如果基于使用应用演示花费的时间量生成软件应用下载次数的直方图,那么桶可以具有10分钟间隔直到2小时间隔的范围大小。然而,数据值的直方图(诸如高度平衡直方图)可以确定一些桶应为5分钟间隔且一些桶应为30分钟间隔,以将下载次数均匀地分布在每个桶中。图6示出根据一些实施方案的用以确定表示列式数据库表单的列的数据的均匀分布的直方图的桶范围大小的一种此类方法。
如在602处所指示,可以获得直方图所表示的列的数据。如上文所述,在一些实施方案中,单一节点、存储器件可以将特定列的所有数据块物理地存储在一个位置中。然而,在至少一些其它实施方案中,虽然数据块可以在逻辑上分组为存储列式数据库表单的特定列的数据的数据块,但可以跨若干不同器件(诸如上文关于图3所述的分布式数据库存群集中的多个计算节点)上的多个位置物理地分布数据块自身。因此,在一些实例中,可以在执行进一步计算之前从多个器件或系统获得数据。
如在604处所指示,接着可以生成表示存储在数据块中的数据值的范围的多个桶。可以基于可以存储在数据块中的数据值的数量确定特定桶数量。在一些实施方案中,生成的桶数量可以明显多于可以存储的数据值的数量。例如,可以基于可以存储在数据块中的数据值的数量的特定因数(或倍数)确定直方图的桶数量。因此,如果数据块可以存储100个数据值,那么生成的表示列的直方图的桶数量可以增加达10到1,000个桶的倍数。基于桶数量生成概率数据结构的选择性(准确度)可以取决于桶数量与可以存储在数据块中的数据值的数量之间的较大或较显著的差。然而,这无需受限,因为其它可行实施方案可以确定根据替代准则(诸如存储在列中的数据的类型(例如,名称、数据、数量、产品编号等)或通常涉及数据的查询的类型(例如,范围查询))生成的桶的数量。
如在606处所指示,接着可以调整桶的范围大小以针对高度平衡直方图在桶当中平衡列数据。请注意,如本说明书中所使用的术语“均匀地”或“平衡”即不限于也非意在意指“完全相同的值”。直方图的桶当中的接近平衡、近似平衡或甚至估计的平衡可以提供相似选择性,且如此术语不限于一种特定含义。
如在510处所指示,在确定直方图的桶的桶范围大小之后,可以生成存储列式数据库表单的列的数据的每个数据块的概率数据结构。如上文所述,概率数据结构可以指示给出值是否为数据集的成员,诸如存储在数据块中的数据。概率数据结构可以指示针对整列的高度平衡直方图中的哪些桶存在存储在数据块中的数据值。在至少一些实施方案中,概率数据结构可以为位图。图7示出根据一些实施方案的用以生成表示列式数据库表单的列中的数据的直方图中的每个桶的位图的方法的流程图。
如在612处所指示,可以生成存储列式数据库表单中的列的数据的数据块的位图。位图中的位的数量可以对应于直方图中的桶的数量。每个位可以表示直方图中的桶,其表示列中的数据的分布。例如,如图1中所示,所示直方图的8个桶对应于存储在超级块100中的位图中的8个位。一旦创建,那么存储在数据块中的每个数据值可以位于高度平衡直方图的桶中的一个内。如在614处所指示,设置包括桶的值范围内的数据值的桶的各自位(例如,设置为值“1”)。一旦所有数据值已位于直方图的桶中且已设置包括桶中的数据值的桶的对应位,那么位图可以存储在块元数据中。如在616处所指示,在一些实施方案中,位图可以存储在超级块(诸如上文关于图4B所述的超级块470)的各自条目中。
在各种实施方案中,如在520处所指示,可以接收涉及列式数据库表单的列的对选择的数据的查询或查询的指示。如上文关于图2到图4B所论述,可以根据各种不同标准化查询协议或语言(诸如SQL)或诸如API中所述的定制格式格式化查询或其它访问请求消息。在至少一些实施方案中,查询可以为涉及计算节点(诸如上文关于图4B所述的计算节点450)的来自领导节点(诸如上文关于图4A所述的领导节点400)的一次或多次查询。如在530处所指示,响应于接收查询,可以检验存储列中的数据的每个数据块的概率数据结构。概率数据结构的检验可以确定无需读取的特定数据块以便服务对选择的数据的查询。
图8示出根据一些实施方案的用以响应于对列式数据库表单的列中的数据的查询而确定哪些数据块无需读取的方法的流程图。如在700处所指示,可以接收涉及列式数据库表单的列的对选择的数据的查询的指示。查询可以包括对特定数据的请求,诸如数据值的范围(例如,某些日期之间的数据、与某些购买订单量相关联的数据等)。选择的数据的数据值接着可以位于查询所涉及的列的直方图的桶内。如在710处所指示,一旦被识别,那么可以从块元数据(诸如超级块)获得概率数据结构(诸如位图)并检验其以确定特定数据是否存储在数据块中。如在720处所指示,如果未设置选择的数据中的数据值的桶位置的位图的对应位,那么位图指示无需读取数据块。例如,回顾图1,存储在超级块100中的第一位图具有8个位值“10010110”,其对应于直方图120的桶。如果第一桶表示数据值1到10,且第二桶表示数据值11到30,那么对于选择的数据值20,将检验对应于第二桶的位。在这种情况下,位设置为0,其指示不存在在从11到30的范围中且存储在列132中的对应数据块中的数据值。因此,位图将指示如果选择的数据值为20,那么无需读取第一数据块。然而,如果选择的数据值为5,那么第一桶的对应位设置为1,其指示值1到10可以存储在数据块中。因此,如在720处所指示,位图将指示数据块可以存储数据值。因此,如在730处所指示,可以读取数据块。
如图8示出,如在740处所指示,可以重复这个程序直到已针对存储列数据的所有数据块检验所有块元数据为止,诸如超级块中的数据块的各自条目。例如,两个“否”分支指向元件712,其指示可以从超级块获得列中的下一数据块的位图。如在750处所指示,接着可以提供从数据块读取的数据以服务对选择的数据的查询。应注意,因为读取数据块,所以其不指示选择的数据必须在数据块中,但相反指示数据可以存储在数据块中。可以对从数据块读取的数据执行进一步筛选、处理或其它查询操作。可以将数据中的至少一些传回到领导节点、存储客户端或其它系统或器件。
随着对列中的数据执行数据操作(诸如数据值的添加或修改),列中的用于数据块的概率数据结构不可能保持最新。例如,在一些实施方案中,可以接收额外列数据并将其存储在新数据块中。在存储新数据时,可以诸如通过针对新数据值设置对应于先前创建的高度平衡直方图中的桶的位图中的位来生成新数据块的概率数据结构。随着时间推移,这使直方图偏斜,从而造成直方图变为较小高度平衡或较不均匀地将列数据分布在桶当中。对于实施高度平衡直方图的一些实施方案,这个额外数据可以降低使用高度平衡直方图的效率。作为补救,在至少一些实施方案中,可以计算存储在列式数据库表单的列中的当前数据的新高度平衡直方图,其中针对存储列数据的每个数据块确定桶范围大小且生成新概率数据结构。然而,这个操作可以证明在计算资源的方面是昂贵的。因此,在至少一些实施方案中,可以在不重新计算列数据的分布以将新数据或修改的数据包括在列中的情况下修改桶范围自身。
图9示出根据一些实施方案的用以响应于检测再平衡事件而修改数据块的概率数据结构的方法的流程图。如在802处所指示,可以检测再平衡事件。例如,直方图生成器(诸如上文关于图4A所论述的直方图生成器420)可以检测到自从列的高度平衡直方图的最新计算或修改以来已经过一定时间量,超出再平衡时间阈值(例如,24小时)。其它实施方案可以确定存储在额外数据块中的额外数据的量可已被存储用于列,超出再平衡阈值。例如,再平衡阈值可以为列的20个新数据块,且在写入列的20个以上数据块之后,可以检测再平衡事件。
在至少一些实施方案中,可以基于额外列数据的分布确定再平衡事件。相较于列中的数据的当前分布,可以分析这个额外数据以确定额外数据的分布(诸如额外数据在高度平衡直方图的桶当中的分布)的变化。接着可以确定变化是否超出分布阈值,诸如指示额外数据的分布可以朝向不同于当前直方图的分布偏斜(诸如直方图的分布可以不再高度平衡)的某个百分比或其它值。
可以按各种不同方式执行分析额外数据的分布。可以随着额外数据存储在额外数据块中或在额外数据存储在额外数据块中之后,执行额外数据的数据值分析以分析额外数据的分布。例如,可以在存储程序期间通过在存储之前检验每个数据块的数据值来追踪或监测数据的数据值分布。或者,在已存储一定数量的额外数据块之后,可以获得并分析数据值。
除分析额外数据的数据值之外,在至少一些实施方案中,还可以替代地检验针对额外数据生成的概率数据结构,诸如位图。例如,如上文所论述,可以生成位图,其指示直方图的哪些桶包括额外数据块中的额外数据的数据值。可以分析这些位图以确定额外数据的分布。例如,可以对指示桶范围内的数据值的位集的数量进行计数或追踪。可以随着生成存储额外数据的额外数据块的每个额外位图维持这个追踪(或或者,可以在生成位图且将额外数据存储在数据块中之后获得这个追踪)。基于额外数据的桶集的数量(诸如相同于或接近于范围集的桶集或桶的那些),可以确定额外数据的分布。接着可以确定相较于列中的数据的原始分布的变化。如果例如表示额外数据块的特定桶范围的位集的数量超出某个阈值(例如,相对于存储的额外数据块的数量的计数值,诸如相对于30个存储的额外数据块的阈值20),那么可以确定相较于列数据的先前分布时,额外数据的数据分布朝向该特定桶范围偏斜。可以触发再平衡事件。也可以对直方图的其它桶中的一个或多个执行这个分析。可以例如组合个别桶的结果以确定额外数据的分布,接着可以比较所述分布与额外数据之前的数据的分布。如果这个变化超出某个分布阈值,那么可以触发再平衡事件。
如在804处所指示,响应于检测表示列数据的高度平衡直方图的再平衡事件,可以修改高度平衡直方图的桶范围大小。可根据诸多不同桶范围技术(诸如通过检验额外数据块的概率数据结构以估计额外数据的分布)执行修改桶范围大小。例如,如果添加到列的新数据偏斜到较高范围值,那么可以估计分布以减小表示较高范围值的桶的大小。或者,可以诸如通过设置相邻于位图概率数据结构中的设置位的位来修改桶范围大小以便重叠。如在806处所指示,一旦修改表示列数据的分布的高度平衡直方图的桶范围大小,那么可以更新数据块的概率数据结构以表示高度平衡直方图的修改的桶范围大小。如下文进一步所论述,图10描述用以更新概率数据结构的技术的实例。这些更新可以例如与根据修改的桶范围大小设置表示为位图的所述概率数据结构中的不同位或改变为表示数据在桶当中的分布的不同概率数据结构一样简单。例如,高度平衡直方图可以替代地表示为数学表达式而非位图。或者,更新可以包括生成新块元数据结构(诸如超级块),填充有更新的概率数据结构,以取代用于服务对列数据的查询的当前块元数据结构。利用当前超级块数据结构直到新超级块数据结构已完成为止。
图10示出根据一些实施方案的用以更新数据块的概率数据结构的方法的流程图。如在900处所指示,可以接收列式数据库表单的列的额外数据。如在910处所指示,可以将数据存储在一个或多个数据块中。如在920处所指示,存储的数据的量(诸如创建的数据块的数量)可以超出再平衡阈值,诸如用以触发上文关于图9所论述的再平衡事件的各种阈值中的一个。如在912处所指示,如果否,那么生成设置位于高度平衡直方图的桶中的数据值的位的一个或多个数据块的位图,所述高度平衡直方图表示数据在桶当中的分布。如在930处所指示,如果超出再平衡阈值,那么修改高度平衡直方图的每个桶的桶范围大小,所述高度平衡直方图表示列中的数据在桶当中的分布。接着,如在940处所指示,识别表示列中的数据块的桶的位图的未设置位(其现被指示存储修改的桶范围大小内的数据值),且接着,如在950处所指示,设置所述未设置位。
在各种实施方案中,可以在对应于数据结构的数据块的后续读取之后进一步更新归因于修改桶范围大小所致的更新的概率数据结构。例如,如果概率数据结构指示某个值范围内的数据值存储在数据块中,且在读取数据块之后确定没有这种值在所述范围内,那么可以更新概率数据结构以指示所述值未存储在所述范围内。再次回顾图1,如果例如桶8改变为修改的桶范围大小(甚至大于前述值),且更新第一数据块的超级块100位图以指示位8现设置为1而非0(其指示存储在由桶8表示的修改的值的范围内的值),且接着读取数据块且实际上没有数据值存储在如由位8中的1所指示的修改的范围中,那么可以进一步更新位图以将位返回为0。
在至少一些实施方案中,可以确定数据块的概率数据结构的选择性等级。如果例如数据位图的多数位设置为1,那么位图不是高选择性的,因为多数检验将指示应读取数据块。如果选择性等级降低到选择性阈值以下,那么在一些实施方案中,不同概率数据结构(诸如布隆(bloom)过滤器、商数过滤器或跳跃表)可以被实施来取代高度平衡直方图且存储在块元数据中以促进查询处理。
示例性系统
可以在可以与各种其它器件交互的一个或多个计算机系统上执行如本文中所述的使用列式数据库的列的直方图进行有效查询处理的实施方案。图11示出一种此类计算机系统。在不同实施方案中,计算机系统1000可以为各种类型的器件中的任何一种,包括但不限于个人计算机系统、桌上型计算机、膝上型计算机、上网本或笔记型计算机、大型计算机系统、手持型计算机、工作站、网络计算机、相机、机顶盒、移动器件、消费者器件、视频游戏机、手持型视频游戏器件、应用服务器、存储器件、外围器件(诸如交换机、调制解调器、路由器)或大体来说任何类型的计算或电子器件。
在所示实施方案中,计算机系统1000包括经由输入/输出(I/O)接口1030耦接到系统存储器1020的一个或多个处理器1010。计算机系统1000还包括耦接到I/O接口1030的网络接口1040和一个或多个输入/输出器件1050(诸如光标控制器件1060、键盘1070和显示器1080)。显示器1080可以包括标准计算机监测器和/或其它显示器系统、技术或器件。在至少一些实施方式中,输入/输出器件1050也可以包括启用触摸或多触摸的器件,诸如pad或平板计算机,用户经由其经由光笔类型器件和/或一个或多个数字键入输入。在一些实施方案中,预期可以使用计算机系统1000的单一实例实施实施方案,而在其它实施方案中多个这种系统或组成计算机系统1000的多个节点可以被配置来托管实施方案的不同部分或实例。例如,在一个实施方案中,可以经由与实施其它元件的那些节点不同的计算机系统1000的一个或多个节点实施一些元件。
在各种实施方案中,计算机系统1000可以为包括一个处理器1010的单处理器系统或包括若干处理器1010(例如,两个、四个、八个或另一合适数量)的多处理器系统。处理器1010可以为能够执行指令的任何合适处理器。例如,在各种实施方案中,处理器1010可以为实施各种指令集架构(ISA)中的任何一种(诸如x86、PowerPC、SPARC、或MIPS ISA、或任何其它合适ISA)的通用或嵌入式处理器。在多处理器系统中,处理器1010中的每个通常可以但未必实施相同ISA。
一些实施方案中,至少一个处理器1010可以为图形处理单元。图形处理单元或GPU可以被视为个人计算机、工作站、游戏机或其它计算或电子器件的专用图形呈现器件。现代GPU可以对操控和显示计算机图形非常有效,且在复杂图形算法的范围内其高度平行结构可以使其比典型CPU更有效。例如,图形处理器可以按使执行其远快于直接使用主机中央处理单元(CPU)拖拽到屏幕的方式实施多种图形原始操作。在各种实施方案中,可以至少部分通过被配置来在这些GPU中的一个之上执行或者在这些GPU中的两个或两个以上之上平行执行的程序指令实施图形呈现。GPU可以实施允许程序员调用GPU的功能性的一个或多个应用程序员接口(API)。合适GPU可以商购自诸如NVIDIA公司、ATI Technologies(AMD)等的供应商。
系统存储器1020可以被配置来存储可供处理器1010访问的程序指令和/或数据。在各种实施方案中,可以使用任何合适存储器技术(诸如静态随机存取存储器(SRAM)、同步动态RAM(SDRAM)、非易失性/闪速类型存储器或任何其它类型的存储器)实施系统存储器1020。在所示实施方案中,实施诸如上文描述为缩放如本文中所述的分布式系统中的计算群集的所要功能的程序指令和数据被示出为分别作为程序指令1025和数据存储装置1035存储在系统存储器1020内。在其它实施方案中,可以在不同类型的计算机可访问介质上或在与系统存储器1020或计算机系统1000分离的相似介质上接收、发送或存储程序指令和/或数据。一般来说,计算机可访问介质可以包括存储介质或存储器介质,诸如磁性介质或光学介质,例如经由I/O接口1030耦接到计算机系统1000的磁盘或CD/DVD-ROM。可以通过传输介质或信号(诸如可以经由通信介质(诸如例如可以经由网络接口1040实施的网络和/或无线链路)递送的电信号、电磁信号或数字信号)传输经由计算机可访问介质存储的程序指令和数据。
在一个实施方案中,I/O接口1030可以被配置来协调器件中的处理器1010、系统存储器1020与任何外围器件(包括网络接口1040或其它外围接口(诸如输入/输出器件1050))之间的I/O流量。在一些实施方案中,I/O接口1030可以执行任何必需协议、时序或其它数据变换以将来自一个组件(例如,系统存储器1020)的数据信号转换成适于供另一组件(例如,处理器1010)使用的格式。在一些实施方案中,I/O接口1030可以包括支持通过各种类型的外围总线(举例来说,诸如外围组件互连(PCI)总线标准或通用串行总线(USB)标准的变体)附接的器件。在一些实施方案中,I/O接口1030的功能可以分成两个或两个以上不同组件,举例来说,诸如北桥和南桥。此外,在一些实施方案中,I/O接口1030的功能性中的一些或所有(诸如到系统存储器1020的接口)可以直接并入到处理器1010中。
网络接口1040可以被配置来允许在计算机系统1000与附接到网络的其它器件(诸如其它计算机系统)之间或在计算机系统1000的节点之间交换数据。在各种实施方案中,网络接口1040可以经由以下网络支持通信:有线或无线通用数据网络,举例来说,诸如任何合适类型的以太网网络;电信/电话网络,诸如模拟语音网络或数字光纤通信网络;存储区域网络,诸如光纤通道SAN;或任何其它合适类型的网络和/或协议。
在一些实施方案中,输入/输出器件1050可以包括一个或多个显示器终端、键盘、袖珍键盘、触摸板、扫描器件、语音或光学辨识器件或适于通过一个或多个计算机系统1000键入或检索数据的任何其它器件。多个输入/输出器件1050可以存在于计算机系统1000中或可以分布在计算机系统1000的各种节点上。在一些实施方案中,相似输入/输出器件可以与计算机系统1000分离且可以通过有线或无线连接(诸如通过网络接口1040)与计算机系统1000的一个或多个节点交互。
如图11中所示,存储器1020可以包括:程序指令1025,其被配置来提供对如本文中所述的预计交付订单的基于时间的项目建议;和数据存储装置1035,其包括可供程序指令1025访问的各种数据。在一个实施方案中,程序指令1025可以包括如本文中所述且如图中所示的实施方案的软件元件。数据存储装置1035可以包括可以用于实施方案的数据。在其它实施方案中,可以包括其它或不同软件元件和数据。
所属领域的技术人员将明白,计算机系统1000仅是说明性的且并非意在限制如本文中所述的立体绘图技术的范围。特定来说,计算机系统和器件可以包括可执行指示的功能的硬件或软件的任何组合,包括计算机、个人计算机系统、桌上型计算机、膝上型计算机、上网本或笔记型计算机、大型计算机系统、手持型计算机、工作站、网络计算机、相机、机顶盒、移动器件、网络器件、互联网设施、PDA、无线电话、传呼机、消费者器件、视频游戏机、手持型视频游戏器件、应用服务器、存储器件、外围器件(诸如交换机、调制解调器、路由器)或大体来说任何类型的计算或电子器件。计算机系统1000也可以连接到未示出的其它器件,或替代地可以操作为独立系统。此外,在一些实施方案中,由所示组件提供的功能性可以组合在少数组件中或分布在额外组件中。相似地,在一些实施方案中,可以不提供所示组件中的一些的功能性和/或可以使用其它额外功能性。
所属领域的技术人员也将明白,虽然各种项目被示出为在被使用时存储在存储器中或存储在存储装置上,但出于存储器管理和数据完整性的目的可以在存储器与其它存储器件之间传送这些项目或其部分。或者,在其它实施方案中,软件组件中的一些或所有可以在另一器件上的存储器中执行且经由计算机间通信与所示计算机系统进行通信。系统组件或数据结构中的一些或所有也可以(例如,作为指令或结构化数据)存储在计算机可访问介质或便携式物件上以供适当驱动器(上文描述其各种实例)读取。在一些实施方案中,存储在与计算机系统1000分离的计算机可访问介质上的指令可以经由传输介质或信号(诸如经由通信介质(诸如网络和/或无线链路)递送的电信号、电磁信号或数字信号)传输到计算机系统1000。各种实施方案还可以包括接收、发送或存储根据前文描述实施的指令和/或数据在计算机可访问介质上。因此,可以使用其它计算机系统配置实践本发明。
应注意,本文中所述的分布式系统实施方案中的任何一个或其组件中的任何一个可以实施为一个或多个网络服务。例如,数据库存系统内的领导节点可以对客户端呈现数据存储服务和/或数据库服务(如网络服务)。在一些实施方案中,可以由被设计来通过网络支持可互操作的机器对机器交互的软件和/或硬件系统实施网络服务。网络服务可以具有以机器可处理格式(诸如网络服务描述语言(WSDL))所述的接口。其它系统可以按通过网络服务的接口的描述规定的方式与网络服务交互。例如,网络服务可以定义其它系统可以调用的各种操作,且可以定义可以预期在请求各种操作时其它系统所遵循的特定应用程序设计接口(API)。
在各种实施方案中,可以通过包括与网络服务请求相关联的参数和/或数据的消息的使用请求或调用网络服务。这个消息可以根据诸如可扩展标记语言(XML)的特定标记语言来格式化,和/或可以使用诸如简单对象访问协议(SOAP)的协议来封装。为了执行网络服务请求,网络服务客户端可以汇编包括请求的消息并使用基于互联网的应用层传送协议(诸如超文本传送协议(HTTP))将消息递送到对应于网络服务的可定址端点(例如,统一资源定位符(URL))。
在一些实施方案中,可以使用表示状态传送(“RESTful”)技术而非基于消息的技术实施网络服务。例如,可以通过包括在HTTP方法(诸如PUT、GET或DELETE)内而非封装在SOAP消息内的参数调用根据RESTful技术实施的网路服务。
鉴于以下条款,可以更好地了解前文实施方案:
1.种分布式数据库存系统,其包括:
多个节点;
其中所述多个节点中的至少一些节点中的每个包括:
用于列式数据库表单的存储装置,其中所述存储装置包括多个数据块;
查询执行模块;
其中所述多个节点中的至少一个节点包括高度平衡直方图生成器,其被配置来:
确定表示所述列式数据库表单的列中的数据在多个桶当中的分布的高度平衡直方图的多个桶范围大小,其中所述多个桶中的每个桶表示在值范围内存在所述列中的所述数据的一个或多个数据值;
生成存储所述列的数据的一个或多个数据块中的每个数据块的概率数据结构,其中所述概率数据结构指示针对所述多个桶中的哪些桶存在存储在所述数据块中的所述桶范围大小中的数据值;
其中所述查询执行模块被配置来:
接收涉及所述列式数据库表单的所述列的对选择的数据的查询的指示;
响应于接收所述查询的所述指示:
检验存储所述列的数据的所述一个或多个数据块中的每个的所述概率数据结构以确定所述一个或多个数据块中无需读取的特定数据块以便服务对所述选择的数据的所述查询;和
读取存储所述列的数据的所述一个或多个数据块,但所述一个或多个数据块中无需读取的所述特定数据块除外。
2.根据条款1所述的系统,其中为了确定表示所述列式数据库表单的所述列的所述高度平衡直方图的所述多个桶的所述多个桶范围大小,所述高度平衡直方图生成器被配置来:
获得所述列的所述数据;
生成所述多个桶;和
设置所述高度平衡直方图的每个桶的所述多个桶范围大小中的桶范围大小使得所述列的所述数据均匀地分布在所述桶当中。
3.根据条款1所述的系统,其中所述概率数据结构为包括多个位的位图,其中所述位图的每个位表示所述高度平衡直方图的所述多个桶中的每个桶,且对于存储在所述数据块中的包括在所述桶范围大小中的每个数据值,设置对应于所述桶的所述位图的所述位。
4.根据条款1所述的系统,其中所述高度平衡直方图生成器还被配置来将所述一个或多个数据块中的每个的所述概率数据结构存储在存储关于所述一个或多个数据块的信息的块元数据结构中的各自条目中。
5.根据条款1所述的系统,其中所述至少一个节点为分布式数据库存群集的领导节点,且其中所述至少一些节点中的所述至少一个为所述分布式数据库存群集的计算节点。
6.一种方法,其包括:
由一个或多个计算器件执行:
确定列式数据库表单的列的直方图的多个桶中的每个的桶范围大小,其中所述直方图表示所述列中的数据在所述多个桶当中的分布,其中所述多个桶中的每个桶表示在根据所述确定的桶范围大小的值范围内存在所述列中的所述数据的一个或多个数据值;
生成存储所述列式数据库表单的所述列的数据的一个或多个数据块中的每个的概率数据结构,其中所述概率数据结构指示针对所述多个桶中的哪些特定桶存在存储在所述数据块中的数据值;
接收涉及所述列的对选择的数据的查询的指示;和
响应于接收所述查询的所述指示,检验存储所述列的数据的所述一个或多个数据块中的每个的所述概率数据结构以确定所述一个或多个数据块中无需读取的特定数据块以便服务对所述选择的数据的所述查询。
7.根据条款6所述的方法,其中所述确定所述列式数据库表单的所述列的所述直方图的多个桶中的每个的桶范围大小包括:
获得所述列的所述数据;
生成所述多个桶;和
设置每个桶的所述多个桶范围大小中的桶范围大小使得所述列的所述数据均匀地分布在所述桶当中。
8.根据条款6所述的方法,其中所述生成存储所述列式数据库表单的所述列的数据的所述一个或多个数据块中的每个的所述概率数据结构包括:
生成包括多个位的所述数据块的位图,其中每个位表示所述直方图的所述多个桶中的不同桶;和
设置所述特定桶中的每个的在所述位图中的各自位,针对所述特定桶存在存储在所述数据块中的所述数据值。
9.根据条款8所述的方法,其还包括将所述一个或多个数据块中的每个的所述概率数据结构存储在存储关于所述一个或多个数据块的信息的块元数据结构中的各自条目中。
10.根据条款9所述的方法,其中所述检验存储所述列的数据的所述一个或多个数据块中的每个的所述概率数据结构以确定所述一个或多个数据块中无需读取的所述特定数据块以便服务对所述选择的数据的所述查询包括:
确定表示包括所述选择的数据的在所述值范围内的所述一个或多个桶的一个或多个位;和
检验存储在所述一个或多个数据块的所述块元数据结构中的每个位图中的所述一个或多个位,以识别不具有设置为无需读取的所述特定数据块的所述一个或多个位中的一个的所述数据块以便服务对所述选择的数据的所述查询。
11.根据条款6所述的方法,其中所述列式数据库表单的所述列的所述直方图为高度平衡直方图。
12.根据条款11所述的方法,其还包括:
检测所述列中的数据在所述多个桶当中的所述分布的再平衡事件;
响应于检测所述再平衡事件:
修改所述列的所述高度平衡直方图的所述多个桶中的每个的所述桶范围大小;和
根据所述多个桶的所述修改的桶范围大小,更新所述一个或多个数据块中的每个的每个概率数据结构。
13.根据条款12所述的方法,其中所述检测所述列中的数据在所述多个桶当中的所述分布的所述再平衡事件包括确定存储在一个或多个新数据块中的所述列的额外数据的量超出再平衡阈值。
14.根据条款12所述的方法,其中所述检测所述列中的数据在所述多个桶当中的所述分布的所述再平衡事件包括分析所述列的额外量的数据的分布以确定所述额外量的数据的所述分布与所述列中的所述数据的所述分布之间的变化超出分布阈值。
15.根据条款12所述的方法,其还包括:
在所述更新每个概率数据结构之后,接收从所述一个或多个数据块中的一个读取的用于服务所述查询的数据不包括如由所述一个数据块的所述概率数据结构指示的在所述数据值范围中的数据值的指示;和
更新所述一个数据块的所述概率数据结构以移除所述数据值包括在所述数据值范围中的所述指示。
16.根据条款6所述的方法,其中不对存储在所述列的所述一个或多个数据块中的所述数据分类。
17.根据条款6所述的方法,其中所述计算器件中的一个或多个为实施分布式数据库存系统的较大集合的计算器件的部分,其中所述一个或多个计算器件为数据库库存群集的一个或多个计算节点,其中所述较大集合的计算器件中的不同计算器件为所述数据库库存群集的领导节点,且其中所述方法还包括由所述领导节点执行将涉及所述列式数据库表单的所述列的一次或多次查询发送到所述一个或多个计算节点。
18.一种存储程序指令的非暂时性、计算机可读存储介质,所述程序指令在由一个或多个计算器件执行时实施:
确定列式数据库表单的列的直方图的多个桶中的每个的桶范围大小,其中所述直方图表示所述列中的数据在所述多个桶当中的分布,其中所述多个桶中的每个桶表示在根据所述确定的桶范围大小的值范围内存在所述列中的所述数据的一个或多个数据值;
生成存储所述列式数据库表单的所述列的数据的一个或多个数据块中的每个的位图,其中所述位图中的每个位表示所述多个桶中的不同桶,且其中所述位图中的设置位指示存在存储在所述数据块中的数据值的所述直方图中的所述多个桶中的特定桶;
接收涉及所述列的对选择的数据的查询的指示;
响应于接收所述查询的所述指示:
检验存储所述列的数据的所述一个或多个数据块中的每个的所述位图以确定所述一个或多个数据块中无需读取的特定数据块以便服务对所述选择的数据的所述查询;和
读取存储所述列的数据的所述一个或多个数据块,但所述一个或多个数据块中无需读取的所述特定数据块除外。
19.根据条款18所述的非暂时性、计算机可读存储介质,其中所述列式数据库表单的所述列的所述直方图为高度平衡直方图。
20.根据条款19所述的非暂时性、计算机可读存储介质,其中所述程序指令在由所述一个或多个计算器件进一步执行时实施:
检测所述列中的数据在所述多个桶当中的所述分布的再平衡事件;
响应于检测所述再平衡事件:
修改所述列的所述高度平衡直方图的所述多个桶中的每个的所述桶范围大小;和
根据所述多个桶的所述修改的桶范围大小,更新所述一个或多个数据块中的每个的每个位图。
21.据条款20所述的非暂时性、计算机可读存储介质,其中在所述检测所述列中的数据在所述多个桶当中的所述分布的所述再平衡事件中,所述程序指令在由所述一个或多个计算器件执行时实施确定自从确定所述多个桶中的每个的所述桶范围大小以来的时间的量超出再平衡时间阈值。
22.据条款20所述的非暂时性、计算机可读存储介质,其中在所述根据所述多个桶的所述修改的桶范围大小更新所述一个或多个数据块中的每个的每个位图中,所述程序指令在由所述一个或多个计算器件执行时还实施:
识别表示所述多个桶中的桶的所述位图的一个或多个未设置位,所述桶指示在所述修改的桶范围大小内存在存储在所述数据块中的数据值;和
设置所述位图的所述一个或多个未设置位。
23.据条款20所述的非暂时性、计算机可读存储介质,其中每个位图存储在存储关于所述一个或多个数据块的信息的当前块元数据结构中的各自条目中,且其中在所述根据所述多个桶的所述修改的桶范围大小更新所述一个或多个数据块中的每个的每个位图中,所述程序指令在由所述一个或多个计算器件执行时实施:
生成填充有所述当前块元数据结构的所述各自条目的新块元数据结构;和
根据所述多个桶的所述修改的桶范围大小,修改所述一个或多个数据块中的每个的所述新块元数据结构中的所述各自条目中的每个位图;
其中所述响应于所述查询的所述指示检验所述位图的执行利用存储在所述当前块元数据结构中的所述位图,直到所述生成所述新块元数据结构和所述修改所述新块元数据结构中的所述各自条目中的每个位图完成为止。
结论
各种实施方案还可以包括接收、发送或存储根据前文描述实施的指令和/或数据在计算机可访问介质上。一般来说,计算机可访问介质可以包括存储介质或存储器介质(诸如磁性介质或光学介质(例如磁盘或DVD/CD-ROM)、非易失性介质(诸如RAM(例如,SDRAM、DDR、RDRAM、SRAM等)、ROM等))以及传输介质或信号(诸如经由通信介质(诸如网络和/或无线链路)递送的电信号、电磁信号或数字信号)。
如图中所示且如本文中所述的各种方法表示方法的示例性实施方案。可以在软件、硬件或其组合中实施所述方法。方法的次序可以变化,且可以添加、重排、组合、省略、修改等各种元件。
将对得益于本公开的所属领域的技术人员明显的是,可以作出各种修改和变化。希望本发明涵盖所有这些修改和变化,且因此,在说明性意义而非限制性意义上考虑上文描述。

Claims (15)

1.一种分布式数据库存系统,其包括:
多个节点;
其中所述多个节点中的至少一些节点中的每个包括:
用于列式数据库表单的存储装置,其中所述存储装置包括多个数据块;
查询执行模块;
其中所述多个节点中的至少一个节点包括直方图生成器,所述直方图生成器被配置来:
确定表示所述列式数据库表单的列中的数据在多个桶当中的分布的直方图的多个桶范围大小,其中所述多个桶中的每个桶表示在值范围内存在所述列中的所述数据的一个或多个数据值;
生成存储所述列的数据的一个或多个数据块中的每个数据块的概率数据结构,其中所述概率数据结构指示针对所述多个桶中的哪些桶存在存储在所述数据块中的所述桶范围大小中的数据值;
其中所述查询执行模块被配置来:
接收涉及所述列式数据库表单的所述列的对选择的数据的查询的指示;
响应于接收所述查询的所述指示:
检验存储所述列的数据的所述一个或多个数据块中的每个的所述概率数据结构以确定所述一个或多个数据块中无需读取的特定数据块以便服务对所述选择的数据的所述查询;和
读取存储所述列的数据的所述一个或多个数据块,但所述一个或多个数据块中无需读取的所述特定数据块除外。
2.根据权利要求1所述的系统,其中为了确定表示所述列式数据库表单的所述列的所述直方图的所述多个桶的所述多个桶范围大小,所述直方图生成器被配置来:
获得所述列的所述数据;
生成所述多个桶;和
设置所述直方图的每个桶的所述多个桶范围大小中的桶范围大小使得所述列的所述数据均匀地分布在所述桶当中。
3.根据权利要求1所述的系统,其中所述概率数据结构为包括多个位的位图,其中所述位图的每个位表示所述直方图的所述多个桶中的每个桶,且对于存储在所述数据块中的包括在所述桶范围大小中的每个数据值,设置对应于所述桶的所述位图的所述位。
4.根据权利要求1所述的系统,其中所述至少一个节点为分布式数据库存群集的领导节点,且其中所述至少一些节点中的所述至少一个为所述分布式数据库存群集的计算节点。
5.一种用于查询列式数据库表单的方法,其包括:
由一个或多个计算器件执行:
确定列式数据库表单的列的直方图的多个桶中的每个的桶范围大小,其中所述直方图表示所述列中的数据在所述多个桶当中的分布,其中所述多个桶中的每个桶表示在根据所述确定的桶范围大小的值范围内存在所述列中的所述数据的一个或多个数据值;
生成存储所述列式数据库表单的所述列的数据的一个或多个数据块中的每个的概率数据结构,其中所述概率数据结构指示针对所述多个桶中的哪些特定桶存在存储在所述数据块中的数据值;
接收涉及所述列的对选择的数据的查询的指示;和
响应于接收所述查询的所述指示,检验存储所述列的数据的所述一个或多个数据块中的每个的所述概率数据结构以确定所述一个或多个数据块中无需读取的特定数据块以便服务对所述选择的数据的所述查询。
6.根据权利要求5所述的方法,其中所述确定所述列式数据库表单的所述列的所述直方图的多个桶中的每个的桶范围大小包括:
获得所述列的所述数据;
生成所述多个桶;和
设置每个桶的所述多个桶范围大小中的桶范围大小使得所述列的所述数据均匀地分布在所述桶当中。
7.根据权利要求5所述的方法,其中所述生成存储所述列式数据库表单的所述列的数据的所述一个或多个数据块中的每个的所述概率数据结构包括:
生成包括多个位的所述数据块的位图,其中每个位表示所述直方图的所述多个桶中的不同桶;和
设置所述特定桶中的每个的在所述位图中的各自位,针对所述特定桶存在存储在所述数据块中的所述数据值。
8.根据权利要求7所述的方法,其还包括将所述一个或多个数据块中的每个的所述概率数据结构存储在存储关于所述一个或多个数据块的信息的块元数据结构中的各自条目中。
9.根据权利要求8所述的方法,其中所述检验存储所述列的数据的所述一个或多个数据块中的每个的所述概率数据结构以确定所述一个或多个数据块中无需读取的所述特定数据块以便服务对所述选择的数据的所述查询包括:
确定表示包括所述选择的数据的在所述值范围内的所述一个或多个桶的一个或多个位;和
检验存储在所述一个或多个数据块的所述块元数据结构中的每个位图中的所述一个或多个位,以识别不具有设置为无需读取的所述特定数据块的所述一个或多个位中的一个的所述数据块以便服务对所述选择的数据的所述查询。
10.根据权利要求5所述的方法,其中生成所述列式数据库表单的所述列的所述直方图,使得所述列的所述数据均匀地分布在所述桶当中。
11.根据权利要求10所述的方法,其还包括:
检测所述列中的数据在所述多个桶当中的所述分布的再平衡事件;
响应于检测所述再平衡事件:
修改所述列的所述直方图的所述多个桶中的每个的所述桶范围大小;和
根据所述多个桶的所述修改的桶范围大小,更新所述一个或多个数据块中的每个的每个概率数据结构。
12.根据权利要求11所述的方法,其中所述检测所述列中的数据在所述多个桶当中的所述分布的所述再平衡事件包括确定存储在一个或多个新数据块中的所述列的额外数据的量超出再平衡阈值。
13.根据权利要求11所述的方法,其还包括:
在所述更新每个概率数据结构之后,接收从所述一个或多个数据块中的一个读取的用于服务所述查询的数据不包括如由所述一个数据块的所述概率数据结构指示的在所述数据值范围中的数据值的指示;和
更新所述一个数据块的所述概率数据结构以移除所述数据值包括在所述数据值范围中的所述指示。
14.根据权利要求5所述的方法,其中所述计算器件中的一个或多个为实施分布式数据库存系统的较大集合的计算器件的部分,其中所述一个或多个计算器件为数据库库存群集的一个或多个计算节点,其中所述较大集合的计算器件中的不同计算器件为所述数据库库存群集的领导节点,且其中所述方法还包括由所述领导节点执行将涉及所述列式数据库表单的所述列的一次或多次查询发送到所述一个或多个计算节点。
15.一种存储程序指令的非暂时性、计算机可读存储介质,所述程序指令在由一个或多个计算器件执行时实施:
确定列式数据库表单的列的直方图的多个桶中的每个的桶范围大小,其中所述直方图表示所述列中的数据在所述多个桶当中的分布,其中所述多个桶中的每个桶表示在根据所述确定的桶范围大小的值范围内存在所述列中的所述数据的一个或多个数据值;
生成存储所述列式数据库表单的所述列的数据的一个或多个数据块中的每个的位图,其中所述位图中的每个位表示所述多个桶中的不同桶,且其中所述位图中的设置位指示存在存储在所述数据块中的数据值的所述直方图中的所述多个桶中的特定桶;
接收涉及所述列的对选择的数据的查询的指示;
响应于接收所述查询的所述指示:
检验存储所述列的数据的所述一个或多个数据块中的每个的所述位图以确定所述一个或多个数据块中无需读取的特定数据块以便服务对所述选择的数据的所述查询;和
读取存储所述列的数据的所述一个或多个数据块,但所述一个或多个数据块中无需读取的所述特定数据块除外。
CN201480008818.6A 2013-01-15 2014-01-15 使用列式数据库中的直方图进行有效查询处理 Active CN105074724B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711101185.5A CN107766568B (zh) 2013-01-15 2014-01-15 使用列式数据库中的直方图进行有效查询处理

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US13/742,287 US8949224B2 (en) 2013-01-15 2013-01-15 Efficient query processing using histograms in a columnar database
US13/742,287 2013-01-15
PCT/US2014/011686 WO2014113474A1 (en) 2013-01-15 2014-01-15 Efficient query processing using histograms in a columnar database

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN201711101185.5A Division CN107766568B (zh) 2013-01-15 2014-01-15 使用列式数据库中的直方图进行有效查询处理

Publications (2)

Publication Number Publication Date
CN105074724A CN105074724A (zh) 2015-11-18
CN105074724B true CN105074724B (zh) 2017-12-05

Family

ID=51165980

Family Applications (2)

Application Number Title Priority Date Filing Date
CN201480008818.6A Active CN105074724B (zh) 2013-01-15 2014-01-15 使用列式数据库中的直方图进行有效查询处理
CN201711101185.5A Active CN107766568B (zh) 2013-01-15 2014-01-15 使用列式数据库中的直方图进行有效查询处理

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN201711101185.5A Active CN107766568B (zh) 2013-01-15 2014-01-15 使用列式数据库中的直方图进行有效查询处理

Country Status (8)

Country Link
US (4) US8949224B2 (zh)
EP (2) EP2946333B1 (zh)
JP (2) JP6378207B2 (zh)
KR (3) KR101702321B1 (zh)
CN (2) CN105074724B (zh)
AU (2) AU2014207599B2 (zh)
CA (1) CA2898054C (zh)
WO (1) WO2014113474A1 (zh)

Families Citing this family (40)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8949224B2 (en) 2013-01-15 2015-02-03 Amazon Technologies, Inc. Efficient query processing using histograms in a columnar database
US9471629B2 (en) * 2013-04-19 2016-10-18 Software AG USA Inc. Method and apparatus for visual dynamic discovery and analytics exploration application on static and/or real-time data using an a priori model-free process
US10909117B2 (en) 2013-12-20 2021-02-02 Micro Focus Llc Multiple measurements aggregated at multiple levels of execution of a workload
WO2015094319A1 (en) * 2013-12-20 2015-06-25 Hewlett-Packard Development Company, L.P. Generating a visualization of a metric at a level of execution
US10140353B2 (en) 2013-12-23 2018-11-27 Teredata, US, Inc. Techniques for query processing using high dimension histograms
US10282371B1 (en) * 2014-12-02 2019-05-07 Western Digital Technologies, Inc. Object storage device with probabilistic data structure
US10133760B2 (en) * 2015-01-12 2018-11-20 International Business Machines Corporation Hardware for a bitmap data structure for efficient storage of heterogeneous lists
US10970285B2 (en) * 2015-02-26 2021-04-06 Red Hat, Inc. Grid topology change in a distributed data grid when iterating on the contents of the data grid
WO2016175861A1 (en) 2015-04-30 2016-11-03 Hewlett Packard Enterprise Development Lp Consolidated metadata in databases
WO2016195728A1 (en) * 2015-05-29 2016-12-08 Hewlett Packard Enterprise Development Lp Generating test data based on histogram statistics
US10191944B2 (en) * 2015-10-23 2019-01-29 Oracle International Corporation Columnar data arrangement for semi-structured data
US10152429B2 (en) * 2015-10-27 2018-12-11 Medallia, Inc. Predictive memory management
US9607062B1 (en) * 2015-11-19 2017-03-28 International Business Machines Corporation Data locality in data integration applications
US10719554B1 (en) 2016-09-19 2020-07-21 Amazon Technologies, Inc. Selective maintenance of a spatial index
US10324911B1 (en) * 2016-09-30 2019-06-18 Virtustream Ip Holding Company Llc Storage system with bucket contents rebalancer providing adaptive partitioning for database buckets
US10242055B2 (en) * 2016-12-07 2019-03-26 Medallia, Inc. Dual filter histogram optimization
US10185507B1 (en) * 2016-12-20 2019-01-22 Amazon Technologies, Inc. Stateless block store manager volume reconstruction
US10268593B1 (en) 2016-12-20 2019-04-23 Amazon Technologies, Inc. Block store managamement using a virtual computing system service
US11507283B1 (en) * 2016-12-20 2022-11-22 Amazon Technologies, Inc. Enabling host computer systems to access logical volumes by dynamic updates to data structure rules
US10921991B1 (en) * 2016-12-20 2021-02-16 Amazon Technologies, Inc. Rule invalidation for a block store management system
US10809920B1 (en) 2016-12-20 2020-10-20 Amazon Technologies, Inc. Block store management for remote storage systems
US11030177B1 (en) * 2017-05-04 2021-06-08 Amazon Technologies, Inc. Selectively scanning portions of a multidimensional index for processing queries
US11138076B2 (en) * 2017-06-30 2021-10-05 Redis Ltd. Methods, systems, and media for controlling append-only file rewrites
US10567992B2 (en) 2018-01-25 2020-02-18 Hewlett Packard Enterprise Development Lp Network device KPI monitors based on bitmaps
US11144570B2 (en) 2018-01-26 2021-10-12 Vmware, Inc. Data ingestion by distributed-computing systems
US10860576B2 (en) 2018-01-26 2020-12-08 Vmware, Inc. Splitting a query into native query operations and post-processing operations
US11016972B2 (en) 2018-01-26 2021-05-25 Vmware, Inc. Splitting a time-range query into multiple sub-queries for serial execution
US11016971B2 (en) 2018-01-26 2021-05-25 Vmware, Inc. Splitting a time-range query into multiple sub-queries for parallel execution
US10824623B2 (en) * 2018-02-28 2020-11-03 Vmware, Inc. Efficient time-range queries on databases in distributed computing systems
US10812332B2 (en) 2018-02-28 2020-10-20 Vmware Inc. Impartial buffering in stream processing
US11178213B2 (en) 2018-02-28 2021-11-16 Vmware, Inc. Automated configuration based deployment of stream processing pipeline
US11216706B2 (en) 2018-03-15 2022-01-04 Datorama Technologies Ltd. System and method for visually presenting interesting plots of tabular data
GB201816808D0 (en) * 2018-10-16 2018-11-28 Palantir Technologies Inc Data storage method and system
US10628442B1 (en) * 2018-11-09 2020-04-21 Hewlett Packard Enterprise Development Lp Histograms based on varying data distribution
CN109933592B (zh) * 2019-03-22 2021-06-01 杭州复杂美科技有限公司 数据存储方法、数据回滚方法、设备和存储介质
US11693889B2 (en) * 2019-03-28 2023-07-04 Hewlett Packard Enterprise Development Lp Effective materialization strategy utilizing statistical set-theoretic approach for generation of multi-interval multi-column histogram and histograms in general
CN110647566B (zh) * 2019-09-03 2023-04-14 平安科技(深圳)有限公司 模板表格的智能导入方法、装置及计算机可读存储介质
CN111177433B (zh) * 2019-12-31 2021-07-20 北京百度网讯科技有限公司 用于并行处理信息的方法和装置
US20230221864A1 (en) * 2022-01-10 2023-07-13 Vmware, Inc. Efficient inline block-level deduplication using a bloom filter and a small in-memory deduplication hash table
CN114860848A (zh) * 2022-07-06 2022-08-05 北京奥星贝斯科技有限公司 分布式数据库系统的选主方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6278989B1 (en) * 1998-08-25 2001-08-21 Microsoft Corporation Histogram construction using adaptive random sampling with cross-validation for database systems
CN101826098A (zh) * 2010-02-03 2010-09-08 中国科学院地理科学与资源研究所 一种基于ab直方图的空间查询选择率估计方法
US8229917B1 (en) * 2011-02-24 2012-07-24 International Business Machines Corporation Database query optimization using clustering data mining
CN102609439A (zh) * 2011-12-23 2012-07-25 浙江大学 一种高维环境中模糊数据的概率窗口查询方法

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5761652A (en) * 1996-03-20 1998-06-02 International Business Machines Corporation Constructing balanced multidimensional range-based bitmap indices
US6226629B1 (en) * 1997-02-28 2001-05-01 Compaq Computer Corporation Method and apparatus determining and using hash functions and hash values
US6460045B1 (en) 1999-03-15 2002-10-01 Microsoft Corporation Self-tuning histogram and database modeling
US6529872B1 (en) * 2000-04-18 2003-03-04 Matsushita Electric Industrial Co., Ltd. Method for noise adaptation in automatic speech recognition using transformed matrices
KR100398142B1 (ko) 2000-08-29 2003-09-19 한국과학기술원 대용량 데이터베이스에서의 고속에 의한 다해상도의 최적탐색방법
US6691099B1 (en) 2001-05-31 2004-02-10 Oracle International Corporation Method and system for histogram determination in a database
JP2003256222A (ja) 2002-03-04 2003-09-10 Matsushita Electric Ind Co Ltd 分散処理システム、ジョブ分散処理方法およびプログラム
US6732985B1 (en) * 2003-02-20 2004-05-11 Douglas Chet Cantrell Beach utility pole
US7424498B1 (en) * 2003-06-30 2008-09-09 Data Domain, Inc. Probabilistic summary data structure based encoding for garbage collection
US7299248B2 (en) 2004-06-29 2007-11-20 International Business Machines Corporation Method, system, program for determining frequency of updating database histograms
US7386538B2 (en) * 2005-03-24 2008-06-10 International Business Machines Corporation Building database statistics across a join network using skew values
GB0513045D0 (en) 2005-06-27 2005-08-03 Vidus Ltd Resource scheduling method and system
US7512574B2 (en) * 2005-09-30 2009-03-31 International Business Machines Corporation Consistent histogram maintenance using query feedback
US7707005B2 (en) * 2006-09-02 2010-04-27 Microsoft Corporation Generating histograms of population data by scaling from sample data
US7991763B2 (en) * 2007-04-13 2011-08-02 International Business Machines Corporation Database query optimization utilizing remote statistics collection
US20080288444A1 (en) * 2007-05-16 2008-11-20 John Francis Edwards Evaluating Multi-Table Join Selectivity in a Computer Database
US7853900B2 (en) * 2007-05-21 2010-12-14 Amazon Technologies, Inc. Animations
US7512754B1 (en) * 2008-01-31 2009-03-31 International Business Machines Corporation System and method for optimizing storage utilization
JP2009245424A (ja) * 2008-03-28 2009-10-22 Mitsubishi Electric Research Laboratories Inc コンピュータにより実施される、確率論的クエリー及び確率論的クエリーマッチング関数に対して順位付けした結果セットをレンダリングする方法
US8392406B1 (en) * 2008-05-30 2013-03-05 Oracle International Corporation Determining a height-balanced histogram incrementally
US8290972B1 (en) * 2009-04-29 2012-10-16 Netapp, Inc. System and method for storing and accessing data using a plurality of probabilistic data structures
US8832142B2 (en) * 2010-08-30 2014-09-09 Oracle International Corporation Query and exadata support for hybrid columnar compressed data
US8145669B2 (en) * 2009-12-11 2012-03-27 At&T Intellectual Property I, L.P. Methods and apparatus for representing probabilistic data using a probabilistic histogram
KR101117709B1 (ko) * 2009-12-15 2012-02-24 한국과학기술원 공간 분할 트리의 최소 데이터-불균등 커버를 이용한 다차원 히스토그램 방법 및 이를 실행하기 위한 프로그램이 저장된 기록매체
AU2011293350B2 (en) 2010-08-24 2015-10-29 Solano Labs, Inc. Method and apparatus for clearing cloud compute demand
US8458547B2 (en) * 2010-10-26 2013-06-04 Hewlett-Packard Development Company, L.P. Method for constructing a histogram
US20120246158A1 (en) * 2011-03-25 2012-09-27 Microsoft Corporation Co-range partition for query plan optimization and data-parallel programming model
US20120254199A1 (en) * 2011-03-31 2012-10-04 Harumi Kuno Merge optimization system
US9727609B2 (en) * 2012-09-28 2017-08-08 Oracle International Corporation Triggering hard parses
US8949224B2 (en) 2013-01-15 2015-02-03 Amazon Technologies, Inc. Efficient query processing using histograms in a columnar database
CN103984695B (zh) * 2014-03-21 2017-06-20 华为技术有限公司 一种数据库中的数据查询方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6278989B1 (en) * 1998-08-25 2001-08-21 Microsoft Corporation Histogram construction using adaptive random sampling with cross-validation for database systems
CN101826098A (zh) * 2010-02-03 2010-09-08 中国科学院地理科学与资源研究所 一种基于ab直方图的空间查询选择率估计方法
US8229917B1 (en) * 2011-02-24 2012-07-24 International Business Machines Corporation Database query optimization using clustering data mining
CN102609439A (zh) * 2011-12-23 2012-07-25 浙江大学 一种高维环境中模糊数据的概率窗口查询方法

Also Published As

Publication number Publication date
US20180025065A1 (en) 2018-01-25
KR101792582B1 (ko) 2017-11-02
KR20150107829A (ko) 2015-09-23
KR101903926B1 (ko) 2018-10-02
AU2017202873A1 (en) 2017-05-18
US8949224B2 (en) 2015-02-03
US9268838B2 (en) 2016-02-23
EP3299972B1 (en) 2019-08-21
CN105074724A (zh) 2015-11-18
US10372723B2 (en) 2019-08-06
EP2946333B1 (en) 2017-12-06
CN107766568A (zh) 2018-03-06
EP3299972A1 (en) 2018-03-28
CN107766568B (zh) 2021-11-26
EP2946333A1 (en) 2015-11-25
AU2017202873B2 (en) 2019-04-11
US20160171064A1 (en) 2016-06-16
US9767174B2 (en) 2017-09-19
WO2014113474A1 (en) 2014-07-24
US20140201129A1 (en) 2014-07-17
CA2898054A1 (en) 2014-07-24
CA2898054C (en) 2019-04-02
JP2016508277A (ja) 2016-03-17
AU2014207599B2 (en) 2017-02-02
KR101702321B1 (ko) 2017-02-06
AU2014207599A1 (en) 2015-08-13
KR20170121343A (ko) 2017-11-01
JP6393805B2 (ja) 2018-09-19
US20150149402A1 (en) 2015-05-28
JP6378207B2 (ja) 2018-08-22
KR20170015538A (ko) 2017-02-08
JP2017146994A (ja) 2017-08-24
EP2946333A4 (en) 2016-09-07

Similar Documents

Publication Publication Date Title
CN105074724B (zh) 使用列式数据库中的直方图进行有效查询处理
US11914620B2 (en) System and method for aggregating values through risk dimension hierarchies in a multidimensional database environment
KR101806055B1 (ko) 선택도에 대해 데이터 비트를 인터리빙함으로써 관계형 데이터베이스에 대한 멀티-칼럼 인덱스의 발생
US9367574B2 (en) Efficient query processing in columnar databases using bloom filters
CN109997126A (zh) 事件驱动提取、变换、加载(etl)处理
US10902023B2 (en) Database-management system comprising virtual dynamic representations of taxonomic groups
Weber et al. Database Systems
Khatiwada Architectural issues in real-time business intelligence
Ranasinghe Big Data Analytic Techniques and Issues

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