CN105408857A - 通过针对选择性交织数据位生成用于关系数据库的多列索引 - Google Patents
通过针对选择性交织数据位生成用于关系数据库的多列索引 Download PDFInfo
- Publication number
- CN105408857A CN105408857A CN201480042815.4A CN201480042815A CN105408857A CN 105408857 A CN105408857 A CN 105408857A CN 201480042815 A CN201480042815 A CN 201480042815A CN 105408857 A CN105408857 A CN 105408857A
- Authority
- CN
- China
- Prior art keywords
- data
- row
- database table
- entry
- relation database
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Abstract
基于针对选择性交织数据位来生成多列索引,以用于有效地处理关系数据库系统中的数据。可识别两个或更多个列以包括在用于关系数据库表的所述多列索引中。至少部分地基于针对选择性交织来自所识别的列的数据位,生成用于所述关系数据库表的多列索引,所述多列索引提供用于所述关系数据库表中的每个条目的各个索引值。随后可根据所述多列索引的所述索引值来存储所述关系数据库表的所述条目。
Description
背景技术
由于用于组织以创建、追踪和保持信息的技术能力继续增长,因而已经开发出用于管理和存储日渐上升的数据浪潮的多种不同的技术。例如,数据库系统向客户端提供许多不同的专门化的或定制的硬件和软件的配置,以便管理存储的信息。然而,必须存储和管理的不断增加的数据组织量通常对应地增加数据存储和管理技术(像数据库系统)的大小和复杂性两者,这进而使维护信息的成本逐步增加。新的技术越来越多地追求在同时提高数据存储和数据管理的效率的同时减小维护数据的复杂性和存储要求两者。
附图说明
图1示出根据一些实施方案的针对选择性交织数据位的关系数据库系统的多列索引的数据流框图。
图2为根据一些实施方案的示出示例性分布式数据库仓库服务的框图。
图3为根据一些实施方案的示出示例性分布式数据仓库集群的框图。
图4为根据一些实施方案的示出示例性计算节点的框图。
图5为根据一些实施方案的示出基于针对选择性交织数据位实现根据多列索引生成和处理查询的示例性数据访问模块的框图。
图6为根据一些实施方案的示出示例性多列索引键生成器的框图。
图7为根据一些实施方案的示出一种基于针对选择性交织数据位来生成用于关系数据库表的多列索引的方法的高层流程图。
图8示出根据一些实施方案的一种基于根据选择性交织数据位来处理涉及具有多列索引的关系数据库的查询的方法的高层流程图。
图9示出根据一些实施方案的一种基于根据修改的压缩方案再压缩的列数据再生成用于关系数据库的多列索引的方法的高层流程图。
图10示出根据一些实施方案的被配置来实现本文所描述的各种方法、技术和系统的示例性系统。
虽然在本文中通过列举若干实施方案和示意性附图的实例的方式描述了实施方案,但是本领域的技术人员应认识到,实施方案并不限于所描述的实施方案或附图。应理解,附图和对其的详细描述并非意图将实施方案限于所公开的特定形式,而是相反,其意图在于涵盖落入由所附权利要求书所界定的精神和范围内的所有修改、等同物以及替代方案。本文中使用的各种标题都仅用于组织目的,并且并不意图用于限制描述或权利要求书的范围。如贯穿本申请所用,词语“可”是以允许意义(即,意味着有可能)而不是强制意义(即,意味着必须)使用。类似地,词语“包括(include/including/includes)”意味着包括但不限于。
具体实施方式
在以下详细描述中,为提供对所要求的主题的彻底理解而阐述了许多具体细节。然而,本领域的技术人员应理解,可以在没有这些具体细节的情况下实施要求保护的主题。在其他实例中,本领域技术人员将公知的方法、装置或系统并未进行详细描述,以免混淆所要求的主题。
还应了解,虽然在本文中可能使用术语“第一”、“第二”等来描述各种元件,但是这些元件不应受这些术语限制。这些术语只用于区分一个元件与另一个元件。例如,在不背离本发明的范围的情况下,第一接触可以称为第二接触,并且类似地,第二接触可以称为第一接触。第一接触和第二接触均为接触,但是它们不是相同的接触。
本发明的说明书中所用的术语仅旨在描述特定实施方案,而不意图限制本发明。除非上下文另外明确指示,否则如本发明的说明书和所附的权利要求中所用的单数形式“一个(种)”和“所述”还意图包括复数形式。还将理解,如本文使用的术语“和/或”涉及并且涵盖一个或多个相关联列出项目的任何和所有可能组合。将进一步理解,术语“包括(includes/including/comprises)”和/或“包括(comprising)”在用于本说明书中时,规定存在所陈述的特征、整数、步骤、操作、元件和/或组件,但是不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或其群组。
如本文所使用,术语“如果”可解释为表示“在……时”或“在……后”或“响应于确定”或“响应于检测到”,这取决于上下文。类似地,短语“如果确定”或“如果检测到[一个陈述的条件或事件]”可解释为表示“在确定后”或“响应于确定”或“在检测到[该陈述的条件或事件]后”或“响应于检测到[该陈述的条件或事件]”,这取决于上下文。
本文描述了针对选择性交织数据位生成用于关系数据库表的多列索引的各种实施方案。数据库管理服务诸如分布式数据仓库系统或其他数据库管理系统可根据许多不同的格式(诸如行式格式和/或列式格式(在下文中被称为“柱状数据库表”))实现关系数据库表,以便为客户端提供有效的数据管理。通常,根据数据库表的一个列诸如按日期对关系数据库表中的数据进行分类。当确定块是否对进行存储时所述数据所沿的列的数据时,可存储或估算针对每个数据块的不同范围,从而允许查询以便仅利用已知可能存储在数据块中的已请求的数据引导读取数据块。然而,仅可在响应于对分类所述关系数据库表所沿的列中的数据进行查询时应用此类技术,因为所述数据库表一次仅可使用一个列进行分类。如果查询涉及多个不同的列,那么沿单个列进行的分类可能不会提供相同有效的查询处理特性。用于典型的数据库系统的一种常见的解决方案是提供使用不同的列分类的多个数据库表的副本,从而消耗更多的资源。在另一种常见的解决方案中,其他数据库系统可以沿保持有级联的分类键的新的列对数据库表进行分类,从而将多个列(将用于所述多个列来搜索所述列)的值组合成用于每个条目的单个列值。然而,此类解决方案可能仍然偏向针对值被级联的顺序的有效搜索。此外,以此方式的级联键可能不能在用于索引的多个列上进行相等地选择。
多列索引可使用来自关系数据库表的多个列允许对关系数据库表进行分类或组织(例如,进行分布)。至少部分地基于针对选择性交织来自在用于多个列的条目中存储的数据值的数据位的交织技术而生成的多列索引可提供在构成多列索引的列之间具有更加均匀分布的选择性(例如,数据值在特定列中的区别或概率)的索引值。因此,当处理涉及索引列和/或用来生成多列索引的列(例如,用来确定用于索引列中的一个的数据层次结构的列)的查询时,多列索引在索引列之间均衡或更加均匀分布的选择性可用来更加有效地搜索选择数据。例如,保持多列索引值的范围(诸如上述实例中所述)可允许其确定在服务查询时需要或不需要读取哪个数据块。例如可随后执行更少的读取操作(或其他各种访问操作)以获得服务被接收的查询的数据。通过至少部分地基于针对选择性交织数据位生成多列索引以便处理对关系数据库的查询,一些实施方案可提供对大量数据更加有效的管理和对大量数据的访问。
图1示出根据一些实施方案的基于针对选择性交织数据位生成用于关系数据库系统的多列索引的数据流框图。在各种实施方案中,可接收数据以用于对关系数据库进行存储(或当前已进行了存储)。在将要存储以用于数据库表的多个数据列112中,不同的选择数据列可用来生成多列索引键,如从涉及多列索引键生成器130的数据列112中的一些(但不是其他)开始的箭头所示。可诸如通过接收用于将要使用的列的客户端指定的列标识符执行选择或识别用来生成多列索引键值的列作为表创建过程的一部分。
在一些实施方案中,多列索引键生成器130可由数据库系统或其他数据存储管理组件实现,以生成用于包括多列索引键(或值)的数据库表的数据的新列。可至少部分地基于针对选择性交织来自用来生成多列索引的被识别的列的数据位而生成该多列索引122。例如,以生成z顺序曲线或其他空间填充曲线(例如,希尔伯特曲线)的交织技术或方案可用来根据其选择性交织来自不同列值的数据位。例如,在z顺序曲线中,来自每个列值的最高有效的数据位得到交织,并且随后交织下一个最高有效数据位,以此类推。许多不同的各种该技术以及其他技术参考图7进一步详细地论述。可根据交织技术或方案,通过交织来自用于条目的每个列的值的数据位生成用于数据库表中的每个条目的多列索引值。随后,可存储所得的索引值作为用于多列索引122中的条目的多列索引键。各种不同的方法和技术可用来生成用于多列索引122的索引值,并且,以及用于实现多列索引键生成器130的各种方式(如参考图5和图6所述)在下文参考图7更加详细地论述。在一些实施方案中,可在交织来自该值的数据位之前将保序压缩技术应用到用于特定列的值。应用保序压缩技术可在表示用于条目的列的值的单个数据位之间更好地分布选择性。在至少一些实施方案中,可在压缩之前将层次结构或分类应用到列,以便提供具有较少自然排序的列的排序,从而提高压缩数据的选择性。
在各种实施方案中,数据存储120可对数据库系统(诸如,行式或柱状存储系统)进行永久性存储。数据列112以及由多列索引键生成器130生成的多列索引键值可永久保存于针对数据库的数据存储120中。在至少一些实施方案中,可根据多列索引112将数据列存储在存储顺序中,并且可因此可作为已被分类的数据列124永久保存。可根据多列索引键值的分类顺序将这些已被分类的数据列124和多列索引112物理地永久保存。当处理涉及数据库表的查询时,具有相似的多列索引键值的条目可紧密定位在一起,从而减少了访问请求的数目和服务查询的其他相关操作。
对客户端(或客户、组织、实体等)来说,收集可能需要进行后续存储或管理的大量的数据并不常见。尽管一些客户端可能希望实现其自己的针对该数据的数据管理系统,但是越发显而易见的是,获得数据管理服务可证明对于不希望管理其自己数据的那些客户端来说是更加有效和成本有效的选项。例如,小型企业可能希望保持销售记录和用于将来进行数据分析的相关数据。代替直接投资于保持数据的数据管理系统和需要建立和维护所述系统的专业技能,小型企业可能可替代地发现,与数据管理服务订立合同以存储和管理其数据更加有效。
数据管理服务诸如下文参考图2至图4所述的分布式数据仓库服务可根据客户端的各种需要向客户端提供多种不同的数据管理服务。在一些情况下,客户端可能希望存储和保持大量的数据,诸如销售记录营销、管理报告、业务过程管理、预算预估、财务报告、网站分析或许多其他类型或种类的数据。客户端对数据的使用还可影像用来存储数据的数据管理系统的配置。例如,对于某些类型的数据分析和其他操作(诸如聚集来自在每行内的小数目的列的庞大数据集的那些)来说,柱状数据库表可以提供更加有效的性能。换言之,可将来自数据库表的列信息存储于磁盘上的数据块中,而不是将列的整行存储在每个数据块中(如在传统的数据库方案中)。以下的论述描述了关系柱状数据库系统的各种实施方案。然而,下文论述的如与通过针对选择性交织数据位而生成用于关系数据库系统的多列索引有关的组件的各种版本可同样地被配置来或适于实现用于各种其他类型的关系数据库系统(诸如行式数据库系统)的实施方案。因此,以下实例并不意在限制各种其他类型或格式的关系数据库系统。
在一些实施方案中,用此种柱状方式存储表数据可减少针对各种查询的总的磁盘I/O要求,并且可提高分析查询性能。例如,用柱状的方式存储数据库表信息可减少在检索存入存储器中的数据以执行数据库操作作为处理查询的一部分时(例如,当检索用于表中的所有行的所有列字段值时)执行的磁盘I/O请求的数目,并且可减少在处理查询时需要从磁盘负载的数据的量。相反地,对于给定数目的磁盘请求来说,如果每个数据块存储整个表行,那么与在处理查询时所需的针对行的列字段值相比,可检索更多的针对行的列字段值。在一些实施方案中,可使用与柱状存储数据类型匹配的压缩法进一步减小磁盘要求。例如,由于每个块包含一致的数据(即,全都是相同的数据类型的列字段值),因而还可通过应用最适合于特定列数据类型的压缩法减少磁盘储存和检索要求。在一些实施方案中,用于存储仅包含磁盘上的单个列的字段值的数据块而节省的空间可转移到在检索并且随后将该数据存储于系统存储器中时(例如,当分析或以其他方式处理所检索的数据时)节省的空间中。例如,由于可在存储器中检索和存储仅将数据存储于实际上需要执行查询的特定列中的数据块,因而对于需要一次仅在一个或较小数目的列上访问和/或操作的数据库操作来说,可能比传统的基于行的存储需要更少的存储空间。为了增加实现柱状关系数据库表的效率,可生成多列索引来指示可能存储于存储用于柱状关系数据库表的索引列的数据的数据块中的数据值,所述数据值可用来确定在响应于查询时不需要读取的数据块。
如上文所述,各种客户端(或客户、组织、实体或用户)可能希望使用数据管理服务存储和管理数据。图2示出根据一些实施方案的向客户端提供数据管理服务的示例性分布式数据仓库系统。具体地,分布式数据仓库集群可对存储请求(例如,将数据写入存储装置)或对数据的查询(例如像针对选择数据的服务器查询语言(SQL)请求),以及许多其他数据管理或存储服务作出响应。
多个用户或客户端可访问分布式数据仓库集群,以获得数据仓库服务。根据一些实施方案,客户端可包括用户、客户端应用程序和/或数据仓库服务订户)。在这个实例中,客户端250a至客户端250n中的每一个能够分别访问在分布式数据仓库服务280中的分布式数据仓库集群225和235。分布式数据仓库集群225和235可包括两个或更多个节点,可以已经访问过那些集群的客户端250a至客户端250n的名义将数据存储在所述节点上。
客户端诸如客户端250a至客户端250n可经由台式计算机、膝上计算机、平板计算机、个人数字助理、移动装置、服务器或被配置来向分布式数据仓库集群225和235发送请求,和/或从分布式数据仓库集群225和235接收请求的任何其他计算系统或其他装置(诸如下文参考图10所述的计算机系统1000)与数据仓库集群225或235进行通信。例如,请求可格式化为包括与由数据仓库集群提供的特定功能或服务相关联的参数和/或数据的消息。此类消息可根据特定的标记语言(诸如可延伸标记语言(XML))被格式化,和/或使用协议(诸如简单对象访问协议(SOAP))来封装。可实现应用程序接口(API)来(诸如当客户端与分布式数据仓库服务管理器202进行通信时)为客户端提供标准化的消息格式。
客户端250a至客户端250n可使用多种不同的通信方法,诸如通过广域网(WAN)260(例如,因特网)与由分布式数据仓库服务280托管的分布式数据仓库集群225和235进行通信。专用网络、企业内网络和其他形式的通信网络也可有助于在客户端与分布式数据仓库集群之间进行通信。客户端可组装包括请求的消息,并且将所述消息传送给网络端点(例如,对应于所述数据仓库集群的统一资源定位符(URL))。例如,客户端250a可经由运行局部软件应用程序(诸如web客户端)的台式计算机进行通信,所述台式计算机被配置来通过WAN260向分布式数据仓库集群225发送超文本传输协议(HTTP)。向客户端发送的响应或其他数据可以相似的方式进行格式化。
在至少一些实施方案中,如在280处指示的分布式数据仓库服务可托管分布式数据仓库集群,诸如集群225和235。分布式数据仓库服务280可向集群的客户端250a至250n提供网络端点,所述网络端点允许客户端250a至250n直接向特定的集群发送请求和其他消息。如上文所述,例如,网络端点可以是指向特定集群的特定的网络地址(诸如URL)。例如,可给予客户端250a网络端点“http://mycluster.com”,以发送各种请求消息。可给予多个客户端(或特定客户端的用户)针对特定集群的网络端点。可实现各种安全特性以防止未授权的用户访问集群。相反地,可给予客户端针对多个集群的网络端点。
分布式数据仓库集群(诸如仓库集群225和235)可由一个或多个节点构成。这些集群可包括不同数目的节点。节点可以是服务器、台式计算机、膝上计算机或更一般地说任何其他计算装置,诸如下文参考图10中的计算机系统1000所述的那些。在一些实施方案中,可诸如由缩放请求的集群修改在数据仓库集群中的节点数目。数据仓库集群的节点可实现用于存储数据的一个或多个数据片。这些数据片可以是下文参考图3和图4所述的存储装置的一部分。集群可被配置来通过WAN260从客户端(诸如客户端250a至250n)接收请求和其他通信。集群可被配置来经由集群的网络端点从多个客户端接收请求。
在一些实施方案中,可实现分布式数据仓库服务280作为允许用户在云计算环境中建立、操作和缩放数据仓库的基于网络的服务的一部分。由基于网络的服务托管的数据仓库集群可诸如通过向由基于网络的服务实现的集群控制接口发送集群缩放请求来提供允许用户缩放集群的企业级数据库查询和管理系统。缩放的集群可允许基于网络的服务的用户执行其数据仓库功能,诸如对结构化数据的快速查询能力、与各种数据负载和ETL(提取、变换和负载)工具的集成、与最佳级别的商业智能(BI)报告、数据采掘和分析工具的客户端连接、以及更有效地对非常快地执行复杂分析查询(诸如包括多表连接、子查询和聚集的那些)的优化。
在各种实施方案中,分布式数据仓库服务280可向客户端(例如,由分布式数据仓库系统提供的数据仓库服务的订户)提供可响应于来自存储客户端的请求而被创建、配置、管理、缩放和终接的数据存储和管理资源。例如,在一些实施方案中,分布式数据仓库服务280可向系统的客户端提供由虚拟计算节点组成的分布式数据仓库集群。这些虚拟计算节点可以是由虚拟机(诸如硬件虚拟机或被实现以模拟硬件配置的其他形式的软件)实现的节点。虚拟节点可被配置来执行相同的任务、功能和/或服务作为在物理硬件上实现的节点。
分布式数据仓库服务280可由较大计算装置的集合,诸如定制的或现成的计算系统、服务器或计算系统或装置(诸如下文参考图10所述的各种类型的装置)的任何其他组合实现。这些计算装置的不同子集可由分布式数据仓库服务管理器202控制。例如,分布式数据仓库服务管理器202可向客户端(诸如客户端250a至客户端250n或希望与由分布式数据仓库管理器202(其在该示例性说明中将是分布式数据仓库集群225和235)管理的数据仓库集群交互的任何其他客户端或用户)提供集群控制接口。例如,分布式数据仓库服务管理器202可生成用于存储客户端的一个或多个图形用户接口(GUI),所述一个或多个图形用户接口(GUI)随后可用来选择由用于在分布式数据仓库服务280中托管的分布式数据仓库集群的控制接口提供的各种控制功能。
图3为根据一些实施方案的示出在分布式数据仓库服务中的分布式数据仓库集群的框图。如在该实例中所示,分布式数据仓库集群300可包括首项节点320和计算节点330、340和350,所述计算节点330、340和350可通过互连器360彼此进行通信。首项节点320可生成和/或保持用于执行对分布式数据仓库集群300的查询的一个或多个查询计划325。如本文所述,在分布式数据仓库集群中的每个节点可包括多个磁盘,可以客户端(例如,用户、客户端应用程序和/或分布式数据仓库服务订户)的名义将数据块存储于所述多个磁盘上。在该实例中,计算节点330包括磁盘331–338,计算节点340包括磁盘341-348,并且计算节点350包括磁盘351-358。在一些实施方案中,分布式数据仓库集群(或分布式数据仓库集群是其组件的分布式数据仓库系统)的组件可使用多种可应用的负载均衡技术中的任意一种支持负载均衡。例如,在一些实施方案中,首项节点320可包括负载均衡组件(未示出)。
在至少一些实施方案中,可实现分布式数据仓库集群300作为基于web的数据仓库服务(诸如上文所述的那个)的一部分,并且包括首项节点320和多个计算节点(诸如计算节点330、340和350)。首项节点320可管理与存储客户端(诸如上文参考图2所述的客户端250a至250n)的通信。例如,首项节点可以是接收来自各种客户端程序(例如,应用程序)和/或订户(用户)的请求的服务器,随后分析它们并且发展执行计划(例如,查询计划325),以执行相关联的数据库操作。更确切地说,首项节点可发展对获得用于复杂的查询和连接的结果有必要的步骤系列。首项节点320还可管理计算节点330至350之间的通信,所述计算节点330至350被指示以执行用于存储于分布式数据仓库集群300中的数据的数据库操作。例如,编译代码可由首项节点320分布给计算节点330至350中的多个,以执行需要执行查询的步骤,并且可将那些查询的中间结果发送回至首项节点320。首项节点320可接收来自计算节点330、340和350的数据和查询响应或结果。数据库方案和/或针对在计算节点之间存储的数据(诸如在集群中存储的数据表)的其他元数据信息可由首项节点320管理和存储。
分布式数据仓库集群300还可包括计算节点,诸如计算节点330、340和350。这些一个或多个计算节点(有时被称为存储节点)例如可在服务器或其他计算装置(诸如下文参考图10中的计算机系统1000描述的那些)上实现,并且每个计算节点可包括例如对服务器的多核处理器的每个核芯所定义的单个查询处理“片”。计算节点可基于从首项节点320发送至计算节点330、340和350的指令执行数据库操作(诸如查询)的处理。所述指令例如可以是来自执行计划片段和步骤的编译代码,所述执行计划片段和步骤可由向其发送所述指令的特定的数据计算节点执行。数据计算节点可将来自查询的中间结果发送回用于进行最终聚集的首项节点320。每个数据计算节点可被配置来访问某些存储器和磁盘空间,以便处理用于被发送至计算节点330、340或350中的一个或多个的查询(或其他数据库操作)的工作量的一部分。因此,例如,计算节点330可访问磁盘431、432,直到磁盘438。
磁盘(诸如图3中示出的磁盘331至358)可实现为适于存储可访问数据计算节点的数据的一个或多个任意类型的存储装置和/或存储系统,包括但不限于:廉价磁盘冗余阵列(RAID)装置、磁盘驱动器或磁盘驱动器(诸如(用来指根据RAID并未被配置的磁盘的)简单磁盘捆绑(JBOD))的阵列、光存储装置、磁带驱动器、RAM磁盘、存储区域网络(SAN)、网络访问存储(NAS)或其组合。在各种实施方案中,可将磁盘格式化以通过各种列式数据库方案存储柱状数据库表。
在一些实施方案中,在分布式数据仓库集群中的计算节点中的每一个可实现在节点服务器的(或其他计算装置的)管理与首项节点的通信的操作系统上运行的处理集合,例如以便接收命令,发送回数据,以及将编译代码路由至(例如,用于所述节点上的每个核芯或片的)单个查询处理,以便执行给定的查询。在一些实施方案中,计算节点中的每一个包括用于在节点上存储的块的元数据。在至少一些实施方案中,可将该块元数据一起聚集到超级块数据结构中,所述超级块数据结构为其条目存储信息(例如,关于在该节点上存储的数据块中的每一个的元数据(即,每个数据块一个条目))的数据结构(例如,数据的阵列)。在一些实施方案中,超级块数据结构的每个条目包括用于各个块的唯一ID,并且该唯一ID可用来执行与数据块相关联的各种操作。例如,应用到在数据块中存储的数据的柱特有的压缩技术的指示,应用到在数据块中存储的数据的默认的压缩技术的指示,或指示数据值并不存储于数据块中的概率数据结构可能全部都存储于用于数据块的各个条目中。在一些实施方案中,当数据块首先被写入分布式数据仓库系统中时,唯一ID(和在创建的超级块中的对应条目)可由首项节点或由计算节点生成。在至少一些实施方案中,可保持指示用于与在超级块中存储的条目的数据值相关联的多列索引值的范围(诸如最小值和最大值)的超级块中的条目。
图4示出了根据一些实施方案的计算节点的实例。可在计算节点450处接收发送至首项节点(诸如首项节点320)和从首项节点发送至计算节点的访问请求452(诸如各种查询和消息)。数据访问模块460(诸如下文参考图5进一步详细所述)可处理访问请求,从而引导读取、写入和对磁盘450至458的其他访问操作。各种不同的硬件和软件装置可单独或组合使用,以实现查询执行模块460。当处理查询时,数据访问模块460可检查超级块中的针对存储用于数据库表的数据的每个数据块的多列索引值的范围的条目,以识别将要读取的数据块以便服务查询,并且随后读取存储针对列的数据的被识别的数据块。
在一些实施方案中,计算节点450还可包括本地存储在计算节点处或远程存储但可访问计算节点的超级块数据结构470(诸如上文所述的超级块数据结构),所述超级块数据结构470可包括用于在计算节点450上存储的数据块的各个条目,所述各个条目存储包括多列索引值范围以及用于数据块的其他信息的块元数据。然而,应注意,在一些实施方案中,可将用于数据块的元数据存储在多个不同位置,诸如数据块本身或其他单个数据块结构中。因此,超级块数据结构470并不意在限制可被应用以保存针对数据块的元数据信息的各种其他结构、位置、方法或技术。
如上文所述,计算节点可被配置来接收访问请求,诸如查询、存储操作和其他数据管理操作。图5是根据一些实施方案的示出实现用于查询处理的布隆过滤器的示例性数据访问模块的框图。可接收查询504和数据存储请求502,或查询或数据存储请求的指示作为对数据访问模块500的输入。数据访问模块500可与存储装置530通信,所述存储装置530可存储用于柱状数据库表的多个列的多个数据块。用于多个列的数据可存储在存储装置530中的数据块中,并且数据访问模块500可被配置来既存储该数据又从存储装置读取该数据。
数据访问模块500的部分或全部可在计算节点(诸如上文参考图4所述的计算节点450)上实现。尽管如在图4中的计算节点中实现所述,但是数据访问模块500或数据访问模块500的组件或模块(诸如多列键生成器130)可在首项节点320(如上文参考图3所述)或数据仓库服务的一些其他组件或模块中实现。硬件和软件组件的各种不同配置可用来实现数据访问模块500以及其内示出的组件或模块。还应注意,尽管不同模块或组件在数据访问模块500内示出为一个或多个不同模块或装置,但是可将这些不同组件组合在一起,放置在不同位置,或可替代地被配置来通过针对选择性交织数据位在柱状关系数据库表中实现生成多列索引,并且因此图5的以下描述并不意在限制可实现数据访问模块或相似模块或装置的各种其他方式。
数据存储请求502可包括将要存储用于存储于存储装置530中的柱状关系数据库表的数据。例如,用于在存储装置530中的数据块中存储的数据可经由开放式数据库连接(ODBC)和/或Java数据库连接(JDBC)驱动器接口或被配置来接收存储请求信息和用于存储的数据的其他组件加以获得。多列索引键生成器130可接收将要存储以用于存储装置530中的数据库表的数据作为输入。尽管未示出,但是在至少一些实施方案中,还可接收从存储装置中的数据块获得的数据作为在多列索引键生成器130处的输入。例如,可生成用于已经存储或保持的柱状关系数据库表的多列索引。因此,还可接收已经存储的数据作为在多列索引键生成器130处的输入,以便生成用于已经存储的柱状关系数据库表的多列索引。
在接收到将要存储的数据之后,多列索引键生成器130可至少部分地基于针对选择性交织来自针对多列索引识别的列的数据位生成用于柱状关系数据库表的多列索引。用于生成用于柱状关系数据库表的多列索引的各种技术和方法在下文参考图7进行论述。图6是根据一些实施方案的示出示例性多列索引键生成器的框图,所述多列索引键生成器可实现下文图7中所述的各种技术中的一种或多种。在至少一些实施方案中,多列索引键生成器130可实现一个或多个压缩引擎620,所述压缩引擎620可被配置来压缩用于用于多列索引的一个或多个被识别列的条目的数据值。压缩引擎620可被配置来执行或应用一个或多个保序压缩技术。通常,保序压缩技术可压缩数据,其方式为使得压缩的数据元的排序得到保存。在一些实施方案中,不是所有的被识别的列都需要使数据值压缩。例如,在一些实施方案中,3个列已被识别为用于生成多列索引,但仅1个列可被压缩。
在至少一些实施方案中,多列索引键生成器130还可实现层次结构方案生成器630。层次结构方案生成器130可生成一个或多个不同的数据结构、列、表或为具有较少自然排序的列提供层次结构的其他指示器。例如,日期具有自然排序(即,按时间)。随机地生成的数目(诸如客户标识符)可能不具有自然排序/分类。例如,客户标识符数目可能不会描述关于客户的任何事情。层次结构方案生成器130可被配置来生成层次结构方案,以被应用到来自柱状关系数据库表的一个或多个其他列的列。例如,层次结构方案生成器130可向压缩引擎620提供包括客户的驻留状态和客户的邮政编码的方案,使得生成客户的用于客户标识符列的压缩编码,所述客户标识符列是包括驻留状态、随后邮政编码、以及随后客户标识符本身的层次结构。这可例如通过应用表示客户的状态和邮编的位模式或编码,和将它们与表示客户标识符的数据位级联来完成。可从根据一定的规则进行分组(group-by)的列或用于列的维度表获得该信息。在一些实施方案中,各种层次结构技术(诸如雪花型或星型架构)可用来提供用于特定列中的条目的值的层次结构或分类。
通过在生成压缩的数据时对列应用层次结构方案,如由层次结构定义的相似值的索引值将定位得更加靠近在一起,从而导致涉及在应用的层次结构方案中指定的分组的更加有效的查询。例如,继续参考上文给出的具有客户标识符的实例,由于客户标识符的压缩版本将包括数据位或表示客户标识符在数据中的状态和邮政编码的数据位的模式,因而当数据位由索引值生成器640与来自其他列的数据位交织时,具有相似或相同驻留状态和/或邮政编码的客户标识符可能具有相似的z值,并且因此被定位得更加靠近在一起,这可能要求对涉及特定状态和/或邮政编码的客户标识符的服务查询进行更少的访问操作。
多列索引键生成器130还可实现索引值生成器640。索引值生成器640可实现下文参考图7中的元素710所述的各种技术。例如,在一些实施方案中,索引值生成器640可以有效性的顺序交织来自数据库表的条目中的被识别的索引列的数据位,诸如首先从每个数据块选取最高有效的位,随后选取下一个最高有效位(例如,与执行z顺序的交织技术相似),以此类推,直到来自列的数据位已经放置在新生成的索引值中。生成的索引值可用作多列索引值(其可以是用于柱状关系数据库表的键值,诸如分类键或分布键)。在一些实施方案中,多列索引键值生成器130可接收将要存储在柱状关系数据库表中的另外的数据/条目作为输入。多列索引键值生成器130可生成用于另外的条目的多列索引值。在一些实施方案中,另外的数据位可诸如由压缩引擎620添加以用于另外的数据/条目,以便保持选择性在来自特定列的数据位之间的均衡分布。例如,如果一个列具有包括14和16的数据值,并且添加新值15,那么代替再压缩整个数据列,可将数据位添加到用于生成指示其在14与16之间的索引值的15的压缩版本。
多列索引键值生成器130可存储、更新生成用于柱状关系数据库表的多列索引值或将其发送至写入模块520,所述写入模块520随后可存储存储装置530中的条目。对于接收用于已经存在的表的另外的条目来说,写入模块520可引导存储装置530将条目存储于存储装置530的未分类区域中。块元数据526可聚集用于存储装置530中的块的元数据,诸如上文参考图4所述的超级块数据结构470。写入模块520可存储针对数据块的多列索引值范围作为块元数据526的一部分。可替代地,在一些实施方案中,块元数据526可分布在用于不同块的不同位置中,或存储在远离但可访问数据访问模块的位置中。
写入模块520还可由数据访问模块500实现,以将用于数据块的数据存储于存储装置530中的数据块中。在至少一些实施方案中,写入模块520可被配置来根据用于每个各个条目的多列索引值将柱状关系数据库表的条目分类,并且引导存储装置530根据被分类的顺序存储柱状关系数据库表。在一些实施方案中,写入模块520(或另一个模块或多个模块,诸如多列索引列生成器130)可被配置来更新块元数据526和用于在数据块中存储的数据的其他元数据。
数据访问模块500还可接收查询504或查询的指示,诸如针对在存储装置530中存储的选择数据的查询。例如,首项节点(诸如上文参考图3所述的首项节点320)可接收来自存储客户端的查询,并且生成查询执行计划,所述查询执行计划向实现数据访问模块500的计算节点发送查询。数据访问模块500可实现查询引擎540,以处理和接收所述查询。如上文所述,查询可以是根据查询计划将要执行的指令,但更一般地说也可以是针对满足特定规范或由特定过程生成的数据的任意类型的请求。在一些实施方案中,查询或查询的指示可包括识别用于处理所述查询的选择数据的一个或多个断言数据值。例如,SQL查询可包括断言数据值,所述断言数据值指定将要满足以用于将要检索的数据的等式条件,诸如“WHERE客户=‘小型’和客户=‘中型’”。在一些实施方案中,可能存在不同类型的查询。一些类型的查询可能要求在点值上过滤(例如,在状态值=“Texas”情况下的全部记录)。其他查询可请求较大的数据组,诸如基于一定范围的数据值(例如,具有购买价格在$1,000与$10,000之间的全部购货单)过滤数据的范围查询。一些查询可指示数据连接,所述数据连接基于从另一个数据库获得的对应的值连接来自数据库中的一个表的记录。(例如,连接来自个人数据库的记录,所述个人数据库包括具有包括所述工作部门的雇员个人信息的那些记录的特定工作部门的指示)。查询引擎540对本领技术人员是公知的,先前的描述并不意在限制许多不同的技术和查询引擎的实现方式。例如,可实现被配置来处理标准的数据库协议消息(诸如SQL请求)的标准的查询引擎,或者,可使用处理定制的查询(诸如由API指定的那些)的查询引擎。
因此,在一些实施方案中,查询引擎520可接收指向用来生成用于选择数据的存储装置530中的柱状关系数据库表的多列索引的列中的一个或多个(包括用来确定应用到索引列中的一个的层次结构方案的一个或多个列)的查询504的指示。查询引擎540可基于所述交织技术评估所述指示来确定一个或多个断言数据值,所述交织技术针对选择性交织用来生成多列索引的数据位。例如,如果查询涉及3个列,并且指示选择的范围或用于那三个列的值(例如,日期=最后两个月),那么可生成索引值,所述索引值在执行确定需要读取哪个数据块时创建将要利用的断言索引值。例如,索引值的一个或多个范围可被指示为包含选择数据。可评估(诸如可能存储于块元数据526的)多列索引值范围,以确定特定数据块是否存储用于与断言索引值相关联的条目的数据。如果所述范围不包括所述断言索引值,那么就不需要访问数据块。因此,在一些实施方案中,当服务查询时,可使用索引值来识别准备就绪的数据块。图8(下文进一步详细论述)描述了可用来使用多列索引值处理查询的各种方法和技术中的一些,并且因此上述实例并不意欲进行限制。随后,查询引擎540可引导读取模块550读取存储用于柱状关系数据库表的数据的被识别的数据块,以便服务所述查询。
在至少一些实施方案中,数据访问模块500可包括读取模块550。读取模块550可执行读取操作以从存储装置530获得数据。在一些实施方案中,读取模块550可由查询引擎540引导,以读取用于柱状关系数据库表的列的某些数据块,并且将所述读取数据返回至查询引擎540以用于进行进一步处理。随后,查询引擎540可根据接收的查询向存储客户端、首项节点或其他请求系统或装置提供查询响应506中的至少一些数据,或处理、过滤、操纵或以其他方式改变从存储装置530读取的数据。在至少一些实施方案中,读取模块550还可将从存储装置530读取的数据传输至数据库高速缓冲存储器(未示出)或在处理查询504时提供对更频繁地访问的数据的存储的其他模块或装置部件。查询引擎540随后可访问高速缓冲存储器或具有请求读取模块550的新读取操作的其他模块。由于用于数据管理和存储系统的多种不同的高速缓存技术对本领技术人员是公知的,因而先前的实例并不意欲进行限制。
尽管未示出,但是数据访问模块500的各种组件中的一个(诸如查询引擎540或多列索引键生成器130)可被配置来检测针对在用于柱状关系数据库表的多列索引中使用的列的再压缩事件。图9示出可被实现来基于根据修改的压缩方案再压缩的列数据再生成用于关系数据库的多列索引的各种方法和技术。例如,多列索引键生成器130可被配置来在检测到再压缩事件之后,通过对特定列的数据应用修改的压缩方案,和将再压缩的数据位与来自其他列的数据位交织,再生成用于柱状关系数据库表的多列索引,以生成新的多列索引值。
在各种实施方案中,如果生成更新的多列索引,那么无论是否由于再压缩事件或一些其他事件,都可保持当前的多列索引,以便在生成更新的多列索引期间服务指向柱状关系数据库的查询。在完成更新的多列索引之后,可随后使用所述更新的多列索引服务查询。
尽管图2至图6已经描述和示出了实现柱状关系数据库表的分布式数据仓库系统的上下文,但是在图2至图5中示出和描述的各种组件可能容易地应用到为关系数据库表提供数据管理和/或存储服务的其他数据管理系统,所述其他数据管理系统可包括各种其他数据格式,诸如行式关系数据库。同样地,图2至图5并不意欲限制分布式数据仓库集群中的实施方案,也不限制数据存储和管理集群的描述。例如,行式数据库系统的各种实施方案还可实现相似的模块或组件,以便通过针对选择性交织数据位生成多列索引。
如上文所述,数据库管理系统可被配置来利用关系数据库表提供更加有效的数据管理功能。为了更加有效地执行这些功能,可实现至少部分地基于针对选择性交织数据位的多列索引以用于关系数据库表。图7为根据一些实施方案的示出一种基于针对选择性交织数据位来生成用于关系数据库表的多列索引的方法的高层流程图。各种不同的系统和装置可单独地或一起起作用来实现下文所述的各种方法和技术。例如,实现多列索引键生成器(诸如上文参考图5和图6所述的多列索引键生成器130)的数据访问模块和查询引擎(诸如查询引擎540)实现各种方法。可替代地,例如,不同系统和装置的组合(诸如图3中所示的多个计算节点)一起起作用还可执行下文的方法和技术,以及首项节点320(也如图3所示)。因此,上述实例和或称为执行所示出的方法的任何其他系统或装置并不意在限制其他不同的组件、模块、系统或系统和装置的配置。
如在700处所指示,在各种实施方案中,可识别关系数据库表的至少两个列。在一些实施方案中,可响应于接收客户端或选择包括于多列索引中的列的其他请求来确定数据库列的识别。例如,客户端(诸如上文图2所述的客户端250)可发送列标识符作为较大的创建表请求的一部分,或作为以生成创建表请求的其他接口的形式填充的一部分,所述创建表请求在数据仓库服务处得到处理。各种实施方案还可执行对用于列的将要存储(或已经存储)的数据进行各种选择性分析,诸如在给定的列中存储多少个唯一的数据值(例如,性别=2个唯一值,邮政编码=99999个值),以便确定可用于多列索引的两个或更多个列。例如,可将3个列的组在下文识别为一定程度的选择性,并且因此选择成组作为多列索引的一部分。一些实施方案可分析或评估元数据或其他查询,或访问数据库的统计以确定其条目最经常被搜索的那些列。考虑到关系数据库系统保持针对次数的统计的情境,特定的列被用来断言查询的值并且随后识别3个最频繁被使用的列以用作多列索引的一部分。因此,如果新的关系数据库表被创建成包括相同的(或相似的)3个最频繁访问的列,那么那些列就被用来生成用于新的数据库表的多列索引。
一旦关系数据库表的至少两个列被识别,那么在各种实施方案中,可生成用于关系数据库表的多列索引,如在710处所指示。如先前所述,用于关系数据库表的多列索引可提供用于数据库表的每个条目(即,行)的索引值。因此,在各种实施方案中,生成用于包含这些各个多列索引键或值的数据库表的新的列。如上文所述,可至少部分地基于针对选择性交织来自被识别的列的数据位来生成多列索引,以生成索引值作为多列索引键或值。在各种实施方案中,相对于被识别的列,这些索引值可比在单独考虑单个列时可提供用于执行各种查询操作的更多的选择性。
可根据各种实施方案以不用的方式执行根据针对选择性的交织技术的索引值的生成。可通过交织来自选择的数据的二进制数据值生成索引值,以生成新的索引值。相对于生成用于关系数据库表的条目(即,行)的索引值,可交织在700处识别的列的数据位以创建用于该特定条目的新的索引值。在一些实施方案中,以其有效性的顺序(诸如使用技术以生成z顺序曲线)交织数据位。例如,如果用于关系数据库表的被识别的列是列A和列E,并且用于列A的条目的值是6(二进制值=110)和用于列B的条目的值是3(二进制值=011),那么可根据最高有效位(即,第一位值)交织用于列A和列B的条目的位。在这个实例中,来自列A的值的第一位是1,在1之后添加B(B的值为0)的最高有效位值,随后添加A的下一个最高有效值1,随后添加B(B的值为1)的下一个最高有效位,等等……。在这个实例中最后创建的索引值是101101(标记下划线的值表示从列B交织的位)。可将相似的技术应用到更大数目的选择的列。例如,如果5个列被识别,那么可利用对用于被识别列中的条目的值的每个下一位进行重复的相同模式来交织来自5个列中的每一个的位。除变化数目的被识别的列之外,各种实施方案还可使用不同的选择模式,根据所述不同的选择模式来交织数据位。尽管在上文给出的实例中,列A的值在列B的值之前得以交织,也可使用相反模式B,随后使用A。类似地,对于生成来自大数目被识别列的索引值来说,可采用选择模式的较大变化(例如,列1,随后列6,随后列2,并且随后列23)。在至少一些实施方案中,当交织来自被识别列的数据位时,重复相同的模式。此外,如许多不同交织技术(例如像空间填充曲线技术)对本领域技术人员是公知的,先前的实例并不意在限制可生成用于关系数据库表的被识别列的多列索引的各种其他方法。
在各种实施方案中,用于列中每个条目存储的数据在用于条目的所有数据位值上可能并未得到均匀地分布或选择。例如,如果列描述性别,那么数据位模式仅可以是两个不同模式,诸如针对M(01001101)或F(01000110)的ascii值。每个值的前四个位是相同的。交织那些位可能不能生成与交织来自更加均匀地(或相等地)选择的不同的列的位一样有效地选择的索引值。在至少一些实施方案中,当交织数据位时,可选择不同数目的位,以便提供选择性在每个索引值上更加均匀的分布。因此,如果在上文使用性别值ascii代码,那么前5个位可在交织其他值之前添加为一个组。在一些实施方案中,可交织来自每个列的不同数目的位。可替代地,在其他实施方案中,可如上文给出的实例一样交织相同数目的数据位。
在至少一些实施方案中,可将保序压缩技术应用到用于一个或多个被识别列的数据,作为生成用于多列索引的索引值。典型的保序压缩技术(诸如基于字典的压缩技术)在保持数据元的原始排序的同时,诸如可通过替换具有更多选择数据值的那些部分来减少数据值的重复或未选择部分。例如,如果用于装运类型的给出的列包含各种不同的短语,诸如“明天、2天、整夜、地面、空气”,那么字典压缩技术可用来替换具有表示字符的组合的更小位模式的字符的常见组合。因此,在这个实例中,“天”可利用表示“天”的更小数目的数据位替换。由于各种不同的保序压缩技术为本领域技术人员所公知,因而先前的实例并不意在限制用于应用保序压缩技术的各种不同的类型、方法或技术。随后,来自用于列的条目的压缩数据的数据位可与来自其他被识别列的数据位交织,以便生成用于多列索引的索引值。在至少一些实施方案中,所述压缩技术可应用到特定列中的数据值。由于应用保序压缩技术,数据位可针对列进行更加均匀地选择,从而为多列索引提供更具有选择性的z值。在一些实施方案中,当生成用于另外的条目的索引值时,可向用于列的数据值添加数据位,以便保存选择性在索引列上的均衡性。
虽然存储于列中的一些类型的数据可能在列的数据值之间具有自然排序或分类(例如,销售日期可能是按时间进行自然地排序),但是其他类型的数据可能不具有数据值的自然排序或结构。例如,产品标识符或客户标识符列可能不具有自然排序或结构,但是替代地,可能是随机生成的或分配的组合在一起的字符。对于被识别为用于关系数据库表的多列索引的一部分的那些列来说,可识别、确定和应用层次结构,以便提供列中的数据值的自然排序或分类。因此,当搜索与特定年龄和位置相关联的客户标识符时,例如,应用到客户标识符的层次结构可能已经允许相似的客户标识符(如由应用的层次结构方案所定义)通过它们的用于多列索引的相似的索引值而紧密定位在一起。因此,在一些实施方案中,可在压缩一个或多个列之前确定用于一个或多个列的层次结构或分类方案。
作为应用层次结构方案的一部分,用来压缩列的数据的各种保序压缩技术可包括数据位,所述数据位将包括于列的层次结构中的列的数据的压缩版本中。例如,产品标识符(其可能几乎不具有自然排序或分类,因为它可能是随意生成的数目)可能具有层次结构方案,所述层次结构方案确定包括用于每个产品标识符的通用系列的产品(例如,家用商品、电子产品、服装、视频等……)以及更加特定的子类别(例如,对于电子装置来说,其可能是电视机、音频播放机、视频播放机、摄像机、移动电话等……)。当将保序压缩方案应用到产品标识符列时,可(以基于字典的压缩技术)生成用于产品标识符的压缩代码,所述用于产品标识符的压缩代码包括用于产品标识符的产品系列、随后产品的子类别,并且随后产品标识符本身。这可例如通过应用表示客户的产品系列和子类别的位模式或代码,和将它们与表示客户标识符的数据位级联来完成。确定用于层次结构的特定位模式或代码可基于用于每个分组的唯一值的数目。例如,如果使用位置(诸如状态和邮政编码),那么表示具有较少邮政编码的状态的代码可能小于具有较大数目的邮政编码的状态。可实现应用层次结构方案的许多其他不同的方式,并且因此先前的实例并不意在限制。在一些实施方案中,雪花型或星型架构可用来包括另外的尺寸信息,所述另外的尺寸信息用于关于特定列的层次结构。
如在720处指示,在各种实施方案中,随后可根据用于关系数据库表中的每个条目的各个索引值存储关系数据库表的条目。在至少一些实施方案中,多列索引值可用作用于关系数据库表的分类键。当所述条目永久性地存储于一个或多个存储装置上时,所述条目可按其各个分类键(即,索引值)的顺序加以分类,并且存储于被分类的顺序中。描述存储的元数据(诸如上文参考图4所述的超级块470)可指示用于存储于特定数据块中的数据的各个索引值(诸如一定范围的索引值)。在至少一些实施方案中,多列索引值可用作用于关系数据库表的分布键。分布键可用来在存储于多个不同位置中时确定关系数据库表的部分的存储位置。例如,如图3所示,可实现多个计算(或存储)节点以存储用于关系数据库表的数据。分布键可用来确定关系数据库表的不同部分,所述关系数据库表的不同部分根据用于每个各个条目的多列索引值进行定位并且随后存储在不同的计算节点处。例如,不同范围的多列索引值(诸如1–2000、2001–4000和4001–6000)可存储于不同的计算节点上。通过将多列索引值实现为分布键,一些实施方案可基于用来生成多列索引的被识别的列来提高连接其他关系数据库表的查询的性能。
可在不同的事件、触发或其他请求发生之后,执行上文参考图5论述的各种方法和技术。例如,在一些实施方案中,可能已经存储或保持关系数据库表,并且可接收指示用来如上文所述部分地基于针对选择性交织数据位而生成多列索引的两个或多个列的请求。在另一个实例中,可在一些实施方案中接收数据和/或条目以被永久保存以用于数据库表(例如,用于数据库表的新行)。在接收到另外的数据/条目之后,可根据与已经用来生成用于向其添加数据/条目的关系数据库表的多列索引值相同的列生成一个或多个多列索引值。在另一个实例中,关系数据库系统(诸如数据库系统管理器、模块或其他管理组件)可被配置来动态地或自动地确定特定的数据库表接收涉及两个或更多个列的频繁的查询,并且执行上文所述的方法或技术,以在没有客户端请求这样做的情况下生成用于数据库表的多列索引。
如上文所述,接收另外的数据/条目可触发生成用于数据库表中新数据/条目的多列索引值。在至少一些实施方案中,可在存储装置中的未分类区域中将对关系数据库表的各种更新(删除、插入、修改、添加等……)存储为新的条目。响应于检测再分类事件(例如对回收释放的空间或超过永久保存于未分类区域中的未分类数据的一些阀值的客户端请求),可对关系数据库表进行再分类,使得由于对关系数据库表的更新,还可根据已经生成用于新的数据/条目的多列索引值/键以分类顺序(以及先前分类的条目)对新的数据/条目进行分类。
在一些实施方案中,可按顺序实现多列索引值,以处理涉及关系数据库表的列中的一个或多个的查询。通过评估多列索引值,可诸如通过减少在需要读取的永久性存储装置中的数据块的数目而更加有效地处理或服务查询。图8示出根据一些实施方案的一种基于针对选择性交织数据位来处理涉及具有多列索引的关系数据库的查询的方法的高层流程图。
如在800处所指示,在各种实施方案中,可接收涉及用于计算用于关系数据库表的多列索引的至少一个列的查询的指示。例如,如果客户标识符、产品标识符和销售日期列用来生成用于列的多列索引,那么可接收搜索客户标识符、产品标识符和/或销售日期值中的一个或多个的查询指示。应注意,查询不必指向用来生成多列索引的所有被识别的列。同样地,在一些实施方案中,查询还可指向除在多列索引中使用的那些列之外的其他列。例如,在一些实施方案中,查询(在具有或不具有索引列的情况下)还可指向用来确定数据层次结构和/或对索引列的列应用数据层次结构。因此,继续参考上文所述的实例,查询可涉及客户标识符和产品标识符,以及客户年龄人口统计和客户性别(其可用来确定将要应用到客户标识符的层次结构)。
在接收到查询的指示之后,可基于用来针对选择性交织数据位生成用于关系数据库表的多列索引评估所述指示来确定用于查询的断言数据值,如在810处所指示。与上文所述的生成用于多列索引的索引值相似,可生成索引值作为相对于关系数据库表而将要搜索的断言数据值。例如,值、范围或用来识别断言数据值的其他数据可用来生成用于处理查询的一个或多个索引值。在这个实例中,如果客户标识符的范围或列表可被指示,那么那些数据值可与表示用来生成多列索引的其他列的值进行交织,以便生成索引值。因此,可将客户标识符100–200转移到利用从100–200范围的数据位生成的索引值中。也可使用用于用来生成索引值的其他列的值(如果已知的话)。另外地,在一些实施方案中可包括其他值,以生成包括那些索引列的所有条目的索引值。
在各种实施方案中,随后可对用于存储用于断言数据值的关系数据库表的数据的每个数据块的多列索引范围进行分析或评估,以便识别将要读取以便服务查询的数据块,如在820处所指示。例如,在一些实施方案中,可存储/保持描述针对存储于在永久性存储装置的数据块中的数据/条目的索引值的元数据(例如,元数据可描述z值范围,诸如存储于特定数据块中的条目的最小和最大索引值)。如上文所述,在一些实施方案中,根据用于每个条目的索引值来分类关系数据库表的条目,从而允许(如由索引值确定的)相似的数据条目在数据块中定位在一起。因此,当分析多列索引范围时,也许确定的是,仅可将断言数据值存储在一个位置,即指示为将断言数据值包含在所述范围内的那些数据块。
随后可读取关系数据库表的被识别的数据块,以便服务查询,如在830处指示。例如,被识别的数据块可以是对存储用于关系数据库表的数据的永久性存储装置(或管理或访问永久性存储装置的其他系统)的访问请求中将要发送的块地址的列表。
对关系数据库表的更新可触发创建用于关系数据库表的新的条目,如上文参考图7所述。在一些实施方案中,这些新的数据/条目可改变特定列的选择性。例如,如果公司保持用于公司的主要在加利福尼亚做生意的销售数据,和在周围国家中的一些小生意,那么压缩方案或数据位的选择在生成索引值时可以基于更加均匀地将用于加利福尼亚销售的条目的选择性分布在表示加利福尼亚销售中使用的位上。然而,如果公司随后重点扩展到另一个国家(诸如俄勒冈州),从而生成更加新的销售数据,那么新的条目可改变表示位置列的位的选择性分布(如更多的条目现还可需要表示俄勒冈州)。例如,如果应用保序压缩技术,那么所述技术并不能足够地分布俄勒冈州销售情况的选择性,因为它可能已经原始地基于较少的俄勒冈州销售情况。因此,在一些实施方案中,可实现各种方法和技术,以适应数据的选择性的变化,诸如对于使用压缩来均匀地分布列中的数据位的选择性的那些实施方案。图9示出根据一些实施方案的一种基于根据修改的压缩方案再压缩的列数据再生成用于关系数据库的多列索引的方法的高层流程图。
如在900处所指示,在一些实施方案中,可检测用于用来至少部分地基于列的选择性来生成用于关系数据库的多列索引的列的再压缩事件。例如,在各种实施方案中,可保持描述用来均匀地分布用于关系数据库的列的数据位的压缩技术/方案的元数据,诸如用于基于字典的压缩技术的字典数据结构。例如,当接收到的某个数目的用于列的新数据值超过一些错位测量阀值或其他限度,那么可触发用于列的再压缩事件。在检测所述再压缩事件之后,可基于列的选择性修改先前应用的保序压缩技术/方案,如在910处所指示。在各种实施方案中,这可以是仅调整字典或其他基于替代的压缩编码器以包括表示以新的方式重现的数据值的一部分的更小的位。可替代地,总之,可完全应用不同的压缩技术(或可进行再次分析和自我修改的再次应用的相同的压缩技术)。
如在920处所指示,可应用所修改的压缩方案以压缩列中的数据,以便生成再压缩数据。该再压缩数据随后可用作再生成用于关系数据库表的更新的多列索引的一部分,从而针对选择性交织来自被识别列的再压缩数据的数据位,如在930处指示。在至少一些实施方案中,可对索引值进行更新,无需重新分类或重新定位存储装置中的关系数据库表的条目。在至少一些实施方案中,原始的多列索引可用来服务在关系数据库表处的访问请求(例如,读取请求),直到已经完全地生成更新的多列索引。
可在一个或多个计算机系统上执行通过如本文所述针对选择性交织数据位生成用于关系数据库系统的多列索引的实施方案,所述一个或多个计算机系统可与各种其他装置交互。由图10示出一个这种计算机系统。在不同的实施方案中,计算机系统1000可能是各种类型的装置中的任何一种,包括但不限于:个人计算机系统、台式电脑、膝上电脑、笔记本电脑或上网本计算机、主机计算机系统、手持式计算机、工作站、网络计算机、摄像机、机顶盒、移动装置、消费装置、视频游戏控制台、手持式视频游戏装置、应用服务器、存储装置、外围装置(诸如交换机、调制解调器、路由器)或大体上任何类型的计算或电子装置。
在示出的实施方案中,计算机系统1000包括经由输入/输出(I/O)接口1030耦接至系统储存器1020的一个或多个处理器1010。计算机系统1000还包括耦接至I/O接口1030的网络接口1040,和一个或多个输入/输出装置1050,诸如光标控制器装置1060、键盘1070和显示器1080。显示器1080可包括标准计算机监视器和/或其他显示系统、技术或装置。在至少一些实现方式中,输入/输出装置1050还可包括支持触摸或多点触摸的装置(诸如垫或平板),经由所述支持触摸或多点触摸的装置用户经由指示笔类型的装置和/或一个或多个数字符号键入输入。在一些实施方案中,在此考虑到多个实施方案可使用计算机系统1000的单一实例来实现,而在其他实施方案中多个这类系统,或构成计算机系统1000的多个节点可被配置成容纳实施方案的不同部分或实例。例如,在一个实施方案中,一些元素可经由计算机系统1000的一个或多个节点实现,所述计算机系统1000的一个或多个节点不同于实现其他元素的那些节点。
在各种实施方案中,计算机系统1000可以是包括一个处理器1010的单一处理器系统,或包括若干处理器1010(例如两个、四个、八个或另一合适数量)的多处理器系统。处理器1010可以是能够执行指令的任何处理器。例如,在各种实施方案中,处理器1010可以是实现各种指令集架构(ISA)中任何一种架构的通用或嵌入式处理器,所述架构诸如x86、PowerPC、SPARC、或MIPSISA或任何其他合适ISA。在多处理器系统中,每一个处理器1010可通常但不一定实现相同的ISA。
在一些实施方案中,至少一个处理器1010可以是图形处理单元。图形处理单元或GPU可被认为是用于个人计算机、工作站、游戏控制台、或其他计算或电子装置的专用图形渲染装置。现代GPU可以非常有效地操纵和显示计算机图形,并且其高度并行的结构可使它们比用于一系列复杂的图形算法的典型的CPU更加有效。例如,图形处理器可实现许多图形图元操作,所用方式为使许多图形图元操作比利用主中央处理单元(CPU)直接在屏幕上绘制更快地得到执行。在各种实施方案中,图形渲染可至少部分地由程序指令实现,所述程序指令被配置用于在两个或更多个此类GPU中的一个上执行或在两个或更多个此类GPU上并行执行。GPU可实现一个或多个应用程序编程接口(API),所述应用编程接口(API)容许编程员调用GPU的功能。合适的GPU可从供应商(诸如NVIDIA公司,ATI技术(AMD))及其他商购获得。
系统存储器1020可被配置来存储可被处理器1010访问的程序指令和/或数据。在各种实施方案中,系统储存器1020可使用任何合适储存器技术来实现,所述储存器技术诸如静态随机存取储存器(SRAM)、同步动态RAM(SDRAM)、非易失性/快闪型储存器或任何其他类型的储存器。在所示出的实现方案中,实现所需功能(诸如上述那些)的程序指令和数据被示出为分别作为程序指令1025和数据存储1035存储在系统存储器1020内。在其他实施方案中,程序指令和/或数据可接收、发送或存储于不同类型的计算机可访问媒体中或与系统存储器1020或计算机系统1000分开的类似媒体上。一般来说,非暂时性计算机可读存储介质可包括存储介质或存储器介质,诸如磁性或光学介质,例如经由I/O接口1030耦接至计算机系统1000的磁盘或CD/DVD-ROM。经由计算机可读介质存储的程序指令和数据可通过传输介质或信号(诸如电、电磁或数字信号)来传输,所述传输介质或信号可经由通信介质(诸如网络和/或无线链路)来传送,所述通信介质诸如可经由网络接口1040来实现。
在一个实施方案中,I/O接口1030可被配置成协调处理器1010、系统存储器1020和装置中的任何外围装置之间的I/O流量,所述外围装置包括网络接口1040或其他外围接口,诸如输入/输出装置1050。在一些实施方案中,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的一个或多个节点相互作用。
如图10所示,存储器1020可包括被配置来实现如本文描述的各种方法和技术的程序指令1025,和包括可被程序指令1025访问的各种数据的数据存储器1035。在一个实施方案中,程序指令1025可包括如本文所述和如附图中说明的实施方案的软件元素。数据存储器1035可包括可在实施方案中使用的数据。在其他实施方案中,可包括其他或不同软件元素和数据。
本领域的技术人员将了解,计算机系统1000仅仅是说明性的并且并不意图限制如本文所述的立体图形绘制技术的范围。具体地而言,计算机系统和装置可包括可执行指示功能的硬件和软件的任何组合,包括:计算机、个人计算机系统、台式电脑、膝上电脑、笔记本电脑或上网本计算机、主机计算机系统、手持式计算机、工作站、网络计算机、摄像机、机顶盒、移动装置、网络装置、因特网设备、PDA、无线电话、寻呼机、消费装置、视频游戏控制台、手持式视频游戏装置、应用服务器、存储装置、外围装置(诸如交换机、调制解调器、路由器)或大体上任何类型的计算或电子装置。计算系统1000还可被连接到未示出的其他装置,或替代地可以作为独立系统操作。另外,所示出的组件所提供的功能可在一些实施方案中由较少组件来执行或分布于另外组件中。类似地,在一些实施方案中,可以不提供所示出组件中的一些的功能和/或可使用其他另外的功能。
本领域的技术人员还应了解,尽管各种项目被示出为在使用时存储在存储器中或者存储装置上,但是这些项目或它们的部分可在存储器与其他存储装置之间传输,以供用于存储器管理和数据完整性的目的。或者,在其他实施方案中,一些或全部的软件组件可在另一装置上的存储器中执行,并且经由计算机间通信来与所示出的计算机系统通信。一些或全部的系统组件或数据结构还可存储(例如,作为指令或者结构化数据)在将由适当的驱动器读取的计算机可访问介质或便携式制品中,它们的各种实例已在上文描述。在一些实施方案中,存储在与计算机系统1000分开的计算机可访问介质上的指令可经由传输介质或信号来传输到计算机系统1000,传输介质或信号诸如经由通信介质(诸如网络和/或无线链路)传达的电信号、电磁信号或数字信号。各个实施方案还可包括根据前面的描述实现的在计算机可访问介质上接收、发送或存储指令和/或数据。因此,本发明可用其他计算机系统配置来实践。
注意本文所述的分布式系统实施方案中的任何一个,或它们的组件中的任何一个,可被实现作为一个或多个web服务。例如,数据仓库系统内的首项节点可向客户端呈现数据存储服务和/或数据库服务作为基于网络的服务。在一些实施方案中,基于网络的服务可由被设计来支持通过网络的彼此协作的机对机相互作用的软件和/或硬件系统实施。基于网络的服务可具有以机器可处理格式描述的接口,诸如Web服务描述语言(WSDL)。其他系统可能以由描述基于网络的服务的接口的描述规定的方式与web服务相互作用。例如,基于网络的服务可限定其他系统可调用的各种操作,并且可限定特定的应用编程接口(API),当请求各种操作时,其他系统可能期望服从所述特定的应用编程接口(API)。
在各种实施方案中,通过使用包括与基于网络的服务请求关联的参数和/或数据的消息,基于网络的服务可被请求或调用。此类消息可根据特定的标记语言(诸如可延伸标记语言(XML))被格式化,和/或使用协议(诸如简单对象访问协议(SOAP))来封装。为执行web服务请求,基于网络服务客户端可组装包括所述请求的消息,以及使用基于因特网的应用层转移协议(诸如超文本传输协议(HTTP))将所述消息传达至对应于网络服务的可寻址端点(例如,统一资源定位符(URL))。
在一些实施方案中,web服务可使用表述性状态传输(“RESTful”)技术而不是基于消息的技术来实施。例如,根据RESTful技术实现的web服务可通过包括在HTTP方法(诸如PUT、GET或DELETE)内而不是封装在SOAP消息内的参数来调用。
鉴于以下代表性条款,上述实施方案可更好地理解:
1.一种分布式数据仓库系统,其包括:
多个计算节点,其实现:
一个或多个存储装置,其提供对柱状关系数据库表的存储,其中所述一个或多个存储装置包括多个数据块;
多列键生成器,其被配置来:
识别所述柱状关系数据库表的多个列中的至少两个列;
至少部分地基于针对选择性交织来自所识别的至少两个列的数据位而生成用于所述柱状关系数据库表的多列索引,其中所述多列索引提供所述柱状关系数据库表的每个条目的各个索引值;
写入模块,其被配置来:
引导所述一个或多个存储装置将根据用于每个条目的所述各个索引值分类的所述柱状关系数据库表的所述条目存储在所述多个数据块中的一个或多个中;并且
引导所述一个或多个存储装置存储指示多列索引值范围的元数据,所述多列索引值范围对应于存储在所述一个或多个数据块中的每一个中的所述条目的所述索引值。
2.如条款1所述的系统,其中为了至少部分地基于针对选择性交织来自所识别的至少两个列的数据位而生成用于所述柱状关系数据库表的所述多列索引,所述多列键生成器被配置来根据保序压缩技术压缩来自所述至少两个列中的一个或多个的数据。
3.如条款2所述的系统,其中根据保序压缩技术压缩来自所述至少两个列中的所述一个或多个的数据,所述多列键生成器还被配置来:
确定用于来自所述柱状关系数据库表的一个或多个其他列的所述一个或多个列中的特定一个的列数据层次结构;并且
对所述一个或多个列中的所述特定一个应用所述列数据层次结构,以便根据所述列数据层次结构将所述一个或多个列中的所述特定一个中的数据进行分组。
4.如条款3所述的系统,其还包括:
读取模块;
查询引擎,其被配置来:
接收指向所述至少两个列中的一个或多个或指向用于选择数据的所述柱状关系数据库表的所述一个或多个其他列中的一个或多个的查询的指示;
至少部分地基于针对选择性交织来自所识别的至少两个列的数据位评估所述查询的所述指示来确定一个或多个断言数据值,其中所述一个或多个断言数据值识别所述选择数据;
响应于接收和评估所述查询的所述指示:
分析指示用于所述一个或多个数据块中的每一个的所述一个或多个断言数据值的所述多列索引值范围的所述元数据,以确定所述一个或多个数据块中将被读取以便服务用于所述选择数据的所述查询的特定数据块;并且
引导所述读取模块读取所述一个或多个数据块中存储用于所述柱状关系数据库表的数据的所述特定数据块。
5.一种方法,其包括:
由一个或多个计算装置执行以下各项:
识别关系数据库表的多个列中的至少两个列;
至少部分地基于针对选择性交织来自所识别的至少两个列的数据位而生成用于所述关系数据库表的多列索引,其中所述多列索引提供用于所述关系数据库表的每个条目的各个索引值;以及
根据用于每个条目的所述各个索引值来存储所述关系数据库表的所述条目。
6.如条款5所述的方法,其中所述生成用于所述关系数据库表的所述多列索引包括应用保序压缩技术,以便压缩用于所述至少两个列中的一个或多个的数据。
7.如条款6所述的方法,其中所述应用保序压缩技术以便压缩用于所述至少两个列中的所述一个或多个的数据,包括对所述一个或多个列中特定的一个应用列数据层次结构,以便根据所述列数据层次结构将所述一个或多个列中的所述特定的一个中的数据进行分组。
8.如条款5所述的方法,其中用于所述关系数据库表的每个条目的所述各个索引值是分布键值,其中所述根据用于每个条目的所述各个索引值存储所述关系数据库表的所述条目包括至少部分地基于所述关系数据库表的所述条目的所述分布键值来在多个不同的永久性存储装置之间分布将要保存的所述关系数据库表的所述条目。
9.如条款5所述的方法,其中用于所述关系数据库表的每个条目的所述各个索引值是分类键值,其中根据用于每个条目的所述各个索引值对所述关系数据库表的所述条目的所述存储包括存储根据用于所述关系数据库表的所述条目的分类键值而分类的所述关系数据库表的所述条目。
10.如条款9所述的方法,其还包括:
接收将要存储以用于所述关系数据库表的一个或多个另外的条目;以及
至少部分地基于所述针对选择性交织来自所识别的至少两个列的数据位来生成用于所述另外的条目的一个或多个分类键值。
11.如条款9所述的方法,其中所述关系数据库表的所述条目永久性地存储在多个数据块之间,并且其中所述方法还包括保持指示多列分类键值范围的元数据,所述多列分类键值范围对应于存储于所述一个或多个数据块中的每一个中的所述条目的所述分类键值。
12.如条款11所述的方法,其还包括:
接收指向用于选择数据的所述关系数据库表的所述至少两个列中的一个或多个的查询的指示;
至少部分地基于所述针对选择性交织来自所识别的两个列的数据位评估所述查询的所述指示来确定一个或多个断言数据值,其中所述一个或多个断言数据值识别所述选择数据;以及
响应于接收和评估所述查询的所述指示:
分析所述一个或多个数据块中的每一个的所述一个或多个断言数据值的所述多列分类键值范围,以识别所述多个数据块中将被读取以便服务用于所述选择数据的所述查询的特定数据块。
13.如条款5所述的方法,其中所述一个或多个计算装置是实现数据仓库集群的较大计算装置集合的一部分,所述数据仓库集群为一个或多个客户端将数据存储在分布式数据库系统中,其中所述一个或多个计算装置一起实现所述数据仓库集群的计算节点,并且其中所述识别所述关系数据库表的所述多个列中的所述至少两个列包括接收作为所述至少两个被识别的列的客户端选择的列的指示。
14.一种存储程序指令的非暂时性计算机可读存储介质,所述程序指令在由一个或多个计算装置执行时促使所述一个或多个计算装置实现关系数据库系统,所述关系数据库系统实现以下各项:
识别关系数据库表的多个列中的至少两个列;
至少部分地基于针对选择性交织来自所识别的至少两个列的数据位而生成用于所述关系数据库表的多列索引,其中所述多列索引提供用于所述关系数据库表的每个条目的各个索引值;以及
引导根据用于每个条目的所述各个索引值来存储所述关系数据库表的所述条目。
15.如条款14所述的非暂时性计算机可读存储介质,其中在所述生成用于所述关系数据库表的所述多列索引中,所述程序指令促使所述数据库系统实现应用保序压缩方案,以便压缩用于所述至少两个列中的一个或多个的数据。
16.如条款15所述的非暂时性计算机可读存储介质,其中所述程序指令还促使所述数据库系统实现以下各项:
接收将要存储以用于所述关系数据库表的一个或多个另外的条目;以及
至少部分地基于所述针对选择性交织来自所识别的至少两个列的数据位来生成用于所述另外的一个或多个条目的一个或多个索引值。
17.如条款16所述的非暂时性计算机可读存储介质,其中所述程序指令装置还促使所述数据库系统实现以下各项:
至少部分地基于所述一个或多个列的所述特定的一个的选择性来检测针对所述一个或多个列的特定的一个的再压缩事件;
至少部分地基于所述一个或多个列的所述特定的一个的所述选择性来修改所述保序压缩方案;
应用所述修改的保序压缩方案以压缩用于包括所述另外的一个或多个条目的所述一个或多个列的所述数据,以便生成再压缩数据;以及
至少部分地基于用于所述一个或多个列中的所述特定的一个的所述再压缩数据来执行所述生成用于所述关系数据库表的所述多列索引,以便更新用于包括所述另外的一个或多个条目的所述关系数据库表的所述条目中的每一个的所述各个索引值。
18.如条款17所述的非暂时性计算机可读存储介质,其中所述程序指令还促使所述数据库系统实现以下各项:
保持所述多列索引以用于在执行至少部分地基于所述再压缩数据生成用于所述关系数据库表的所述多列索引期间服务读取请求;
在完成至少部分地基于所述再压缩数据而生成用于所述关系数据库表的所述多列索引时,至少部分地基于针对至少部分地基于所述再压缩数据的所述多列索引的所述更新的索引值来服务读取请求。
19.如条款16所述的非暂时性计算机可读存储介质,其中在所述应用所述保序压缩方案以便压缩用于所述至少两个列中的一个或多个的数据中,所述程序指令装置还促使所述数据库系统实现添加另外的数据位以便表示用于所述一个或多个另外的条目中的每一个的值。
20.如条款15所述的非暂时性计算机可读存储介质,其中在应用所述保序压缩方案以便压缩用于所述至少两个列中的一个或多个的所述数据中,所述程序指令促使所述数据库系统实现对所述一个或多个列中的特定的一个应用列数据层次结构,以便根据所述列数据层次结构对所述一个或多个列中的特定的一个中的数据进行分组,其中所述列数据层次结构从所述关系数据库表的一个或多个其他列得以确定。
21.如条款20所述的非暂时性计算机可读存储介质,其中用于所述关系数据库表的每个条目的所述各个索引值是分类键值,其中所述关系数据库表的所述条目根据用于所述关系数据库表的所述条目的所述分类键值而分类,其中所述关系数据库表的所述条目永久性地存储在多个数据块之间,并且其中所述程序指令促使所述数据库系统进一步执行以下各项:
保持指示多列索引分类键值范围的元数据,所述多列索引分类键值范围对应于存储于所述一个或多个数据块中的每一个中的所述条目的所述分类键值;
接收指向所述至少两个列中的一个或多个或指向用于选择数据的所述关系数据库表的所述一个或多个其他列中的一个或多个的查询的指示;
至少部分地基于所述针对选择性交织来自所识别的两个列的数据位评估所述查询的所述指示来确定一个或多个断言数据值,其中所述一个或多个断言数据值识别所述选择数据;以及
响应于接收和评估所述查询的所述指示:
分析所述一个或多个数据块中的每一个的所述一个或多个断言数据值的所述多列分类键值范围,以识别所述多个数据块中将被读取以便服务用于所述选择数据的所述查询的特定数据块。
22.如条款14所述的非暂时性计算机可读存储介质,其中用于所述关系数据库表的每个条目的所述各个索引值是分布键值,并且其中在根据用于每个条目的所述各个索引值引导对所述关系数据库表的所述条目的所述存储中,所述程序指令促使所述数据库系统实现至少部分地基于所述关系数据库表的所述条目的所述分布键值来在多个不同的永久性存储装置之间分布将要保存的所述关系数据库表的所述条目。
如在附图中所示和本文所描述的各种方法表示方法的示例性实施方案。所述方法可以在软件、硬件或其组合中实现。方法的顺序可以改变,并且各个元素可以被添加、重新排序、组合、省略、修改等。
受益于本公开的本领域技术人员将清楚可进行各种修改和变化。旨在本发明包含所有此类修改和变化,并且相应地,以上描述应视为具有说明性而非限制性意义。
Claims (15)
1.一种分布式数据仓库系统,包括:
多个计算节点,其实现:
一个或多个存储装置,提供对列式关系数据库表的存储,其中所述一个或多个存储装置包括多个数据块;
多列键生成器,被配置为:
识别所述列式关系数据库表的多个列中的至少两个列;
至少部分地基于交织来自所识别的至少两个列的针对选择性的数据位而生成用于所述列式关系数据库表的多列索引,其中所述多列索引提供所述列式关系数据库表的每个条目的相应索引值;
写入模块,被配置为:
引导所述一个或多个存储装置将根据用于每个条目的相应索引值分类的所述列式关系数据库表的条目存储在所述多个数据块中的一个或多个中;并且
引导所述一个或多个存储装置存储指示多列索引值范围的元数据,所述多列索引值范围对应于存储在所述一个或多个数据块中的每一个中的条目的索引值。
2.如权利要求1所述的系统,其中为了至少部分地基于交织来自所识别的至少两个列的针对选择性的数据位而生成用于所述列式关系数据库表的所述多列索引,所述多列键生成器被配置为根据保序压缩技术压缩来自所述至少两个列中的一个或多个列的数据。
3.如权利要求2所述的系统,其中为了根据保序压缩技术压缩来自所述至少两个列中的所述一个或多个列的数据,所述多列键生成器还被配置为:
从所述列式关系数据库表的一个或多个其他列确定所述一个或多个列中的一个特定列的列数据层次结构;并且
对所述一个或多个列中的所述一个特定列应用所述列数据层次结构,以便根据所述列数据层次结构将所述一个或多个列中的所述一个特定列中的数据进行分组。
4.如权利要求3所述的系统,还包括:
读取模块;
查询引擎,被配置为:
接收针对所述至少两个列中的一个或多个列或针对所述列式关系数据库表的所述一个或多个其他列中的一个或多个列的用于选择数据的查询的指示;
至少部分地基于交织来自所识别的至少两个列的针对选择性的数据位评估所述查询的指示来确定一个或多个谓词数据值,其中所述一个或多个谓词数据值识别所述选择数据;
响应于接收和评估所述查询的指示:
针对所述一个或多个数据块中的每一个分析指示用于所述一个或多个谓词数据值的多列索引值范围的元数据,以确定所述一个或多个数据块中将被读取以便服务用于所述选择数据的所述查询的特定数据块;并且
引导所述读取模块读取所述一个或多个数据块中存储用于所述列式关系数据库表的数据的所述特定数据块。
5.一种方法,包括:
由一个或多个计算装置执行:
识别关系数据库表的多个列中的至少两个列;
至少部分地基于交织来自所识别的至少两个列的针对选择性的数据位而生成用于所述关系数据库表的多列索引,其中所述多列索引提供用于所述关系数据库表的每个条目的相应索引值;以及
根据用于每个条目的所述相应索引值来存储所述关系数据库表的条目。
6.如权利要求5所述的方法,其中所述生成用于所述关系数据库表的所述多列索引包括应用保序压缩技术,以便压缩用于所述至少两个列中的一个或多个列的数据。
7.如权利要求6所述的方法,其中所述应用保序压缩技术以便压缩用于所述至少两个列中的所述一个或多个列的数据包括对所述一个或多个列中的一个特定列应用列数据层次结构,以便根据所述列数据层次结构将所述一个或多个列中的所述一个特定列中的数据进行分组。
8.如权利要求5所述的方法,其中用于所述关系数据库表的每个条目的相应索引值是分布键值,其中所述根据用于每个条目的相应索引值存储所述关系数据库表的条目包括:至少部分地基于所述关系数据库表的条目的分布键值在多个不同的永久性存储装置之间分布将要保存的所述关系数据库表的条目。
9.如权利要求5所述的方法,其中用于所述关系数据库表的每个条目的相应索引值是分类键值,其中所述根据用于每个条目的相应索引值存储所述关系数据库表的条目包括:存储根据所述关系数据库表的所述条目的分类键值分类的所述关系数据库表的条目。
10.如权利要求9所述的方法,还包括:
接收将要存储以用于所述关系数据库表的一个或多个另外的条目;以及
至少部分地基于交织来自所识别的至少两个列的针对选择性的数据位来生成用于所述另外的条目的一个或多个分类键值。
11.如权利要求9所述的方法,其中所述关系数据库表的条目永久性地存储在多个数据块之中,并且其中所述方法还包括保持指示多列分类键值范围的元数据,所述多列分类键值范围对应于存储在所述一个或多个数据块中的每一个中的条目的分类键值。
12.如权利要求11所述的方法,还包括:
接收针对所述关系数据库表的所述至少两个列中的一个或多个列的用于选择数据的查询的指示;
至少部分地基于交织来自所识别的两个列的针对选择性的数据位来评估所述查询的指示来确定一个或多个谓词数据值,其中所述一个或多个谓词数据值识别所述选择数据;以及
响应于接收和评估所述查询的指示:
针对所述一个或多个数据块中的每一个分析所述一个或多个谓词数据值的多列分类键值范围,以识别所述多个数据块中将被读取以便服务用于所述选择数据的所述查询的特定数据块。
13.如权利要求5所述的方法,其中所述一个或多个计算装置是实现数据仓库集群的较大计算装置集合的一部分,所述数据仓库集群将一个或多个客户的数据存储在分布式数据库系统中,其中所述一个或多个计算装置一起实现所述数据仓库集群的计算节点,并且其中所述识别所述关系数据库表的所述多个列中的所述至少两个列包括接收作为所述至少两个所识别的列的客户选择的列的指示。
14.一种系统,包括:
一个或多个处理器;
一个或多个存储器,所述存储器上存储有程序指令,所述程序指令在由一个或多个计算装置执行时使所述一个或多个处理器实现关系数据库系统,所述关系数据库系统实现:
识别关系数据库表的多个列中的至少两个列;
至少部分地基于交织来自所识别的至少两个列的针对选择性的数据位而生成用于所述关系数据库表的多列索引,其中所述多列索引提供用于所述关系数据库表的每个条目的相应索引值;以及
引导根据用于每个条目的相应索引值来存储所述关系数据库表的条目。
15.如权利要求14所述的系统,其中在所述生成用于所述关系数据库表的多列索引时,所述程序指令使所述数据库系统实现应用保序压缩方案,以便压缩所述至少两个列中的一个或多个列的数据。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/953,432 | 2013-07-29 | ||
US13/953,432 US10394848B2 (en) | 2013-07-29 | 2013-07-29 | Generating a multi-column index for relational databases by interleaving data bits for selectivity |
PCT/US2014/048531 WO2015017361A1 (en) | 2013-07-29 | 2014-07-29 | Generating a multi-column index for relational databases by interleaving data bits for selectivity |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105408857A true CN105408857A (zh) | 2016-03-16 |
CN105408857B CN105408857B (zh) | 2019-04-05 |
Family
ID=52391349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480042815.4A Active CN105408857B (zh) | 2013-07-29 | 2014-07-29 | 数据仓库系统、生成关系数据库的多列索引的方法和系统 |
Country Status (8)
Country | Link |
---|---|
US (3) | US10394848B2 (zh) |
EP (1) | EP3028137B1 (zh) |
JP (1) | JP6388655B2 (zh) |
KR (1) | KR101806055B1 (zh) |
CN (1) | CN105408857B (zh) |
CA (1) | CA2920033C (zh) |
SG (1) | SG11201600613UA (zh) |
WO (1) | WO2015017361A1 (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107391525A (zh) * | 2017-03-10 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 针对数据库的指令处理方法及装置 |
CN107577436A (zh) * | 2017-09-18 | 2018-01-12 | 杭州时趣信息技术有限公司 | 一种数据存储方法及装置 |
CN109800233A (zh) * | 2019-01-24 | 2019-05-24 | 博云视觉科技(青岛)有限公司 | 一种大数据融合搜索方法 |
CN109906447A (zh) * | 2016-12-14 | 2019-06-18 | 谷歌有限责任公司 | 管理请求数据库系统中不存在的索引键的事务 |
CN111045994A (zh) * | 2019-12-25 | 2020-04-21 | 山东方寸微电子科技有限公司 | 一种基于kv数据库的文件分类检索方法及系统 |
CN111427885A (zh) * | 2020-03-03 | 2020-07-17 | 中科驭数(北京)科技有限公司 | 基于查找表的数据库管理方法和装置 |
CN112035413A (zh) * | 2020-09-03 | 2020-12-04 | 杭州海康威视系统技术有限公司 | 元数据信息查询方法、装置及存储介质 |
CN112069192A (zh) * | 2019-06-11 | 2020-12-11 | Sap欧洲公司 | 具有所有权转移的多主 |
CN112889039A (zh) * | 2018-09-24 | 2021-06-01 | 易享信息技术有限公司 | 用于克隆后租户标识符转换的记录的标识 |
CN113051351A (zh) * | 2019-12-26 | 2021-06-29 | 斯诺弗雷克公司 | 修剪索引以增强数据库查询处理 |
CN113312313A (zh) * | 2021-01-29 | 2021-08-27 | 淘宝(中国)软件有限公司 | 数据查询方法、非易失性存储介质及电子设备 |
US11222067B2 (en) | 2017-12-05 | 2022-01-11 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Multi-index method and apparatus, cloud system and computer-readable storage medium |
CN115563103A (zh) * | 2022-09-15 | 2023-01-03 | 河南星环众志信息科技有限公司 | 一种多维度聚合方法、系统、电子设备及存储介质 |
CN112069192B (zh) * | 2019-06-11 | 2024-04-16 | Sap欧洲公司 | 具有所有权转移的多主 |
Families Citing this family (49)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9489423B1 (en) * | 2013-08-22 | 2016-11-08 | Amazon Technologies, Inc. | Query data acquisition and analysis |
US9588978B2 (en) | 2013-09-30 | 2017-03-07 | International Business Machines Corporation | Merging metadata for database storage regions based on overlapping range values |
US9400817B2 (en) * | 2013-12-31 | 2016-07-26 | Sybase, Inc. | In-place index repair |
US9715515B2 (en) * | 2014-01-31 | 2017-07-25 | Microsoft Technology Licensing, Llc | External data access with split index |
JP6307169B2 (ja) | 2014-03-10 | 2018-04-04 | インターナ, インコーポレイテッドInterana, Inc. | 迅速なデータ解析のためのシステム及び方法 |
JP6273969B2 (ja) * | 2014-03-28 | 2018-02-07 | 富士通株式会社 | データ加工装置、情報処理装置、方法、およびプログラム |
US9519687B2 (en) | 2014-06-16 | 2016-12-13 | International Business Machines Corporation | Minimizing index maintenance costs for database storage regions using hybrid zone maps and indices |
US10057217B2 (en) * | 2014-07-15 | 2018-08-21 | Sap Se | System and method to secure sensitive content in a URI |
US10599648B2 (en) * | 2014-09-26 | 2020-03-24 | Applied Materials, Inc. | Optimized storage solution for real-time queries and data modeling |
US9747331B2 (en) * | 2014-10-06 | 2017-08-29 | International Business Machines Corporation | Limiting scans of loosely ordered and/or grouped relations in a database |
US9563687B1 (en) | 2014-11-13 | 2017-02-07 | Amazon Technologies, Inc. | Storage configuration in data warehouses |
US9772849B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Four-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US9772850B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Morton coordinate adjustment processors, methods, systems, and instructions |
US9772848B2 (en) * | 2014-11-14 | 2017-09-26 | Intel Corporation | Three-dimensional morton coordinate conversion processors, methods, systems, and instructions |
US10042887B2 (en) * | 2014-12-05 | 2018-08-07 | International Business Machines Corporation | Query optimization with zone map selectivity modeling |
US10296507B2 (en) * | 2015-02-12 | 2019-05-21 | Interana, Inc. | Methods for enhancing rapid data analysis |
KR101696338B1 (ko) * | 2015-02-16 | 2017-01-13 | 네이버 주식회사 | 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법 |
JP6241449B2 (ja) * | 2015-05-21 | 2017-12-06 | 横河電機株式会社 | データ管理システム及びデータ管理方法 |
US10303685B2 (en) | 2015-06-08 | 2019-05-28 | International Business Machines Corporation | Data table performance optimization |
US10241979B2 (en) * | 2015-07-21 | 2019-03-26 | Oracle International Corporation | Accelerated detection of matching patterns |
KR102385908B1 (ko) * | 2015-08-11 | 2022-04-13 | 삼성전자주식회사 | 스토리지 장치로부터 데이터를 검색하는 방법 |
US10282349B2 (en) | 2015-08-26 | 2019-05-07 | International Business Machines Corporation | Method for storing data elements in a database |
US10360233B2 (en) * | 2015-11-19 | 2019-07-23 | Oracle International Corporation | In-memory key-value store for a multi-model database |
US20170220656A1 (en) * | 2016-02-03 | 2017-08-03 | Adp, Llc | Information Access System |
US10572462B2 (en) * | 2016-04-10 | 2020-02-25 | International Business Machines Corporation | Efficient handling of sort payload in a column organized relational database |
CN105956046A (zh) * | 2016-04-25 | 2016-09-21 | 广州神马移动信息科技有限公司 | 一种字典的更新方法、系统和服务器 |
US10346403B2 (en) * | 2016-05-06 | 2019-07-09 | International Business Machines Corporation | Value range synopsis in column-organized analytical databases |
US11392620B2 (en) * | 2016-06-14 | 2022-07-19 | Micro Focus Llc | Clustering log messages using probabilistic data structures |
US10114846B1 (en) * | 2016-06-24 | 2018-10-30 | Amazon Technologies, Inc. | Balanced distribution of sort order values for a multi-column sort order of a relational database |
US10685003B2 (en) * | 2016-06-29 | 2020-06-16 | International Business Machines Corporation | Building and using an atomic key with partial key searching capability |
US10521411B2 (en) * | 2016-08-10 | 2019-12-31 | Moonshadow Mobile, Inc. | Systems, methods, and data structures for high-speed searching or filtering of large datasets |
US10650017B1 (en) | 2016-08-29 | 2020-05-12 | Amazon Technologies, Inc. | Tiered storage for data processing |
KR101795564B1 (ko) * | 2017-01-09 | 2017-11-09 | 네이버 주식회사 | 컬럼-인덱스 데이터 포맷을 이용하여 빅데이터를 효율적으로 처리 및 분석하는 시스템 및 방법 |
CN106997378B (zh) * | 2017-03-13 | 2020-05-15 | 上海摩库数据技术有限公司 | 基于Redis的数据库数据聚合同步的方法 |
US10242037B2 (en) * | 2017-04-20 | 2019-03-26 | Servicenow, Inc. | Index suggestion engine for relational databases |
US20190005082A1 (en) * | 2017-07-03 | 2019-01-03 | Infosys Limited | Method and system for committing group atomic transaction in non-relational database |
US20190050436A1 (en) * | 2017-08-14 | 2019-02-14 | International Business Machines Corporation | Content-based predictive organization of column families |
US11073828B2 (en) * | 2017-12-08 | 2021-07-27 | Samsung Electronics Co., Ltd. | Compression of semantic information for task and motion planning |
CN110019218B (zh) | 2017-12-08 | 2023-08-25 | 阿里巴巴集团控股有限公司 | 数据存储与查询方法及设备 |
US11411578B1 (en) * | 2017-12-31 | 2022-08-09 | Teradata Us, Inc. | Bit reordering compression |
US11157496B2 (en) * | 2018-06-01 | 2021-10-26 | International Business Machines Corporation | Predictive data distribution for parallel databases to optimize storage and query performance |
US11163764B2 (en) * | 2018-06-01 | 2021-11-02 | International Business Machines Corporation | Predictive data distribution for parallel databases to optimize storage and query performance |
JP6702582B2 (ja) * | 2019-05-09 | 2020-06-03 | 株式会社東芝 | データベース管理システムおよびデータベース管理方法 |
US11119999B2 (en) * | 2019-07-24 | 2021-09-14 | Sap Se | Zero-overhead hash filters |
US20210149866A1 (en) | 2019-11-20 | 2021-05-20 | Google Llc | Universal data index for rapid data exploration |
US11063601B1 (en) * | 2020-04-20 | 2021-07-13 | Netapp, Inc. | File system format for persistent memory |
CN111752953A (zh) * | 2020-06-29 | 2020-10-09 | 北京百度网讯科技有限公司 | 标识生成方法、装置、设备以及存储介质 |
US11294929B1 (en) | 2021-06-09 | 2022-04-05 | Aeec | Smart water data analytics |
US20230177046A1 (en) * | 2021-12-08 | 2023-06-08 | Sap Se | Fast table search for visualization of complex hierarchy data |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101719141A (zh) * | 2009-12-24 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 基于目录对象的文件处理方法和系统 |
CN102117305A (zh) * | 2010-01-06 | 2011-07-06 | 中国移动通信集团公司 | 查询数据的系统、方法和数据管理系统 |
US20110213775A1 (en) * | 2010-03-01 | 2011-09-01 | International Business Machines Corporation | Database Table Look-up |
US20110246432A1 (en) * | 2007-08-27 | 2011-10-06 | Teradata Us, Inc. | Accessing data in column store database based on hardware compatible data structures |
US20130046949A1 (en) * | 2011-08-16 | 2013-02-21 | John Colgrove | Mapping in a storage system |
Family Cites Families (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5918225A (en) * | 1993-04-16 | 1999-06-29 | Sybase, Inc. | SQL-based database system with improved indexing methodology |
US5924088A (en) * | 1997-02-28 | 1999-07-13 | Oracle Corporation | Index selection for an index access path |
US6460026B1 (en) * | 1999-03-30 | 2002-10-01 | Microsoft Corporation | Multidimensional data ordering |
US6421662B1 (en) * | 1999-06-04 | 2002-07-16 | Oracle Corporation | Generating and implementing indexes based on criteria set forth in queries |
US6618720B1 (en) * | 2000-06-15 | 2003-09-09 | Ncr Corporation | Common spool files for maintaining join indexes |
US7450438B1 (en) * | 2002-06-20 | 2008-11-11 | Cisco Technology, Inc. | Crossbar apparatus for a forwarding table memory in a router |
US7158996B2 (en) * | 2003-01-27 | 2007-01-02 | International Business Machines Corporation | Method, system, and program for managing database operations with respect to a database table |
EP1441293B1 (en) | 2003-02-18 | 2004-08-04 | Hermann Dr.-Ing. Tropf | Database and method for organizing data elements |
US20050027692A1 (en) * | 2003-07-29 | 2005-02-03 | International Business Machines Corporation. | Method, system, and program for accessing data in a database table |
US7647291B2 (en) * | 2003-12-30 | 2010-01-12 | Microsoft Corporation | B-tree compression using normalized index keys |
US20130104251A1 (en) * | 2005-02-01 | 2013-04-25 | Newsilike Media Group, Inc. | Security systems and methods for use with structured and unstructured data |
US7822776B2 (en) * | 2005-12-31 | 2010-10-26 | Michael Wayne Martin | Multidimensional dynamic clustering (MDDC) |
US7809759B1 (en) * | 2006-08-18 | 2010-10-05 | Unisys Corporation | Dynamic preconditioning of A B+tree |
US20100018569A1 (en) * | 2006-09-28 | 2010-01-28 | B-Pods Holdings Pty. Ltd. | Solar Energy Harvesting Apparatus |
US7577658B2 (en) * | 2006-10-06 | 2009-08-18 | Microsoft Corporation | Hierarchical locking in B-tree indexes |
US7827218B1 (en) | 2006-11-18 | 2010-11-02 | X-Engines, Inc. | Deterministic lookup using hashed key in a multi-stride compressed trie structure |
US8688723B2 (en) | 2007-12-21 | 2014-04-01 | Hewlett-Packard Development Company, L.P. | Methods and apparatus using range queries for multi-dimensional data in a database |
EP2340476A4 (en) | 2008-09-05 | 2012-05-09 | Arcsight Inc | EFFECTIVE STORAGE OF LOG DATA WHILE SUPPORTING AN INTERROGATION |
US20100088309A1 (en) * | 2008-10-05 | 2010-04-08 | Microsoft Corporation | Efficient large-scale joining for querying of column based data encoded structures |
JPWO2010067897A1 (ja) * | 2008-12-12 | 2012-05-24 | 日本電気株式会社 | データ圧縮装置、データ圧縮方法、データ圧縮プログラム、および、圧縮データ通信システム |
US8055687B2 (en) * | 2009-01-20 | 2011-11-08 | Hewlett-Packard Development Company, L.P. | System and method for determining intervals of a space filling curve in a query box |
US9298761B2 (en) * | 2009-04-30 | 2016-03-29 | Hewlett Packard Enterprise Development Lp | Adaptive merging in database indexes |
US9355109B2 (en) * | 2010-06-11 | 2016-05-31 | The Research Foundation For The State University Of New York | Multi-tier caching |
US8935233B2 (en) | 2010-09-28 | 2015-01-13 | International Business Machines Corporation | Approximate index in relational databases |
EP2698854B1 (en) | 2010-10-22 | 2017-02-22 | Belenos Clean Power Holding AG | Method of an electrode (anode and cathode) performance enhancement by composite formation with graphene oxide |
US20120323923A1 (en) * | 2011-06-14 | 2012-12-20 | Bank Of America Corporation | Sorting Data in Limited Memory |
US8554730B2 (en) | 2011-07-29 | 2013-10-08 | International Business Machines Corporation | Adding a key column to a table to be replicated |
US9043310B2 (en) * | 2011-11-08 | 2015-05-26 | International Business Machines Corporation | Accessing a dimensional data model when processing a query |
US9244980B1 (en) * | 2012-05-05 | 2016-01-26 | Paraccel Llc | Strategies for pushing out database blocks from cache |
US9430550B2 (en) * | 2012-09-28 | 2016-08-30 | Oracle International Corporation | Clustering a table in a relational database management system |
US8996544B2 (en) * | 2012-09-28 | 2015-03-31 | Oracle International Corporation | Pruning disk blocks of a clustered table in a relational database management system |
US9747313B2 (en) * | 2012-12-19 | 2017-08-29 | Sap Se | Timeline index for managing temporal data |
US9323798B2 (en) * | 2013-01-14 | 2016-04-26 | International Business Machines Corporation | Storing a key value to a deleted row based on key range density |
CA3078018C (en) * | 2013-03-15 | 2023-08-22 | Amazon Technologies, Inc. | Scalable analysis platform for semi-structured data |
US20140280375A1 (en) * | 2013-03-15 | 2014-09-18 | Ryan Rawson | Systems and methods for implementing distributed databases using many-core processors |
-
2013
- 2013-07-29 US US13/953,432 patent/US10394848B2/en active Active
-
2014
- 2014-07-29 SG SG11201600613UA patent/SG11201600613UA/en unknown
- 2014-07-29 CA CA2920033A patent/CA2920033C/en active Active
- 2014-07-29 JP JP2016531804A patent/JP6388655B2/ja active Active
- 2014-07-29 KR KR1020167004339A patent/KR101806055B1/ko active IP Right Grant
- 2014-07-29 EP EP14832259.7A patent/EP3028137B1/en active Active
- 2014-07-29 WO PCT/US2014/048531 patent/WO2015017361A1/en active Application Filing
- 2014-07-29 CN CN201480042815.4A patent/CN105408857B/zh active Active
-
2019
- 2019-08-23 US US16/549,669 patent/US11132384B2/en active Active
-
2021
- 2021-09-24 US US17/485,193 patent/US20220156289A1/en active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110246432A1 (en) * | 2007-08-27 | 2011-10-06 | Teradata Us, Inc. | Accessing data in column store database based on hardware compatible data structures |
CN101719141A (zh) * | 2009-12-24 | 2010-06-02 | 成都市华为赛门铁克科技有限公司 | 基于目录对象的文件处理方法和系统 |
CN102117305A (zh) * | 2010-01-06 | 2011-07-06 | 中国移动通信集团公司 | 查询数据的系统、方法和数据管理系统 |
US20110213775A1 (en) * | 2010-03-01 | 2011-09-01 | International Business Machines Corporation | Database Table Look-up |
US20130046949A1 (en) * | 2011-08-16 | 2013-02-21 | John Colgrove | Mapping in a storage system |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109906447A (zh) * | 2016-12-14 | 2019-06-18 | 谷歌有限责任公司 | 管理请求数据库系统中不存在的索引键的事务 |
CN109906447B (zh) * | 2016-12-14 | 2020-11-10 | 谷歌有限责任公司 | 管理请求数据库系统中不存在的索引键的事务 |
CN107391525A (zh) * | 2017-03-10 | 2017-11-24 | 阿里巴巴集团控股有限公司 | 针对数据库的指令处理方法及装置 |
CN107391525B (zh) * | 2017-03-10 | 2020-08-07 | 阿里巴巴集团控股有限公司 | 针对数据库的指令处理方法及装置 |
CN107577436A (zh) * | 2017-09-18 | 2018-01-12 | 杭州时趣信息技术有限公司 | 一种数据存储方法及装置 |
CN107577436B (zh) * | 2017-09-18 | 2020-07-07 | 杭州时趣信息技术有限公司 | 一种数据存储方法及装置 |
US11222067B2 (en) | 2017-12-05 | 2022-01-11 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Multi-index method and apparatus, cloud system and computer-readable storage medium |
CN112889039A (zh) * | 2018-09-24 | 2021-06-01 | 易享信息技术有限公司 | 用于克隆后租户标识符转换的记录的标识 |
CN109800233A (zh) * | 2019-01-24 | 2019-05-24 | 博云视觉科技(青岛)有限公司 | 一种大数据融合搜索方法 |
CN112069192A (zh) * | 2019-06-11 | 2020-12-11 | Sap欧洲公司 | 具有所有权转移的多主 |
CN112069192B (zh) * | 2019-06-11 | 2024-04-16 | Sap欧洲公司 | 具有所有权转移的多主 |
CN111045994A (zh) * | 2019-12-25 | 2020-04-21 | 山东方寸微电子科技有限公司 | 一种基于kv数据库的文件分类检索方法及系统 |
CN111045994B (zh) * | 2019-12-25 | 2023-08-22 | 山东方寸微电子科技有限公司 | 一种基于kv数据库的文件分类检索方法及系统 |
CN113051351A (zh) * | 2019-12-26 | 2021-06-29 | 斯诺弗雷克公司 | 修剪索引以增强数据库查询处理 |
CN111427885A (zh) * | 2020-03-03 | 2020-07-17 | 中科驭数(北京)科技有限公司 | 基于查找表的数据库管理方法和装置 |
CN111427885B (zh) * | 2020-03-03 | 2023-06-09 | 中科驭数(北京)科技有限公司 | 基于查找表的数据库管理方法和装置 |
CN112035413A (zh) * | 2020-09-03 | 2020-12-04 | 杭州海康威视系统技术有限公司 | 元数据信息查询方法、装置及存储介质 |
CN112035413B (zh) * | 2020-09-03 | 2024-02-20 | 杭州海康威视系统技术有限公司 | 元数据信息查询方法、装置及存储介质 |
CN113312313A (zh) * | 2021-01-29 | 2021-08-27 | 淘宝(中国)软件有限公司 | 数据查询方法、非易失性存储介质及电子设备 |
CN113312313B (zh) * | 2021-01-29 | 2023-09-29 | 淘宝(中国)软件有限公司 | 数据查询方法、非易失性存储介质及电子设备 |
CN115563103A (zh) * | 2022-09-15 | 2023-01-03 | 河南星环众志信息科技有限公司 | 一种多维度聚合方法、系统、电子设备及存储介质 |
CN115563103B (zh) * | 2022-09-15 | 2023-12-08 | 河南星环众志信息科技有限公司 | 一种多维度聚合方法、系统、电子设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20190377743A1 (en) | 2019-12-12 |
EP3028137B1 (en) | 2020-09-02 |
CA2920033A1 (en) | 2015-02-05 |
KR101806055B1 (ko) | 2017-12-06 |
US20150032684A1 (en) | 2015-01-29 |
EP3028137A4 (en) | 2017-05-17 |
JP6388655B2 (ja) | 2018-09-12 |
CA2920033C (en) | 2020-08-11 |
WO2015017361A1 (en) | 2015-02-05 |
US20220156289A1 (en) | 2022-05-19 |
SG11201600613UA (en) | 2016-02-26 |
CN105408857B (zh) | 2019-04-05 |
JP2016532199A (ja) | 2016-10-13 |
KR20160033761A (ko) | 2016-03-28 |
EP3028137A1 (en) | 2016-06-08 |
US10394848B2 (en) | 2019-08-27 |
US11132384B2 (en) | 2021-09-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105408857A (zh) | 通过针对选择性交织数据位生成用于关系数据库的多列索引 | |
US10372723B2 (en) | Efficient query processing using histograms in a columnar database | |
KR102575007B1 (ko) | 데이터베이스 시스템의 외부 테이블에 대한 질의 | |
US9367574B2 (en) | Efficient query processing in columnar databases using bloom filters | |
WO2015041714A1 (en) | Interest-driven business intelligence systems including event-oriented data | |
US20200272636A1 (en) | Tiered storage for data processing | |
US10860562B1 (en) | Dynamic predicate indexing for data stores | |
US20150081353A1 (en) | Systems and Methods for Interest-Driven Business Intelligence Systems Including Segment Data | |
US10726005B2 (en) | Virtual split dictionary for search optimization | |
US8341181B2 (en) | Method for performance tuning a database | |
US10095738B1 (en) | Dynamic assignment of logical partitions according to query predicate evaluations | |
Aydin et al. | Data modelling for large-scale social media analytics: design challenges and lessons learned |
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 |