CN113051351A - 修剪索引以增强数据库查询处理 - Google Patents
修剪索引以增强数据库查询处理 Download PDFInfo
- Publication number
- CN113051351A CN113051351A CN202011561998.4A CN202011561998A CN113051351A CN 113051351 A CN113051351 A CN 113051351A CN 202011561998 A CN202011561998 A CN 202011561998A CN 113051351 A CN113051351 A CN 113051351A
- Authority
- CN
- China
- Prior art keywords
- micro
- filter
- data
- query
- source table
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013138 pruning Methods 0.000 title claims abstract description 175
- 238000012545 processing Methods 0.000 title claims abstract description 46
- 238000005192 partition Methods 0.000 claims abstract description 161
- 238000000034 method Methods 0.000 claims description 68
- 230000015654 memory Effects 0.000 claims description 22
- 230000008859 change Effects 0.000 claims description 12
- 238000013500 data storage Methods 0.000 description 42
- 238000004891 communication Methods 0.000 description 31
- 230000008569 process Effects 0.000 description 29
- 230000006870 function Effects 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 8
- 230000008878 coupling Effects 0.000 description 7
- 238000010168 coupling process Methods 0.000 description 7
- 238000005859 coupling reaction Methods 0.000 description 7
- 238000005457 optimization Methods 0.000 description 4
- 241000544061 Cuculus canorus Species 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 2
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 2
- 239000000284 extract Substances 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 239000000523 sample Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 238000007596 consolidation process Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 239000012634 fragment Substances 0.000 description 1
- 229910000078 germane Inorganic materials 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000003116 impacting effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000000116 mitigating effect Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000026676 system process Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
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/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2272—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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
- G06F16/24557—Efficient disk access during query execution
-
- 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
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/903—Querying
- G06F16/9035—Filtering based on additional data, e.g. user or group profiles
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/18—Complex mathematical operations for evaluating statistical data, e.g. average values, frequency distributions, probability functions, regression analysis
Abstract
本申请公开了修剪索引以增强数据库查询处理。由基于网络的数据仓库访问被组织成微分区集合的源表。基于源表生成修剪索引。修剪索引包括过滤器集合,这些过滤器指示源表的每一列中不同值的位置。在基于网络的数据仓库接收针对源表的查询。使用修剪索引处理查询。查询的处理包括修剪源表的微分区集合以扫描匹配查询的数据,多个微分区的修剪包括使用修剪索引识别微分区子集以扫描匹配查询的数据。
Description
技术领域
本公开的实施例总体上涉及数据库,并且更具体地,涉及生成并使用修剪索引(pruning index)来增强云数据仓库系统中的数据库查询处理。
背景
数据库广泛用于计算应用中的数据存储和访问。数据库存储的目标是以有组织的方式提供大量信息,以便可以访问、管理和更新。在数据库中,数据可以组织成行、列和表。各种实体和公司使用数据库来存储可能需要被访问或分析的信息。
云数据仓库(也称为“基于网络的数据仓库(network-based data warehouse)”或简称为“数据仓库”)是用于数据分析和报告的基于网络的系统,其包括来自一个或更多个不同源的集成数据的中央储存库。云数据仓库可以存储当前和历史数据,这些数据可用于根据存储在企业数据库中的数据为企业创建分析报告。为此,数据仓库通常提供商业智能工具、提取、变换数据并将数据加载到储存库中的工具、以及管理和检索元数据的工具。
当要从数据库中提取某些信息时,可以对数据库数据执行查询语句。云数据仓库系统处理该查询,并根据指示该查询应该返回什么信息的一个或更多个查询谓词(querypredicates)返回某些数据。数据仓库系统从数据库中提取具体的数据,并将这些数据格式化为可读的形式。但是,在非常大的表上执行查询可能很有挑战性,因为需要大量的时间和计算资源来扫描整个表以识别满足查询的数据。
附图简述
从下面给出的详细描述和本公开的各种实施例的附图中,将更全面地理解本公开。
图1示出根据本公开一些实施例的示例计算环境,其包括与云存储提供商系统通信的基于网络的数据仓库系统。
图2是示出根据本公开一些实施例的计算服务管理器的组件的框图。
图3是示出根据本公开一些实施例的执行平台的组件的框图。
图4是示出根据一些示例实施例的分块布隆过滤器(blocked bloom filter)的生成的概念图,该分块布隆过滤器可以形成由基于网络的数据仓库系统基于源表生成的修剪索引的一部分。
图5示出根据本公开一些实施例的示例修剪索引的一部分。
图6示出根据本公开一些实施例的修剪索引的单个布隆过滤器。
图7是示出根据一些实施例的关于修剪索引的创建的进一步细节的概念图。
图8是示出根据一些实施例的修剪索引的维护的概念图。
图9-13是示出根据本公开的一些实施例,基于网络的数据仓库系统在执行一种方法时的操作的流程图,该方法用于在处理数据库查询时生成和使用修剪索引。
图14示出根据本公开一些实施例的以计算机系统的形式机器的示意图表示,用于使机器执行本文所讨论方法中的任何一个或更多个的指令集合可以在该计算机系统内执行。
详细描述
现在将详细参考用于实现本发明主题的具体示例实施例。这些具体实施例的示例在附图中示出,并且具体细节在以下描述中阐述,以便提供对主题的透彻理解。应当理解,这些示例并不旨在将权利要求的范围限制于所示的实施例。相反,它们旨在覆盖可能包含在本公开范围内的替代、修改和等同物。
如上所述,处理针对非常大的表的查询是具有挑战性的,因为需要大量的时间和计算资源来扫描整个表以识别满足查询的数据。因此,可能需要在不扫描整个表的情况下执行查询。本公开的各方面通过创建可用于构建用于处理查询的缩减的扫描集的修剪索引,解决了处理大型表上的查询的上述和其他挑战。更具体地,大型源表可以被组织成微分区集合,并且源表的修剪索引可以被创建,以用于识别要扫描的微分区子集以识别满足查询的数据。
如本文所讨论的,“微分区(micro-partition)”是批量单元,并且每个微分区具有连续的存储单元。举例来说,每个微分区可以包含介于50MB和500MB之间的未压缩数据(注意,存储的实际大小可能更小,因为数据可能被压缩存储)。表中的行组可以被映射到以列的方式组织的各个微分区中。这种大小和结构允许对要进行扫描的微分区进行极端的粒度选择(granular selection),要进行扫描的微分区包括数百万甚至数亿个微分区。这种针对要进行扫描的微分区的粒度选择过程在本文被称为“修剪”。修剪涉及使用元数据来确定表的哪些部分(包括表中的哪些微分区或微分区组)与查询不相关,然后在响应查询时避免那些不相关的微分区,并且只扫描相关的微分区来响应查询。可以自动收集关于存储在微分区中的所有行的元数据,包括:微分区中每个列的值范围;不同值的数量;和/或用于优化和高效查询处理的附加属性。在一个实施例中,可以在所有表上自动执行微分区。例如,可以使用插入/加载数据时出现的排序对表进行透明地分区。然而,应当理解,微分区的这种公开仅仅是示例性的,并且应当被认为是非限制性的。应当理解,微分区可以包括其他数据库存储设备,而不脱离本公开的范围。
与一些实施例一致,基于网络的数据仓库系统可以生成源表的修剪索引,并在处理针对源表的查询时使用该修剪索引来修剪源表的微分区。在生成修剪索引时,基于网络的数据仓库系统为源表的每个微分区生成过滤器,该过滤器对源表的该微分区的每一列中的不同值进行索引。过滤器可以例如包括分块布隆过滤器、布隆过滤器、散列过滤器(hashfilter)或布谷鸟过滤器(cuckoo filter)。
当接收到包括等式谓词的查询时,基于网络的数据仓库系统探测修剪索引以识别仅包括源表的微分区子集的缩减的微分区扫描集,而不是扫描整个源表来评估等式谓词,并且在执行查询时仅扫描缩减的微分区扫描集。
与传统方法相比,通过使用修剪索引来修剪执行查询时要扫描的微分区集合,基于网络的数据仓库加速了大型表上点查询的执行。以这种方式使用修剪索引也保证了表上任何等式谓词的恒定开销。数据仓库中修剪索引使用的附加好处包括但不限于支持其他类型谓词的能力、快速计算表中不同值的数量的能力以及支持联合修剪的能力。
图1示出了根据本公开一些实施例的示例计算环境100,其包括与存储平台104通信的基于网络的数据仓库系统102。为了避免用不必要的细节模糊本发明主题,图1中省略了与传达对本发明主题的理解不密切相关的各种功能组件。然而,本领域技术人员将容易认识到,各种附加功能组件可以被包括作为计算环境100的一部分,以促进本文没有具体描述的附加功能。
如图所示,计算环境100包括基于网络的数据仓库系统102和存储平台104(例如,微软Azure Blob或谷歌云)。基于网络的数据仓库系统102用于报告和分析来自一个或更多个不同源的集成数据,该一个或更多个不同源包括存储平台104内的存储设备106-1至106-N。存储平台104包括多个计算机器,并向基于网络的数据仓库系统102按需提供计算机系统资源,如数据存储和计算能力。
基于网络的数据仓库系统102包括计算服务管理器108、执行平台110和数据库114。基于网络的数据仓库系统102托管并向多个客户端账户提供数据报告和分析服务。管理用户可以创建和管理身份(例如,用户、角色和组),并使用权限来允许或拒绝身份对资源和服务的访问。
计算服务管理器108协调和管理基于网络的数据仓库系统102的操作。计算服务管理器108还执行查询优化和编译,以及管理提供计算资源的计算服务的集群(也称为“虚拟仓库”)。计算服务管理器108可以支持任意数量的客户端账户,如提供数据存储和检索请求的终端用户、管理本文描述的系统和方法的系统管理员以及与计算服务管理器108交互的其他组件/设备。
计算服务管理器108还与用户设备112通信。用户设备112对应于由基于网络的数据仓库系统102支持的多个客户端账户之一的用户。在一些实施例中,计算服务管理器108不从用户设备112接收任何直接通信,并且仅从基于网络的数据仓库系统102内的队列接收关于作业的通信。
计算服务管理器108还耦合到数据库114,数据库114与存储在计算环境100中的数据相关联。数据库114存储数据,该数据涉及与基于网络的数据仓库系统102及其用户相关联的各种功能和方面。在一些实施例中,数据库114包括存储在远程数据存储系统中的数据以及可从本地高速缓存获得的数据的概要。另外,数据库114可以包括关于数据如何在远程数据存储系统(例如,存储平台104)和本地高速缓存中组织的信息。数据库114允许系统和服务确定是否需要在不从存储设备加载或访问实际数据的情况下访问一段数据。
例如,数据库114可以包括一个或更多个修剪索引。计算服务管理器108可以为从存储平台104访问的每个源表生成修剪索引,并使用修剪索引来修剪源表的微分区集合,以在执行查询时扫描数据。也就是说,给定针对被组织成微分区集合的源表的查询,计算服务管理器108可以从数据库114访问修剪索引,并使用该修剪索引来识别在执行查询时要扫描的缩减的微分区集合。在执行查询时要扫描的微分区集合在本文可以被称为“扫描集”。
在一些实施例中,计算服务管理器108可以基于来自数据库114的数据来确定应该执行作业。在这样的实施例中,计算服务管理器108可以扫描数据并确定应该执行作业来改善数据组织或数据库性能。例如,计算服务管理器108可以确定源表的新版本已经生成,并且修剪索引没有被刷新以反映源表的新版本。数据库114可以包括事务性变化跟踪流(transactional change tracking stream),该事务性变化跟踪流指示源表的新版本何时被生成以及修剪索引何时被最后刷新。基于该事务流,计算机服务管理器108可以确定应该执行作业。在一些实施例中,计算服务管理器108基于触发事件确定应该执行作业,并将作业存储在队列中,直到计算服务管理器108准备好调度和管理作业的执行。在本公开的实施例中,计算服务管理器108基于正在执行的一个或更多个DML命令来确定是否需要对表或修剪索引重新聚类,其中该一个或更多个DML命令构成触发事件。
计算服务管理器108还耦合到执行平台110,执行平台110提供执行各种数据存储和数据检索任务的多个计算资源。执行平台110耦合到存储平台104的存储平台104。存储平台104包括多个数据存储设备106-1至106-N。在一些实施例中,数据存储设备106-1至106-N是位于一个或更多个地理位置的基于云的存储设备。例如,数据存储设备106-1至106-N可以是公共云基础设施或私有云基础设施的一部分。数据存储设备106-1至106-N可以包括硬盘驱动(HDD)、固态驱动(SSD)、存储集群、亚马孙(Amazon)S3TM存储系统或任何其它数据存储技术。另外,存储平台104可以包括分布式文件系统(例如,Hadoop分布式文件系统(HDFS))、对象存储系统等。
执行平台110包括多个计算节点。计算节点上的进程集合执行由计算服务管理器108编译的查询计划。进程集合可以包括:执行查询计划的第一进程;使用最近最少使用(least recently used,LRU)策略来监视和删除微分区文件,并实现内存不足(OOM)错误缓解进程的第二进程;从进程日志和状态提取健康信息以发送回计算服务管理器108的第三进程;在系统引导(boot)之后建立与计算服务管理器108的通信的第四进程;以及第五进程,该第五进程处理与由计算服务管理器108提供的给定作业的计算集群的所有通信,并将信息传送回计算服务管理器108和执行平台110的其他计算节点。
在一些实施例中,计算环境100的元件之间的通信链路经由一个或更多个数据通信网络来实现。这些数据通信网络可以利用任何通信协议和任何类型的通信介质。在一些实施例中,数据通信网络是彼此耦合的两个或更多个数据通信网络(或子网)的组合。在可替代实施例中,这些通信链路使用任何类型的通信介质和任何通信协议来实现。
如图1所示,数据存储设备106-1至106-N从与执行平台110相关联的计算资源解耦。该架构支持基于网络的数据仓库系统102的动态变化,该动态变化基于变化的数据存储/检索需求以及变化的用户和系统需求。对动态变化的支持允许基于网络的数据仓库系统102响应于对基于网络的数据仓库系统102内的系统和组件的不断变化的需求而快速变化规模(scale)。计算资源从数据存储设备的解耦支持大量数据的存储,而不需要相应的大量计算资源。类似地,资源的这种解耦支持在特定时间利用的计算资源的显著增加,而不需要可用数据存储资源的相应增加。
计算服务管理器108、数据库114、执行平台110和存储平台104在图1中示为单个的分立组件。然而,计算服务管理器108、数据库114、执行平台110和存储平台104中的每一个都可以被实现为分布式系统(例如,分布在多个地理位置处的多个系统/平台上)。另外,计算服务管理器108、数据库114、执行平台110和存储平台104中的每一个可以根据所接收请求的变化和基于网络的数据仓库系统102的变化的需求而(彼此独立地)使其规模放大或缩小。因此,在所描述的实施例中,基于网络的数据仓库系统102是动态的,并且支持频繁变化以满足当前的数据处理需求。
在典型操作期间,基于网络的数据仓库系统102处理由计算服务管理器108确定的多个作业。这些作业由计算服务管理器108调度和管理,以确定何时以及如何执行作业。例如,计算服务管理器108可以将作业划分成多个离散任务,并且可以确定执行多个离散任务中的每一个需要什么数据。计算服务管理器108可以将多个离散任务中的每一个分配给执行平台110的一个或更多个节点来处理该任务。计算服务管理器108可以确定处理一个任务需要什么数据,并进一步确定执行平台110内的哪些节点最适合处理该任务。一些节点可能已经缓存了处理该任务所需的数据,因此是处理该任务的很好的候选对象。存储在数据库114中的元数据帮助计算服务管理器108确定执行平台110中的哪些节点已经缓存了处理该任务所需的至少一部分数据。执行平台110中的一个或更多个节点使用由节点缓存的数据以及如果需要,从存储平台104检索的数据来处理任务。希望从执行平台110内的高速缓存检索尽可能多的数据,因为检索速度通常比从存储平台104检索数据快得多。
如图1所示,计算环境100将执行平台110与存储平台104分开。在这种布置中,执行平台110中的处理资源和高速缓存资源独立于存储平台104中的数据存储设备106-1至106-N进行操作。因此,计算资源和高速缓存资源不限于具体的数据存储设备106-1至106-N。相反,所有计算资源和所有高速缓存资源可以从存储平台104中的任何数据存储资源检索数据,并将数据存储到其中。
图2是示出根据本公开一些实施例的计算服务管理器108的组件的框图。如图2中所示,计算服务管理器108包括耦合到数据存储设备206的访问管理器202和关键字管理器204。访问管理器202处理本文所描述系统的认证和授权任务。关键字管理器204管理在认证和授权任务期间所使用的关键字的存储和认证。例如,访问管理器202和关键字管理器204管理用于访问存储在远程存储设备(例如,存储平台104中的数据存储设备)中的数据的关键字。如本文所使用的,远程存储设备也可以被称为“永久存储设备”或“共享存储设备”
请求处理服务208管理接收的数据存储请求和数据检索请求(例如,要对数据库数据执行的作业)。例如,请求处理服务208可以确定处理接收到的查询(例如,数据存储请求或数据检索请求)所需的数据。数据可以存储在执行平台110内的高速缓存中,或者存储在存储平台104中的数据存储设备中。
管理控制台服务210支持管理员和其他系统管理人员对各种系统和进程的访问。另外,管理控制台服务210可以接收执行作业的请求并监视系统上的工作负荷。
计算服务管理器108还包括作业编译器212、作业优化器214和作业执行器216。作业编译器212将作业解析成多个离散任务,并为多个离散任务中的每一个生成执行代码。作业优化器214基于需要进行处理的数据确定执行多个离散任务的最佳方法。作业优化器214还处理各种数据修剪操作和其他数据优化技术,以提高执行作业的速度和效率。作业执行器216执行从队列接收的或由计算服务管理器108确定的作业的执行代码。
作业调度器和协调器218将接收到的作业发送到适当的服务或系统,以用于编译、优化和派遣(dispatch)到执行平台110。例如,作业可以按优先级排序并按优先顺序进行处理。在实施例中,作业调度器和协调器218确定由计算服务管理器108调度的内部作业与其他“外部”作业(如可以由数据库中的其他系统调度但可以利用执行平台110中的相同处理资源的用户查询)的优先级。在一些实施例中,作业调度器和协调器218识别或分配执行平台110中的特定节点来处理特定任务。虚拟仓库管理器220管理在执行平台110中实现的多个虚拟仓库的操作。如下所述,每个虚拟仓库包括多个执行节点,每个执行节点包括高速缓存和处理器。
另外,计算服务管理器108包括配置和元数据管理器222,配置和元数据管理器222管理与存储在远程数据存储设备和本地高速缓存(例如,执行平台110中的高速缓存)中的数据相关的信息。配置和元数据管理器222使用元数据来确定需要访问哪些数据微分区来检索用于处理特定任务或作业的数据。监视器和工作负载分析器224监管由计算服务管理器108执行的进程,并管理任务(例如,工作负载)在执行平台110中的执行节点和虚拟仓库之间的分配。监视器和工作负载分析器224还根据需要,基于整个基于网络的数据仓库系统102中不断变化的工作负载来重新分配任务,并且还可以基于也可以由执行平台110处理的用户(例如,“外部”)查询工作负载来重新分配任务。配置和元数据管理器222以及监视器和工作负载分析器224耦合到数据存储设备226。图2中的数据存储设备226表示基于网络的数据仓库系统102中的任何数据存储设备。例如,数据存储设备226可以表示执行平台110中的高速缓存、存储平台104中的存储设备或任何其他存储设备。
如图所示,计算服务管理器108还包括修剪索引生成器228。修剪索引生成器228负责生成修剪索引,该修剪索引将用于修剪针对存储在存储平台104中的表的查询的扫描集。每个修剪索引包括过滤器集合(例如,分块布隆过滤器、布隆过滤器、散列过滤器或布谷鸟过滤器),这些过滤器对源表的每一列中的唯一值的存在进行编码。修剪索引生成器228为源表的每个微分区生成一个过滤器,并且每个过滤器指示匹配查询的数据是否潜在地存储在源表的特定微分区上。关于修剪索引生成的进一步细节将在下面讨论。
图3是示出根据本公开一些实施例的执行平台110的组件的框图。如图3中所示,执行平台110包括多个虚拟仓库,该多个虚拟仓库包括虚拟仓库1、虚拟仓库2和虚拟仓库n。每个虚拟仓库包括多个执行节点,每个执行节点包括数据高速缓存和处理器。虚拟仓库可以通过使用多个执行节点并行执行多个任务。如本文所讨论的,执行平台110可以基于系统和用户的当前处理需求实时添加新的虚拟仓库和删除现有的虚拟仓库。这种灵活性允许执行平台110在需要时快速部署大量计算资源,而不必在不再需要这些计算资源时被迫继续为其付出代价。所有虚拟仓库可以访问来自任何数据存储设备(例如,存储平台104中的任何存储设备)的数据。
尽管图3中示出的每个虚拟仓库包括三个执行节点,但是特定的虚拟仓库可以包括任意数量的执行节点。此外,虚拟仓库中的执行节点的数量是动态的,使得当存在附加需求时创建新的执行节点,并且当不再需要现有的执行节点时删除它们。
每个虚拟仓库能够访问图1中所示的数据存储设备106-1至106-N中的任何一个。因此,虚拟仓库没有必要被分配给特定的数据存储设备106-1至106-N,而是可以从存储平台104内的数据存储设备106-1至106-N中的任何一个访问数据。类似地,图3中所示的每个执行节点可以从数据存储设备106-1至106-N中的任何一个访问数据。在一些实施例中,特定的虚拟仓库或特定的执行节点可以被临时分配给具体的数据存储设备,但是该虚拟仓库或执行节点稍后可以从任何其他数据存储设备访问数据。
在图3的示例中,虚拟仓库1包括三个执行节点302-1、302-2和302-n。执行节点302-1包括高速缓存304-1和处理器306-1。执行节点302-2包括高速缓存304-2和处理器306-2。执行节点302-n包括高速缓存304-n和处理器306-n。每个执行节点302-1、302-2和302-n与处理一个或更多个数据存储和/或数据检索任务相关联。例如,虚拟仓库可以处理与内部服务相关联的数据存储和数据检索任务,如聚类服务、物化视图(materializedview)刷新服务、文件压缩服务、存储过程服务或文件升级服务。在其他实现中,特定虚拟仓库可以处理与特定数据存储系统或特定数据类别相关联的数据存储和数据检索任务。
类似于上面讨论的虚拟仓库1,虚拟仓库2包括三个执行节点312-1、312-2和312-n。执行节点312-1包括高速缓存314-1和处理器316-1。执行节点312-2包括高速缓存314-2和处理器316-2。执行节点312-n包括高速缓存314-n和处理器316-n。另外,虚拟仓库3包括三个执行节点322-1、322-2和322-n。执行节点322-1包括高速缓存324-1和处理器326-1。执行节点322-2包括高速缓存324-2和处理器326-2。执行节点322-n包括高速缓存324-n和处理器326-n。
在一些实施例中,图3中所示的执行节点相对于执行节点正在缓存的数据是无状态的(stateless)。例如,这些执行节点不存储或以其他方式维护关于执行节点或由特定执行节点缓存的数据的状态信息。因此,在执行节点故障的情况下,故障节点可以被另一个节点透明地替换。由于没有与故障执行节点相关联的状态信息,新的(替换)执行节点可以容易地替换故障节点,而无需考虑重新创建特定的状态。
尽管图3中所示的执行节点包括一个数据高速缓存和一个处理器,但是替代实施例可以包括包含任意数量的处理器和任意数量的高速缓存的执行节点。另外,不同执行节点之间的高速缓存大小可以不同。图3中所示的高速缓存在本地执行节点中存储从存储平台104中的一个或更多个数据存储设备检索的数据。因此,高速缓存减少或消除了在从远程存储系统一次次地(consistently)检索数据的平台中出现的瓶颈问题。本文描述的系统和方法不是从远程存储设备重复访问数据,而是从执行节点中的高速缓存访问数据,这明显更快并且避免了上面讨论的瓶颈问题。在一些实施例中,使用提供对高速缓存数据的快速访问的高速存储器设备来实现高速缓存。每个高速缓存可以存储来自存储平台104中的任何存储设备的数据。
此外,高速缓存资源和计算资源可以在不同的执行节点之间变化。例如,一个执行节点可以包含大量的计算资源和最少的高速缓存资源,使得该执行节点对于需要大量计算资源的任务有用。另一个执行节点可以包含大量的高速缓存资源和最少的计算资源,使得该执行节点对于需要缓存大量数据的任务有用。又一个执行节点可以包含提供更快的输入输出操作的高速缓存资源,这对于需要快速扫描大量数据的任务有用。在一些实施例中,与特定执行节点相关联的高速缓存资源和计算资源是在创建执行节点时基于执行节点要执行的预期任务来确定的。
另外,与特定执行节点相关联的高速缓存资源和计算资源可以基于由执行节点执行的任务的变化而随着时间而变化。例如,如果由执行节点执行的任务变得更加处理器密集,则执行节点可以被分配更多的处理资源。类似地,如果由执行节点执行的任务需要更大的高速缓存容量,则执行节点可以被分配更多的高速缓存资源。
尽管虚拟仓库1、2和n与同一执行平台110相关联,但是虚拟仓库可以使用多个地理位置处的多个计算系统来实现。例如,虚拟仓库1可以由位于第一地理位置的计算系统实现,而虚拟仓库2和n由位于第二地理位置的另一计算系统实现。在一些实施例中,这些不同的计算系统是由一个或更多个不同实体维护的基于云的计算系统。
另外,每个虚拟仓库在图3中被示为具有多个执行节点。与每个虚拟仓库相关联的多个执行节点可以使用多个地理位置处的多个计算系统来实现。例如,虚拟仓库1的实例在一个地理位置处的一个计算平台上实现执行节点302-1和302-2,并且在另一个地理位置处的不同计算平台上实现执行节点302-n。选择特定计算系统来实现执行节点可以取决于各种因素,如特定执行节点所需的资源水平(例如,处理资源要求和高速缓存要求)、特定计算系统处可用的资源、地理位置内或地理位置之间的网络的通信能力、以及哪些计算系统已经在实现虚拟仓库中的其他执行节点。
执行平台110也是容错的(fault tolerant)。例如,如果一个虚拟仓库出现故障,该虚拟仓库会被不同地理位置处的不同虚拟仓库快速替换。
特定的执行平台110可以包括任意数量的虚拟仓库。另外,特定执行平台中的虚拟仓库数量是动态的,使得当需要附加的处理和/或缓存资源时创建新的虚拟仓库。类似地,当与虚拟仓库相关联的资源不再需要时,可以删除现有的虚拟仓库。
在一些实施例中,虚拟仓库可以对存储平台104中的相同数据进行操作,但是每个虚拟仓库具有其自己的具有独立处理和缓存资源的执行节点。这种配置允许独立处理不同虚拟仓库上的请求,并且请求之间没有干扰。这种独立处理与动态添加和移除虚拟仓库的能力相结合,支持为新用户添加新的处理能力,而不会影响现有用户所观察到的性能。
图4是示出根据一些示例实施例的生成过滤器400的概念图,过滤器400形成由基于网络的数据仓库系统102基于源表402生成的修剪索引的一部分。如图所示,源表402被组织成多个微分区,并且每个微分区包括存储值的多个列。
在生成修剪索引时,计算服务管理器108为源表402的每个微分区生成一个过滤器,其示例在图4中被示为分块布隆过滤器400。分块布隆过滤器400包括多个布隆过滤器,并对相应微分区的每一列中的不同值的存在进行编码。当接收到包括等式谓词的查询时,基于网络的数据仓库系统102探测修剪索引以识别仅包括源表402的微分区子集的缩减的微分区扫描集,而不是扫描整个源表402来评估等式谓词。
如图所示,分块布隆过滤器400被分解成N个布隆过滤器,作为修剪索引的单个列存储以利用列扫描。在为源表402的特定微分区生成分块布隆过滤器400时,存储的值被转换成布隆过滤器中的位(bit)位置。例如,可以从微分区的每一列中存储的值生成散列值集合,并且该散列值集合可以用于设置布隆过滤器中的位。
微分区中所有列上的不同值的数量由微分区的最大大小限制。例如,在最坏的情况下,对于16MB的分区,所有列的不同值的数量总和最多是400万(16MB/4字节)。相应地,为了使修剪索引的访问尽可能高效,每个布隆过滤器400被分割成散列值域上的固定数量的块(例如,基于每个分区的不同值的数量),并且每个布隆过滤器400被进一步分解成固定数量的M位(例如,64位)值。分块布隆过滤器400的每一行被编码并存储为修剪索引中的单行。每个布隆过滤器400在修剪索引中被表示为由存储的列值的散列值索引的二维数组。
图5示出了根据本公开一些实施例的示例修剪索引500的一部分。修剪索引500被组织成多个行和列。修剪索引500的列包括分区号502、提供散列值域的编码的切片号504、概要类型506、散列号508、以及被分解成N个数字列的分块布隆过滤器510(例如,分块布隆过滤器400),分块布隆过滤器510中的每一列表示一个布隆过滤器。
在每一行内,微分区号或其他标识符被包括在分区号502中,切片号被包括在切片号504列中,概要类型的指示符被存储在概要类型506列中,并且对应于用于构建布隆过滤器的散列函数数量的数量被存储在散列号508列中。切片号列中的每个切片号504包括级别和块号的组合。级别指示布隆过滤器510的切片数量,而块号指示切片在具体布隆过滤器510中(例如,在布隆过滤器列中)的位置。散列函数的数量可以被调整以控制修剪索引500的假阳性率(false positive rate)。
就访问修剪索引的计算资源而言,成本主要受索引大小的限制,因此最小化修剪索引的总大小是有益的。为此,计算服务管理器108可以减少每个微分区的计算的切片数量。修剪索引的第一级分区被执行以表示散列值的域。在一个极端,布隆过滤器可以覆盖散列值的完整域(其中,布隆过滤器包括单个切片),而在另一个极端,布隆过滤器可以被划分成任意最大数量的切片(例如,4096个)。这个决定由源表中不同值的数量参数化,因为修剪索引的单个切片只能表示有限数量的不同值。
不同值的数量会显著影响聚类的成本,因为它控制着为给定微分区生成的行数。例如,具有少量不同值(例如,3个)的微分区将具有单个切片,而具有大量不同值(例如,100万个)的微分区可以具有最大数量的切片。通常,不同值的最大数量决定了要编码的切片的最大数量。相应地,在一些实施例中,计算服务管理器108将散列值的第一部分(例如,16个较高位)用于该级别,将散列值的第二部分(例如,16个较低位)用于寻址。
为此,修剪索引500内的块被组织成对值域的分解级别进行编码的层次结构。作为前述的示例,图6示出了修剪索引的单个布隆过滤器600。在图6所示的示例中,布隆过滤器600是2048个字节,可以表示64个不同的值,假阳性率是1/10000000。如果源表的对应微分区包含多于64个不同的值,则一旦布隆过滤器的密度大于1/2(例如,设置的位比未设置的位多),假阳性率就会恶化。为了解决这个问题,在一些实施例中,计算服务管理器108可以构建两个布隆过滤器(布隆过滤器602和604),每半个域一个布隆过滤器。
布隆过滤器602和604中的每一个将由修剪索引中的两个行来表示,由它们的级别和切片号来识别。与一些实施例一致,特定值及其对应的散列值映射到源表的所有微分区上的块中的单个块。不管级别如何,一个位编码域的一个固定子集。
每个切片号包括级别号和块号的组合。在一些实施例中,级别和块号可以表示为两个不同的列,而在其他实施例中,在聚类中使用线性化处理来将这些值组合在一起以形成切片号。
在一些实施例中,每个布隆过滤器的要计算的散列函数的数量可以变化以提高性能。这种优化可以降低构建修剪索引的CPU成本,同时保持非常大的表的目标假阳性率。相应地,在一些实施例中,用户可以指定目标假阳性率,并且计算服务管理器108可以基于目标假阳性率来确定每个布隆过滤器的要计算的散列函数的数量以及级别。
图7是示出根据一些实施例的关于修剪索引的创建的进一步细节的概念图。过滤器(例如,分块布隆过滤器)的创建由计算服务管理器108内专门的运算符执行,该运算符计算修剪索引的行集合。该运算符获取源表的特定微分区的所有列,并填充该微分区的过滤器。
如果源表中不同值的总数未知,则计算服务管理器108将最大数量的级别分配给修剪索引,填充每个过滤器,然后应用联合阶段(consolidation phase)来将不同的过滤器合并到修剪索引的最终表示中。被分配来计算每个微分区的该信息的存储器是恒定的。在图7所示的示例中,被分配用于计算该信息的存储器是64位无符号整数的二维数组。第一维度由级别(级别的最大数量)索引,第二维度由布隆过滤器的数量(例如,32个)索引。由于每个分区由单个线程处理,所以总存储器受线程数量(例如,8个)和级别的最大级别限制。
与一些实施例一致,以下伪代码片段表示可由计算服务管理器108在生成修剪索引时执行的示例算法。
●如果其是新分区:
○合并所有过滤器
●对于每一列:
○为该列的每个值计算32位散列值
○使用16个高位计算级别L,L=H>>16
○计算位置P=H&(32-1)处的过滤器
○如果布隆过滤器不包含该值,
■不同值的数量递增
如图7所示,在每个分区边界,计算服务管理器108基于目标布隆过滤器密度来组合块。例如,计算服务管理器108可以组合块,使得布隆过滤器密度不超过一半。由于散列值的域是统一的,所以这可以基于上面计算的不同值的观察数量来增量地或全局地完成。
如果不同值的数量是已知的,则计算服务管理器108通过将不同值的最大数量除以每个级别的不同值的数量来确定修剪索引的级别数量。为了组合两个级别,计算服务管理器108对表示过滤器的所有整数执行逻辑“或(OR)”。
出于性能原因,过滤器函数(创建和检查)组合了两个散列函数(例如,两个32位散列函数)。散列函数计算和过滤器推导在执行平台110和计算服务管理器108上都需要相同,以允许在计算服务管理器108中和在执行平台110的扫描集初始化中进行修剪。
图8是示出根据一些实施例的基于源表的变化来维护修剪索引的概念图。如图所示,在800,对源表做出了变化(例如,添加了一个或更多个行或列)。在802,源表的变化触发为源表的每个变化的微分区或新的微分区在修剪索引中生成附加行。在804,以规则的间隔,修剪索引中新产生的行在切片号上被重新聚类。
计算服务管理器108使用确定性选择算法作为使修剪索引聚类的一部分。对源表中每个微分区的处理基于源微分区中不同值的数量来创建有限(且基本恒定)数量的行。通过构建,这些行被已知是唯一的,并且索引域对于该分区是非重叠的,并且与已经聚类的索引行完全重叠。为了最小化聚类的成本,计算服务管理器108延迟行的重新聚类,直到产生阈值数量的行来创建恒定的分区。
尽管修剪索引在一些实施例中被描述为具体使用分块布隆过滤器来实现,但是应当理解,修剪索引不限于分块布隆过滤器,并且在其他实施例中,修剪索引可以使用其他过滤器来实现,如布隆过滤器、散列过滤器或布谷鸟过滤器。
图9-13是示出根据本公开的一些实施例的基于网络的数据仓库系统102在执行方法900时的操作的流程图,方法900用于在处理数据库查询时生成和使用修剪索引。方法900可以体现为由一个或更多个硬件组件(例如,一个或更多个处理器)执行的计算机可读指令,使得方法900的操作可以由基于网络的数据仓库系统102的组件来执行。相应地,方法900在下面通过参考其示例来描述。然而,应当理解,方法900可以部署在各种其他硬件配置上,并且不旨在限于部署在基于网络的数据仓库系统102内。
根据实施例,方法900的操作可以以不同的方式重复,或者涉及未示出的中间操作。虽然方法900的操作可以以特定顺序来描绘和描述,但是执行操作的顺序可以在实施例之间变化,包括并行执行特定操作或者在单独的进程中执行操作集合。例如,尽管修剪索引的使用和生成作为方法900的一部分被一起描述和示出,但是应当理解,根据一些实施例,修剪索引的使用和生成可以作为单独的进程来执行。
在操作905,计算服务管理器108访问被组织成多个微分区的源表。源表包括被组织成行和列的多个单元,并且数据值被包括在每个单元中。
在操作910,计算服务管理器108基于源表生成修剪索引。修剪索引包括过滤器集合(例如,分块布隆过滤器集合),这些过滤器对源表的每个微分区的每一列中的不同值进行索引。为源表中的每个微分区生成一个过滤器,并且每个过滤器被分解成N个数值列(例如,32个数值列),以实现整数比较。与一些实施例一致,修剪索引包括多个行,并且每一行包括微分区标识符、切片号和布隆过滤器集合。
在操作915,计算服务管理器108基于切片号对修剪索引的行进行聚类。在基于切片号对行进行聚类时,计算服务管理器108将具有相同切片号的行分组在一起,并基于相应的切片号按顺序对行组进行排序。
在操作920,计算服务管理器108接收针对源表的查询。查询可以包含等式谓词。
在操作925,计算服务管理器108基于针对源表的查询来访问与源表相关联的修剪索引。例如,数据库114可以存储描述表和修剪索引之间的关联的信息。
在操作930,计算服务管理器108结合执行平台110工作,以使用修剪索引来处理查询。在处理查询时,计算服务管理器108和/或执行平台110可以使用修剪索引来修剪要进行扫描以发现匹配查询的数据(例如,满足等式谓词的数据值)的搜索表的微分区集合。也就是说,修剪索引可用于识别仅包括源表的微分区子集的缩减的扫描集。计算服务管理器108使用修剪索引来识别潜在地存储了满足等式谓词的数据的一个或更多个微分区。在处理查询时,执行平台110扫描缩减的扫描集的微分区子集,同时放弃对剩余微分区的扫描。
如图10中所示,在一些实施例中,方法900还可以包括操作1005和1010。与这些实施例一致,操作1005和1010可以作为操作910的一部分来执行,在操作910中,计算服务管理器108生成修剪索引。仅为了便于解释,下面参考源表的单个微分区来描述操作1005和1010。然而,应当理解,在生成修剪索引时,计算服务管理器108为源表的每个微分区生成一个过滤器,因此,可以为源表的每个微分区执行操作1005和1010。
在操作1005,计算服务管理器108为源表的一个微分区生成一个过滤器。例如,计算服务管理器108可以为该微分区生成分块布隆过滤器,该分块布隆过滤器索引源表的该微分区的每一列中的不同值。下面参考图11讨论关于微分区的过滤器生成的进一步的细节。
在操作1010(其在一些实施例中是可选的),计算服务管理器108合并过滤器的一行或更多行。计算服务管理器122可以通过执行逻辑或操作来合并行。计算服务管理器108可以合并过滤器的行,直到达到密度阈值,其中密度是指一行中1和0的比率。密度阈值可以基于目标假阳性率。
如图11中所示,在一些实施例中,操作1005可以包括操作1105、1110、1115和1120。在操作1105,计算服务管理器108计算对应于源表的微分区的过滤器的级别数量。如果源表的微分区中不同值的数量未知,则计算服务管理器108基于可能不同值的最大数量来确定级别的数量。如果源表的微分区中不同值的数量是已知的,则计算服务管理器108基于不同值的数量来确定级别的数量。
在操作1110,计算服务管理器108基于包括在源表的微分区的列中的给定数据值来识别过滤器内的目标单元。为了识别目标单元,计算服务管理器108识别过滤器中的切片和过滤器列。计算服务管理器108基于数据值和修剪索引中的级别数量来识别切片。计算服务管理器108基于数据值和分块布隆过滤器中过滤器列的数量来识别过滤器列。
在操作1115,计算服务管理器108基于来自源表的数据值生成散列值。在生成散列值时,计算服务管理器108可以将一个或更多个散列函数应用于该数据值。在操作1120,计算服务管理器108使用散列值填充分块布隆过滤器中的目标单元。
为了便于解释,上面参考源表的单个微分区中的单个数据值描述了操作1110、1115和1120。然而,应当理解,在为源表的微分区生成过滤器时,对源表中微分区的每一列的每个数据值重复操作1110、1115和1120。
如图12所示,在一些实施例中,方法900可以包括操作1205和1210。与这些实施例一致,操作1205和1210可以作为操作925的一部分来执行,在操作925中,计算服务管理器108结合执行平台110工作,以使用修剪索引来处理查询。
在操作1205,计算服务管理器108识别包括源表的微分区子集的缩减的扫描集,以扫描满足查询中的等式谓词的数据。源表的微分区子集包括基于修剪索引中的分块布隆过滤器集合被确定为潜在地包括匹配数据的微分区。计算服务管理器108可以通过基于等式谓词生成散列值并识别修剪索引中匹配散列值的一个或更多个值来识别微分区的子集。计算服务管理器108基于修剪索引中匹配散列值的一个或更多个值来识别潜在地存储满足等式谓词的数据的一个或更多个微分区。也就是说,修剪索引中的一个值匹配散列值意味着匹配数据潜在地存储在这样的微分区中,该微分区可以基于与存储该值的修剪索引单元相对应的切片号和过滤器列来识别。
计算服务管理器108将微分区子集传送给执行平台110,并且执行平台110仅扫描缩减的扫描集中源表的微分区子集,以定位满足等式谓词的数据。以这种方式,执行平台110仅搜索其中潜在地存储了匹配数据的微分区,同时放弃花费附加的时间和资源来对剩余的微分区也进行搜索,基于修剪索引,已知该剩余的微分区没有存储匹配数据。
与一些实施例一致,计算服务管理器108可以替代地识别和编译不匹配的微分区集合,而不是用源表的微分区来提供缩减的扫描集以扫描数据。计算服务管理器108或执行平台110可以基于不匹配的微分区集合从扫描集移除微分区。
如图13中所示,在一些实施例中,方法900可以包括操作1305、1310和1315。尽管操作1305、1310和1315被示为在操作925之后执行,但是应当理解,操作1305、1310和1315可以在计算服务管理器108生成修剪索引的操作910之后的任何时间执行。
在操作1305,计算服务管理器108检测源表的变化。源表的变化可以包括向源表添加和/或从源表删除一行或更多行。
在操作1310,计算服务管理器108基于源表的变化在与源表相关联的修剪索引中生成一个或更多个附加行。计算服务管理器108以在修剪索引的初始创建期间生成修剪索引的行的相同方式生成附加行。
在操作1315,计算服务管理器108基于切片号重新聚类修剪索引。与一些实施例一致,计算服务管理器108可以等待直到阈值数量的附加行已经被添加到修剪索引才重聚类修剪索引。
根据示例实施例,图14以计算机系统的形式示出了机器1400的示意图表示,用于使机器1400执行本文所讨论方法中的任何一个或更多个的指令集合可以在该计算机系统内执行。具体地,图14以计算机系统的示例形式示出了机器1400的示意图表示,用于使机器1400执行本文所讨论方法中的任何一个或更多个的指令1416(例如,软件、程序、应用、小程序、小应用(app)或其他可执行代码)在该计算机系统内执行。例如,指令1416可以使机器1400执行方法900中的任何一个或更多个的任何一个或更多个操作。作为另一个示例,指令1416可以使机器1400实现图4-8中的任何一个或更多个中所示的部分功能。以这种方式,指令1416将通用的、未编程的机器转换成特定的机器1400(例如,计算服务管理器108、执行平台110和数据存储设备206),该特定的机器1400被具体配置成以本文描述的方式执行所描述和示出的功能中的任何一个。
在替代实施例中,机器1400作为独立的设备操作或者可以耦合(例如,联网)到其它机器。在联网部署中,机器1400可以在服务器-客户端网络环境中作为服务器机器或客户端机器来操作,或者作为对等(或分布式)网络环境中的对等机器来操作。机器1400可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本(netbook)、智能电话、移动设备、网络路由器、网络交换机、网络桥接器或能够顺序地或以其它方式执行指令1416的任何机器,指令1416指定由机器1400采取的动作(action)。此外,虽然仅示出了单个机器1400,但术语“机器”还应被理解为包括单独或联合地执行指令1416以实施本文所讨论方法中的任何一个或更多个的机器1400的集合。
机器1400包括处理器1410、存储器1430和输入/输出(I/O)组件1450,它们被配置成例如经由总线1402彼此通信。在示例实施例中,处理器1410(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合)可以包括例如可以执行指令1416的处理器1412和处理器1414。术语“处理器”旨在包括多核处理器1410,多核处理器1410可以包括可以同时执行指令1416的两个或更多个独立处理器(有时称为“核”)。尽管图14示出了多个处理器1410,但是机器1400可以包括具有单核的单个处理器、具有多核的单个处理器(例如,多核处理器)、具有单核的多个处理器、具有多核的多个处理器或者它们的任意组合。
存储器1430可以包括主存储器1432、静态存储器1434和存储单元1436,它们都可以由处理器1410例如经由总线1402访问。主存储器1432、静态存储器1434和存储单元1436存储指令1416,指令1416体现本文描述的方法或功能中任何一种或更多种。在由机器1400执行期间,指令1416也可以全部或部分地驻留在主存储器1432内、静态存储器1434内、存储单元1436内、至少一个处理器1410内(例如,在处理器的高速缓冲存储器内)或其任何合适的组合内。
I/O组件1450包括用于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量值等的组件。包含在特定机器1400中的具体的I/O组件1450将取决于机器的类型。例如,诸如移动电话的便携式机器将可能包括触摸输入设备或其他这样的输入机制,而无头服务器机器可能不包括这样的触摸输入设备。将认识到的是,I/O组件1450可以包括图14中未示出的许多其他组件。I/O组件1450根据功能进行分组仅仅是为了简化下面的讨论,并且该分组决不是限制性的。在各种示例实施例中,I/O组件1450可以包括输出组件1452和输入组件1454。输出组件1452可以包括视觉组件(例如,诸如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、声学组件(例如,扬声器)、其他信号发生器等。输入组件1454可以包括字母数字输入组件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入组件)、基于点的输入组件(例如,鼠标、触控板、轨迹球、操纵杆、运动传感器或另一指向仪器)、触觉输入组件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触觉输入组件)、音频输入组件(例如,麦克风)等。
通信可以使用多种技术来实现。I/O组件1450可以包括通信组件1464,通信组件1464可操作来分别经由耦合1482和耦合1472将机器1400耦合到网络1480或设备1470。例如,通信组件1464可以包括网络接口组件或与网络1480接口的另一合适的设备。在进一步的示例中,通信组件1464可以包括有线通信组件、无线通信组件、蜂窝通信组件和经由其他模态提供通信的其他通信组件。设备1470可以是另一台机器或多种外围设备中的任一种(例如,经由通用串行总线(USB)耦合的外围设备)。例如,如上所述,机器1400可以对应于计算服务管理器108、执行平台110和设备1470中的任何一个,可以包括数据存储设备206或本文描述的与基于网络的数据仓库系统102或存储平台104通信的任何其他计算设备。
可执行指令和机器存储介质
各种存储器(例如,1430、1432、1434和/或处理器1410和/或存储单元1436的存储器)可以存储指令1416和数据结构(例如,软件)的一个或更多个集合,这些指令1416和数据结构体现本文所描述方法或功能中的任何一种或更多种或被本文所描述方法或功能中的任何一种或更多种所利用。当由处理器1410执行时,这些指令1416促使各种操作来实现所公开的实施例。
如本文所使用的,术语“机器存储介质”、“设备存储介质”和“计算机存储介质”意思相同,并且可以在本公开中互换使用。这些术语指的是存储可执行指令和/或数据的单个或多个存储设备和/或介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。相应地,这些术语应当被认为包括但不限于包括处理器内部或外部的存储器的固态存储器以及光和磁介质。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括非易失性存储器,非易失性存储器包括例如半导体存储器设备,诸如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、现场可编程门阵列(FPGA)和闪存设备;磁盘,如内部硬盘和可移除磁盘;磁光盘;以及CD-ROM和DVD-ROM光盘。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”具体排除了载波、调制数据信号和其他这样的介质(其中的至少一些包含在下面讨论的术语“信号介质”中)。
传输介质
在各种示例实施例中,网络980的一个或更多个部分可以是自组织网络(ad hocnetwork)、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网络(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络、或两种或更多种这样的网络的组合。例如,网络1480或网络1480的一部分可以包括无线或蜂窝网络,并且耦合1482可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或另一种类型的蜂窝或无线耦合。在该示例中,耦合1482可以实现多种类型的数据传输技术中的任何一种,如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、增强型数据速率GSM演进(EDGE)技术、包括3G、第四代无线(4G)网络、通用移动电信系统(UMTS)、高速分组接入(HSPA)、微波接入全球互操作性(WiMAX)、长期演进(LTE)标准的第三代合作伙伴计划(3GPP)、由各种标准设置组织定义的其他技术、其他长程协议、或其他数据传输技术。
指令1416可以使用传输介质经由网络接口设备(例如,包括在通信组件1464中的网络接口组件)并利用多种众所周知的传输协议(例如,超文本传输协议(HTTP))中的任何一种在网络1480上传输或接收。类似地,指令1416可以使用传输介质经由耦合1472(例如,对等耦合)传输或接收到设备1470。术语“传输介质”和“信号介质”意思相同,在本公开中可以互换使用。术语“传输介质”和“信号介质”应被理解为包括能够存储、编码或携带由机器1400执行的指令1416的任何无形介质,并且包括数字或模拟通信信号或便于这种软件的通信的其他无形介质。因此,术语“传输介质”和“信号介质”应被理解为包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指这样的信号:其具有以对信号中的信息进行编码的这样的方式设置或更改的其特性中的一个或更多个特性。
计算机可读介质
术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意思相同,并且在本公开中可以互换使用。这些术语被定义为包括机器存储介质和传输介质。因此,这些术语包括存储设备/介质和载波/调制数据信号。
本文所述的示例方法的各种操作可以至少部分地由(例如,通过软件)临时配置或永久地配置为执行相关操作的一个或更多个处理器来执行。类似地,本文描述的方法可以至少部分地是处理器实现的。例如,方法900的至少一些操作可以由一个或更多个处理器执行。某些操作的执行可以分布在一个或更多个处理器中,不仅驻留在单个机器内,而且部署在多个机器上。在一些示例实施例中,一个或更多个处理器可以位于单个位置(例如,在家庭环境、办公室环境或服务器场内)中,而在其他实施例中,处理器可以分布在多个位置上。
尽管参考具体的示例实施例描述了本公开的实施例,但显然地,在不背离本发明主题的更广泛范围的情况下,可以对这些实施例做出各种修改和变化。相应地,说明书和附图被认为是说明性的而不是限制性的。形成其一部分的附图通过说明方式并且不以限制方式显示了其中可以实施主题的具体实施例。所示出的实施例以充分细节描述,以便使本领域那些技术人员能够实施本文披露的教导。可以使用其他实施例和从其中衍生的实施例,使得可以作出结构性或逻辑性替换和变化而不偏离本公开的范围。因此不以限制性意义理解这一详细说明,并且各种实施例的范围仅由所附权利要求连同授权的此类权利要求的完整范围的等同物限定。
发明主题的此类实施例可以在本文中单独地和/或共同地由术语“发明”提到,该术语仅出于便利目的并且不意在自愿将本申请的范围限于任何单一发明或发明构思,如果实际上披露的多于一种的话。因此,虽然已经在此说明和描述了特定实施例,但是应当理解,可以用经计算以实现相同目的的任何布置替换用于所示的具体实施例。本公开旨在覆盖各种实施例的任何和所有修改或变型。在阅读以上描述后,本领域的技术人员将明白以上实施例的组合以及本文未具体描述的其他实施例。
在本文档中,术语“一个(a)”或“一个(an)”,如专利文档中常见的那样,用于包括一个或多于一个,与“至少一个”或“一个或更多个”的任何其他实例或用法无关。。在本文档中,术语“或”用于指非排他性的或,因此“A或B”包括“A但不包括B”、“B但不包括A”和“A和B”,除非另有说明。在所附权利要求中,术语“包括(including)”和“其中(inwhich)”被用作相应术语“包含(comprising)”和“其中(wherein)”的纯英语等效词。此外,在所附权利要求中,术语“包括”和“包含”是开放式的;也就是说,包括除了权利要求中这样的术语之后列出的那些元素之外的元素的系统、设备、物品或过程仍然被认为落入该权利要求的范围内。
示例
示例1是基于网络的数据仓库系统,包括:至少一个硬件处理器;以及存储指令的存储器,所述指令使得所述至少一个硬件处理器执行操作,所述操作包括:访问被组织成微分区集合的源表;基于所述源表生成修剪索引,所述修剪索引包括对所述源表的每一列中的不同值进行索引的过滤器集合;接收针对所述源表的查询;以及使用所述修剪索引处理所述查询,所述查询的处理包括修剪所述源表的微分区集合以扫描匹配所述查询的数据,所述微分区集合的修剪包括使用所述修剪索引识别微分区子集以扫描匹配所述查询的数据。
在示例2中,示例1的主题可选地还包括:为源表的每个微分区生成过滤器。
在示例3中,示例1和2中任一个的主题可选地还包括通过执行操作为第一微分区生成第一过滤器,该操作包括:对于给定的数据值,基于该数据值识别第一过滤器内的单元;基于该数据值生成散列值;以及使用该散列值填充第一过滤器中的该单元。
在示例4中,示例1-3中任一个的主题可选地还包括:计算第一过滤器中的级别数量;以及基于数据值和第一过滤器中的级别数量来识别第一过滤器中的切片;以及基于数据值和第一布隆分块过滤器中过滤器列的预定数量来识别过滤器列。
在示例5中,示例1-4中任一个的主题可选地还包括:基于目标假阳性率合并第一过滤器的一行或更多行。
示例6包括示例1-5中任一个的主题,过滤器集合中的过滤器可选地包括布隆过滤器集合;并且修剪索引可选地包括多个列,该多个列包括微分区标识符列、切片号列和该布隆过滤器集合。
在示例7中,示例1-6中任一个的主题可选地还包括:在切片号列上对多个行进行聚类。
在示例8中,示例1-7中任一个的过滤器可选地还包括多个布隆过滤器,过滤器中布隆过滤器的数量基于假阳性率约束。
在示例9中,示例1-8中任一个的主题可选地还包括:基于包括在查询中的等式谓词生成散列值;识别修剪索引中匹配该散列值的一个或更多个值;以及基于修剪索引中匹配该散列值的一个或更多个值来识别潜在地满足该等式谓词的一个或更多个微分区。
在示例10中,示例1-9中任一个的主题可选地还包括:检测源表的变化;基于源表的变化为修剪索引生成一个或更多个附加行;以及基于切片号重新聚类修剪索引。
在示例11中,示例1-10中任一个的主题可选地还包括扫描源表的微分区子集以识别匹配查询的数据。
在示例12中,示例1-11中任一个的主题可选地还包括识别其中潜在地存储了匹配所述查询的数据的一个或更多个微分区。
示例13是一种方法,包括:访问被组织成微分区集合的源表;由计算机的一个或更多个硬件处理器基于所述源表生成修剪索引,所述修剪索引包括对所述源表的每一列中的不同值进行索引的过滤器集合;接收针对所述源表的查询;以及使用所述修剪索引处理所述查询,所述查询的处理包括修剪所述源表的微分区集合以扫描匹配所述查询的数据,该微分区集合的修剪包括使用所述修剪索引识别微分区子集以扫描匹配所述查询的数据。
在示例14中,示例13的主题可选地还包括:为源表的每个微分区生成过滤器。
在示例15中,示例13-14中任一个的主题可选地还包括通过执行操作为第一微分区生成第一过滤器,该操作包括:对于给定的数据值,基于该数据值识别第一过滤器内的单元;基于该数据值生成散列值;以及使用该散列值填充第一过滤器中的该单元。
在示例16中,示例13-15中任一个的主题可选地还包括:计算第一过滤器中的级别数量;以及基于数据值和第一过滤器中的级别数量来识别第一过滤器中的切片;以及基于数据值和第一布隆分块过滤器中过滤器列的预定数量来识别过滤器列。
在示例17中,示例13-16中任一个的主题可选地还包括:计算修剪索引中的级别数量;基于数据值和修剪索引中的级别数量识别第一过滤器中的级别;以及基于数据值和第一布隆分块过滤器中过滤器列的预定数量来识别过滤器列。
在示例18中,示例13-17中任一个的主题可选地还包括:基于目标假阳性率合并第一过滤器的一行或更多行。
示例19包括示例13-18中任一个的主题,其中过滤器集合中的过滤器可选地包括布隆过滤器集合;修剪索引可选地还包括多个列,该多个列包括微分区标识符列、切片号列和该布隆过滤器集合;并且修剪索引可选地在切片号列上进行聚类。
在示例20中,示例12-19中任一个的主题可选地还包括:基于包括在查询中的等式谓词生成散列值;识别修剪索引中匹配该散列值的一个或更多个值;以及基于修剪索引中匹配该散列值的一个或更多个值来识别潜在地满足该等式谓词的一个或更多个微分区。
在示例21中,示例12-20中任一个的主题可选地还包括:检测源表的变化;基于源表的变化为修剪索引生成一个或更多个附加行;以及基于切片号重新聚类修剪索引。
在示例22中,示例12-21中任一个的主题可选地还包括扫描源表的微分区子集以识别匹配查询的数据。
在示例23中,示例12-22中任一个的主题可选地还包括识别其中潜在地存储了匹配所述查询的数据的一个或更多个微分区。
示例24是一种计算机存储介质,包括指令,所述指令当由机器的一个或更多个处理器执行时,将所述机器配置成执行操作,所述操作包括:访问被组织成微分区集合的源表;基于所述源表生成修剪索引,所述修剪索引包括对所述源表的每一列中的不同值进行索引的过滤器集合;接收针对所述源表的查询;以及使用所述修剪索引处理所述查询,所述查询的处理包括修剪所述源表的微分区集合以扫描匹配所述查询的数据,该微分区集合的修剪包括使用所述修剪索引识别微分区子集以扫描匹配所述查询的数据。
在示例25中,示例24的主题可选地还包括:为源表的每个微分区生成过滤器。
在示例26中,示例24-25中任一个的主题可选地还包括通过执行操作为第一微分区生成第一过滤器,该操作包括:对于给定的数据值,基于该数据值识别第一过滤器内的单元;基于该数据值生成散列值;以及使用该散列值填充第一过滤器中的该单元。
在示例27中,示例24-26中任一个的主题可选地还包括:计算第一过滤器中的级别数量;基于数据值和第一过滤器中的级别数量来识别第一过滤器中的切片;以及基于数据值和第一过滤器中过滤器列的数量来识别过滤器列。
示例28包括示例24-27中任一个的主题,其中过滤器集合中的过滤器可选地包括布隆过滤器集合;修剪索引可选地还包括多个列,该多个列包括微分区标识符列、切片号列和该布隆过滤器集合;并且修剪索引可选地在切片号列上进行聚类。
在示例29中,示例24-28中任一个的主题可选地还包括:基于包括在查询中的等式谓词生成散列值;识别修剪索引中匹配该散列值的一个或更多个值;以及基于修剪索引中匹配该散列值的一个或更多个值来识别潜在地满足该等式谓词的一个或更多个微分区。
在示例30中,示例24-29中任一个的主题可选地还包括:检测源表的变化;基于源表的变化为修剪索引生成一个或更多个附加行;以及基于切片号重新聚类修剪索引。
Claims (30)
1.一种基于网络的数据仓库系统,包括:
至少一个硬件处理器;以及
存储器,所述存储器存储使所述至少一个硬件处理器执行包括以下项的操作的指令:
访问被组织成微分区集合的源表;
基于所述源表生成修剪索引,所述修剪索引包括对所述源表的每一列中的不同值进行索引的过滤器集合;
接收针对所述源表的查询;以及
使用所述修剪索引处理所述查询,所述查询的处理包括修剪所述源表的微分区集合以扫描匹配所述查询的数据,所述微分区集合的修剪包括使用所述修剪索引识别微分区子集以扫描匹配所述查询的数据。
2.根据权利要求1所述的基于网络的数据仓库系统,其中,生成所述修剪索引包括:
为所述源表中的微分区集合中的每个微分区生成过滤器。
3.根据权利要求2所述的基于网络的数据仓库系统,其中,为每个微分区生成过滤器包括通过执行包括以下项的操作为第一微分区生成第一过滤器:
针对给定的数据值,
基于所述数据值识别所述第一过滤器内的单元;
基于所述数据值生成散列值;以及
使用所述散列值填充所述第一过滤器中的所述单元。
4.根据权利要求3所述的基于网络的数据仓库系统,还包括:
计算所述第一过滤器中的级别数量;
其中,识别所述单元包括:
基于所述数据值和所述第一过滤器中的级别数量来识别所述第一过滤器中的切片;以及
基于所述数据值和所述第一过滤器中的过滤器列数来识别过滤器列。
5.根据权利要求3所述的基于网络的数据仓库系统,其中,生成所述第一过滤器还包括:
基于目标假阳性率合并所述第一过滤器的一行或更多行。
6.根据权利要求1所述的基于网络的数据仓库系统,其中:
所述过滤器集合中的过滤器包括布隆过滤器集合;并且
所述修剪索引还包括多个列,所述多个列包括微分区标识符列、切片号列和所述布隆过滤器集合。
7.根据权利要求6所述的基于网络的数据仓库系统,还包括:
基于所述切片号列对所述修剪索引进行聚类。
8.根据权利要求1所述的基于网络的数据仓库系统,其中:
所述过滤器集合中的每个过滤器包括多个布隆过滤器,每个分块布隆过滤器中布隆过滤器的数量基于假阳性率约束。
9.根据权利要求1所述的基于网络的数据仓库系统,其中,使用所述修剪索引处理所述查询包括:
基于包括在所述查询中的等式谓词生成散列值;
识别所述修剪索引中匹配所述散列值的一个或更多个值;以及
基于所述修剪索引中匹配所述散列值的所述一个或更多个值,识别潜在地满足所述等式谓词的一个或更多个微分区。
10.根据权利要求1所述的基于网络的数据仓库系统,其中,所述操作还包括:
检测所述源表的变化;
基于所述源表的变化为所述修剪索引生成一个或更多个附加行;以及
基于切片号重新聚类所述修剪索引。
11.根据权利要求1所述的基于网络的数据仓库系统,其中,所述操作还包括:
扫描所述源表的微分区子集以识别匹配所述查询的数据。
12.根据权利要求11所述的基于网络的数据仓库系统,其中,识别微分区子集以扫描匹配所述查询的数据包括识别其中潜在地存储了匹配所述查询的数据的一个或更多个微分区。
13.一种方法,包括:
访问被组织成微分区集合的源表;
由计算机的一个或更多个硬件处理器基于所述源表生成修剪索引,所述修剪索引包括对所述源表的每一列中的不同值进行索引的过滤器集合;
接收针对所述源表的查询;以及
使用所述修剪索引处理所述查询,所述查询的处理包括修剪所述源表的微分区集合以扫描匹配所述查询的数据,所述微分区集合的修剪包括使用所述修剪索引识别微分区子集以扫描匹配所述查询的数据。
14.根据权利要求13所述的方法,其中,生成所述修剪索引包括:
为所述源表的微分区集合中的每个微分区生成过滤器。
15.根据权利要求14所述的方法,其中,为每个微分区生成过滤器包括通过执行包括以下项的操作为第一微分区生成第一过滤器:
针对给定的数据值,
基于所述数据值识别所述第一过滤器内的单元;
基于所述数据值生成散列值;以及
使用所述散列值填充所述第一过滤器中的所述单元。
16.根据权利要求15所述的方法,其中,生成所述修剪索引包括:
计算所述第一过滤器中的级别数量;
其中,识别所述单元包括:
基于所述数据值和所述第一过滤器中的级别数量来识别所述第一过滤器中的切片;以及
基于所述数据值和所述第一过滤器中过滤器列的预定数量来识别过滤器列。
17.根据权利要求16所述的方法,其中,生成所述第一过滤器还包括:
基于目标假阳性率合并所述第一过滤器的一行或更多行。
18.根据权利要求13所述的方法,其中:
所述过滤器集合中的过滤器包括布隆过滤器集合;
所述修剪索引还包括多个列,所述多个列包括微分区标识符列、切片号列和所述布隆过滤器集合;并且
所述修剪索引在所述切片号列上进行聚类。
19.根据权利要求13所述的方法,其中,所述过滤器集合中的每个过滤器包括多个布隆过滤器,每个分块布隆过滤器中布隆过滤器的数量基于假阳性率约束。
20.根据权利要求13所述的方法,其中,使用所述修剪索引处理所述查询包括:
基于包括在所述查询中的等式谓词生成散列值;
识别所述修剪索引中匹配所述散列值的一个或更多个值;以及
基于所述修剪索引中匹配所述散列值的所述一个或更多个值,识别潜在地满足所述等式谓词的一个或更多个微分区。
21.根据权利要求13所述的方法,还包括:
检测所述源表的变化;
基于所述源表的变化为所述修剪索引生成一个或更多个附加行;以及
基于切片号重新聚类所述修剪索引。
22.根据权利要求13所述的方法,还包括:
扫描所述源表的微分区子集以识别匹配所述查询的数据。
23.根据权利要求22所述的方法,其中,识别微分区子集以扫描匹配所述查询的数据包括识别其中潜在地存储了匹配所述查询的数据的一个或更多个微分区。
24.一种计算机存储介质,包括指令,所述指令当由机器的一个或更多个处理器执行时,将所述机器配置成执行包括以下项的操作:
访问被组织成微分区集合的源表;
基于所述源表生成修剪索引,所述修剪索引包括对所述源表的每一列中的不同值进行索引的过滤器集合;
接收针对所述源表的查询;以及
使用所述修剪索引处理所述查询,所述查询的处理包括修剪所述源表的微分区集合以扫描匹配所述查询的数据,所述微分区集合的修剪包括使用所述修剪索引识别微分区子集以扫描匹配所述查询的数据。
25.根据权利要求24所述的计算机存储介质,其中,生成所述修剪索引包括:
为所述源表的微分区集合中的每个微分区生成过滤器。
26.根据权利要求25所述的计算机存储介质,其中,为每个微分区生成过滤器包括通过执行包括以下项的操作为第一微分区生成第一过滤器:
针对给定的数据值,
基于所述数据值识别所述第一过滤器内的单元;
基于所述数据值生成散列值;以及
使用所述散列值填充所述第一过滤器中的所述单元。
27.根据权利要求26所述的计算机存储介质,其中,生成所述修剪索引包括:
计算所述第一过滤器中的级别数量;
其中,识别所述单元包括:
基于所述数据值和所述第一过滤器中的级别数量来识别所述第一过滤器中的切片;以及
基于所述数据值和所述第一过滤器中的过滤器列数来识别过滤器列。
28.根据权利要求24所述的计算机存储介质,其中:
所述过滤器集合中的过滤器包括布隆过滤器集合;
所述修剪索引还包括多个列,所述多个列包括微分区标识符列、切片号列和所述布隆过滤器集合;并且
所述修剪索引在所述切片号列上进行聚类。
29.根据权利要求24所述的计算机存储介质,其中,使用所述修剪索引处理所述查询包括:
基于包括在所述查询中的等式谓词生成散列值;
识别所述修剪索引中匹配所述散列值的一个或更多个值;以及
基于所述修剪索引中匹配所述散列值的所述一个或更多个值,识别潜在地满足所述等式谓词的一个或更多个微分区。
30.根据权利要求24所述的计算机存储介质,还包括:
检测所述源表的变化;
基于所述源表的变化为所述修剪索引生成一个或更多个附加行;以及
基于切片号重新聚类所述修剪索引。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/727,315 | 2019-12-26 | ||
US16/727,315 US10769150B1 (en) | 2019-12-26 | 2019-12-26 | Pruning indexes to enhance database query processing |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113051351A true CN113051351A (zh) | 2021-06-29 |
Family
ID=72289900
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011561998.4A Pending CN113051351A (zh) | 2019-12-26 | 2020-12-25 | 修剪索引以增强数据库查询处理 |
Country Status (6)
Country | Link |
---|---|
US (5) | US10769150B1 (zh) |
EP (1) | EP3842957A1 (zh) |
KR (1) | KR102520110B1 (zh) |
CN (1) | CN113051351A (zh) |
DE (1) | DE202020005734U1 (zh) |
WO (1) | WO2021133433A1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11275738B2 (en) | 2019-12-26 | 2022-03-15 | Snowflake Inc. | Prefix N-gram indexing |
US11308089B2 (en) | 2019-12-26 | 2022-04-19 | Snowflake Inc. | Pruning index maintenance |
US11372860B2 (en) | 2019-12-26 | 2022-06-28 | Snowflake Inc. | Processing techniques for queries where predicate values are unknown until runtime |
US11494384B2 (en) | 2019-12-26 | 2022-11-08 | Snowflake Inc. | Processing queries on semi-structured data columns |
US11567939B2 (en) | 2019-12-26 | 2023-01-31 | Snowflake Inc. | Lazy reassembling of semi-structured data |
US11681708B2 (en) | 2019-12-26 | 2023-06-20 | Snowflake Inc. | Indexed regular expression search with N-grams |
US11880369B1 (en) | 2022-11-21 | 2024-01-23 | Snowflake Inc. | Pruning data based on state of top K operator |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11016975B1 (en) | 2019-12-26 | 2021-05-25 | Snowflake Inc. | Scan set pruning for pattern matching queries |
US11615095B2 (en) | 2020-10-30 | 2023-03-28 | Snowflake Inc. | Automatic pruning cutoff in a database system |
US20220318508A1 (en) * | 2021-03-30 | 2022-10-06 | Gsi Technology Inc. | N-gram based classification with associative processing unit |
CN115374329B (zh) * | 2022-10-25 | 2023-03-17 | 杭州比智科技有限公司 | 一种管理企业业务元数据和技术元数据的方法及系统 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070033354A1 (en) * | 2005-08-05 | 2007-02-08 | Michael Burrows | Large scale data storage in sparse tables |
US20110082855A1 (en) * | 2009-10-01 | 2011-04-07 | Al-Omari Awny K | Multi-dimensional access to data |
US20140095520A1 (en) * | 2012-09-28 | 2014-04-03 | Oracle International Corporation | Pruning disk blocks of a clustered table in a relational database management system |
US20150286681A1 (en) * | 2012-09-28 | 2015-10-08 | Oracle International Corporation | Techniques for partition pruning based on aggregated zone map information |
CN105408857A (zh) * | 2013-07-29 | 2016-03-16 | 亚马逊科技公司 | 通过针对选择性交织数据位生成用于关系数据库的多列索引 |
US20160350347A1 (en) * | 2015-05-29 | 2016-12-01 | Oracle International Corporation | Techniques for evaluating query predicates during in-memory table scans |
US20170116136A1 (en) * | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Reducing data i/o using in-memory data structures |
CN106663106A (zh) * | 2014-07-01 | 2017-05-10 | 微软技术许可有限责任公司 | 搜索建议的安全性修剪 |
US20170147637A1 (en) * | 2015-11-19 | 2017-05-25 | Sap Se | Data-driven union pruning in a database semantic layer |
Family Cites Families (138)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4956774A (en) | 1988-09-02 | 1990-09-11 | International Business Machines Corporation | Data base optimizer using most frequency values statistics |
US5864842A (en) | 1995-10-23 | 1999-01-26 | Ncr Corporation | Optimization of SQL queries using hash star join operations |
US6215910B1 (en) * | 1996-03-28 | 2001-04-10 | Microsoft Corporation | Table-based compression with embedded coding |
US6374232B1 (en) * | 1996-08-29 | 2002-04-16 | Oracle Corp. | Method and mechanism for retrieving values from a database |
US6618729B1 (en) | 2000-04-20 | 2003-09-09 | Ncr Corporation | Optimization of a star join operation using a bitmap index structure |
US6571233B2 (en) | 2000-12-06 | 2003-05-27 | International Business Machines Corporation | Optimization of SQL queries using filtering predicates |
US7499907B2 (en) | 2001-10-12 | 2009-03-03 | Teradata Us, Inc. | Index selection in a database system |
US7386561B1 (en) | 2002-02-06 | 2008-06-10 | Ncr Corp. | Partitioned joins of spatial objects in a database system |
US7171427B2 (en) * | 2002-04-26 | 2007-01-30 | Oracle International Corporation | Methods of navigating a cube that is implemented as a relational object |
US6957225B1 (en) * | 2002-05-07 | 2005-10-18 | Oracle International Corporation | Automatic discovery and use of column correlations in tables |
US7281013B2 (en) | 2002-06-03 | 2007-10-09 | Microsoft Corporation | Workload analysis tool for relational databases |
US7111025B2 (en) | 2003-04-30 | 2006-09-19 | International Business Machines Corporation | Information retrieval system and method using index ANDing for improving performance |
US7500111B2 (en) | 2003-05-30 | 2009-03-03 | International Business Machines Corporation | Querying encrypted data in a relational database system |
US7849063B2 (en) | 2003-10-17 | 2010-12-07 | Yahoo! Inc. | Systems and methods for indexing content for fast and scalable retrieval |
US7620624B2 (en) | 2003-10-17 | 2009-11-17 | Yahoo! Inc. | Systems and methods for indexing content for fast and scalable retrieval |
US7454418B1 (en) | 2003-11-07 | 2008-11-18 | Qiang Wang | Fast signature scan |
US7870161B2 (en) | 2003-11-07 | 2011-01-11 | Qiang Wang | Fast signature scan |
US7493337B2 (en) | 2004-03-31 | 2009-02-17 | Microsoft Corporation | Query progress estimation |
US7814104B2 (en) * | 2005-05-04 | 2010-10-12 | Oracle International Corporation | Techniques for partition pruning |
US7461060B2 (en) | 2005-10-04 | 2008-12-02 | International Business Machines Corporation | Generalized partition pruning in a database system |
US7849073B2 (en) | 2006-12-18 | 2010-12-07 | Ianywhere Solutions, Inc. | Load balancing for complex database query plans |
US8315984B2 (en) | 2007-05-22 | 2012-11-20 | Netapp, Inc. | System and method for on-the-fly elimination of redundant data |
US8666976B2 (en) | 2007-12-31 | 2014-03-04 | Mastercard International Incorporated | Methods and systems for implementing approximate string matching within a database |
US8209178B1 (en) | 2008-01-10 | 2012-06-26 | Google Inc. | Randomized language models |
WO2010033877A1 (en) | 2008-09-19 | 2010-03-25 | Oracle International Corporation | Storage-side storage request management |
US7996369B2 (en) | 2008-11-14 | 2011-08-09 | The Regents Of The University Of California | Method and apparatus for improving performance of approximate string queries using variable length high-quality grams |
US9223850B2 (en) * | 2009-04-16 | 2015-12-29 | Kabushiki Kaisha Toshiba | Data retrieval and indexing method and apparatus |
US8533181B2 (en) * | 2009-04-29 | 2013-09-10 | Oracle International Corporation | Partition pruning via query rewrite |
US8271499B2 (en) | 2009-06-10 | 2012-09-18 | At&T Intellectual Property I, L.P. | Incremental maintenance of inverted indexes for approximate string matching |
US20120137367A1 (en) | 2009-11-06 | 2012-05-31 | Cataphora, Inc. | Continuous anomaly detection based on behavior modeling and heterogeneous information analysis |
US8818991B2 (en) | 2009-12-23 | 2014-08-26 | Pivotal Software, Inc. | Apparatus and method for analyzing query optimizer performance |
US8359316B2 (en) * | 2010-03-01 | 2013-01-22 | International Business Machines Corporation | Database table look-up |
US8655867B2 (en) | 2010-05-13 | 2014-02-18 | Salesforce.Com, Inc. | Method and system for optimizing queries in a multi-tenant database environment |
CN101916261B (zh) | 2010-07-28 | 2013-07-17 | 北京播思软件技术有限公司 | 一种分布式并行数据库系统的数据分区方法 |
EP2614645A1 (en) * | 2010-09-10 | 2013-07-17 | Thomson Licensing | Video decoding using example - based data pruning |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US9916538B2 (en) | 2012-09-15 | 2018-03-13 | Z Advanced Computing, Inc. | Method and system for feature detection |
US11195057B2 (en) | 2014-03-18 | 2021-12-07 | Z Advanced Computing, Inc. | System and method for extremely efficient image and pattern recognition and artificial intelligence platform |
US9514272B2 (en) * | 2011-10-12 | 2016-12-06 | Complete Genomics, Inc. | Identification of DNA fragments and structural variations |
US8768927B2 (en) * | 2011-12-22 | 2014-07-01 | Sap Ag | Hybrid database table stored as both row and column store |
US8880510B2 (en) * | 2011-12-23 | 2014-11-04 | Sap Se | Unique value calculation in partitioned tables |
US8458156B1 (en) | 2012-05-18 | 2013-06-04 | Google Inc. | Learning common spelling errors through content matching |
US10311062B2 (en) | 2012-08-21 | 2019-06-04 | Microsoft Technology Licensing, Llc | Filtering structured data using inexact, culture-dependent terms |
US9111095B2 (en) | 2012-08-29 | 2015-08-18 | The Johns Hopkins University | Apparatus and method for identifying similarity via dynamic decimation of token sequence n-grams |
EP2901324B1 (en) | 2012-09-28 | 2019-11-06 | Oracle International Corporation | Adaptive query optimization |
US9298726B1 (en) | 2012-10-01 | 2016-03-29 | Netapp, Inc. | Techniques for using a bloom filter in a duplication operation |
US20140114942A1 (en) * | 2012-10-23 | 2014-04-24 | International Business Machines Corporation | Dynamic Pruning of a Search Index Based on Search Results |
BR112015011681A2 (pt) | 2012-11-21 | 2017-07-11 | Imflux Inc | canal de injeção de tamanho reduzido para um sistema de molde para injeção |
US9773041B2 (en) | 2013-03-06 | 2017-09-26 | Oracle International Corporation | Methods and apparatus of shared expression evaluation across RDBMS and storage layer |
US10296508B2 (en) * | 2013-06-06 | 2019-05-21 | Sap Se | Systems and methods to manage online analytical and transactional processing for an in-memory columnar database |
US9471711B2 (en) | 2013-09-23 | 2016-10-18 | Teradata Us, Inc. | Schema-less access to stored data |
US9659045B2 (en) | 2013-11-08 | 2017-05-23 | Oracle International Corporation | Generic indexing for efficiently supporting ad-hoc query over hierarchically marked-up data |
US10685052B2 (en) | 2013-12-13 | 2020-06-16 | Danmarks Tekniske Universitet | Method of and system for information retrieval |
US9684671B1 (en) | 2014-02-28 | 2017-06-20 | Pivotal Software, Inc. | Parallel streaming of external data |
CA2939117C (en) | 2014-03-04 | 2022-01-18 | Interactive Intelligence Group, Inc. | Optimization of audio fingerprint search |
US9792328B2 (en) | 2014-03-13 | 2017-10-17 | Sybase, Inc. | Splitting of a join operation to allow parallelization |
US9836505B2 (en) | 2014-03-13 | 2017-12-05 | Sybase, Inc. | Star and snowflake join query performance |
US9412365B2 (en) | 2014-03-24 | 2016-08-09 | Google Inc. | Enhanced maximum entropy models |
US9454574B2 (en) | 2014-03-28 | 2016-09-27 | Sybase, Inc. | Bloom filter costing estimation |
US10002148B2 (en) * | 2014-07-22 | 2018-06-19 | Oracle International Corporation | Memory-aware joins based in a database cluster |
US9940356B2 (en) | 2014-07-31 | 2018-04-10 | International Business Machines Corporation | Efficient join-filters for parallel processing |
US9672248B2 (en) | 2014-10-08 | 2017-06-06 | International Business Machines Corporation | Embracing and exploiting data skew during a join or groupby |
US10628418B2 (en) * | 2014-11-13 | 2020-04-21 | Sap Se | Data driven multi-provider pruning for query execution plan |
US20160162364A1 (en) * | 2014-12-03 | 2016-06-09 | Commvault Systems, Inc. | Secondary storage pruning |
CA2876466C (en) * | 2014-12-29 | 2022-07-05 | Ibm Canada Limited - Ibm Canada Limitee | Scan optimization using bloom filter synopsis |
US10810200B2 (en) | 2015-01-07 | 2020-10-20 | International Business Machines Corporation | Technology for join processing |
US10909078B2 (en) | 2015-02-25 | 2021-02-02 | International Business Machines Corporation | Query predicate evaluation and computation for hierarchically compressed data |
US9922064B2 (en) | 2015-03-20 | 2018-03-20 | International Business Machines Corporation | Parallel build of non-partitioned join hash tables and non-enforced N:1 join hash tables |
US10303791B2 (en) | 2015-03-20 | 2019-05-28 | International Business Machines Corporation | Efficient join on dynamically compressed inner for improved fit into cache hierarchy |
US10372700B2 (en) | 2015-03-30 | 2019-08-06 | International Business Machines Corporation | Data filtering using a plurality of hardware accelerators |
WO2016168211A1 (en) * | 2015-04-13 | 2016-10-20 | Risk Management Solutions, Inc. | High performance big data computing system and platform |
US10067969B2 (en) * | 2015-05-29 | 2018-09-04 | Nuodb, Inc. | Table partitioning within distributed database systems |
US10366247B2 (en) | 2015-06-02 | 2019-07-30 | ALTR Solutions, Inc. | Replacing distinct data in a relational database with a distinct reference to that data and distinct de-referencing of database data |
US10321162B2 (en) * | 2015-06-08 | 2019-06-11 | Qualcomm Incorporated | Derivation of color gamut scalability parameters and tables in scalable video coding |
US10366083B2 (en) | 2015-07-29 | 2019-07-30 | Oracle International Corporation | Materializing internal computations in-memory to improve query performance |
US10204135B2 (en) | 2015-07-29 | 2019-02-12 | Oracle International Corporation | Materializing expressions within in-memory virtual column units to accelerate analytic queries |
US10162857B2 (en) * | 2015-08-31 | 2018-12-25 | Qatar Foundation For Education, Science And Community | Optimized inequality join method |
US10019382B2 (en) | 2015-10-20 | 2018-07-10 | Sap Se | Secondary data structures for storage class memory (scm) enables main-memory databases |
US10642831B2 (en) * | 2015-10-23 | 2020-05-05 | Oracle International Corporation | Static data caching for queries with a clause that requires multiple iterations to execute |
US20170139989A1 (en) * | 2015-11-18 | 2017-05-18 | Sap Se | Pruning of Table Partitions from a Calculation Scenario for Executing a Query |
US9836603B2 (en) * | 2015-12-30 | 2017-12-05 | Symantec Corporation | Systems and methods for automated generation of generic signatures used to detect polymorphic malware |
US10242074B2 (en) | 2016-02-03 | 2019-03-26 | Facebook, Inc. | Search-results interfaces for content-item-specific modules on online social networks |
US10725994B2 (en) * | 2016-04-08 | 2020-07-28 | International Business Machines Corporation | Automatically revising synopsis table structure |
US20170300862A1 (en) | 2016-04-14 | 2017-10-19 | Linkedln Corporation | Machine learning algorithm for classifying companies into industries |
US10649991B2 (en) | 2016-04-26 | 2020-05-12 | International Business Machines Corporation | Pruning of columns in synopsis tables |
US10346403B2 (en) * | 2016-05-06 | 2019-07-09 | International Business Machines Corporation | Value range synopsis in column-organized analytical databases |
US10353867B1 (en) | 2016-06-27 | 2019-07-16 | EMC IP Holding Company LLC | Method and system for verifying files for garbage collection |
US11507601B2 (en) | 2016-08-18 | 2022-11-22 | International Business Machines Corporation | Matching a first collection of strings with a second collection of strings |
US10817540B2 (en) * | 2016-09-02 | 2020-10-27 | Snowflake Inc. | Incremental clustering maintenance of a table |
US11222066B1 (en) | 2016-09-26 | 2022-01-11 | Splunk Inc. | Processing data using containerized state-free indexing nodes in a containerized scalable environment |
US10635671B2 (en) | 2016-10-05 | 2020-04-28 | Oracle International Corporation | Sort-merge band join optimization |
US20180101540A1 (en) | 2016-10-10 | 2018-04-12 | Facebook, Inc. | Diversifying Media Search Results on Online Social Networks |
US11036699B2 (en) * | 2016-10-20 | 2021-06-15 | International Business Machines Corporation | Method for computing distinct values in analytical databases |
US10642832B1 (en) | 2016-11-06 | 2020-05-05 | Tableau Software, Inc. | Reducing the domain of a subquery by retrieving constraints from the outer query |
US10528599B1 (en) | 2016-12-16 | 2020-01-07 | Amazon Technologies, Inc. | Tiered data processing for distributed data |
US11074261B1 (en) | 2016-12-16 | 2021-07-27 | Amazon Technologies, Inc. | Format independent processing for distributed data |
US10303456B2 (en) | 2017-03-23 | 2019-05-28 | Intel Corporation | Technologies for performing energy efficient software distribution |
US10713247B2 (en) | 2017-03-31 | 2020-07-14 | Amazon Technologies, Inc. | Executing queries for structured data and not-structured data |
US20180336262A1 (en) | 2017-05-19 | 2018-11-22 | Futurewei Technologies, Inc. | Geometric approach to predicate selectivity |
US10866971B2 (en) | 2017-05-22 | 2020-12-15 | Sap Se | Hash collision tables for relational operations |
US10789229B2 (en) | 2017-06-13 | 2020-09-29 | Microsoft Technology Licensing, Llc | Determining a hierarchical concept tree using a large corpus of table values |
US10705809B2 (en) | 2017-09-08 | 2020-07-07 | Devfactory Innovations Fz-Llc | Pruning engine |
US10838963B2 (en) * | 2017-09-11 | 2020-11-17 | International Business Machines Corporation | Optimized access for hierarchical low cardinality value synopsis in analytical databases |
US10885056B2 (en) | 2017-09-29 | 2021-01-05 | Oracle International Corporation | Data standardization techniques |
US11163745B2 (en) | 2017-10-05 | 2021-11-02 | Liveramp, Inc. | Statistical fingerprinting of large structure datasets |
US10812495B2 (en) | 2017-10-06 | 2020-10-20 | Uvic Industry Partnerships Inc. | Secure personalized trust-based messages classification system and method |
KR102452953B1 (ko) * | 2017-10-30 | 2022-10-11 | 삼성전자주식회사 | 뉴럴 네트워크의 컨볼루션 연산을 수행하는 방법 및 장치 |
US20190205376A1 (en) | 2017-12-28 | 2019-07-04 | Microsoft Technology Licensing, Llc | Title standardization through iterative processing |
US11036735B2 (en) | 2018-01-16 | 2021-06-15 | Oracle International Corporation | Dimension context propagation techniques for optimizing SQL query plans |
US11037258B2 (en) | 2018-03-02 | 2021-06-15 | Dubset Media Holdings, Inc. | Media content processing techniques using fingerprinting and heuristics |
US10642840B1 (en) | 2018-03-07 | 2020-05-05 | Amazon Technologies, Inc. | Filtered hash table generation for performing hash joins |
EP3547166B1 (en) | 2018-03-26 | 2020-12-02 | Hasso-Plattner-Institut für Digital Engineering gGmbH | Data placement in hybrid data layouts for tiered htap databases |
US10657031B2 (en) * | 2018-03-30 | 2020-05-19 | Oracle International Corporation | Scalable execution tracing for large program codebases |
US10691753B2 (en) | 2018-04-25 | 2020-06-23 | Oracle International Corporation | Memory reduced string similarity analysis |
US11269839B2 (en) | 2018-06-05 | 2022-03-08 | Oracle International Corporation | Authenticated key-value stores supporting partial state |
US10713243B2 (en) | 2018-06-18 | 2020-07-14 | Salesforce.Com, Inc. | Precompiled SQL queries that allow for dynamic selection of columns |
US11061895B2 (en) * | 2018-07-18 | 2021-07-13 | Oracle International Corporation | Adaptive granule generation for parallel queries with run-time data pruning |
US11010257B2 (en) | 2018-10-12 | 2021-05-18 | EMC IP Holding Company LLC | Memory efficient perfect hashing for large records |
US11544300B2 (en) | 2018-10-23 | 2023-01-03 | EMC IP Holding Company LLC | Reducing storage required for an indexing structure through index merging |
US11604654B2 (en) | 2018-10-23 | 2023-03-14 | Nvidia Corporation | Effective and scalable building and probing of hash tables using multiple GPUs |
US10388272B1 (en) | 2018-12-04 | 2019-08-20 | Sorenson Ip Holdings, Llc | Training speech recognition systems using word sequences |
US10573312B1 (en) | 2018-12-04 | 2020-02-25 | Sorenson Ip Holdings, Llc | Transcription generation from multiple speech recognition systems |
US11170761B2 (en) | 2018-12-04 | 2021-11-09 | Sorenson Ip Holdings, Llc | Training of speech recognition systems |
US11042650B2 (en) | 2018-12-06 | 2021-06-22 | International Business Machines Corporation | Sargable query-predicate evaluation for encrypted databases |
US20200285761A1 (en) | 2019-03-07 | 2020-09-10 | Lookout, Inc. | Security policy manager to configure permissions on computing devices |
US11176133B2 (en) | 2019-04-04 | 2021-11-16 | Sap Se | Filter evaluation for table fragments |
EP3742349A1 (en) * | 2019-05-24 | 2020-11-25 | Samsung Electronics Co., Ltd. | Decompression apparatus and control method thereof |
US11194793B1 (en) | 2019-06-25 | 2021-12-07 | Amazon Technologies, Inc. | Dynamically materialized views for sheets based data |
US20210073219A1 (en) | 2019-09-09 | 2021-03-11 | International Business Machines Corporation | Database query data redundancy nullification |
US11429604B2 (en) | 2019-09-10 | 2022-08-30 | Oracle International Corporation | Techniques of heterogeneous hardware execution for SQL analytic queries for high volume data processing |
US11308090B2 (en) | 2019-12-26 | 2022-04-19 | Snowflake Inc. | Pruning index to support semi-structured data types |
US10997179B1 (en) | 2019-12-26 | 2021-05-04 | Snowflake Inc. | Pruning index for optimization of pattern matching queries |
US10769150B1 (en) | 2019-12-26 | 2020-09-08 | Snowflake Inc. | Pruning indexes to enhance database query processing |
US11016975B1 (en) | 2019-12-26 | 2021-05-25 | Snowflake Inc. | Scan set pruning for pattern matching queries |
US11372860B2 (en) | 2019-12-26 | 2022-06-28 | Snowflake Inc. | Processing techniques for queries where predicate values are unknown until runtime |
US20220284025A1 (en) | 2019-12-26 | 2022-09-08 | Snowflake Inc. | Indexed geospatial predicate search |
US11468012B2 (en) | 2020-02-28 | 2022-10-11 | EMC IP Holding Company LLC | Garbage collection assisted deduplication in a log structured file system |
WO2022016170A1 (en) | 2020-07-17 | 2022-01-20 | Snowflake Inc. | Pruning index for optimization of pattern matching queries |
-
2019
- 2019-12-26 US US16/727,315 patent/US10769150B1/en active Active
-
2020
- 2020-07-17 US US16/932,462 patent/US10942925B1/en active Active
- 2020-07-30 KR KR1020217031021A patent/KR102520110B1/ko active IP Right Grant
- 2020-07-30 DE DE202020005734.7U patent/DE202020005734U1/de active Active
- 2020-07-30 WO PCT/US2020/044199 patent/WO2021133433A1/en active Application Filing
- 2020-12-21 EP EP20216097.4A patent/EP3842957A1/en active Pending
- 2020-12-25 CN CN202011561998.4A patent/CN113051351A/zh active Pending
-
2021
- 2021-01-28 US US17/161,115 patent/US11086875B2/en active Active
- 2021-06-25 US US17/358,154 patent/US11308089B2/en active Active
-
2022
- 2022-03-15 US US17/654,887 patent/US11803551B2/en active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070033354A1 (en) * | 2005-08-05 | 2007-02-08 | Michael Burrows | Large scale data storage in sparse tables |
US20110082855A1 (en) * | 2009-10-01 | 2011-04-07 | Al-Omari Awny K | Multi-dimensional access to data |
US20140095520A1 (en) * | 2012-09-28 | 2014-04-03 | Oracle International Corporation | Pruning disk blocks of a clustered table in a relational database management system |
US20150286681A1 (en) * | 2012-09-28 | 2015-10-08 | Oracle International Corporation | Techniques for partition pruning based on aggregated zone map information |
CN105408857A (zh) * | 2013-07-29 | 2016-03-16 | 亚马逊科技公司 | 通过针对选择性交织数据位生成用于关系数据库的多列索引 |
CN106663106A (zh) * | 2014-07-01 | 2017-05-10 | 微软技术许可有限责任公司 | 搜索建议的安全性修剪 |
US20160350347A1 (en) * | 2015-05-29 | 2016-12-01 | Oracle International Corporation | Techniques for evaluating query predicates during in-memory table scans |
US20170116136A1 (en) * | 2015-10-23 | 2017-04-27 | Oracle International Corporation | Reducing data i/o using in-memory data structures |
US20170147637A1 (en) * | 2015-11-19 | 2017-05-25 | Sap Se | Data-driven union pruning in a database semantic layer |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11567939B2 (en) | 2019-12-26 | 2023-01-31 | Snowflake Inc. | Lazy reassembling of semi-structured data |
US11494384B2 (en) | 2019-12-26 | 2022-11-08 | Snowflake Inc. | Processing queries on semi-structured data columns |
US11308089B2 (en) | 2019-12-26 | 2022-04-19 | Snowflake Inc. | Pruning index maintenance |
US11372860B2 (en) | 2019-12-26 | 2022-06-28 | Snowflake Inc. | Processing techniques for queries where predicate values are unknown until runtime |
US11275738B2 (en) | 2019-12-26 | 2022-03-15 | Snowflake Inc. | Prefix N-gram indexing |
US11487763B2 (en) | 2019-12-26 | 2022-11-01 | Snowflake Inc. | Pruning using prefix indexing |
US11275739B2 (en) | 2019-12-26 | 2022-03-15 | Snowflake Inc. | Prefix indexing |
US11544269B2 (en) | 2019-12-26 | 2023-01-03 | Snowflake Inc. | Index to support processing of pattern matching queries |
US20220277013A1 (en) | 2019-12-26 | 2022-09-01 | Snowflake Inc. | Pruning index generation and enhancement |
US11593379B2 (en) | 2019-12-26 | 2023-02-28 | Snowflake Inc. | Join query processing using pruning index |
US11681708B2 (en) | 2019-12-26 | 2023-06-20 | Snowflake Inc. | Indexed regular expression search with N-grams |
US11704320B2 (en) | 2019-12-26 | 2023-07-18 | Snowflake Inc. | Processing queries using an index generated based on data segments |
US11803551B2 (en) | 2019-12-26 | 2023-10-31 | Snowflake Inc. | Pruning index generation and enhancement |
US11816107B2 (en) | 2019-12-26 | 2023-11-14 | Snowflake Inc. | Index generation using lazy reassembling of semi-structured data |
US11893025B2 (en) | 2019-12-26 | 2024-02-06 | Snowflake Inc. | Scan set pruning for queries with predicates on semi-structured fields |
US11880369B1 (en) | 2022-11-21 | 2024-01-23 | Snowflake Inc. | Pruning data based on state of top K operator |
Also Published As
Publication number | Publication date |
---|---|
WO2021133433A1 (en) | 2021-07-01 |
US11308089B2 (en) | 2022-04-19 |
US10942925B1 (en) | 2021-03-09 |
DE202020005734U1 (de) | 2022-04-04 |
US10769150B1 (en) | 2020-09-08 |
US20210200772A1 (en) | 2021-07-01 |
US11803551B2 (en) | 2023-10-31 |
KR102520110B1 (ko) | 2023-04-11 |
US20220277013A1 (en) | 2022-09-01 |
EP3842957A1 (en) | 2021-06-30 |
US20210319025A1 (en) | 2021-10-14 |
KR20210132156A (ko) | 2021-11-03 |
US11086875B2 (en) | 2021-08-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11803551B2 (en) | Pruning index generation and enhancement | |
US11544269B2 (en) | Index to support processing of pattern matching queries | |
US11016975B1 (en) | Scan set pruning for pattern matching queries | |
US11494384B2 (en) | Processing queries on semi-structured data columns | |
US11593379B2 (en) | Join query processing using pruning index | |
EP4182808A1 (en) | Pruning index for optimization of pattern matching queries | |
US11928108B2 (en) | Object dependency status tracking in a cloud system | |
WO2022035517A1 (en) | Transient materialized view rewrite | |
US11475011B2 (en) | Pruning cutoffs for database systems | |
WO2022159932A1 (en) | Predictive resource allocation for distributed query execution | |
WO2021183520A1 (en) | Extensible streams on data sources | |
WO2023244972A1 (en) | Unstructured file replication staged between database deployments | |
US11593368B1 (en) | Maintenance of clustered materialized views on a database system | |
US20230135440A1 (en) | Join elimination |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Montana Applicant after: SNOWFLAKE COMPUTING Inc. Address before: California, USA Applicant before: SNOWFLAKE COMPUTING Inc. |
|
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Country or region after: U.S.A. Address after: Montana Applicant after: Snowflake Co. Address before: Montana Applicant before: SNOWFLAKE COMPUTING Inc. Country or region before: U.S.A. |