CN115552392A - 执行时间动态范围分区变换 - Google Patents
执行时间动态范围分区变换 Download PDFInfo
- Publication number
- CN115552392A CN115552392A CN202180034309.0A CN202180034309A CN115552392A CN 115552392 A CN115552392 A CN 115552392A CN 202180034309 A CN202180034309 A CN 202180034309A CN 115552392 A CN115552392 A CN 115552392A
- Authority
- CN
- China
- Prior art keywords
- data
- partition
- user data
- user
- query
- 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
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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- G06F16/278—Data partitioning, e.g. horizontal or vertical partitioning
-
- 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/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
- G06F16/2386—Bulk updating operations
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Human Computer Interaction (AREA)
Abstract
本公开提供了一种用于执行时间动态范围分区的方法(300),包括接收用户数据(12),用户数据包括分区键(14)和聚类键(16)。用户数据包括定义用户数据的总数据大小的相应总行数(18)。方法还包括标识存储系统(140)的存储约束(144)。存储约束包括目标文件大小和每个文件的目标行数。方法进一步包括基于存储约束确定用户数据的多个拆分点(212)。方法还包括从多个拆分点生成分区分位数(222),分区分位数定义多个拆分点中的每个拆分点之间的范围。方法进一步包括使用分区分位数将用户数据的每个行都范围分区到文件(214)中。
Description
技术领域
本公开涉及执行时间动态范围分区变换。
背景技术
随着云存储越来越流行,聚类和分区数据布局被越来越多地用于降低查询成本和提高查询性能。因为许多表格的大小需要在许多不同的服务器上拆分表格,所以数据块的集群通常由聚类键进行分类,以便将相关数据放在一处。每个数据块都包括数据块值的范围。当将数据分区为分区和/或聚类结构时,通常需要参数来定义如何将分区应用于数据。不幸的是,分区参数通常是未知的,直到执行分区过程为止;阻止或阻碍基于特定类型的分区以动态方式存储可查询数据的能力。
发明内容
本公开的一个方面提供了一种用于执行时间动态范围分区的方法。该方法包括在数据处理硬件处,接收来自数据存储系统的用户的用户数据,该用户数据包括分区键、聚类键以及定义用户数据的总数据大小的相应总行数。用户数据的每个行与分区键所定义的相应值相关联,并且包括一个或多个列。该方法还包括在数据处理硬件处标识数据存储系统的存储约束。存储约束包括目标文件大小和每个文件的目标行数。该方法进一步包括通过数据处理硬件确定用户数据的多个拆分点。多个拆分点是基于用户数据的相应总行数、用户数据的总数据大小、来自存储约束的目标文件大小以及来自存储约束的每个文件的目标行数。该方法还包括通过数据处理硬件从多个拆分点生成分区分位数。分区分位数定义多个拆分点中的每个拆分点之间的范围。该方法进一步包括通过数据处理硬件,使用分区分位数基于分区键所定义的相应值将用户数据的每个行范围分区到文件中。文件存储用户数据,并且被配置为构造根据聚类键分类的表格。
本公开的实施方式可以包括以下一个或多个可选特征。在一些实施方式中,方法包括在数据处理硬件处接收来自数据存储系统的用户的数据加载请求,该数据加载请求请求数据存储系统对未知数量的未来用户数据进行范围分区,并且所接收到的用户数据包括未知数量的未来用户数据。在这里,数据加载请求可以请求数据存储系统使用聚类键来存储未来用户数据。可选地,数据加载请求可以发生在与数据存储系统通信的数据查询系统处,数据查询系统配置为查询数据存储系统中所存储的用户数据。用户数据可以对应于大量满足动态范围分区阈值的流式用户数据,动态范围分区阈值指示最小总数据大小。
在一些配置中,使用分区分位数基于分区键所定义的相应值将用户数据的每个行范围分区到文件中包括为任何缺失值生成空分区,并且在执行对用户数据的查询时,标识查询包括相应的缺失值,并且从查询的读操作中排除空分区。在这里,方法可以包括在数据处理硬件处接收用于范围分区的最大分区数,并且通过数据处理硬件,确定相应的非空分区数小于最大分区数。确定相应分区数小于最大分区数可以包括生成用户数据中的分区键所定义的多个不同值的计数,并且将用户数据中的分区键所定义的多个不同值的计数与最大分区数进行比较。
在一些示例中,存储约束包括最大分区数,并且方法包括通过数据处理硬件确定所生成的分区分位数的数量是否小于最大分区数。在这个示例中,当所生成的分区分位数的数量小于最大分区数时,发生使用分区分位数基于分区键所定义的相应值将用户数据的每个行范围分区到文件中。
在一些实施方式中,方法包括在数据处理硬件处接收来自数据存储系统的用户的数据加载请求,该数据加载请求请求数据存储系统对未知数量的未来用户数据进行范围分区,所接收到的用户数据包括未知数量的未来用户数据。在这种实施方式中,方法包括在数据处理硬件处接收用于范围分区的最大分区数,并且在数据加载请求的运行时间期间,通过数据处理硬件,确定所生成的分区分位数的数量是否大于最大分区数。在这种实施方式中,当所生成的分区分位数的数量大于最大分区数时,无法执行使用分区分位数基于分区键所定义的相应值将用户数据的每个行范围分区到文件中。
本公开的另一方面提供了一种用于进行执行时间动态范围分区的系统。该系统包括数据处理硬件和与数据处理硬件通信的存储器硬件。存储器硬件存储指令,这些指令在数据处理硬件上执行时使数据处理硬件执行操作。这些操作包括从数据存储系统的用户接收用户数据,该用户数据包括分区键、聚类键以及定义用户数据的总数据大小的相应总行数,用户数据的每个行都与分区键所定义的相应值相关联并且包括一个或多个列。这些操作还包括标识数据存储系统的存储约束,这些存储约束包括目标文件大小和每个文件的目标行数。这些操作进一步包括基于用户数据的相应总行数、用户数据的总数据大小、来自存储约束的目标文件大小以及来自存储约束的每个文件的目标行数确定用户数据的多个拆分点。这些操作还包括从多个拆分点生成分区分位数,这些分区分位数定义多个拆分点中的每个拆分点之间的范围。这些操作进一步包括使用分区分位数基于分区键所定义的相应值将用户数据的每个行范围分区到文件中。文件存储用户数据,并且配置为构造根据聚类键分类的表格。
这个方面可以包括以下一个或多个可选特征。在一些配置中,操作包括从数据存储系统的用户接收数据加载请求,该数据加载请求请求数据存储系统对未知数量的未来用户数据进行范围分区,所接收到的用户数据包括未知数量的未来用户数据。在这里,数据加载请求可以请求数据存储系统使用聚类键来存储未来用户数据。数据加载请求可以发生在与数据存储系统通信的数据查询系统处,数据查询系统配置为查询数据存储系统中所存储的用户数据。用户数据可以对应于大量满足动态范围分区阈值的流式用户数据,动态范围分区阈值指示最小总数据大小。
在一些示例中,使用分区分位数基于分区键所定义的相应值将用户数据的每个行范围分区到文件中包括为任何缺失值生成空分区,并且在执行对用户数据的查询时,标识查询包括相应的缺失值,并且从查询的读操作中排除空分区。操作可以包括接收用于范围分区的最大分区数,并且可以包括确定非空分区的相应数量小于最大分区数。确定相应分区数小于最大分区数可以包括生成用户数据中的分区键所定义的多个不同值的计数,并且可以包括将用户数据中的分区键所定义的多个不同值的计数与最大分区数进行比较。
在一些实施方式中,存储约束包括最大分区数,并且操作包括确定所生成的分区分位数的数量是否小于最大分区数。在这种实施方式中,当所生成的分区分位数的数量小于最大分区数时,发生使用分区分位数基于分区键所定义的相应值将用户数据的每个行范围分区到文件中。
在一些配置中,操作包括从数据存储系统的用户接收数据加载请求,该数据加载请求请求数据存储系统对未知数量的未来用户数据进行范围分区,并且所接收到的用户数据包括未知数量的未来用户数据。在这种配置中,操作包括接收用于范围分区的最大分区数,并且在数据加载请求的运行时间内,确定所生成的分区分位数的数量是否大于最大分区数。进一步地,当所生成的分区分位数的数量大于最大分区数时,无法执行使用分区分位数基于分区键所定义的相应值将用户数据的每个行范围分区到文件中。
本公开的一种或多种实施方式的细节在附图或以下描述中进行说明。其他方面、特征和优点通过说明书和附图以及通过权利要求书将变得显而易见。
附图说明
图1是示例数据管理环境的示意图。
图2A至图2D是图1的数据管理环境的示例数据管理器的示意图。
图3是数据处理方法的操作的示例布置的流程图。
图4是可以用于实施本文中所描述的系统和方法的示例计算设备的示意图。
相同的参考符号在各个图中都指示相同的元件。
具体实施方式
数据存储系统可以将用户或客户端数据存储在一个或多个大型可查询表格中。表格的一般结构包括组织成行的某种形式的单独记录的数据。一行数据的长度可以根据表格的架构和/或与特定记录(即,行)相关联的列或字段的数量而变化。表格架构指的是表格的指定格式,该格式可以定义列名称(例如,字段)、特定列的数据类型和/或其他信息。在一些示例中,存储系统被配置为基于它接收到的用户数据的属性生成表格架构。例如,存储系统在获取之前使用特定架构以面向行型格式接收用户数据。在其他示例中,在将任何用户数据传输到存储系统之前,用户或客户端与存储系统协调,以定义用户数据的架构。通常来讲,当数据存储系统接收到用户数据时,存储系统通过将用户数据加载到一个或多个文件中来获取该用户数据,这些文件形成填充表格的底层结构。在没有进一步组织的情况下,存储系统将用户数据加载到文件中,以便数据存储系统接收用户数据。在这里,在没有将用户数据呈现给存储系统的方式之外的进一步组织的情况下,表格的格式不包括任何其他分区、分组或分类格式化。这种类型的表格可以被称为非分区和非聚类表格。结果,当用户想要对其在数据存储系统中的数据的小部分执行查询(例如,具有过滤条件的查询)时,查询可能不可避免地要去扫描存储系统中用户数据的全部(即,与用户数据对应的表格中的数据)。
尽管这种对所有用户数据的扫描将生成对查询的准确响应,但是它仍然将花费大量时间,这些时间可以通过以特定的方式格式化存储系统中的用户数据来减少。由于一些数据查询系统包括基于扫描的数据量收费的成本结构,因此通过在查询期间最小化扫描的数据量来降低成本的动机越来越强烈。因此,为了时间和资源的效率,数据存储系统可以被配置为以更高效的查询格式组织用户数据。考虑到用户既向存储系统提交数据又查询他或她的数据这一事实,这是尤其有可能的;这种组合允许用户协调或巩固这些努力。格式化存储系统中的数据的技术的一些示例是通过对数据进行分区、对数据进行距离或两者的某种组合。
表格分区是将大型的数据表格分为表格的子集,而无需为每个子集都创建单独的表格的技术。当将大型表格中的数据分区为分区时,这些分区对应于可以单独访问和/或维护的行的组。分区表格的优点是,分区表格在由查询系统查询时相当于一个单一的逻辑表格。当存储系统对数据进行分区时,分区基于称为分区键的表格中数据的一个或多个列或架构将每个行都分配给分区。通常,表格在与查询相关的分区键上进行分区。换言之,通过使用在查询数据表格时经常或总是引用的分区键,查询系统可以使用分区键作为过滤器,以仅将其访问或读取限制为相关分区(即,整个表格的相关部分)。这种技术,有时被称为分区裁剪,使得查询不需要读取或扫描表格的其他部分,从而改进查询的性能时间。附加地或可替代地,从管理角度看,分区允许灵活性,以便管理员可以集体地(例如,针对整个表格)或单独地(例如,针对表格的一个或多个部分)管理分区表格。
分区键通常指定用于对用户数据进行分区的变量或值。一般而言,分区键可以指与一行数据对应的任何字段(例如,列),但是由于查询的性质,某些形式的分区更常见。例如,查询通常请求与特定时间(例如,某个日期)对应或属于特定时间范围(例如,某些日期)的数据。基于这种频繁的查询形式,对用户数据的一些更常见的分区包括按照获取时间(例如,存储系统将用户数据加载到存储中时的加载时间或用户数据到达存储系统的到达时间)、按照除获取时间之外的另一日期或时间戳(例如,数据访问时间)或按照整数范围进行分区。例如,利用获取时间分区方法,存储系统根据基于日期的时间单元(例如,每小时、每日、每周、每月、每年等)将用户数据加载到文件中(例如,自动地)。在这里,存储系统标识与用户数据的每个行对应的获取时间,并且将用户数据加载到与该特定获取时间对应的文件。换言之,当用户数据跨越三天,即星期一、星期二和星期三,时,存储系统标识有四行用户数据对应于星期一(例如,基于获取日期),并且将这四行加载到星期一文件中,同时标识有两行用户数据对应于星期二(例如,基于获取日期),并且将这两行加载到星期二文件中,该星期二文件是与星期一文件不同的文件。最后,存储系统标识有六行用户数据对应于星期三(例如,基于获取日期),并且将六行中的五行加载到第一星期三文件中,而将这六行中的第六行加载到新的第二星期三文件中,因为在该示例中,文件具有等于五行的容量。由于表格是由与文件对应的数据块形成的,所以表格看起来好像有三个表格子集,分别针对每天、星期一、星期二和星期三。在这里,如果查询请求其获取日期为星期二的用户数据,则由于三个表格子集,查询可以执行快速查找(例如,根据与存储系统中的用户数据相关联的元数据)来识别表格子集对应于星期二,并且随后对星期二子集表格中的12行用户数据中的两行进行扫描或执行读取操作。换言之,在这个示例中,这种分区形式将读取操作减少到用户数据的六分之一。基于列(例如,基于日期或基于时间戳)的分区的作用类似,分区是基于另一基于时间的变量发生,而不是获取时间。例如,一行用户数据中的一个或多个列可以包括可分区时间字段。
在一些实施方式中,分区函数定义如何在分区键上对数据进行分区。在一些示例中,分区函数不定义表格中的哪行数据包括在分区组中,而是分区函数标识分区之间的边界值或拆分点。换言之,表格的实际分区数等于拆分点数加一。范围分区还使用分区键,但是这种分区过程标识数据是否在分区键的范围规范内(即,属于该范围规范)。在这里,当数据在范围规范之外(例如,不属于该范围规范)时,范围分区不对数据进行分区。相反,当数据在范围规范的指定范围内时,范围分区将数据加载到文件中,这些文件生成与指定范围对应的表格子集。例如,范围规范规定将用户数据分区为每月范围。在这里,当用户数据对应于三个月时,范围分区将每个月都标识为给定范围的拆分点或边界。例如,当三个月为一月、二月和三月时,一月范围是从1月1日到1月31日,而二月范围是从2月1日到2月28日,并且三月范围是从3月1日到3月31日。在这个示例中,分区函数可以标识与范围的边界对应的拆分点和/或拆分点是包含的还是排他的。例如,对于一月范围,拆分点可以是12月31日或1月1日。当拆分点为12月31日时,这个日期在12月,因此并没有作为1月1日到1月31日的范围的部分被包括。因此,12月31日的拆分点将是排他的边界点,因为它不包括在该范围内。另一方面,1月1日的拆分点将是包含的拆分点,因为1月1日到1月31日的范围包括该拆分点。为了进一步说明这个示例,分区键可以将一行用户数据中的列标识为分区值。换言之,如果分区键指定获取时间,则存储系统通过标识一行用户数据的获取时间是否在一月、二月或三月的范围内,执行范围分区。利用范围分区,对范围分区的表格的查询可以基于分区键(例如,分区列,诸如,获取时间)指定断言过滤器(predicate filter),以减少查询期间扫描的数据量。
另一种格式化表格的方法是聚类。在聚类表格中,表格的数据是基于聚类键的内容组织的。在这里,聚类键指的是用于对数据进行分类(例如,将相关数据放在一处)的一个或多个列(例如,在表格的架构中)。当在多个列上发生聚类时,聚类键标识确定数据的分类顺序的列的顺序。当存储操作将数据写入聚类表格时,存储系统使用聚类列中的值对数据进行分类,并且使用这些值将数据在存储系统中组织成多个块,以形成聚类表格。利用聚类数据(即,聚类用户数据表格),用于基于聚类键过滤用户数据的查询使得该查询能够消除对不必要数据的扫描。例如,当存储系统将数据加载到文件时,文件既可以包括元数据,又可以与元数据相关联,该元数据标识加载文件中所包含的用户数据的列的最小值和最大值。利用这种信息,当查询对应于聚类数据时,查询可以首先从文件中查找与聚类键对应的元数据,并且消除不相关的文件。例如,如果用户数据的行对应于交易销售数据,其中,列中的一个定义交易的州(位置)并且交易销售数据表格是根据交易的州进行聚类的,则对加利福尼亚州的交易的查询可以查看文件,并且从其元数据中确定文件中没有用户数据行对应于加利福尼亚的交易。在这里,这种快速查找阻止查询必须对文件执行进一步的读取操作。
不幸的是,在没有足够的信息提前为分区技术建立参数的情况下,特定的分区技术具有有限的能力。这在范围分区的情况下是真的。例如,范围分区传统上已经很难在数据加载的执行时间内动态地执行。换言之,范围分区通常依赖于已知的先验,诸如范围规范的部分中有多少拆分点或范围分区。然而,对于流传输到数据存储系统或批量处理到数据存储系统中的用户数据,通常事先不知道存储系统将接收多少用户数据来进行执行。在实际接收数据之前不知道存储系统处所接收到的数据大小的情况下,存储系统通常无法确定准确的拆分点(即,迎合实际数据),这些拆分点标识范围分区的范围边界。当数据存储系统受到与文件大小或文件可以存储的数据行数相关的约束时,这些问题变得进一步复杂化。换言之,数据存储系统本身可能有影响范围分区的方面的约束。例如,如果文件只能是特定大小,则高效的范围分区应当尝试将这个大小约束的因素,以确保其范围和/或拆分点不导致由于范围分区而饱和的文件。
图1图示了数据管理环境(也称为“数据管理系统”)100的示例。与用户10相关联的用户设备110在其计算资源112(例如,数据处理硬件114和/或存储器硬件116)执行期间生成用户数据12。例如,用户10使用在用户设备110的数据处理硬件114上操作的应用来生成用户数据12。由于各种应用都有能力生成大量的用户数据12,用户10通常利用其他系统(例如,远程系统130、存储系统140或查询系统150)进行用户数据存储和/或用户数据管理。
在一些示例中,用户设备110是本地设备(例如,与用户10的位置相关联),该本地设备使用自己的计算资源112,并且具有与一个或多个远程系统130通信(例如,通过网络120)的能力。附加地或可替代地,用户设备110利用其对远程资源(例如,远程计算资源132)的访问为用户10操作应用。通过使用用户设备110而生成的用户数据12最初可以存储在本地(例如,诸如在存储器硬件116的数据存储装置116中),然后传递给远程系统130或在创建时通过网络120发送给远程系统130。例如,用户设备110使用远程系统130将用户数据12传递给存储系统140。
在一些示例中,用户10利用远程系统130(例如,云计算环境)的计算资源132来存储用户数据12。在这些示例中,远程系统130可以接收用户数据12,因为它是由各种用户应用生成的(例如,流式数据)。在这里,数据流(例如,用户数据12的数据流)指的是到达远程系统130进行存储和/或进一步处理的数据的连续或一般连续的馈送。在一些配置中,除了将用户数据12连续地流传输给远程系统140,用户10和/或远程系统130将用户数据12配置为以频繁的间隔批量发送,以便远程系统130有用户数据12的持续供应进行处理。很像用户设备110,远程系统130包括计算资源132,诸如远程数据处理硬件134(例如,服务器和/或CPU)以及存储器硬件136(例如,磁盘、数据库或其他形式的数据存储装置)。
在一些配置中,远程计算资源132是与远程系统130相关联和/或通信的各种系统所利用的资源。如图1所示,这些系统可以包括存储系统140和/或查询系统150。在一些示例中,这些系统140、150的功能可以以不同的排列组合集成在一起(例如,彼此内置)或可以是具有彼此通信的能力的独立系统。例如,存储系统140和查询系统150可以被组合成单个系统(例如,如图1中的这些系统周围的虚线所示)。远程系统130以及其计算资源132可以配置为托管这些系统140、150的一个或多个功能。在一些实施方式中,远程系统130是分布式系统,其计算资源132分布在经由网络120可访问的一个或多个位置上。
在一些示例中,存储系统140被配置为操作数据仓库142(例如,数据存储库和/或多个数据库)作为用户10(或多个用户)的数据存储手段。一般而言,数据仓库142存储来自一个或多个源的数据,并且可以被设计为分析、报告和/或集成来自其源的数据。数据仓库142使得用户(例如,组织用户)能够拥有中央存储保管和存储数据访问点。通过将用户数据12包含在诸如数据仓库142的中央保管中,数据仓库142可以简化诸如数据分析和/或数据报告(例如,通过分析系统)的功能的数据检索。此外,数据仓库142可以配置为存储大量数据,以便用户10(例如,组织用户)可以存储大量的历史数据,以了解数据趋势。由于数据仓库142可以是用户数据12的主要或唯一数据存储保管,存储系统140可能经常从与用户10相关联的用户设备110接收大量数据(例如,每秒千兆字节、每秒兆兆字节或更多)。附加地或可替代地,作为存储系统140,存储系统140和/或存储仓库142可以针对数据安全(例如,数据冗余)、针对来自单个数据源的多个用户(例如,组织的多个员工)和/或针对同时的多用户访问进行配置。在一些实施方式中,数据仓库142是持久的和/或非易失性的,以便在默认情况下,数据不被新的传入数据覆盖或擦除。
查询系统150被配置为以查询160的形式从存储系统140请求信息或数据。在一些示例中,查询160由用户10发起,作为对存储系统140中的用户数据12的请求(例如,导出数据请求)。例如,用户10通过查询系统150(例如,与查询系统150相关联的接口)操作,以检索存储系统140的数据仓库142中所存储的用户数据12。在这里,查询160可以是用户发起的(即,由用户10直接请求)或系统发起的(即,由查询系统150本身配置)。在一些示例中,查询系统150对例程或重复查询160进行配置(例如,以某种指定频率),以允许用户10执行分析或监控存储系统140中所存储的用户数据12。
查询160的格式可以变化,但是可以包括对存储系统150中所存储的特定用户数据12的引用和/或请求特定时间段内的用户数据12。例如,查询160请求前七天的用户数据12。在一些配置中,用户10以特定格式将用户数据12发送给存储系统140,以便查询系统150可以基于关于特定格式的信息(例如,使用格式的属性)生成查询160。例如,数据存储系统140以表格格式接收用户数据12,其中,用户数据12填充表格的行和列。利用表格格式,表格内的用户数据12可以具有对应于与用户数据12相关联的架构或标题的行和列。例如,用户数据12可以指用户10进行的商业交易。在这个示例中,用户数据12可以包括卖方、买方、交易价格、交易数量和用户10收集的关于其交易的其他交易数据的列。在这里,每个行都可以具有标题或架构,诸如交易号或标识符和/或与交易相关联的时间条目。由于存储系统140可以以特定格式(例如,交易表格格式)接收用户数据12,存储系统140被配置为存储用户数据12,以便查询系统150能够访问与用户数据12相关联的格式的元素(例如,关系、标题或其他架构)(例如,为用户数据12提供进一步的上下文或定义)。换言之,查询系统150生成查询160,该查询160请求前七天的交易价格。
响应于查询160,查询系统140生成查询响应162,该查询响应162满足或试图满足查询160的请求(例如,对特定用户数据12的请求)。一般而言,查询响应162包括查询系统150在查询160中请求的用户数据12。查询系统150可以将此查询响应162返回给发起查询160的实体(例如,用户10)或与查询系统150通信的另一实体或系统。例如,查询160本身或查询系统150可以指定查询系统150将一个或多个查询响应162传递给与用户10相关联的系统,诸如分析系统。例如,用户10使用分析系统对用户数据12执行分析。通常,查询系统150被设置为根据存储系统140中的用户数据12生成例程查询160,使得分析系统能够执行其分析(例如,以特定频率)。例如,查询系统150执行每日查询160,以提取最近七天的交易数据,以供分析系统进行分析和/或表示。
在一些示例中,查询160对应于查询工作。查询工作指的是查询系统150代表用户10执行的操作/动作。查询工作所进行的动作的一些示例包括:将用户数据12加载到存储系统140、将用户数据12从存储系统140导出、从存储系统140查询用户数据12或从存储系统140复制用户数据12。一般而言,查询工作首先被调度,然后被执行。例如,关于将用户数据12加载到存储系统140的查询工作,这种查询工作可以在查询系统150实际能够将用户数据12传输给存储系统140或协调用户数据12到存储系统140的传输之前进行配置。换言之,查询工作可以进行设置,以便查询系统150在重复的基础上协调用户数据12的传输。例如,查询工作规定每隔一天的下午5点将用户数据12传输给存储系统140。在一些实施方式中,查询系统150包括查询工作的进一步的参数。例如,通过请求加载数据的工作查询,查询系统150被配置为以批处理形式或流式形式将用户数据12传递给存储系统140。然而,关于这些形式中的任何一种,查询系统150可以用动态范围分区阈值152进行配置,该阈值指示用户数据12必须超过的最小总数据大小,以便查询系统150将用户数据12发送给存储系统140进行存储处理。
在一些实施方式中,当查询系统150接收到查询160的输入时,查询系统150被配置为确定计划154,以便执行查询160。换言之,查询160通常指的是基本级别的大表格,而不是对存储系统140中表格的实际结构的特定引用。例如,查询160简单地规定查询存储系统140中用户数据12的表格,以导出加利福尼亚州过去一周的交易数据。为了从存储系统140中用户数据12的更复杂的表格和/或存储结构中抽象出来,查询160输入格式被简化,以便作为用户界面使用。因此,执行或写入查询160的用户10不需要知道实际存储结构,而只需要知道高级别表格结构的架构或字段以生成查询160。查询系统150与存储系统140结合,能够将来自用户10的查询160分解,并且将查询160改写为标识用户数据12上的潜在操作符的格式,以对用户数据12的底层结构执行查询160。即,当查询系统150接收到查询160时,该系统对查询160进行消化,并且规划如何对存储系统140的实际结构执行查询160。这种规划可能需要标识表格的子集(例如,分区)和/或对应于查询160的表格的文件。
在一些配置中,尽管查询系统150在执行之前确定计划154,但是计划154仍在发展。例如,查询系统150在查询160的规划阶段而不是在查询160的执行时间内生成计划154。在执行时间内,计划154可能需要进行调整,以适应执行时存在的实际信息,这些信息在规划期间没有被包括或不可用。例如,当查询160对应于请求将数据加载到存储系统140的查询工作时,当用户12生成查询160时,这种查询工作的用户数据12的实际数量是未来用户数据12的未知数量以及关于未来用户数据12的其他未知量,诸如用户数据12的实际大小和/或用户数据12中的行数。根据这些未知量,查询系统150被配置为在诸如加载数据的请求的执行查询160时生成调整计划156。
参照图1和图2A至图2D,数据管理环境100还包括管理器200。管理器200被配置为管理动态范围分区。在这里,动态范围分区指的是在对存储系统140的加载操作的执行时间或运行时间内发生的范围分区。它是动态的,从某种意义上说,范围分区发生在将用户数据12实际加载到存储系统140时,因此管理器200必须为用户数据12协调分区(例如,分位数)的生成,同时在获取用户数据12并且将该用户数据12存储在文件224中时适应存储系统140的约束144。管理器200可以通过为用户10执行和/或协调与系统140、150相关的操作(例如,存储操作和/或查询操作)来管理动态范围分区。取决于管理器200的设计,其功能可以是集中的(例如,驻留在系统140、150之一中),也可以分布在系统140、150之间。在一些示例中,诸如图1,管理器200被配置为接收来自用户10的用户数据12,并且促进存储系统140处的存储操作。例如,管理器200促进用户10的数据加载请求。响应于用户10的加载请求,管理器200获取用户数据12,并且可以使用范围分区将用户数据12转换为查询友好的格式。在这里,获取指的是获得用户数据12和/或将用户数据12导入存储系统140(例如,导入数据仓库142),以允许系统使用获取的数据(例如,通过查询系统)。一般而言,在管理器200导入数据时数据在从源(例如,用户10或用户10的用户设备110)发出时可以被实时获取,也可以被批量导入,其中,管理器200按周期性时间间隔导入离散数据块。在获取期间,管理器200可以验证用户数据12的格式(例如,为了符合存储系统140的可接受格式),并且将用户数据12路由到数据仓库142(例如,数据仓库142中为用户10的用数据12指定的特定数据存储位置)。用户数据12可以包括分区键14、聚类键16以及与用户数据12相关联的一个或多个特性18。
如图2A至图2D所示,管理器200通常包括拆分器210和分区器220。在这里,拆分器210被配置为获得与分区键14对应的值的适当的拆分点。例如,当分区键14的值指的是获取时间Ti时,拆分器210基于用户数据12的获取时间Ti为每个不同的日子生成拆分点212。为了生成拆分点212,拆分器210接收查询160,该查询160标识用户数据12的加载请求以及用户数据12的特性18。在一些配置中,如图2A所示,特性18标识加载请求160的用户数据12的总大小18、18a以及加载请求160的用户数据12中所包括的行数18、18b。为了准确地生成拆分点212,拆分器210还考虑存储系统140的约束144。例如,图2A示出了存储系统140,该存储系统140约束存储系统140中每个文件224的最大大小144、144a和/或每个文件224的总行数144、144b。在不考虑这些约束144的情况下,拆分器210可以生成拆分点212,这些拆分点导致管理器200(例如,分区器220)生成用户数据12的范围太大,无法存储存储系统140的文件224。换言之,如果拆分器210生成的拆分点212太稀疏,则大量的用户数据12可以被定义在两个拆分点212之间。为了生成拆分点212的准确估计,拆分器210将用户数据12的特性18(例如,加载请求160的用户数据12的总大小18a和/或用户数据12中所包括的行数18b)与对应于存储系统140的文件244的约束144进行比较。例如,拆分器120将用户数据12中的总行数18b除以存储系统140的约束144所标识的每个文件224的行数144b。对这两个数的除法生成给定文件224中可能存在的用户数据12的行数的估计。在一些实施方式中,拆分器210将用户数据12的总大小18a除以受存储约束144的目标文件大小144a。在这里,通过将用户数据12的总大小18a除以受存储约束144的目标文件大小144a,拆分器210生成对存储用户数据12可能需要的文件224的数量的附加或替代估计。利用这些计算中的一种或两种,拆分器210确定用户数据12的一个或多个拆分点212,并且将这些拆分点212传递给分区器220。
在一些配置中,基于拆分点212,分区器220被配置为生成用户数据12的分区222或分区分位数。在这里,分区分位数定义多个拆分点212中的每个相邻拆分点212之间的范围。如图2A所示,分区222、222a至222d是基于与分区键14对应的列的划分(例如,显示为获取日期Ti)。对于拆分点212之间的分区分位数中的每行用户数据12,分区器通过将行加载到文件224中来对每个行进行范围分区。换言之,分区器220基于分区键14将范围的值一起加载到文件224中。一般而言,分区器220利用用户数据12填充文件224,直到文件224达到其容量为止。一旦文件224达到容量,分区器220便发起新文件224,并且继续以与前面的文件224相同的方式在新文件224中一起填充与单个分区222对应的用户数据12。
在一些实施方式中,用户数据12对应于一天以上是很常见的(例如,参见图2C)。在这些实施方式中,存储系统140可以配置有附加约束,即每个文件224只包括来自单个日期(例如,单个获取日期)的数据。当这个约束存在于存储系统140时,分区器220在为特定分区222填充用户数据12时,标识与数据相关联的时间戳何时从第一日期过渡到第二日期(例如,第一天到第二天)。当这种情况发生时,分区器220生成新文件224,不管被填充的当前文件224的容量,并且将带有第二日期的时间戳的用户数据12加载到新文件224中,以阻止单个文件224存储带有两个不同的日期时间戳的用户数据12。基于存储系统140的这种日期分离技术,文件224本身就适合于范围分区。
在一些配置中,当用户数据12包括标识用于对用户数据12进行分类的一个或多个列的一个或多个聚类键16时,分区器220还被配置为对用户数据12进行范围分区。一般而言,这将分区器220组合为通过多个变量(例如,分区键14的分区变量和聚类键16的一个或多个聚类变量16)对用户数据12进行分区。当这种情况发生时,分区器220可以包括操作符,该操作符将键14、16的变量组合成新结构。在一些示例中,分区器220对这个结构进行编码,该结构将多个格式化变量组合成字符串,该字符串具有作为结构的底层值的字符串类型。分区器220还可以为这个新结构生成值操作,诸如,Less()、IsComparable()、Equal()、AppentToString()、ParseFromString()、Copy()、Move()和/或Memory()。通过具有这种新结构,分区器220能够为多变量聚类生成分区分位数(例如,分区222)。例如,分区器220将为图2A至图2D的示例生成这种结构,因为聚类键16标识多个聚类变量、列C1、C2。
参照图2B,在一些示例中,查询系统150作为后台进程运行,而查询系统150主动接收用户数据12。作为后台进程,查询系统150可以收集用户数据12,直到用户数据12的数量满足动态分区阈值152为止。换言之,动态分区阈值152被配置为使处理资源对齐,以生成拆分点212和/或分区222。查询系统150可以将动态分区阈值152应用于用户数据12的批量加载或流式加载。利用动态分区阈值152,一旦用户数据12的数量满足阈值152(例如,超过某种预定的数据量),查询系统150可以执行请求,以将用户数据12加载到存储系统140(例如,使用管理器200)。
在一些配置中,诸如图2C和图2D,分区器220被配置为执行分位数扩展或边界注入。分位数扩展是试图确保每天(例如,基于获取日期)都有至少一个分区222,以便不会有带有不同日期值的两行用户数据12映射到同一个分区222的技术。图2C和图2D图示了一个示例,其中,用户数据12对应于5天的用户数据12(例如,显示为4-16-2020、4-17-2020、4-18-2020、4-19-2020和4-20-2020)。在这里,对于日期4-19-2020,没有用户数据12存在。换言之,用户数据12从与4-18-2020对应的用户数据12跳转到4-20-2020。在没有分位数扩展的正常拆分和分区过程中,拆分器210通常不生成与日期4-19-2020的任何边界对应的拆分点212,因为对于这个日期,没有用户数据12存在。在没有日期4-19-2020的边界的情况下,分区过程可能具有将具有不同的日期值的两行分区到同一个分区222的增加的可能性或风险。为了避免这种风险,分区器220通过分析日期值和确定应当在第六行R6和第七行R7之间注入边界(例如,拆分点212、212c至212d)来执行分位数扩展。在这里,这种边界注入生成空分区226,作为日期4-19-2020的一种空占位符。在一些配置中,在执行后续查询160以在包括空分区226的日期范围内读取或导出用户数据12期间,查询160被配置为识别空分区226,并且从查询160的任何读取操作跳过(即,排除)空分区226。
继续参照图2D,在一些示例中,存储系统140附加地包括对动态分区期间存储系统140处的用户数据12中可能发生的最大分区数144、144c的约束144。当存储系统140包括关于最大分区数144c的这种约束144时,存储系统140可以通过几种不同的方式配置对这种约束144的依从性。例如,在一些配置中,存储系统140没有将任何空分区226计入分区器的分区222的总数。换言之,在这种配置中,图2C和图2D只有四个分区222a至222d,尽管在所存储的用户数据12中有空分区226。在另一方法中,管理器200和/或存储系统140通过对用户数据12中存在的分区键14的值的总数进行计数,并且将该计数与分区器220生成的分区器222的数量进行比较,来确定管理器200(例如,分区器220)是否违反了最大分区数144。当分区键14的值的总数小于分区222的计数(即,有数量多于值的分区222)时,分区过程违反了对最大分区数144dc的约束144。例如,当分区键14对应于天数时,管理器200对不同天数的总数进行计数,并且评估天数的这种计数是否小于最大分区数144。如图2D所示,管理器200可以被配置为通过将分区222(例如,总分区222、226或总非空分区222)的计数228或分区器220标识的分区键14的值的不同数量的计数228与分区222的最大数量进行比较,来确定其自己符合最大分区数144c。在图2D中,拆分器210被示出为执行这种确定。当分区过程生成太多分区222而违反了最大分区数144c时,对加载工作的查询160失败,并且由于违反了这种约束144c,对于给定的加载请求,动态分区不发生。相反,当分区数222满足最大分区数144c时,管理器200能够对用户数据12执行动态分区。
图3是在执行时间期间对数据进行动态分区的方法300的操作的示例布置的流程图。在操作302中,方法300从数据存储系统140的用户10接收用户数据12,该用户数据12包括分区键14、聚类键16和约束18。在这里,用户数据12的约束18包括定义用户数据12的总数据大小18a的相应总行数18b。每行用户数据12都与分区键所定义的相应值相关联,并且包括一个或多个列。在操作304中,方法300标识数据存储系统140的存储约束144。存储约束144包括目标文件大小144a和每个文件224的目标行数144b。在操作306中,方法300基于用户数据12的相应总行数18b、用户数据12的总数据大小18a、来自存储约束144的目标文件大小144a以及来自存储约束144的每个文件224的目标行数144b,确定用户数据12的多个拆分点2212。在操作308中,方法300从多个拆分点212生成分区分位数222。在这里,分区分位数222定义多个拆分点212中的每个拆分点212之间的范围。在操作310中,方法300使用分区分位数222基于分区键所定义的相应值,将用户数据12的每个行都范围分区到文件224中。文件224被配置为构造根据聚类键16分类的表格。
图4是可以用于实施本文中所描述的系统和方法的示例计算设备400的示意图。计算设备400旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作站、个人数字助理、服务器、刀片服务器、主机和其他适当的计算机。这里所示的组件、其连接和关系以及其功能仅仅是示例性的,并不旨在限制在本文件中所描述和/或所要求的本发明的实施方式。
计算设备400包括处理器410(例如,数据处理硬件)、存储器420(例如,存储器硬件)、存储设备430、连接到存储器420和高速扩展端口450的高速接口/控制器440以及连接到低速总线470和存储设备430的低速接口/控制器460。组件410、420、430、440、450和460中的每一个都使用各种总线来相互连接,并且可以被安装在公共主板上或在适当时通过其他方式安装。处理器410可以处理在计算设备400中执行的指令,包括存储器420中或存储设备430上所存储的用于在外部输入/输出设备(诸如,耦合到高速接口440的显示器480)上显示图形用户界面(GUI)的图形信息的指令。在其他实施方式中,适当时,多个处理器和/或多个总线可以与多个存储器和多种类型的存储器一起使用。同样,多个计算设备400可以与提供必要操作的部分的每个设备都连接(例如,作为服务器组、一组刀片服务器或多处理器系统)。
存储器420将信息非暂时性地存储在计算设备400中。存储器420可以是计算机可读介质、易失性存储器单元或非易失性存储器单元。非暂时性存储器420可以是用于暂时或永久存储程序(例如,指令序列)以供计算设备400使用的物理设备。非易失性存储器的示例包括但不限于闪速存储器和只读存储器(ROM)/可编程只读存储器(PROM)/可擦除可编程只读存储器(EPROM)/电可擦除可编程只读存储器(EEPROM)(例如,通常用于固件,诸如,启动程序)。易失性存储器的示例包括但不限于随机存取存储器(RAM)、动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、相变存储器(PCM)以及磁盘或磁带。
存储设备430能够为计算设备400提供海量存储。在一些实施方式中,存储设备430是计算机可读介质。在各种不同的实施方式中,存储设备430可以是软盘设备、硬盘设备、光盘设备或磁带设备、闪速存储器或其他类似的固态存储器设备或设备阵列,包括存储区域网络或其他配置中的设备。在附加实施方式中,计算机程序产品有形地体现为信息载体。计算机程序产品包含指令,这些指令在被执行时执行一种或多种方法,诸如上述方法。信息载体是计算机或机器可读介质,诸如,存储器420、存储设备430或处理器410上的存储器。
高速控制器440管理计算设备400的带宽密集型操作,而低速控制器460管理较低带宽密集型操作。这种职责分配仅仅是示例性的。在一些实施方式中,高速控制器440耦合到存储器硬件420、显示器480(例如,通过图形处理器或加速器),并且耦合到可以接受各种扩展卡(未示出)的高速扩展端口450。在一些实施方式中,低速控制器460耦合到存储设备430和低速扩展端口490。可以包括各种通信端口(例如,USB、蓝牙、以太网、无线以太网)的低速扩展端口490可以例如通过网络适配器耦合到一个或多个输入/输出设备,诸如,键盘、指向设备、扫描器或组网设备,诸如,交换机或路由器。
计算设备400可以以多种不同的形式实施,如图所示。例如,它可以作为标准服务器400a实施或在一组这样的服务器400a中多次实施,或作为膝上型计算机400b实施或作为机架式服务器系统400c的部分实施。
这里所描述的系统和技术的各种实施方式可以在数字电子和/或光学电路系统、集成电路系统、专门设计的ASIC(专用集成电路)、计算机硬件、固件、软件和/或其组合中实现。这些各种实施方式可以包括一个或多个计算机程序中的实施方式,这些计算机程序在可编程系统上是可执行和/或可解释的,该可编程系统包括至少一个可编程处理器,该可编程处理器可以是专用的,也可以是通用的,耦合以接收来自存储系统、至少一个输入设备和至少一个输出设备的数据和指令,并且将指令和数据发送给存储系统、至少一个输入设备和至少一个输出设备。
这些计算机程序(也称为程序、软件、软件应用或代码)包括可编程处理器的机器指令,并且可以用高级程序和/或面向对象的编程语言和/或用汇编/机器语言来实施。如本文中所使用的,术语“机器可读介质”和“计算机可读介质”指的是用于将机器指令和/或数据提供给可编程处理器的任何计算机程序产品、非暂时性计算机可读介质、装置和/或设备(例如,磁盘、光盘、存储器、可编程逻辑器件(PLD)),包括接收机器指令作为机器可读信号的机器可读介质。术语“机器可读信号”指的是用于将机器指令和/或数据提供给可编程处理器的任何信号。
本说明书中所描述的过程和逻辑流程可以由一个或多个可编程处理器进行,该可编程处理器执行一个或多个计算机程序以通过对输入数据进行操作和生成输出来执行功能。过程和逻辑流程也可以由例如,FPGA(现场可编程门阵列)或ASIC(专用集成电路)的专用逻辑电路系统执行。通过示例的方式,适合执行计算机程序的处理器不仅包括通用和专用微处理器,而且包括任何种类的数字计算机的任何一个或多个处理器。一般而言,处理器将接收来自只读存储器或随机存取存储器或两者的指令和数据。计算机的基本元件是用于执行指令的处理器和用于存储指令和数据的一个或多个存储器设备。一般而言,计算机还将包括用于存储数据的一个或多个海量存储设备,例如,磁盘、磁光盘或光盘,或可操作地耦合以接收来自该海量存储设备的数据或将数据传输给该海量存储设备或进行这两种操作。然而,计算机不需要有这样的设备。适合存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,通过示例的方式,包括半导体存储器设备,例如,EPROM、EEPROM和闪速存储器设备;磁盘,例如,内部硬盘或可移动盘;磁光盘;CD-ROM盘和DVD-ROM盘。处理器和存储器可以由专用逻辑电路系统补充或可以并入该专用逻辑电路系统中。
为了提供与用户的交互,本公开的一个或多个方面可以在计算机上实施,该计算机具有显示设备,例如,用于向用户显示信息的CRT(阴极射线管)、LCD(液晶显示器)监视器或触摸屏,可选地具有键盘和指向设备,例如,鼠标或轨迹球,用户可以通过该键盘和该指向设备将输入提供给计算机。其他种类的设备也可以用于提供与用户的交互,例如,提供给用户的反馈可以是任何形式的感觉反馈,例如,视觉反馈、听觉反馈或触觉反馈,并且来自用户的输入可以以任何形式被接收,包括声音、语音或触觉输入。另外,计算机可以通过将文档发送给用户所使用的设备并且从该设备接收文档,例如,通过响应于从网页浏览器接收到的请求将网页发送给用户的客户端设备上的网页浏览器,来与用户进行交互。
已经描述了许多实施方式。然而,将理解,在不脱离本公开的精神和范围的情况下可以做出各种修改。因此,其他实施方式在以下权利要求书的范围内。
Claims (20)
1.一种方法(300),包括:
在数据处理硬件(134)处从数据存储系统(140)的用户接收用户数据(12),所述用户数据(12)包括分区键(14)、聚类键(16)以及定义所述用户数据(12)的总数据大小的相应总行数(18),所述用户数据(12)的每个行(18)与所述分区键(14)所定义的相应值相关联并且包括一个或多个列;
通过所述数据处理硬件(134)标识所述数据存储系统(140)的存储约束(144),所述存储约束(144)包括目标文件大小和每个文件(224)的目标行数;
通过所述数据处理硬件(134)基于以下确定所述用户数据(12)的多个拆分点(212):
所述用户数据(12)的所述相应总行数(18);
所述用户数据(12)的所述总数据大小;
来自所述存储约束(144)的所述目标文件大小;以及
来自所述存储约束(144)的每个文件(224)的所述目标行数;
通过所述数据处理硬件(134)从所述多个拆分点(212)生成分区分位数(222),所述分区分位数(222)定义所述多个拆分点(212)中的每个拆分点(212)之间的范围;以及
通过所述数据处理硬件(134)使用所述分区分位数(222)基于所述分区键(14)所定义的所述相应值将所述用户数据(12)的每个行都范围分区到文件(224)中,所述文件(224)存储所述用户数据(12),并且被配置为构造根据所述聚类键(16)分类的表格。
2.根据权利要求1所述的方法(300),进一步包括在所述数据处理硬件(134)处,从所述数据存储系统(140)的所述用户接收数据加载请求(160),所述数据加载请求(160)请求所述数据存储系统(140)对未知数量的未来用户数据(12)进行范围分区,其中,所接收到的用户数据(12)包括所述未知数量的未来用户数据(12)。
3.根据权利要求2所述的方法(300),其中,所述数据加载请求(160)请求所述数据存储系统(140)存储所述未来用户数据(12)。
4.根据权利要求2或3所述的方法(300),其中,所述数据加载请求(160)发生在与所述数据存储系统(140)通信的数据查询系统(150)处,所述数据查询系统(150)被配置为查询所述数据存储系统(140)中所存储的所述用户的数据。
5.根据权利要求1至4中的任一项所述的方法(300),其中,所述用户数据(12)对应于大量满足动态范围分区阈值(152)的流式用户数据(12),所述动态范围分区阈值(152)指示最小总数据大小。
6.根据权利要求1至5中的任一项所述的方法(300),其中,使用所述分区分位数(222)基于所述分区键(14)所定义的所述相应值将所述用户数据(12)的每个行都范围分区到文件(224)中包括:
为任何缺失日期生成空分区(226);以及
在对所述用户数据(12)执行查询期间:
标识所述查询包括相应缺失值;以及
从所述查询的读取操作中排除所述空分区(226)。
7.根据权利要求6所述的方法(300),进一步包括:
在所述数据处理硬件(134)处接收用于范围分区的最大分区数;以及
通过所述数据处理硬件(134)确定相应非空分区数(226)小于所述最大分区数。
8.根据权利要求7所述的方法(300),其中,确定所述相应分区数小于所述最大分区数包括:
生成所述用户数据(12)中的所述分区键(14)所定义的多个不同值的计数(228);以及
将所述用户数据(12)中的所述分区键(14)所定义的所述多个不同值的所述计数(228)与所述最大分区数进行比较。
9.根据权利要求1至8中的任一项所述的方法(300),其中,所述存储约束(144)进一步包括最大分区数,并且所述方法进一步包括:
通过所述数据处理硬件(134)确定所生成的分区分位数(222)的所述数量是否小于所述最大分区数,以及
其中,当所生成的分区分位数(222)的所述数量小于所述最大分区数时,发生使用所述分区分位数(222)基于所述分区键(14)所定义的所述相应值将所述用户数据(12)的每个行范围分区到所述文件(224)中。
10.根据权利要求1至9中的任一项所述的方法(300),进一步包括:
在所述数据处理硬件(134)处,从所述数据存储系统(140)的所述用户接收数据加载请求(160),所述数据加载请求(160)请求所述数据存储系统(140)对未知数量的未来用户数据(12)进行范围分区,其中,所接收到的用户数据(12)包括所述未知数量的未来用户数据(12);
在所述数据处理硬件(134)处接收用于所述范围分区的最大分区数;以及
在所述数据加载请求(160)的运行时间期间,通过所述数据处理硬件(134)确定所生成的分区分位数(222)的所述数量是否大于所述最大分区数,
其中,当所生成的分区分位数(222)的所述数量大于所述最大分区数时,无法执行使用所述分区分位数(222)基于所述分区键(14)所定义的所述相应值将所述用户数据(12)的每个行范围分区到所述文件(224)中。
11.一种系统(100),包括:
数据处理硬件(134);以及
存储器硬件(136),所述存储器硬件(136)与所述数据处理硬件(134)通信,所述存储器硬件(136)存储指令,所述指令在所述数据处理硬件(134)上执行时使所述数据处理硬件(134)执行操作,所述操作包括:
从数据存储系统(140)的用户接收用户数据(12),所述用户数据包括分区键(14)、聚类键(16)以及定义所述用户数据(12)的总数据大小的相应总行数(18),所述用户数据(12)的每个行(18)与所述分区键(14)所定义的相应值相关联并且包括一个或多个列;
标识所述数据存储系统(140)的存储约束(144),所述存储约束(144)包括目标文件大小和每个文件(224)的目标行数;
基于以下确定所述用户数据(12)的多个拆分点(212):
所述用户数据(12)的所述相应总行数(18);
所述用户数据(12)的所述总数据大小;
来自所述存储约束(144)的所述目标文件大小;以及
来自所述存储约束(144)的每个文件(224)的所述目标行数;
从所述多个拆分点(212)生成分区分位数(222),所述分区分位数(222)定义所述多个拆分点(212)中的每个拆分点(212)之间的范围;以及
使用所述分区分位数(222)基于所述分区键(14)所定义的所述相应值将所述用户数据(12)的每个行(18)都范围分区到文件(224)中,所述文件(224)存储所述用户数据(12),并且被配置为构造根据所述聚类键(16)分类的表格。
12.根据权利要求11所述的系统(100),其中,所述操作进一步包括从所述数据存储系统(140)的所述用户接收数据加载请求(160),所述数据加载请求(160)请求所述数据存储系统(140)对未知数量的未来用户数据(12)进行范围分区,其中,所接收到的用户数据(12)包括所述未知数量的未来用户数据(12)。
13.根据权利要求12所述的系统(100),其中,所述数据加载请求(160)请求所述数据存储系统(140)使用所述聚类键(16)来存储所述未来用户数据(12)。
14.根据权利要求12或13所述的系统(100),其中,所述数据加载请求(160)发生在与所述数据存储系统(140)通信的数据查询系统(150)处,所述数据查询系统(150)被配置为查询所述数据存储系统(140)中所存储的所述用户的数据。
15.根据权利要求11至14中的任一项所述的系统(100),其中,所述用户数据(12)对应于大量满足动态范围分区阈值(152)的流式用户数据(12),所述动态范围分区阈值(152)指示最小总数据大小。
16.根据权利要求11至15中的任一项所述的系统(100),其中,使用所述分区分位数(222)基于所述分区键(14)所定义的所述相应值将所述用户数据(12)的每个行都范围分区到文件(224)中包括:
为任何缺失日期生成空分区(226);以及
在对所述用户数据(12)执行查询期间:
标识所述查询包括相应缺失值;以及
从所述查询的读取操作中排除所述空分区(226)。
17.根据权利要求16所述的系统(100),其中,所述操作进一步包括:
接收用于范围分区的最大分区数;以及
确定相应非空分区数(226)小于所述最大分区数。
18.根据权利要求17所述的系统(100),其中,确定所述相应分区数小于所述最大分区数包括:
生成所述用户数据(12)中的所述分区键(14)所定义的多个不同值的计数(228);以及
将所述用户数据(12)中的所述分区键(14)所定义的所述多个不同值的所述计数(228)与所述最大分区数进行比较。
19.根据权利要求11至18中的任一项所述的系统(100),其中,所述存储约束(144)进一步包括最大分区数,并且所述操作进一步包括:
确定所生成的分区分位数(222)的所述数量是否小于所述最大分区数,以及
其中,当所生成的分区分位数(222)的所述数量小于所述最大分区数时,发生使用所述分区分位数(222)基于所述分区键(14)所定义的所述相应值将所述用户数据(12)的每个行范围分区到所述文件(224)中。
20.根据权利要求11至19中的任一项所述的系统(100),其中,所述操作进一步包括:
从所述数据存储系统(140)的所述用户接收数据加载请求(160),所述数据加载请求(160)请求所述数据存储系统(140)对未知数量的未来用户数据(12)进行范围分区,其中,所接收到的用户数据(12)包括所述未知数量的未来用户数据(12);
接收用于所述范围分区的最大分区数;以及
在所述数据加载请求(160)的运行时间期间,确定所生成的分区分位数(222)的所述数量是否大于所述最大分区数,
其中,当所生成的分区分位数(222)的所述数量大于所述最大分区数时,无法执行使用所述分区分位数(222)基于所述分区键(14)所定义的所述相应值将所述用户数据(12)的每个行范围分区到所述文件(224)中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/872,238 | 2020-05-11 | ||
US16/872,238 US11423049B2 (en) | 2020-05-11 | 2020-05-11 | Execution-time dynamic range partitioning transformations |
PCT/US2021/029499 WO2021231082A1 (en) | 2020-05-11 | 2021-04-27 | Execution-time dynamic range partitioning transformations |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115552392A true CN115552392A (zh) | 2022-12-30 |
Family
ID=75919470
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180034309.0A Pending CN115552392A (zh) | 2020-05-11 | 2021-04-27 | 执行时间动态范围分区变换 |
Country Status (6)
Country | Link |
---|---|
US (2) | US11423049B2 (zh) |
EP (1) | EP4150481A1 (zh) |
JP (1) | JP7292539B2 (zh) |
KR (1) | KR20230005392A (zh) |
CN (1) | CN115552392A (zh) |
WO (1) | WO2021231082A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11526527B2 (en) * | 2019-04-04 | 2022-12-13 | Sap Se | Data transfer in a computer-implemented database |
US11537557B2 (en) * | 2020-05-22 | 2022-12-27 | Microsoft Technology Licensing, Llc | Incrementally improving clustering of cross partition data in a distributed data system |
US11704298B2 (en) * | 2021-03-05 | 2023-07-18 | Microsoft Technology Licensing, Llc | Measuring and improving index quality in a distributed data system |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0801773B1 (en) * | 1995-11-02 | 2004-01-21 | International Business Machines Corporation | Storage plane organization and storage systems based thereon |
FR2906624A1 (fr) * | 2006-10-03 | 2008-04-04 | Bull S A S Soc Par Actions Sim | Systeme et procede de stockage de masse. |
US9053167B1 (en) * | 2013-06-19 | 2015-06-09 | Amazon Technologies, Inc. | Storage device selection for database partition replicas |
US9633051B1 (en) * | 2013-09-20 | 2017-04-25 | Amazon Technologies, Inc. | Backup of partitioned database tables |
US9817856B2 (en) * | 2014-08-19 | 2017-11-14 | Sap Se | Dynamic range partitioning |
JP6442951B2 (ja) * | 2014-09-25 | 2018-12-26 | 富士通株式会社 | データ処理方法、データ処理プログラム及びデータ処理装置 |
US10223437B2 (en) * | 2015-02-27 | 2019-03-05 | Oracle International Corporation | Adaptive data repartitioning and adaptive data replication |
US11221890B2 (en) * | 2016-06-22 | 2022-01-11 | Verizon Media Inc. | Systems and methods for dynamic partitioning in distributed environments |
US10817540B2 (en) * | 2016-09-02 | 2020-10-27 | Snowflake Inc. | Incremental clustering maintenance of a table |
US11921750B2 (en) * | 2018-10-29 | 2024-03-05 | Salesforce, Inc. | Database systems and applications for assigning records to chunks of a partition in a non-relational database system with auto-balancing |
US10817466B2 (en) * | 2019-03-22 | 2020-10-27 | Bank Of America Corporation | Dynamic server pool data segmentation using dynamic ordinal partition key without locks |
-
2020
- 2020-05-11 US US16/872,238 patent/US11423049B2/en active Active
-
2021
- 2021-04-27 WO PCT/US2021/029499 patent/WO2021231082A1/en unknown
- 2021-04-27 JP JP2022568602A patent/JP7292539B2/ja active Active
- 2021-04-27 CN CN202180034309.0A patent/CN115552392A/zh active Pending
- 2021-04-27 EP EP21725951.4A patent/EP4150481A1/en active Pending
- 2021-04-27 KR KR1020227043356A patent/KR20230005392A/ko unknown
-
2022
- 2022-07-25 US US17/814,694 patent/US20220358142A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
JP7292539B2 (ja) | 2023-06-16 |
KR20230005392A (ko) | 2023-01-09 |
US20210349648A1 (en) | 2021-11-11 |
US11423049B2 (en) | 2022-08-23 |
WO2021231082A1 (en) | 2021-11-18 |
US20220358142A1 (en) | 2022-11-10 |
EP4150481A1 (en) | 2023-03-22 |
JP2023518113A (ja) | 2023-04-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10691646B2 (en) | Split elimination in mapreduce systems | |
US20210240735A1 (en) | System and method for supporting large queries in a multidimensional database environment | |
US10860598B2 (en) | Systems and methods for interest-driven business intelligence systems including event-oriented data | |
US9767174B2 (en) | Efficient query processing using histograms in a columnar database | |
CN103177061B (zh) | 分区表中的唯一值估计 | |
US10977248B2 (en) | Processing records in dynamic ranges | |
JP7292539B2 (ja) | 実行時の動的レンジパーティショニング変換 | |
US20160328432A1 (en) | System and method for management of time series data sets | |
US7167859B2 (en) | Database security | |
US10031942B2 (en) | Query optimization with zone map selectivity modeling | |
US11163735B2 (en) | Database capacity estimation for database sizing | |
US20070226177A1 (en) | Evaluating a current partitioning of a database | |
US11422881B2 (en) | System and method for automatic root cause analysis and automatic generation of key metrics in a multidimensional database environment | |
US20150081353A1 (en) | Systems and Methods for Interest-Driven Business Intelligence Systems Including Segment Data | |
CN104615785A (zh) | 一种基于TYKY cNosql数据库的数据存储方法及装置 | |
EP3940547B1 (en) | Workload aware data partitioning | |
US7383279B2 (en) | Unified reporting | |
Thaker et al. | Overlook: Differentially private exploratory visualization for big data | |
US6732115B2 (en) | Chameleon measure and metric calculation | |
Mahlknecht et al. | Efficient computation of parsimonious temporal aggregation | |
CN117609362A (zh) | 一种数据处理方法、装置、计算机设备及存储介质 | |
CN118467550A (zh) | 一种数据写入的方法和装置 | |
Akbarinia et al. | Aggregation-Aware Compression of Probabilistic Streaming Time Series |
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 |