CN106233287B - 对大型数据集的数据库查询的管理 - Google Patents
对大型数据集的数据库查询的管理 Download PDFInfo
- Publication number
- CN106233287B CN106233287B CN201580021377.8A CN201580021377A CN106233287B CN 106233287 B CN106233287 B CN 106233287B CN 201580021377 A CN201580021377 A CN 201580021377A CN 106233287 B CN106233287 B CN 106233287B
- Authority
- CN
- China
- Prior art keywords
- data
- grouping
- data block
- block
- server
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
-
- 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/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了向外扩展并且管理对大型数据文件或数据集的数据库查询。在存储储存库处接收到的大型数据文件或数据集被分成多个数据片段或数据块。数据片段或数据块的子集的分组被存储在多个服务器中的每一者处。当接收到来自企业的用于对数据文件或数据集进行处理的数据查询时,该查询被传递给每一服务器,并且在每一服务器处对较小的各数据块分组同时运行。查询过程的结果被返回回到主服务器。重复结果被丢弃,并且剩余的结果被聚合。接着可以从经聚合的结果中生成报告并且可以将报告传递回到查询方企业。
Description
背景
企业(例如公司)、教育实体、政府实体等常常为它们的员工、学生和分支机构运作数百或数千个计算机和计算系统。通常,此类计算机和计算机系统在各个企业位置处操作,或者通常,此类计算机或计算机系统在大型数据中心处操作。许多企业经由在企业远程操作的数据存储和处理服务供应商来存储和处理数据,其中数据存储、数据处理和在线服务通过分布式计算网络(诸如因特网)在远程服务供应商处被提供。
通常,企业将数据查询发送到服务供应商以运行对在服务供应商处或者在相关联的服务供应商数据中心处存储和运作的企业数据和系统的各种处理作业。由企业提交的查询包括由企业创建的查询逻辑,以使得企业可以在服务供应商或数据中心处的企业数据和订阅系统上执行自助服务查询。例如,企业可以将数据查询发送到大型数据中心/服务供应商,以生成详述由登录到在线软件服务的其数千或甚至数百万消费者使用的各种计算机操作系统的报告。此类报告可能被企业需要用来恰当地管理其计算资源。不幸的是,与此类大量用户或系统相关联的数据可能淹没数据查询被发送到的服务供应商的数据库、数据库服务和处理功能。通常,对此类大型数据集应用的数据查询花费过量的时间来处理,或者由于接收方服务供应商的资源限制而整体失败。
本发明正是关于这些以及其它考虑因素而被作出的。
概述
提供本概述以便以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本概述并不旨在标识出所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
以上和其它问题通过用于大型数据集的报告基础结构来解决,该报告基础结构提供了用于向外扩展和管理对大型数据文件或数据集的数据库查询的方法和系统。根据本发明的各方面,在存储储存库(数据中心和/或服务供应商)处接收到的大型数据文件或数据集被分成多个数据片段或数据块。数据片段或数据块的子集的分组(例如,三个数据块的分组)被存储在多个服务器中的每一者(例如,在服务器群集中操作的12个服务器中的每一者)处。
当接收到来自企业的用于对数据文件或数据集进行处理的数据查询时,该查询被传递给每一服务器,并且在每一服务器处对较小的各数据块分组同时运行。查询过程的结果被返回回到主服务器。重复结果被丢弃,并且剩余的结果被聚合。接着可以从经聚合的结果中生成报告并且可以将报告传递回到查询方企业。
一个或多个实施例的细节在附图和以下描述中阐述。根据对以下详细描述的阅读和对相关联附图的审阅,其它特征和优点将是显而易见的。应当理解,以下详细描述只是解释性的并且不限制如要求保护的本发明。
附图简述
合并在本公开中且构成本公开的一部分的附图解说了本发明的各个方面。
图1是用于处理对被分成较小数据块的大型数据文件或数据集的数据查询的系统架构的一个示例的简化框图。
图2A解说了被分成可处理对其的数据查询的数据块的大型数据文件或数据集。
图2B解说了用于在对应的服务器处处理多个数据块的系统架构的一个示例。
图3是用于处理对被分成较小数据块的大型数据文件或数据集的数据查询的示例方法的流程图。
图4是解说可用来实施本发明的各方面的计算设备的示例物理组件的框图。
图5A和5B是可用来实施本发明的各方面的移动计算设备的简化框图。
图6是可用来实施本发明的各方面的分布式计算系统的简化框图。
详细描述
以下详细描述引用附图。只要可能,就在附图和以下描述中使用相同的附图标记来指示相同或类似的要素。尽管描述了本发明的实施例,但是修改、调适、以及其它实现是可能的。例如,可对附图中所解说的元素进行替换、添加或修改,并且可通过对所公开的方法替换、重排或添加阶段来修改本文中所描述的方法。因此,以下详细描述不限制本发明,而是相反,本发明的准确范围由所附权利要求定义。
如上所简要描述的,本发明的各方面涉及向外扩展和管理对大型数据文件或数据集的数据库查询。在存储储存库处接收到的大型数据文件或数据集被分成多个数据片段或数据块。数据片段或数据块的分组被存储在多个服务器中的每一者处。接收到的用于对数据文件或数据集进行处理的数据查询被传递到每一服务器,并且在每一服务器处对较小的各数据片段/数据块分组同时运行。查询过程的结果被返回回到主服务器。重复结果被丢弃,并且剩余的结果被聚合以回头向查询方(例如,企业或其它个体或实体)进行报告。
现在参照图1,解说并描述了用于在源(例如,企业、个体或其它实体)与服务供应商或相关联的数据中心之间上传和下载数据文件、数据集、查询、以及对查询的相应的示例系统架构。根据本发明的各方面,该系统架构100包括各种示例计算组件,该计算组件用于在各种源计算系统(或个体计算机)到各种目的地位置(诸如数据中心和服务供应商)之间传递数据、查询和响应信息。
在图1的底部,数据中心105解说由企业或服务的个体或实体订户(之后称为“企业”或“订户”)操作的数据中心,企业或服务的个体或实体订户可能需要向数据中心或服务供应商(之后称为“数据中心”或“服务供应商”)上传各种类型的数据(包括生产和测试查询),该该数据中心处经上传的数据和查询可以被存储和/或处理。数据中心105可以容纳数百、数千或更多的个体计算机或计算系统110,在这些计算机或计算系统上可以存储各种数据类型的数据,这些数据可以使用各种不同的计算过程(例如,各种软件应用)来处理。例如,计算设备110中的每一者可包括各种类型的计算机,例如,用于在数据库中存储用户数据的服务器计算机、电子邮件系统、文档管理系统等,并且计算系统100可用于运行各种计算系统软件应用,例如,数据库应用、电子邮件系统应用、web服务应用、在线软件供应应用、生产力应用、数据管理系统应用、电信应用等。
如应当领会的,数据中心105还解说许多数据中心之一,这些数据中心可以共处一处,或者可以位于不同位置并且可以经由用于在离散数据中心之间传递数据的各种传输系统与彼此相关联。另外,尽管数据中心105如上所述被解说为其中多个计算机系统110可位于其中以用于提供数据和服务的数据中心,但数据中心105等效地解说了一种实体,诸如公司、教育实体、政府实体或单个计算设备,例如,台式计算机、膝上型计算机、手持式计算机、或由个体用户操作的其它计算设备,用户数据和/或计算机系统生产和测试查询可以从这些计算设备上传到服务供应商。
仍然参考数据中心105,每一计算设备110与上传器模块115相关联,上传器模块115用于上传用户和/或系统数据以及来自每一相关联的计算机/计算系统110的生产或测试查询。如应当领会,数据上传器和下载器可以是相同的模块,并且基于数据移动的方向仅仅被指定为上传器相对于下载器。根据本发明的一方面,上传器模块115可以被安装在每一相关联的计算机/计算系统110上或者可以由每一计算机/计算系统110访问。
数据上传器或下载器(之后也被称为“数据加载器”)115可以利用针对不同类型的数据读取、变换和导出所要求的各种数据读取器、数据变换和数据导出插件模块。例如,需要从在数据中心105处操作的各个计算设备接收经变换的数据的服务供应商可提供数据读取器插件、数据变换插件以及数据导出插件以供数据加载器模块115用于根据它们各自的需求来读取、变换和导出数据。
配置文件或指令可以被提供到给定数据上传器以将处理信息提供给上传器。根据本发明的各方面,上传器模块可被配置成将数据文件、数据集和/或相关联的数据查询直接发送给主服务器220-275(以下参考图2B来描述)以供如本文所述的进行处理。例如,配置文件可以提供上传器模块或者将上传器引导向数据导出插件模块,该数据导出插件模块将允许/导致上传器将数据和查询传递给所要求的主服务器以供处理。
依然参考图1,边缘路由器120解说用于将查询从给定上传器模块传递到数据中心105外部的系统的典型路由器设备。应当理解,边缘路由器120可以负责确保传递自给定数据中心105的数据被正确地传递到理想目的地系统组件,例如,传递自上传器模块的封包化数据被正确地路由到系统100的正确目的地组件。边缘路由器135解说通过其查询可被传递到负责确保在允许接收到的数据和/或查询被传递到服务供应商170处的一个或多个目的地存储储存库145a-c之前接收到的数据和/或查询被正确地认证的代理服务140(下文描述)的接收方边缘路由器。
分布式计算网络125(图1中示出为虚线)解说通过其数据可从数据中心传递到数据中心外部的组件(诸如以下描述的安全数据管理中心/储存库的目的地存储储存库145a-c)的任意网络(诸如因特网或内联网)。
根据各实施例,代理服务140可以执行多种功能。代理服务140可以用作用于对传递至/自潜在不安全企业以及去往数据和/或查询可以在其处被处理的安全数据中心或服务供应商107的数据和查询进行认证的认证点。另外,代理服务可包括或者可以能够读取导出插件模块以导致数据和数据查询被直接分发到指定服务器220-275以供处理,如下文参考图2A-3所描述的。另外,用于将大型数据文件或数据集分成较小数据片段或数据块以及用于将数据片段或数据块分组以供在服务器220-275处进行处理的功能可以在代理服务处操作。
存储储存库145a-c解说可被授权来接收经由上传器模块115上传的数据或查询的任意数据存储储存库。例如,目的地存储储存库145a-c可与服务供应商的安全数据管理中心/储存库相关联以用于(响应于一个或多个生产或测试查询)接收、存储和分析与为服务供应商的订户所提供的计算系统和软件服务相关联的数据。
例如,数据储存库145a可用作针对服务供应商的主安全数据接收储存库。接入点152、154和156表示在数据储存库145a处的接入点,通过这些接入点,数据和查询可从代理服务140传递以用于将数据上传到一个或多个特定数据位置160或用于通过一个或多个特定数据接入点158、162传递数据或查询以用于将数据传递到其他数据储存库145b、145c。如下文参考图2B解说和描述的,数据储存库145a还可容纳服务器群集或服务器集合,在该处数据片段或数据块的分组可以被存储并且按照接收到的查询来处理。然而,如应当领会的,此类服务器群集或服务器集合可以在服务供应商107的任何组件处操作,包括以下描述的储存库145b-c。
数据储存库145b可被指定为用于接收和分析用户数据和系统数据以及与一个或多个服务或数据类型相关联的各种查询。例如,数据储存库145b解说在给定服务供应商的安全数据管理中心/储存库144处操作的云服务系统。调度器模块166解说用于调度去往和来自数据储存库145b的数据上传和下载的软件模块或设备。抽取器模块168解说用于分发去往和来自数据储存库145b的组件的数据的软件模块或设备。分析模块170解说用于输出和/或显示或以其他方式呈现来自存储储存库145b的数据的软件模块或设备。
目的地存储储存库145c解说服务供应商107的另一组件。例如,目的地存储储存库145c可以具有在服务供应商107处操作的数据库系统的形式。调度器模块166解说用于调度去往和来自数据储存库145c的数据上传和下载的软件模块或设备。抽取器模块168解说用于分发去往和来自数据储存库145c的组件的数据的软件模块或设备。分析模块170解说用于输出和/或显示或以其他方式呈现来自存储储存库145c的数据的软件模块或设备。
如应当理解的,对于服务供应商的各组件和个别组件145a、145b、145c的描述仅仅是出于示例和说明的目的,而并非是对于可作为数据可被上传到其或从其数据可从外部(并且潜在的不安全的)数据生成器/用户下载或从其数据可被下载到外部(并且潜在的不安全的)数据生成器/用户的安全数据管理中心/储存库的一部分来操作的各种其他组件或系统的限制。例如,安全数据管理中心/储存库107的各组件可提供在线软件和数据管理供应,例如对经由一个或多个在线软件应用服务和数据管理系统被提供到各个用户的文字处理服务、幻灯片演示应用服务、数据库应用服务、电子表格应用服务、电信应用服务等的供应。
图2A解说了被分成可处理对其的数据查询的数据片段或数据块的大型数据文件或数据集。如上简要描述的,根据本发明的各方面,数据查询可应用于的大型数据文件或数据集可以被存储在数据中心和/或服务供应商处。例如,如图2A中解说的,给定数据文件210可包括存储在数据中心145a-c处的与给定企业的各种操作相关联的数百千兆字节或更多的数据,如上文参考图1解说和描述的。
例如,如图2A中解说的,数据文件210可包括表示用于由给定企业管理的数千或数百万计算机或计算机用户的登录数据、使用数据、认证数据等等的数据。时不时地,其数据被存储的企业可以将数据查询传递到存储储存库以请求在数据文件210上运行各种聚合、估算和/或计算。例如,所存储的数据库功能可以在存储储存库145a处操作,并且从请求方企业传递到存储储存库的数据查询可以传递导致要生成传递回请求方企业的报告的查询参数,例如,要被应用于数据文件210中包含的数据的计算或问题。例如,请求方企业可以传递具有参数的数据查询,这些参数要求计算使用许多不同的计算机操作系统中的每一者来登录到其系统的其顾客的数目,以允许企业评估和管理其资源。如应当理解的,这些仅仅是可以如本文所述地被存储和处理的几乎无限的数目和类型的数据项的若干示例。
仍然参考图2A,根据本发明的各方面,数据文件210可以被分成多个数据片段或数据块,例如,如图2A中解说的12个数据块215。如应当领会的,数据文件可以被拆分成多个相同大小的数据片段或数据块(之后被称为“数据片段”或“数据块”以意指给定数据集或数据文件的一部分或子集),或者数据文件可以在逻辑断点处被拆分成单独的数据片段或数据块,其中每一数据片段或数据块是不同文件大小。即,如应当领会的,一个数据块可包括某一类别或类型的数据,第二数据块可包括第二类别或类型的数据,并且以此类推,其中所有数据片段或数据块的总和包括总的数据文件或数据集。
仍然参考图2A,根据本发明的各方面,从数据文件210分出的数据块可以被分组到数据块分组中,并且每一数据块分组可以被存储在不同的服务器处,例如,包括存储储存库145a-c处的服务器群集的服务器,如上参考图1解说和描述的。根据本发明的一方面,数据块分组被组织成使得被置于每一数据块分组中的数据块与相继的数据块交叠,从而当数据块分组针对在单独服务器中的每一者处接收到的数据查询被处理时,每一数据块跨服务器集被处理多次(至少两次或更多次)。
如图2A解说的,例如,在服务器1处,数据块1、2和3被存储。在服务器2处,数据块2、3和4被存储。在服务器3处,数据块3、4和5被存储。在服务器4处,数据块4、5和6被存储,并且以此类推。因而,如下文参考图3进一步详细描述的,如果在每一服务器处对每一数据块分组应用相同的查询逻辑,则每一数据块将跨服务器集被处理多次。例如,对于如图2A中解说的12个数据块布局和12个服务器布局,每一数据块1-12将跨服务器1-12集被处理三次。因而,如果查询逻辑在任何各定服务器1-12处失败,或者如果服务器计算系统的故障在给定服务器处发生,则应用于或者试图被应用于该服务器的处理可以被丢弃,并且因为在服务器1-12中的每一者处并行地应用于每一数据块的处理的冗余性,每一数据块的处理的可靠性被确保。
如应当领会的,数据文件210分成12个数据块215并且在12个单独的服务器处处理三个数据块分组中的数据块是仅出于示例和解说的目的,并且不限于可被利用的其它数据文件划分、数据块分组、和服务器布局。例如,如果期望,数据文件可以被分成15个数据块,并且数据块可以被分组成四个数据块分组,该四个数据块分组集诶这可以在15个服务器上运行以达成类似的冗余性和可靠性结果。即,根据本发明的各方面,将大型数据文件或数据集分成之后在单独服务器中被处理的片段或块使得每一数据片段或数据块被处理至少超过一次是确保在每一服务器处对较小量的数据的处理以及确保数据的每一片段或每一块实际上被处理的关键。
图2B解说了用于在对应的服务器处处理多个数据块的系统架构的一个示例。如图2B解说的,多个数据中心105a-n被解说,来自该多个数据中心的数据文件或数据集以及要对数据文件或数据集进行操作的数据查询可以通过代理服务140跨分布式计算网络125传递以存储在大型数据中心或服务供应商的存储储存库145a处的各个存储储存库服务器220-275处,如上文参考图1解说和描述的。接入点152、154、156解说可以被用于从代理服务140接收数据集和数据查询以及用于将数据文件和数据查询定向到服务器220-275中的每一者的接入点。
根据本发明的一个方面,图2B中解说的数据集分组和分发模块218是用于将接收到的数据文件拆分成数据块以及用于将数据块的分组分发到服务器220-275中的每一者的软件模块或设备,如上参考图2A所描述的。数据集分组和分发模块218可以在存储储存库145a处访问服务器220-275中的每一者来操作,或者它可以在服务器220-275中的一者处操作以用于接收、划分、分组数据块以及将数据块分发到其它服务器220-275以供处理。替换地,数据集分组和分发模块218可以在代理服务140处操作,并且相关联的上传插件模块可以在代理服务140处操作以自动地将每一数据块分组传递到专用服务器220-275以供处理,如上参考图2A所描述的。替换地,接入点152、154、156可包括将接收到的数据文件拆分成数据块以及用于将数据块进行分组以供分发到服务器220-275中的每一者的数据集分组和分发模块218。根据又一替换方案,数据集分组和分发模块218可以由查询方企业维护在各定数据中心105a-n处,并且每一数据块分组可以经由代理服务140被传递到接收方数据中心和/或服务供应商处的相应服务器220-275,如上参考图1所描述的。
在任何情形中,如上参考图2A解说和描述的,每一数据块分组被传递到相应服务器220-275并且被存储在相应服务器220-275,如数据储存库145a处所解说的。服务器220-275中的每一者中解说的标号的框解说了包括数据块分组的不同数据块,如上参考图2A解说和描述的。
根据本发明的一方面,数据库功能219(由每一服务器中的字符“F”表示)被存储在服务器220-275中的每一者处以用于接收各种类型的数据查询以处理存储在每一相应服务器处的数据块分组。根据一方面,存储在每一服务器220-275处的功能对于给定数据类型或数据查询类型是相同的,以使得传递到每一存储的功能的数据查询可以按照与传递到服务器分组或群集220-275中的每一其它服务器的相同数据查询相同的方式被操作。如应当领会的,任何数目的功能可以被存储在服务器220-275中的每一者处以用于接收和处理对数据块分组的数据查询,如本文所描述的。
为了处理对给定数据文件的数据查询,如上所述,数据查询以及恰适的数据查询参数通过代理服务140从数据中心105a-n处的查询方企业进行传递以用于向相应服务器220-275中的每一者处的存储的功能进行上传和传递。根据本发明的一方面,每一数据查询可以被配置成用于向指定服务器220-275传递,该指定服务器220-275可以用作接收到的数据查询的主服务器220-275。主服务器220-275接着可以将接收到的数据查询分发到其它服务器220-275中的每一者,以使得数据查询被接收并且被分发到服务器220-275中的每一者以供对数据块分组进行处理,如上所述。如应当领会的,服务器220-275中的任一者可以被指定为不同数据查询的主服务器。即,通过将不同服务器220-275指定为不同数据查询的主服务器,与接收和处理数据查询相关联的处理资源和要求跨不同服务器220-275被散布以使得没有一个服务器被处理接收到的数据查询而淹没。
已经参考图1-2B描述了本发明的各方面的示例架构和各组件,图3是用于处理对被分成较小数据片段或数据块的大型数据文件或数据集的数据查询的示例方法的流程图。例程300开始于开始操作305,并且继续至操作310,其中所存储的功能被上传到服务器群集,该服务器群集包括多个服务器,数据文件或数据集210已经被加载或将在操作315从给定企业或数据中心加载到该多个服务器上,并且一个或多个数据查询可以被应用于该多个服务器以允许查询方企业执行各种类型的处理以及用于获得对所上传的数据文件或数据集的各种类型的报告。
在操作320,由企业上传的数据文件或数据集被分成数据块,如上文参考图2A解说和描述的。在操作325,数据块被组织成数据块分组,该数据块分组可以被存储在服务器220-275集中的每一者处以供处理,如上参考图2B所描述的。在操作330,数据块分组被存储在各单独服务器220-275处,如上参考图2A和2B解说和描述的。如上所述,所上传的数据文件和/或数据集可以被分成单独的数据块,并且经由在数据要被存储在该处并且在该处处理的数据中心和/或服务供应商处或者在代理服务140处或者在数据最初从其上传的数据中心105a-n处操作的软件应用和/或设备被组织成数据块分组。
在操作335,在存储储存库145a-n处从查询方企业接收针对接收到的数据文件或数据集的数据查询以针对已经在服务器220-275中的每一者处被划分并且组织成数据块分组的所存储的数据文件或数据集处理数据查询参数的给定集合。在操作340,数据查询以及任何数据查询参数被上传到主服务器220-275,数据查询可以从该主服务器220-275被分发到服务器220-275中的每一者以供对存储在每一相应服务器处的数据块分组来进行操作。
在操作345,接收到的数据查询由主服务器分发到接收数据块分组的每一服务器。在操作350,根据伴随数据查询接收到的数据查询参数,在每一服务器上对每一数据块分组运行数据查询。在操作355,对每一数据块分组在每一服务器处运行数据查询的结果被返回到数据查询从其分发到其它服务器220-275中的每一者的主服务器。
在操作360,重复的结果被丢弃。即,如上参考图2A所描述的,因为数据块分组包括数据块的交叠组合,所以每一数据块被传递到多个数据服务器并且按照相同的数据查询被处理多次。因而,如果每一服务器220-275和应用于存储在相应服务器220-275处的数据块分组的每一数据查询正确操作,则可以针对与每一服务器220-275处的数据块分组一起存储的数据块的每一实例返回结果。即,回头参考图2A,给定数据块(例如数据块2)将在三个不同服务器处被处理三次,并且该服务器对数据块2的处理结果将在操作360被返回到主服务器。因而,在处理每一数据块的结果被聚合之前,重复的结果被丢弃。
在操作365,聚合各查询结果,以使得针对每一数据块聚合单个查询结果以生成整个数据文件或数据集的查询结果的聚合。在操作370,接收到的查询的结果可以用请求方企业规定的任何格式或报告类型或报告模板被提供给请求方企业。如应当领会的,经聚合的查询结果可以被分成数据块,并且可被查询以用于对包括来自起始数据文件的经聚合的查询结果的数据文件的附加分析。即,本文所述的过程可以被应用于被认为在单个服务器处作为单个文件进行处理而言过大的任何数据文件或数据集。例程300在操作395结束。
如从上文应当领会的,大型数据文件或数据集(例如,包括可能许多千兆字节或更多原始数据)可以被分成较小的数据片段或数据块,这些数据片段或数据块接着可以被组织成交叠的数据块分组,以使得每一数据块分组可以根据相同的数据查询在单独服务器处被处理。因而,如果给定数据服务器故障,或者如果存储在给定数据服务器处的数据遭到破坏,则对该数据块分组进行操作的数据查询的结果的可靠性将保持为高,因为数据查询将对重复的数据块运行,从而导致返回重复结果,该重复结果在确保数据结果事实上针对所有数据块被返回之后可以被丢弃。因而,接收到的数据查询的应用的经聚合的结果可以对非常大型的数据文件或数据集来处理,并且所返回的结果的可靠性可以被维持在非常高的水平。
尽管已经在结合在计算机上的操作系统上运行的应用程序执行的程序模块的一般上下文中描述了本发明,但是本领域技术人员将认识到本发明还可结合其它程序模块实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构及其他类型的结构。
本文中所描述的实施例和功能可经由多个计算系统操作,这些计算系统包括而不限于台式计算机系统、有线和无线计算系统、移动计算系统(例如,移动电话、上网本、平板或板式计算机、笔记本计算机、以及膝上型计算机)、手持设备、多处理器系统、基于微处理器或可编程消费性电子设备、小型计算机、以及大型计算机。
另外,本文中所描述的实施例和功能可在分布式系统(例如,基于云的计算系统)上操作,其中应用功能、存储器、数据存储和检索、以及各种处理功能可在分布式计算网络(诸如因特网或内联网)上彼此远程地操作。各种类型的用户界面和信息可经由板上计算设备显示器或者经由与一个或多个计算设备相关联的远程显示单元显示。例如,各种类型的用户界面和信息可显示并且在各种类型的用户界面和信息在其上投影的墙面上交互。与通过其可实践本发明的实施例的多个计算系统的交互包括按键输入、触摸屏输入、语音或其它音频输入、其中相关联的计算设备配备有用于捕捉和解释用户手势以控制计算设备的功能的检测(例如,相机)功能的手势输入等等。
图4-6及相关联的描述提供了其中可实施本发明的各实施例的各种操作环境的讨论。然而,关于图4-6所示出和讨论的设备和系统是用于示例和说明的目的,而非对可被用于实施本文所述的本发明的各实施例的大量计算设备配置的限制。
图4是示出可用来实施本发明的各实施例的计算设备400的物理组件(即硬件)的框图。下面描述的计算设备组件可适用于上述的计算设备110、115、145。在基本配置中,计算设备400可包括至少一个处理单元402以及系统存储器404。取决于计算设备的配置和类型,系统存储器404可包括但不限于易失性存储(例如,随机存取存储器)、非易失性存储(例如,只读存储器)、闪存、或者此类存储器的任何组合。系统存储器404可包括操作系统405和适合于运行软件应用450的一个或多个程序模块406。例如,操作系统405可适合于控制计算设备400的操作。此外,可结合图形库、其它操作系统、或者任何其它应用程序来实践本发明的实施例,并且这些实施例不限于任何特定的应用或系统。该基本配置在图4中由虚线408内的那些组件示出。计算设备400可具有附加特征或功能。例如,计算设备400也可以包括附加的数据存储设备(可移动和/或不可移动),诸如磁盘、光盘或带。这些附加存储在图4中由可移动存储设备409和不可移动存储设备410示出。
如上所声明的,大量程序模块和数据文件可被存储在系统存储器404中。尽管在处理单元402上执行,但是程序模块406可以执行包括但不限于下列过程:图3中所示的方法300的各阶段中的一个或多个。根据本发明的实施例可使用的其他程序模块可包括应用,诸如电子邮件和联系人应用、文字处理应用、电子表格应用、数据库应用、幻灯片演示应用、绘图或计算机辅助应用等。
此外,可在电气电路中实践本发明的实施例,该电气电路包括离散电子元件、包含逻辑门的封装或集成电子芯片、利用微处理器或者在包含电子元件或微处理器的单个芯片上的电路。例如,可以通过片上系统(SOC)来实施本发明的各实施例,其中,可以将图4中示出的每个或许多组件集成到单个集成电路上。此类SOC设备可包括一个或多个处理单元、图形单元、通信单元、系统虚拟化单元、以及各种应用功能,所有这些单元被集成(或“烧制”)到芯片基板上,作为单个集成电路。当通过SOC操作时,在此相对于提供跨多个工作负载的活动流描述的功能可以通过在单个集成电路(芯片)上集成有计算设备/系统400的其它组件的专用逻辑来操作。还可使用能够执行逻辑操作(诸如举例而言,与、或、以及非)的其它技术来实践本发明的实施例,这些技术包括但不限于机械、光学、流体和量子技术。另外,可在通用计算机内或者在任何其它电路或系统中实践本发明的实施例。
计算设备400也可具有一个或多个输入设备412,如键盘、鼠标、笔、语音输入设备、触摸输入设备等等。也可包括(诸)输出设备414,如显示器、扬声器、打印机等等。前述设备是示例,并且可使用其它设备。计算设备400可包括允许与其它计算设备416通信的一个或多个通信连接418。合适的通信连接416的示例包括但不限于RF发射机、接收机、和/或收发机电路系统、通用串行总线(USB)、并行和/或串行端口。
如本文中所使用的术语计算机可读介质可包括计算机存储介质。计算机存储介质可包括以用于存储信息(诸如计算机可读指令、数据结构、或者程序模块)的任何方法和技术实现的易失性和非易失性、可移除和不可移除介质。系统存储器404、可移除存储设备409、以及不可移除存储设备410都是计算机存储介质示例(即,存储器存储)。计算机存储介质可包括RAM、ROM、电可擦除只读存储器(EEPROM)、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光学存储、磁带盒、磁带、磁盘存储或其它磁存储设备、或者可用于存储信息且可由计算设备400访问的任何其它制品。任何此类计算机存储介质可以是计算设备400的一部分。计算机存储介质不包括载波或者其它经传播或经调制的数据信号。
通信介质可通过计算机可读指令、数据结构、程序模块、或者经调制的数据信号(诸如载波或者其他传送机制)中的其他数据体现,并且包括任何信息传递介质。术语“经调制的数据信号”可描述具有以对该信号中的信息进行编码的方式设置或改变的一个或多个特性的信号。通过示例而非限制,通信介质可包括诸如有线网络或直接有线连接之类的有线介质、以及诸如声、射频(RF)、红外和其它无线介质之类的无线介质。
图5A和5B示出可用来实施本发明的各实施例的移动计算环境500,例如移动电话、智能电话、平板个人计算机、膝上型计算机等。参考图5A,示出了用于实现各实施例的移动计算设备500的一个实施例。在基本配置中,移动计算设备500是具有输入元件和输出元件两者的手持计算机。移动计算设备500通常包括显示器505以及允许用户将信息输入移动计算设备500的一个或多个输入按钮510。移动计算设备505的显示器500还可用作输入设备(例如,触摸屏显示器)。如果被包括在内,任选的侧输入元件515允许进一步的用户输入。侧输入元件515可以是旋转开关、按钮、或者任何其它类型的手动输入元件。在替换实施例中,移动计算设备500可合并或多或少的输入元件。例如,在一些实施例中,显示器505可以不是触摸屏。在又一替换实施例中,移动计算设备500是便携式电话系统,诸如蜂窝电话。移动计算设备500还可包括任选的小键盘535。任选的小键盘535可以是物理小键盘或者在触摸屏显示器上生成的“软”小键盘。在各个实施例中,输出元件包括用于示出图形用户界面(GUI)的显示器505、视觉指示器520(例如,发光二极管)、和/或音频换能器525(例如,扬声器)。在一些实施例中,移动计算设备500合并用于向用户提供触觉反馈的振动换能器。在又一实施例中,移动计算设备500结合诸如音频输入(如传声器插孔)、音频输出(如耳机插孔)、以及视频输出(如HDMI端口)之类的外围设备端口540,用于将信号发送到外部设备或从外部设备接收信号。
图5B是示出移动计算设备的一个实施例的架构的框图。即,移动计算设备500可结合一系统(即架构)502以实现某些实施例。在一个实施例中,系统502被实现为能够运行一个或多个应用(例如,浏览器、电子邮件、日历、联系人管理器、消息收发客户端、游戏、以及媒体客户端/播放器)的“智能电话”。在一些实施例中,系统502被集成为计算设备,诸如集成个人数字助理(PDA)和无线电话。
一个或多个应用程序550可被加载到存储器562中,并且在操作系统564上或者与其相关联地运行。应用程序的示例包括电话拨号程序、电子通信程序、个人信息管理(PIM)程序、文字处理程序、电子表格程序、因特网浏览器程序、消息通信程序等等。系统502还包括存储器568内的非易失性存储区域562。非易失性存储区域568可用于存储持久性信息,如果系统502断电,该持久性信息则不会丢失。应用程序550可使用和存储非易失性存储区域568中的信息,诸如电子邮件应用所使用的电子邮件或其它消息等。同步应用(未示出)还驻留在系统502上,并且被编程为与驻留在主机计算机上的相应同步应用交互以使存储在非易失性存储区域568中的信息保持与存储在主机计算机的相应信息同步。如应当理解的,其它应用也可被加载到存储器562并在移动计算设备500上运行。
系统502具有可被实现为一个或多个电池的电源570。电源570可能进一步包括外部电源,诸如补充电池或对电池再充电的AC适配器或供电底座(powered dockingcradle)。
系统502还可包括执行发射和接收射频通信的功能的无线电572。经由通信载体或服务供应者,无线电572促进系统502和“外部世界”之间的无线连接。在操作系统572的控制下进行与无线电564之间的传输。换句话说,可经由操作系统550将无线电572接收到的通信散布到应用程序564反之亦然。
可以使用视觉指示器520来提供视觉通知和/或可以使用音频接口574来通过音频换能器525产生可听通知。在所解说的实施例中,视觉指示器520是发光二极管(LED)而音频换能器525是扬声器。这些设备可直接耦合到电源570以使它们在激活时保持开启达通知机制所陈述的持续时间,即使处理器560以及其它组件可能关闭以节约电池电量。LED可被编程为无限地保持开启,直至用户采取措施来指示该设备的开启状态。音频接口574用于向用户提供听得见的信号且接收来自用户的听得见的信号。例如,除了耦合到音频换能器525以外,音频接口574还可耦合到话筒以接收听得见的输入,诸如促进电话交谈。根据本发明的实施例,话筒还可用作音频传感器以促进对通知的控制,如将在下文中所描述的。系统502可进一步包括允许板载相机530的操作来记录静止图像、视频流等的视频接口576。
实现系统500的移动计算设备502可具有附加特征或功能。例如,移动计算设备500还可包括附加数据存储设备(可移除和/或不可移除),诸如磁盘、光盘或带。这种附加存储设备在图5B中用非易失性存储区568示出。
如上所述,通过移动计算设备500生成或捕捉且经由系统502存储的数据/信息可在本地被存储在移动计算设备500上,或者该数据可被存储在可由该设备经由无线电572或者经由移动计算设备500与关联于移动计算设备500的单独计算设备(例如,分布式计算网络中的服务器计算机(诸如因特网))之间的有线连接访问的任意数量的存储介质上。如应当领会的,可经由移动计算设备500、经由无线电572、或者经由分布式计算网络访问此类数据/信息。类似地,可以在根据熟知的数据/信息转移和存储装置(包括电子邮件和协同数据/信息共享系统)的用于存储和使用的计算设备之间容易地转移此类数据/信息。
图6示出用于跨分布式计算环境的各组件来提供本文中描述的功能的系统的架构的一个实施例。与上文描述的应用相关联地进行开发、交互或编辑的内容可被存储在不同通信信道或其他存储类型中。例如,可使用目录服务622、web门户624、邮箱服务626、即时消息存储628、或者社交网站630来存储各种文档。如本文中描述的,应用450(例如,电子通信应用)可使用用于跨多个工作负载来提供本文中描述的功能的这些类型的系统中的任意。服务器615可将该功能提供到客户端605a-c和110。作为一个示例,服务器615可以是通过web提供本文描述的应用功能的web服务器。服务器615可在web上通过网络125、610向客户端605a-c和110提供应用功能。作为示例,计算设备110可被实现并被具体化在个人计算机605a、平板计算设备605b和/或移动计算设备605c(例如智能电话)、或其他计算设备中。客户端计算设备的这些实施例中的任一个可从存储616获得内容。
例如,以上参考根据本发明的实施例的方法、系统和计算机程序产品的框图和/或操作解说来描述本发明的实施例。框图中所注释的功能/动作可以不按照如任一流程图中所示的次序发生。例如,连续示出的两个框实际上可基本并发地执行,或者取决于所涉及的功能/动作,这些框有时可以相反的次序执行。
本申请中所提供的一个或多个实施例的描述和解说并非旨在限制或限定如以任何方式要求保护的本发明的范围。本申请中所提供的实施例、示例和细节被认为足以传达占有且使其它人能够得到和使用要求保护的发明的最佳模式。要求保护的发明不应当被解释为限于本申请中所提供的任一实施例、示例或细节。不管是组合还是单独地示出和描述,各个(结构和方法)特征旨在选择性地包括或省略以产生具有一组特定特征的实施例。已经提供有本申请的描述和解说,本领域技术人员可设想落入在不背离要求保护的发明的更宽范围的本申请中体现的一般发明性概念的更宽泛方面的精神的变体、修改、以及替换实施例。
Claims (18)
1.一种用于管理对大型数据集的数据库查询的计算机实现的方法,包括:
在数据中心处接收数据集;
将所述数据集分成多个数据块;
将所述多个数据块组织成数据块分组,每一分组是所述多个数据块的子集并且每一分组具有相同数目的数据块;
将所述数据块分组中的每一者存储在不同服务器处;以及
在所述不同服务器中的每一者处,对包括每一数据块分组的每一数据块运行数据查询;
返回对所述多个数据块中的每一者运行所述数据查询的结果;
聚合所述多个数据块中的每一者的结果;以及
将经聚合的结果报告给查询方。
2.如权利要求1所述的计算机实现的方法,其特征在于,进一步包括丢弃所述多个数据块中的任一者的重复结果。
3.如权利要求1所述的计算机实现的方法,其特征在于,将所述多个数据块组织成数据块分组进一步包括:将所述多个数据块组织成数据块分组,其中所述多个数据块被组织成的分组数目使得每一数据块被包括在至少两个或更多个分组中以确保对每一数据块的冗余查询处理。
4.如权利要求3所述的计算机实现的方法,其特征在于,将所述数据集分成多个数据块包括将所述数据集分成12个数据块。
5.如权利要求4所述的计算机实现的方法,其特征在于,将所述多个数据块组织成数据快分组包括将所述多个数据块组织成12个数据块分组。
6.如权利要求5所述的计算机实现的方法,其特征在于,将所述多个数据块组织成数据块分组包括将所述多个数据块组织成每分组包括三个数据块的各个分组,以使得每一数据块被包括在至少三个数据块分组中。
7.如权利要求1所述的计算机实现的方法,其特征在于,进一步包括在每一数据块分组被存储在其上的数据中心处的不同服务器中的每一者上安装所存储的功能。
8.如权利要求7所述的计算机实现的方法,其特征在于,在对包括每一数据块分组的每一数据块运行所述数据查询之前,在其上安装所存储的功能的主服务器处接收数据查询。
9.如权利要求8所述的计算机实现的方法,其特征在于,进一步包括将接收到的数据查询从所述主服务器分发到其上安装所存储的功能的不同服务器中的每一者。
10.如权利要求9所述的计算机实现的方法,其特征在于,接收所述数据查询包括接收具有一个或多个查询参数的所述数据查询以用于致使所述数据查询按照查询方实体所请求的来处理所述数据集。
11.一种用于大型数据集的报告基础结构,包括:
一个或多个处理器;
存储能够由所述一个或多个处理器执行的一个或多个模块的存储器,所述一个或多个模块包括:
数据集分组和分发模块,用于:
在数据中心处接收数据集;
将所述数据集分成多个数据块;
将所述多个数据块组织成数据块分组,每一分组是所述多个数据块的子集并且每一分组具有相同数目的数据块;
将所述数据块分组中的每一者存储在不同服务器处;以及
存储在不同服务器中的每一者处的存储的服务器功能模块,所述存储的服务器功能模块用于:
在不同服务器中的每一者处对包括每一数据块分组的每一数据块运行数据查询;
接收对多个数据块中的每一者运行所述数据查询的结果;
聚合所述多个数据块中的每一者的结果;以及
将经聚合的结果报告给查询方。
12.如权利要求11所述的报告基础结构,其特征在于,所述存储的服务器功能模块进一步用于:丢弃所述多个数据块中的任一者的重复结果。
13.如权利要求11所述的报告基础结构,其特征在于,所述数据集分组和分发模块进一步用于组织所述多个数据块,其中所述多个数据块被组织成分组的数目使得每一数据块被包括在至少两个或更多个分组中以确保对每一数据块的冗余查询处理。
14.如权利要求11所述的报告基础结构,其特征在于,所述数据集分组和分发模块进一步用于:
将所述数据集分成12个数据块;
将所述多个数据块组织成12个数据块分组;以及
将所述多个数据块组织成每分组包括三个数据块的各个分组,以使得每一数据块被包括在至少三个数据块分组中。
15.如权利要求11所述的报告基础结构,其特征在于,所述存储的服务器功能模块进一步用于在对包括每一数据块分组的每一数据块运行所述数据查询之前在所述不同服务器中被指定为主服务器的一个服务器处接收数据查询。
16.如权利要求15所述的报告基础结构,其特征在于,所述存储的服务器功能模块进一步用于将接收到的数据查询从所述主服务器分发到其上安装所述存储的功能的不同服务器中的每一者。
17.一种其上存储有计算机可执行指令的计算机可读介质,所述计算机可执行指令在由计算机执行时执行一种用于管理对大型数据集的数据库查询的方法,包括:
在数据中心处接收数据集;
将所述数据集分成多个数据块;
将所述多个数据块组织成数据块分组,每一分组是所述多个数据块的子集并且每一分组具有相同数目的数据块;
将所述数据块分组中的每一者存储在不同服务器处;
在所述不同服务器中的每一者处,对包括每一数据块分组的每一数据块运行数据查询;
返回对多个数据块中的每一者运行所述数据查询的结果;
聚合所述多个数据块中的每一者的结果;以及
将经聚合的结果报告给查询方。
18.如权利要求17所述的计算机可读介质,其特征在于,进一步包括丢弃所述多个数据块中的任一者的重复结果。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/CN2015/073489 WO2016138614A1 (en) | 2015-03-02 | 2015-03-02 | Management of database queries against large datasets |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106233287A CN106233287A (zh) | 2016-12-14 |
CN106233287B true CN106233287B (zh) | 2019-07-02 |
Family
ID=56849209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201580021377.8A Active CN106233287B (zh) | 2015-03-02 | 2015-03-02 | 对大型数据集的数据库查询的管理 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106233287B (zh) |
WO (1) | WO2016138614A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111400427A (zh) * | 2019-01-02 | 2020-07-10 | 阿里巴巴集团控股有限公司 | 数据存储、查询方法、装置和计算设备 |
US11005654B2 (en) * | 2019-05-14 | 2021-05-11 | Google Llc | Outsourcing exponentiation in a private group |
CN112115420A (zh) * | 2020-09-21 | 2020-12-22 | 携程计算机技术(上海)有限公司 | 基于离散分组的数据统计方法、系统、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101496012A (zh) * | 2006-07-26 | 2009-07-29 | 微软公司 | 非常大数据库上的数据处理 |
CN103473271A (zh) * | 2013-08-20 | 2013-12-25 | 苏州迈科网络安全技术股份有限公司 | 一种针对大量数据的优化储存方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6772166B1 (en) * | 1998-10-02 | 2004-08-03 | Ncr Corporation | SQL-based analytic algorithm for clustering |
US20100332791A1 (en) * | 2009-06-25 | 2010-12-30 | Yu Xu | System, method, and computer-readable medium for optimizing processing of group-by queries featuring maximum or minimum equality conditions in a parallel processing system |
CN101908075A (zh) * | 2010-08-17 | 2010-12-08 | 上海云数信息科技有限公司 | 基于sql的并行计算系统及方法 |
US9081829B2 (en) * | 2011-10-05 | 2015-07-14 | Cumulus Systems Incorporated | System for organizing and fast searching of massive amounts of data |
CN103473334B (zh) * | 2013-09-18 | 2017-01-11 | 中控技术(西安)有限公司 | 数据存储、查询方法及系统 |
-
2015
- 2015-03-02 WO PCT/CN2015/073489 patent/WO2016138614A1/en active Application Filing
- 2015-03-02 CN CN201580021377.8A patent/CN106233287B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101496012A (zh) * | 2006-07-26 | 2009-07-29 | 微软公司 | 非常大数据库上的数据处理 |
CN103473271A (zh) * | 2013-08-20 | 2013-12-25 | 苏州迈科网络安全技术股份有限公司 | 一种针对大量数据的优化储存方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2016138614A1 (en) | 2016-09-09 |
CN106233287A (zh) | 2016-12-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105900396B (zh) | 移动云服务体系架构 | |
US9823950B1 (en) | Dynamically forming and executing application programming interface pipelines | |
US20180227369A1 (en) | Converged service computing platform | |
US8843646B2 (en) | Multi-desktop interaction using nested remote desktop sessions | |
CN109937402A (zh) | 使用回调通知进行数据的出口和入口 | |
CN108431797A (zh) | 电子文档的存储器节约的版本控制 | |
CN107637026A (zh) | 在分布式计算环境中的虚拟机实例上执行命令 | |
CN104081384B (zh) | 用于为在线文档提供计算web服务的系统和方法 | |
CN108028856A (zh) | 在计算机系统之间同步文件数据 | |
CN105940657A (zh) | 基于租户的签名验证 | |
EP3669296B1 (en) | Compliance boundaries for multi-tenant cloud environment | |
CN106062794A (zh) | 显示和导航隐式和显式企业人员关系 | |
CN108369806A (zh) | 可配置的通用语言理解模型 | |
CN109565518A (zh) | 可互换的内容取回 | |
CN106233287B (zh) | 对大型数据集的数据库查询的管理 | |
CN107111649A (zh) | 将用户和系统数据从源位置上传到目的地位置 | |
US11301230B2 (en) | Machine learning multimedia conversion assignment | |
US10769281B2 (en) | Compliant software component infrastructure deployment | |
CN108780541A (zh) | 联系人创建和利用 | |
CN107113202A (zh) | 监视并报告从源位置到目的地位置的数据上传的传输及完整性 | |
US11121986B2 (en) | Generating process flow models using unstructure conversation bots | |
US20200242494A1 (en) | Corpus Gap Probability Modeling | |
US20200019716A1 (en) | Determining viewable screen content | |
CN110140120A (zh) | 上下文洞察系统 | |
CN107077490A (zh) | 数据查询作业提交管理 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |