CN115516432A - 用于识别、管理和监测数据依赖的方法和系统 - Google Patents
用于识别、管理和监测数据依赖的方法和系统 Download PDFInfo
- Publication number
- CN115516432A CN115516432A CN202180032973.1A CN202180032973A CN115516432A CN 115516432 A CN115516432 A CN 115516432A CN 202180032973 A CN202180032973 A CN 202180032973A CN 115516432 A CN115516432 A CN 115516432A
- Authority
- CN
- China
- Prior art keywords
- data
- application
- dependency
- query
- query plan
- 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
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000012544 monitoring process Methods 0.000 title claims abstract description 37
- 238000003860 storage Methods 0.000 claims abstract description 36
- 238000012545 processing Methods 0.000 claims description 37
- 230000001419 dependent effect Effects 0.000 claims description 25
- 230000004044 response Effects 0.000 claims description 19
- 238000010586 diagram Methods 0.000 description 48
- 238000001514 detection method Methods 0.000 description 20
- 238000004891 communication Methods 0.000 description 12
- 238000005516 engineering process Methods 0.000 description 7
- 230000003287 optical effect Effects 0.000 description 7
- 230000009466 transformation Effects 0.000 description 5
- 238000004458 analytical method Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 238000000844 transformation Methods 0.000 description 4
- 239000004065 semiconductor Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012360 testing method Methods 0.000 description 2
- 229920002803 thermoplastic polyurethane Polymers 0.000 description 2
- 230000001131 transforming effect Effects 0.000 description 2
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 239000003990 capacitor Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000007723 transport mechanism 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/90—Details of database functions independent of the retrieved data types
- G06F16/906—Clustering; Classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/907—Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3838—Dependency mechanisms, e.g. register scoreboarding
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)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
提供了用于识别、管理和监测数据依赖的方法和系统。软件正日益被开发为松散耦合的应用的集合。松散耦合的应用通过向诸如数据库、位于存储群集上的文件等数据存储发布数据并从其检索数据来交换数据。由一个应用产生并由另一应用消费的数据被称为数据依赖。在一些实施方式中,通过分析与应用相关联的缓存的查询计划来识别应用的数据依赖。查询计划包括查询的分层结构表示,其中非叶子节点表示命令,叶子节点标识数据依赖。通过遍历查询的分层结构表示来识别应用的数据依赖。通过找到从读命令引出的叶子节点来识别由应用消费的数据依赖,而通过找到从写命令引出的叶子节点来识别由应用产生的数据依赖。
Description
相关申请的交叉引用
本申请要求2020年5月7日提交且名称为"用于识别、管理以及监测数据依赖性的方法和系统"的美国申请16/869,522的优先权,通过引用将该申请的全部公开内容并入本文。
背景技术
软件正逐渐被开发为松散耦合的应用的集合。松散耦合的应用在不同的设备上执行,而由应用产生的数据仍然可以被存储在不同的设备上。松散耦合的应用通过将数据发布至消费应用可以访问的定位来交换数据。尽管这些系统提供了优于其他体系结构的许多优点,但是它们也呈现出许多缺点。例如,每个数据产生应用可以以不同的格式、向不同的定位、按不同的时间表发布数据,并且使用不同的通知机制。作为结果,数据消费应用必须利用多个低级协议和库来适应每个配置。这些协议难以正确地实现,并且是程序错误的常见来源。数据消费应用本身通常也是数据产生应用,进一步使如何交换数据复杂化。因此,管理和监测松散耦合的应用之间的数据依赖是技术挑战。
使用和维护松散耦合的应用的另一技术挑战是识别每一个应用产生什么数据以及每一个应用消费什么数据。当源代码或文档丢失时,手动确定这些“数据依赖”可能是有挑战性的。在没有数据依赖信息的情况下,应用升级、维护和迁移即使不是不可能的,也是困难的。
关于这些和其他技术考虑,提出了本文所作的本公开内容。
发明内容
为了解决以上描述的问题,本文公开的技术识别、管理和监测应用之间的数据依赖。在以下描述的一个方面,通过分析查询历史来识别数据依赖。例如,可以解析缓存的查询计划以识别先前由应用访问的数据依赖。本公开内容的另一方面管理和监测应用之间的数据依赖。例如,服务将数据产生应用如何发布数据依赖的可用性标准化。服务还可以将数据消费应用如何监测所发布的数据标准化。通过改进如何标识、管理和监测应用之间的数据依赖,降低了开发多应用软件系统的成本和复杂性。
在一些实施方式中,通过分析查询历史来识别数据依赖。分析历史使用与源代码分析或执行合成测试以揭示数据依赖截然不同。通过避免源代码分析,所公开的技术可以在任何应用上执行,而不管它是用哪种编程语言编写的,即使源代码不可用。此外,分析历史使用揭示了在现实世界场景中消费的数据源,其可能与在合成测试环境中消费的数据源不同。
在一些实施方式中,通过解析缓存的查询计划对查询历史进行分析以识别数据依赖。查询计划描述查询引擎将如何执行数据查询,包括从哪里检索数据或向哪里写入数据。查询计划被缓存以避免必须针对每个查询重新计算计划。以这种方式,缓存的查询计划创建为了应用而执行的查询的历史记录。
在一些实施方式中,查询计划包含数据命令和数据位置的分层结构。诸如“插入”、“结合”或“选择”的命令由非叶子节点表示,而数据位置由叶子节点表示。应用的数据依赖可以通过选择作为非叶子节点(命令)的后代的叶子节点(数据位置)来识别。作为读命令例如“选择”或“项目(project)”命令的后代的叶子节点识别由应用消费的数据依赖。从写命令例如“插入”或“更新”命令引出的叶子节点识别由应用产生的数据依赖。通过分析与应用相关联的缓存的查询计划,可以以最小的资源使用来识别由应用产生或消费的数据依赖的完整列表。
在一些实施方式中,服务管理和监测应用之间的数据依赖。该服务使得数据产生应用能够管理数据依赖被调度在何时以及何处被发布。对于数据消费应用,服务管理其消费哪些数据依赖,以及如果依赖在调度的时间不可用则做什么。
该服务还在数据依赖实际上已被发布时向消费应用发出警报。服务可以以多种方式确定数据依赖实际上已被发布:直接从数据产生应用接收指示,监测由产生应用指定的通信信道,或者直接监测发布位置。响应于确定数据依赖实际上已被发布,服务将数据依赖实际上已被发布的指示转发给任何消费应用。
在一些实施方式中,当直接监测发布位置以确定数据依赖何时已被发布时,服务可以注册为当在发布位置处已创建包含数据依赖的文件或数据库时被通知。当创建被通知时,服务可以进而向消费应用通知实际发布。服务还可以轮询发布位置以获得指示发布的改变,所述改变包括文件或数据库表的创建或修改。在一些场景中,服务可以确定发布位置的初始状态,并且当轮询时,可以将发布位置的当前状态与发布位置的初始状态进行比较。在当前状态不同于初始状态时,服务可以向消费应用通知实际发布。例如,如果数据依赖将被发布的数据库表已经存在,则服务可以确定表中的初始行数,从而使得服务器能够通过将当前行数与初始行数进行比较来确定是否已将附加数据插入到表中。
通过支持用于确定数据依赖何时实际上已被发布的各种技术,服务减轻了消费应用必须作出这些确定的负担。代替操作和维护用于识别何时数据依赖实际上已被发布的机制,消费应用仅经由应用程序接口(API)注册数据依赖列表和警报机制。这扩展了应用可以依赖的数据依赖的数量,同时减少或消除了由每个消费应用单独实现这些机制所引起的程序错误。
应当理解,以上和以下更详细描述的主题可以被实现为计算机控制的装置、计算机实现的方法、计算设备、或实现为诸如计算机可读存储介质的制品。通过阅读以下具体实施方式并查看相关联的附图,这些和各种其它特征将是明显的。
提供本发明内容以便以简化的形式介绍将在以下具体实施方式中进一步描述的一些概念。本发明内容不旨在识别所要求保护的主题的关键特征或必要特征,也不旨在将本发明内容用于限制所要求保护的主题的范围。此外,所要求保护的主题不限于解决在本公开内容的任何部分中提到的任何或所有缺点的实现方式。
附图说明
将参照附图来描述具体实施方式。在附图中,附图标记最左边的数字标识该附图标记首次出现的附图。不同附图中的相同附图标记指示相似或相同的项目。
图1是示出识别由应用消费的数据依赖的数据依赖检测引擎的一个实施方式的系统图;
图2A是示出从应用接收请求的系统图;
图2B是示出应用向数据查询处理引擎发送数据查询的系统图;
图2C是示出发送至数据依赖的数据检索请求的系统图;
图2D是示出查询计划被高速缓存在查询计划高速缓存中的系统图;
图3A是示出应用注册请求的系统图;
图3B是示出新注册的应用的系统图;
图3C是示出依赖发布请求的系统图;
图3D是示出与新注册的应用相关联的发布的依赖的系统图;
图3E是示出另一应用注册请求和相关联的另一应用注册的系统图;
图3F是示出依赖订阅请求的系统图;
图3G是示出从一个注册的应用到另一个注册的应用的依赖订阅的系统图;
图3H是示出第二依赖订阅请求和从一个注册的应用到另一个注册的应用的相应订阅的系统图;
图3I是示出第三依赖订阅请求的系统图;
图3J是示出下游依赖请求的系统图;
图3K是示出发布状态请求的系统图;
图3L是示出提交给依赖注册和监测引擎的依赖警报请求的系统图;
图3M是示出响应于检测到依赖的发布而发送警报消息的系统图;
图4A是示出查询计划的抽象语法树表示的框图;
图4B是示出抽象语法树的非叶命令节点的框图;
图4C是示出包括数据依赖标识符的叶子节点的框图;
图5是示出根据本文公开的一个实施方式的说明性例程的方面的流程图;
图6是示出根据本文公开的一个实施方式的说明性例程的方面的流程图;
图7是示出能够执行本文所描述的软件部件的计算机的示例计算机体系结构的方面的计算机体系结构图;以及
图8是示出计算环境的说明性示例的数据体系结构图。
具体实施方式
在各种实施方式中,以下的具体实施方式呈现了用于识别、管理和监测松散耦合应用之间的数据依赖的技术。应当理解,尽管主要在分布式计算集群和分布式数据库的上下文中描述本文中公开的技术,但是所公开的技术也可以与任何数据库或计算平台例如Hadoop、Sybase、Oracle DatabaseTM一起利用。
将参照附图描述用于识别、管理和监测松散耦合应用之间的数据依赖的各种技术的各方面,贯穿若干附图,相同的附图标记表示相同的要素。在以下的具体实施方式中,对附图进行了参考,所述附图形成具体实施方式的一部分并且通过说明特定配置或示例的方式示出。
图1是示出了数据依赖检测引擎的一个实施方式的系统图100,该数据依赖检测引擎识别由应用消费的数据依赖。在一些实施方式中,操作客户端计算设备104的用户102向由数据依赖检测引擎111显示的应用程序接口(API)110提交数据依赖识别请求106。数据依赖识别请求106包括应用118的应用名称108以列出其依赖。在一些实施方式中,数据依赖检测引擎111返回数据依赖列表134,该数据依赖列表134包括一个或更多个数据依赖标识符135。
如遍及本文件所提到的,数据依赖或仅“依赖”是指由一个应用产生的用于由另一应用消费的数据资源。以这种方式,消费应用依赖于由产生应用生成的数据,以使消费应用适当地操作。
在一些实施方式中,数据依赖是指由数据产生应用发布的原始数据。可以以包括表、文件、文件夹、流等的多种结构来发布数据。存储在文件中的数据可以被存储在包括二进制文件、基于文本的文件等的任何类型的文件中。基于文本的文件可以以包括逗号分隔值(CSV)、可扩展标记语言(XML)、JavaScript对象符号(JSON)、base64编码等多种不同的格式来存储数据。二进制文件也可以以包括图像文件、压缩文件、可执行文件等的任何格式来存储数据。以表结构发布的数据本身可以被存储在文件中,但是,如下文更详细地讨论的,表数据也可以存储在数据库、基于云的表服务等中。由数据提供应用连续提供的流数据可以是上面提到的格式中的任何一种。
数据依赖还可以是指发布数据的位置。位置可以与存储数据、管理数据和/或提供对数据的访问的硬件和/或软件相关联。例如,数据依赖可以是指结构化查询语言(SQL)数据库、分布式文件系统(例如,HadoopTM文件系统)、传统文件系统、云托管的存储服务等的可寻址部分。例如,某些数据依赖可以是指数据库中的一个或更多个表、分布式文件系统上的文件或文件夹、传统文件系统上的文件或文件夹或者云托管的存储服务上的文件或文件夹。某些数据依赖是反映文件或文件夹的内容的表,所述文件或文件夹包括存储在分布式文件系统上的文件或文件夹。例如,数据依赖可以是包含存储在HadoopTM集群文件系统上的文件中的数据的Hive表。
可以将数据依赖安排为在定义的时间点发布。发布时间可以针对单次发布,例如2020年5月17日。发布时间也可以定期或不定期地重复。例如,可以将数据产生应用安排为每小时或每隔一个星期日发布数据。在其他情况中,可以在生成数据依赖的操作完成时发布数据依赖。
如遍及本文件所提到的,数据的“消费(consuming)”或“消费(consumption)”是指由应用对数据的检索。可以复制消费的数据,使得该数据的副本保留在发布位置处,以由其他应用消费。在安全至关重要的环境中,消费的数据可以在其被复制之后被擦除。
用户102可以是操作客户端计算设备104的人或自动用户代理。客户端计算设备104可以是任何计算设备,例如台式计算机、膝上型计算机、移动电话、平板计算机等。应用名称108可以是完全限定的域名、诸如全球唯一标识符(GUID)的唯一标识符、通用资源定位符(URL)或者可以唯一标识所请求的应用的任何其他名称。
在一些实施方式中,数据依赖检测引擎111可以在任何类型或种类的计算设备上运行,例如在数据中心中托管的单个服务器上运行。在其他实施方式中,数据依赖检测引擎111可以在计算集群112上运行。计算集群112包括许多服务器计算设备,这些服务器计算设备通常共同位于数据中心、服务器场等中。计算集群利用将计算任务和存储请求分配在集群中的计算设备之间的软件。例如,计算集群通常支持可以跨集群的多个节点划分的数据查询操作。由每个节点执行的计算的结果可以被聚合为单个结果。用于创建计算集群的软件库的一个示例是Apache HadoopTM,而用于跨计算集群分配数据查询的一个示例算法是MapReduce算法。
API 110可以被显示为基于超文本传输协议(HTTP)的API,例如代表性状态传输(RESTful)API或简单对象访问协议(SOAP)API。另外地或可替选地,可以使用二进制协议、远程过程调用或任何其他进程间通信技术来显示API 110。
响应于接收到请求106,数据依赖检测引擎111可以识别由应用名称108指示的应用118。然后,数据依赖检测引擎111可以从查询计划缓存113中检索缓存的查询计划114。具体地,数据依赖检测引擎111可以检索在代表应用118执行数据查询时生成的缓存的查询计划。数据依赖检测引擎111可以基于应用名称108或基于关于应用118的一些其他标识信息例如应用ID、应用URL等从查询计划缓存113中检索缓存的查询计划114。在一些配置中,数据依赖检测引擎111检索与应用118相关联的所有缓存的查询计划。然而,数据依赖检测引擎111可以选择性地检索查询计划,包括仅检索在定义的时间点之后生成的查询计划。应用118可以是网络应用、网络服务或者任何其他远程或服务器托管的应用。如所示地,应用118是在计算集群112上执行的应用116之一。
所说明的缓存的查询计划114之一例如缓存的查询计划114A表示当代表特定应用执行一个或更多个数据查询时由查询处理引擎120随时间生成的一个或更多个单独的查询计划。通常对查询计划进行缓存,以节省每次接收到数据查询时重新计算其的成本。然而,出于所公开的实施方式的目的,缓存的查询计划用作代表特定应用处理的数据查询的历史记录来提供。在一些配置中,查询处理引擎120也在计算集群112内执行,尽管类似地设想应用118、查询处理引擎120、查询计划缓存113或图1中所示的其他部件中的任何一个可以在单独的服务器计算机上执行。
在一些实施方式中,查询处理引擎120通过将来自文本文件的数据查询解析成分层抽象语法树来根据数据查询生成查询计划。以这种方式,人类可读数据查询被转换成用于执行所请求的数据查询的一组计算机可读指令。数据查询可以以许多格式或语言例如结构化查询语言(SQL)来表示。一些数据查询可以以SQL数据库122A中的表、分布式表122B、文件夹122C、文件122D或任何其他类型的数据依赖122为目标(即,从其中检索数据或向其发布数据)。一些数据依赖可以位于集群的文件系统中、传统文件系统中、本地内联网上或远程服务器上。数据依赖可以由一个或更多个计算设备托管,并且可以位于计算云中。一些数据查询可以以多个数据源和/或多种类型的数据源为目标。例如,数据查询可以在人力资源数据库中检索年龄在30与40之间的所有人员,并且然后检索存储在每个人员的分布式文件系统上的照片。文件夹、文件和分布式表可以位于传统文件系统或分布式文件系统例如由计算集群112提供的文件系统上。
在处理数据查询时生成的查询计划指示应当检索哪些表、文件或其他资源以执行数据查询。查询计划还指示应当对数据执行哪些操作,例如过滤、聚合、限制、联接等。图1中所示的查询计划——缓存的查询计划132——是在处理以下数据查询时生成的:
“select avg(clicks)from mrkt_data.geo_perf_rpt where dt>’2019-10-10’limit 1000”该查询是针对分布式数据集群例如Hadoop集群设计的。查询处理引擎120将该查询转换成以下命令的层次:“全局限制(gobal limit)”、“局部限制(local limit)”、“聚合(aggregate)”、“项目(project)”、“过滤(filter)”和“关系(relation)”。层次中的每个级接收一个或更多个子节点的输出作为输入。
具体地,“关系”命令从“mrkt-data.geo_perf-rpt”表的“点击”字段中检索条目。在一些情况下,关系命令包括其指代的数据位置的名称或其他标识信息。在其他情况下,关系命令与包含数据位置的名称或其他标识信息的元数据例如Apache Spark CatalogTable对象相关联。在两者中的任何一种情况下,“关系”命令的输出都作为到“过滤”命令的输入提供,这将结果限制于在“2019-10-10”(2019年10月10日)之后进行的点击。过滤命令的输出作为“项目”命令的输入提供,这就像SQL select语句一样可以调整或以其他方式修改其接收到的数据。然而,在这种情况下,“项目”命令将经过滤的点击数据传递至“聚合[avg(clicks#765L)AS avgclicks]”命令,该命令计算接收到的点击次数的平均值。“全局限制1000”和“局部限制1000”命令限制了查询结果的总数和从每个分布式节点返回的查询结果的总数。
在一些实施方式中,通过遍历命令的层次以定位叶子节点来从查询计划中提取数据源标识符。如上所述,叶子节点指示数据源,例如,查询从其中检索数据的哪些数据表、数据库、文件、文件夹等。对于所标识的每个叶子节点,数据依赖检测引擎沿层次向上移动以识别读命令115例如“项目”或“选择”,或者写命令117例如“插入”或“更新”。读命令是指从数据源检索、提取或以其他方式获得信息的命令。写命令是指将信息添加、修改、附加、更新或以其他方式推送至数据源的命令。当叶子节点被发现为是读命令的后代时,由叶子节点标识的数据源被识别为正由应用消费。当叶子节点被发现为是写命令的后代时,由叶子节点标识的数据源被识别为正由应用产生。如果命令既是读命令又是写命令,则该应用将被视为数据依赖的消费者和生产者。例如,在更新同一数据库表的奇数行的值的同时从数据库表的偶数行检索数据的命令将使执行该命令的应用被识别为数据库表的消费者和生产者。
在一些情况下,数据查询和相关联的查询计划包括嵌套的子查询。例如,以下的查询可以从客户数据库中检索所有客户记录,在该客户数据库中客户已经订购超过$1,000,如由订单数据库的子查询所示:
SELECT*FROM customers
WHERE cust_id IN(SELECT DISTINCT cust_id FROM orders
WHERE order_value>5000);
在这些情况下,可以从单个查询计划中识别多个数据源依赖,例如“客户”数据库和“订单”数据库。
在识别了从与应用名称108相关联的查询计划读或由与应用名称108相关联的查询计划写的数据源之后,数据依赖检测引擎111可以返回包括例如数据依赖标识符135的依赖的列表134。
图2A是示出从应用接收请求的系统图100。应用请求202可以是从客户端计算设备104被发送至应用118的任何类型的请求或其他数据。例如,“快速价格”应用118A可以接收用于估计用户102打算出售的项目的价格的请求。应用请求202可以是被寻址到web服务器的web请求、被寻址到电子邮件服务器的电子邮件消息、用于接收天气预报的请求或客户端服务器应用架构所共有的任何其他类型的通信。在一些实施方式中,应用请求202源自应用116中的另一个。
图2B是示出向数据查询处理引擎发送数据查询的应用的系统图100。在一些实施方式中,响应于应用请求202,应用118a向查询处理引擎120发送数据查询204。在其他实施方式中,应用118周期性地向查询处理引擎120发送数据查询204,而不是响应于应用请求202。例如,应用118可以周期性地检索作为数据依赖被发布的天气信息。
图2C是示出被发送至数据依赖的数据检索请求的系统图100。在一些实施方式中,查询处理引擎120将数据检索请求206提交至数据依赖122之一。数据检索请求206可以基于如以上结合图1所讨论的查询计划132被生成。例如,查询计划132的关系叶子节点参考‘点击’表,并且因此作为响应,查询处理引擎120在执行数据查询204时向‘点击’表生成数据检索请求206。
图2D是示出被高速缓存在查询计划高速缓存中的查询计划的系统图100。在一些实施方式中,查询处理引擎120将查询计划208存储在查询计划高速缓存112的被高速缓存的查询计划114A中。查询计划208通常可以被高速缓存为性能改进,原因在于:映射到相同命令层次结构的数据查询如果不是被接收数百万次,也可以被接收数千次。在一些实施方式中,出于产生代表特定应用被处理的数据查询的完整且准确的记录的目的,查询处理引擎120保存每个查询计划208。
图3A是示出应用注册请求的系统图100。图3A描绘了向依赖注册和监测引擎308提交应用注册请求302B的计算设备104。应用注册请求302B包括应用名称304B和联系地址306B。应用名称304B标识应用注册请求302B正在注册哪个应用。联系地址306B可以包含电子邮件地址、URL、Twitter句柄或可以联系应用的管理员的其他端点。
图3A还示出了注册的应用312A,其是注册的应用310之一。注册的应用312A包括应用名称304A、联系地址306A以及所发布的依赖320A。所发布的依赖320A可以包含依赖名称322A、发布应用名称304A、创建时间326A以及发布时间328A。
依赖注册和监测引擎308使得应用能够注册它们自己,注册它们向定义的位置发布数据依赖,以及允许消费应用注册它们自己以及它们消费所发布的数据依赖之一。
图3B是示出新注册的应用的系统图100。作为处理应用注册请求302B的结果,依赖注册和监测引擎308创建了注册的应用312B作为注册的应用310之一。注册的应用312B具有如包含在应用注册请求302B中的应用名称304B和联系地址306B。
图3C是示出依赖发布请求的系统图100。在一些实施方式中,客户端计算设备104向依赖注册和监测引擎308发送依赖发布请求340。依赖发布请求340包括依赖名称322B和发布应用名称304B。以这种方式,客户端计算设备104注册具有应用名称304B的应用发布名为322B的数据依赖。尽管在图3C中未示出,但依赖发布请求340也可以可选地包括创建时间326B和发布时间328B。创建时间326B指示何时创建所发布的依赖320B,而发布时间328B指示何时调度注册的应用312B以发布数据依赖的下一个迭代。
图3D是示出与新注册的应用相关联的所发布的依赖的系统图100。在一些实施方式中,所发布的依赖320B示出了依赖注册和监测引擎308对具有依赖名称322B的依赖的发布。如所示出的,该依赖的发布是响应于接收到依赖发布请求340。
图3E是示出另一应用的另一应用注册请求和相关联注册的系统图100。在一些实施方式中,将应用注册请求302C从客户端计算设备104发送至依赖注册和监测引擎308。作为响应,依赖注册和监测引擎308生成注册的应用312C作为注册的应用310之一。与以上结合图3B所讨论的注册的应用312B类似,注册的应用312C包括应用名称304C和联系地址306C。
图3F是示出依赖订阅请求的系统图100。在一些配置中,将依赖订阅请求342C从客户端计算设备104发送至依赖注册和监测引擎308。依赖订阅请求342C包括依赖名称322B和消费应用名称304C。然后,依赖注册和监测引擎308A可以将来自应用312C(具有消费应用名称304C)的新数据依赖添加到所发布的依赖320(具有依赖名称322B)。
图3G是示出从注册的应用312C到注册的应用312B的所发布的依赖320的依赖订阅的系统图100。以这种方式,注册的应用312B充当提供应用。当应用312B向所发布的依赖320发布数据时,注册的应用312C将接收发布已经发生的通知。
图3H是示出第二依赖订阅请求和从一个注册的应用到另一个注册的应用的相应订阅的系统图100。依赖订阅请求342B包含依赖名称322A和订阅应用名称304B,并且从客户端计算设备104被发送至依赖注册和监测引擎308。因此,依赖注册和监测引擎308将所消费的依赖322B添加到注册的应用312B。所消费的依赖332B包括依赖名称322A和订阅应用名称304B。另外,所消费的依赖332B包括依赖延迟容限338B,其指示所发布的依赖320A的消费者在经由联系地址306B警告用户102之前愿意等待超过发布时间328A多长时间。
图3I是示出第三依赖订阅请求的系统图100。依赖订阅请求342A包含依赖名称322Z和订阅应用名称304A。依赖订阅请求342A从客户端计算设备104被发送至依赖注册和监测引擎308。作为响应,依赖注册和监测引擎创建所消费的依赖332A作为注册的应用312A的一部分。所消费的依赖332A可以包括依赖名称322Z、订阅应用名称304和依赖延迟容限338A。
图3J是示出下游依赖请求的系统图100。在一些实施方式中,检索下游依赖请求344从客户端计算设备104被发送至依赖注册和监测引擎308。检索下游依赖请求344可以包含依赖名称332B,在该图示中,该依赖名称332B是由注册的应用312B发布的依赖的名称。响应于接收到请求344,依赖注册和监测引擎308对由名为322B的依赖以及任何下游依赖所消费的数据依赖进行分析。例如,依赖注册和监测引擎308可以基于检索下游依赖请求344的依赖名称322B字段来确定:注册的应用312B取决于由注册的应用312A发布的数据依赖。一旦注册的应用312A已经被标识为依赖,下游依赖就被标识。例如,可以分析注册的应用312A的所消费的依赖332A,以标识具有依赖名称322Z的下游数据依赖。与名为322Z的所发布的依赖相关联的注册的应用的任何数据依赖也可以在下游依赖346中被标识。一旦下游依赖346已经被标识,例如依赖名称322A和322Z,下游依赖346就被返回至客户端计算设备104。
图3K是示出发布状态请求的系统图100。在一些实施方式中,发布状态请求348从客户端计算设备104被发送至依赖注册和监测引擎308。发布状态请求348包括依赖名称322Z、预订应用名称304A和依赖检查时间350。作为响应,依赖注册和监测引擎308A返回发布状态响应352,其指示具有依赖名称322Z的数据依赖已经发布了它被调度为已经发布的数据。
图3L是示出被提交至依赖注册和监测引擎的依赖警告请求的系统图100。在一些实施方式中,依赖警告请求354从客户端计算设备104被发送至依赖注册和监测引擎308。依赖警告请求354包括依赖名称322B和警告消息356。依赖名称322B是依赖注册和监测引擎308将监测的依赖的名称。
图3M是示出响应于检测到依赖的发布而被发送的警告消息的系统图100。在一些配置中,依赖注册和监测引擎308向联系地址306中的一个或更多个发送警告消息356。
图4A是示出查询计划的抽象语法树表示的框图400。在一些实施方式中,在执行数据查询204时,由查询处理引擎120生成抽象语法树402。一旦针对特定结构的数据查询204——即,具有特定抽象语法树402——生成了查询计划,该查询计划就可以被重新用于具有相同结构的任何数据查询。继续以上结合图1所讨论的示例,抽象语法树402包括表示“限制1000”表达的限制命令节点404、表示“选择”表达的项目命令节点406、表示“何地”表达的过滤命令节点408以及表示查询“从mrkt_data.geo_perf_rpt选择avg(clicks),其中日期>“2019-10-10”限制1000;”的“mrkt_data.geo_perf_rpt”表达的至分布式表的关系节点410。
图4B是示出抽象语法树的非叶子命令节点412的框图400。在该示例中,非叶子节点是读命令,具体地,非叶子节点是读“项目”命令。如以上所讨论的,“项目”命令可以用于修改由“关系”节点410返回并由过滤命令节点408过滤的数据。来自读命令的叶子节点被解释为由与查询计划相关联的应用所消费的数据依赖。
图4C是示出包括数据依赖标识符的叶子节点414的框图400。在一些实施方式中,通过检索与叶子节点相关联的元数据,从叶子节点414提取一个或更多个数据依赖标识符。元数据可以包括数据库名称和表名称、文件名称和文件夹名称、集群存储系统名称、基于云的数据服务名称等。例如,当查询计划参考Hive表时,关系节点414可以与可以参考“目录表”对象的“Hive表关系”对象相关联,“目录表”对象包括包含表标识符的一个或更多个字段。所标识的表是所消费的数据依赖。
图5是示出用于实现本文所公开的技术中的一些的例程500的各方面的流程图。本领域普通技术人员应该理解,本文所公开的方法的操作不一定以任何特定顺序呈现,并且可以以替代顺序来执行一些或所有的操作并且可以设想以替代顺序来执行一些或所有的操作。为了便于描述和说明,已经以所演示的顺序呈现了操作。在不脱离所附权利要求书的范围的情况下,可以添加、省略、一起执行和/或同时执行操作。
还应该理解,所示出的方法可以在任何时间结束,并且不需要被整体执行。如本文所定义的,可以通过执行包括在计算机存储介质上的计算机可读指令来执行方法中的一些或所有操作和/或基本等效的操作。如在说明书和权利要求书中所使用的术语“计算机可读指令”及其变型在本文中被广泛地用于包括例程、应用、应用模块、程序模块、程序、组件、数据结构、算法等。可以在各种系统配置上实现计算机可读指令,各种系统配置包括单处理器系统或多处理器系统、小型计算机、大型计算机、个人计算机、手持式计算设备、基于微处理器的可编程消费电子产品、其组合等。尽管下面描述的示例例程在计算设备上运行,但是可以理解,该例程可以在可以包括协同工作以执行本文所公开的操作的若干计算机的任何计算系统上执行。
因此,应当理解,本文所描述的逻辑操作被实现为(1)在计算系统诸如本文所描述的那些计算系统上运行的一系列的计算机实现的动作或程序模块和/或(2)计算系统内的互连的机器逻辑电路或电路模块。该实现是一种取决于计算系统的性能和其他要求的选择的问题。因此,逻辑操作可以以软件、以固件、以专用数字逻辑及其任何组合来实现。
例程500在操作501处开始,如上面结合图1所讨论的,该操作501示出了接收用于识别由应用118消费的数据依赖122的请求106。出于说明目的,数据依赖被应用消费可以表示。
例程500然后进行到操作503,该操作503示出了检索在处理从应用118接收到的数据查询204的同时所生成的查询计划132。如上面结合图1所讨论的,操作503可以由数据依赖检测引擎111执行。
例程500然后进行到操作505,该操作505示出了对用于识别数据依赖114的查询计划132进行解析。如上面结合图1所讨论的,操作505可以由数据依赖检测引擎111执行。
例程500然后进行到操作507,该操作507示出了将所识别出的数据依赖135发送至计算设备。如上面结合图1所讨论的,操作505可以由数据依赖检测引擎111执行。
例程500然后可选地进行到操作509,该操作509示出了向数据依赖管理和监控服务注册应用118消费数据依赖132。如上面结合图3A所讨论的,操作509可以由依赖注册和监控引擎308执行。
图6是示出用于实现本文所公开的技术中的一些的例程600的各方面的图。例程600在操作601处开始,该操作601示出了接收数据产生应用312B的注册302B。例程600然后进行到操作603,该操作603示出了接收由数据产生应用312B产生的数据依赖320的注册340,该注册340包括计划的发布时间328B。
例程600然后进行到操作605,该操作605示出了接收数据消费应用312C的注册302C。
例程600然后进行到操作607,该操作607示出了接收数据消费应用312C对由数据产生应用312B产生的数据依赖320的订阅342C的注册。
例程600然后进行到操作609,该操作609示出了在计划的发布时间328B已经过去之后,确定数据依赖320是否已经被发布。
例程600然后进行到操作611,该操作611示出了:如果数据依赖320已经被发布,则向数据消费应用312C提供数据依赖320已经被发布的指示。
图7示出了能够提供本文所描述的功能的计算机诸如例如被配置成实现上面参照图1至图6所描述的功能的计算设备的示例计算机体系结构。因此,图7中所示的计算机体系结构700示出了适于实现本文所描述的功能的服务器计算机或另一类型的计算设备的体系结构。计算机体系结构700可以被用来执行本文所呈现的各种软件组件,以实现所公开的技术。
图7中所示的计算机体系结构700包括:中央处理单元702(“CPU”)、包括随机存取存储器706(“RAM”)和只读存储器(“ROM”)708的系统存储器704以及将存储器704耦接至CPU702的系统总线77。包含诸如在启动期间帮助在计算机体系结构700内的元件之间传递信息的基本例程的固件被存储在ROM 708中。计算机体系结构700还包括用于存储以下的大容量存储设备712:操作系统714、其他数据以及一个或更多个可执行程序例如数据依赖检测引擎111以及数据注册和监测引擎308。
大容量存储设备712通过连接至总线77的大容量存储控制器(未示出)被连接至CPU 702。大容量存储设备712及其关联的计算机可读介质为计算机体系结构700提供了非易失性存储。尽管本文所包含的计算机可读介质的描述是指大容量存储设备,例如固态驱动器、硬盘或光盘驱动器,但是本领域技术人员应该理解,计算机可读介质可以是可以由计算机体系结构700访问的任何可得到的计算机存储介质或通信介质。
通信介质包括计算机可读指令、数据结构、程序模块或经调制的数据信号例如载波或其他传输机制中的其他数据,并且包括任何传递介质。术语“经调制的数据信号”是指以下信号:以将信息编码在该信号中的方式改变或设置该信号的特性中的一个或更多个特性。作为示例而非限制,通信介质包括诸如有线网络或直接有线连接的有线介质,以及诸如声学、射频、红外和其他无线介质的无线介质。以上任何的组合也应当被包括在计算机可读介质的范围内。
作为示例而非限制,计算机可读存储介质可以包括以任何方法或技术实现的用于存储信息例如计算机可读指令、数据结构、程序模块或其他数据的易失性和非易失性、可移除和不可移除的介质。例如,计算机介质包括但不限于:RAM、ROM、EPROM、EEPROM、闪速存储器或其他固态存储技术、CD-ROM、数字多功能磁盘(“DVD”)、HD-DVD、BLU-RAY或其他光学存储装置、盒式磁带、磁带、磁盘存储装置或其他磁存储装置,或可以用于存储期望的信息并可以由计算机体系结构700访问的任何其他介质。出于权利要求书的目的,短语“计算机存储介质”、“计算机可读存储介质”及其变型本身并不包括波、信号和/或其他瞬态和/或无形通信介质。
根据各种实现方式,计算机体系结构700可以使用通过网络750和/或另一网络(未示出)到远程计算机的逻辑连接在联网环境下操作。实现计算机体系结构700的计算设备可以通过连接至总线77的网络接口单元716连接至网络750。应该理解,网络接口单元716也可以用于连接至其他类型的网络和远程计算机系统。
计算机体系结构700还可以包括用于接收和处理来自若干其他设备(包括键盘、鼠标或电子笔(图7中未示出)的输入的输入/输出控制器718。类似地,输入/输出控制器718可以向显示屏幕、打印机或其他类型的输出设备(图7中也未示出)提供输出。
应当理解,本文所描述的软件组件可以在被加载到CPU 702中并被执行时将CPU702和整个计算机体系结构700从通用计算系统转换成被定制成促进本文所呈现的功能的专用计算系统。CPU 702可以由任意数目的晶体管或其他分立电路元件构成,晶体管或其他分立电路元件可以单独地或共同地呈现任意数目的状态。更具体地,CPU 702可以响应于包含在本文所公开的软件模块内的可执行指令操作为有限状态机。这些计算机可执行指令可以通过指定如何使CPU 702在状态之间转换来对CPU 702进行转换,从而对构成CPU 702的晶体管或其他分立硬件元件进行转换。
对本文所呈现的软件模块进行编码还可以对本文所呈现的计算机可读介质的物理结构进行转换。在本说明书的不同实现方式中,对物理结构的特定转换可能取决于各种因素。这样的因素的示例可以包括但不限于用于实现计算机可读介质的技术,计算机可读介质被表征为主要存储装置还是辅助存储装置等。如果计算机可读介质被实现为基于半导体的存储器,则本文中所公开的软件可以通过对半导体存储器的物理状态进行转换而被编码在计算机可读介质上。例如,软件可以对构成半导体存储器的晶体管、电容器或其他分立电路元件的状态进行转换。该软件还可以对这些组件的物理状态进行转换,以便在其上存储数据。
作为另一示例,可以使用磁技术或光学技术来实现本文所公开的计算机可读介质。在这样的实现方式中,当软件被编码在磁介质或光学介质中时,本文所呈现的软件可以对磁介质或光学介质的物理状态进行转换。这些转换可以包括更改给定磁介质内的位置的磁特征。这些转换还可以包括更改给定光学介质内的位置的物理特征或特性,以改变那些位置的光学特性。在不背离本说明书的范围和精神的情况下,物理介质的其他转换是可行的,其中所提供的上述示例仅用于便于这种讨论。
鉴于以上内容,应当理解,为了存储和执行本文所呈现的软件组件,在计算机体系结构700中发生了许多类型的物理转换。还应当理解,计算机体系结构700可以包括其他类型的计算设备,包括手持式计算机、嵌入式计算机系统、个人数字助理以及本领域技术人员已知的其他类型的计算设备。
还可以设想,计算机体系结构700可以不包括图7中所示的所有组件,可以包括未在图7中明确示出的其他组件,或者可以使用与图7中所示的完全不同的体系结构。例如,并且在不限制的情况下,本文所公开的技术可以与用于通过并行化而改进性能的多个CPU、用于更快的计算的图形处理单元(“GPU”)和/或张量处理单元(“TPU”)一起使用。如本文所使用的术语“处理器”涵盖CPU、GPU、TPU和其他类型的处理器。
图8示出了能够执行以上参照图1至图6描述的技术和处理的示例计算环境。在各种示例中,计算环境包括主机系统802。在各种示例中,主机系统802在网络804上操作、与网络804通信或作为网络804的一部分。
网络804可以是各种接入网络或者可以包括各种接入网络。例如,一个或更多个客户端设备806(1)…806(N)可以经由网络804和/或其他连接与主机系统802通信。主机系统802和/或客户端设备可以包括但不限于各种设备中的任何之一,各种设备包括便携式设备或固定设备,诸如服务器计算机、智能电话、移动电话、个人数字助理(PDA)、电子书设备、膝上型计算机、台式计算机、平板计算机、便携式计算机、游戏控制台、个人媒体播放器设备或任何其他电子设备。
根据各种实现方式,主机系统802的功能可以由作为网络804的一部分或与网络804通信来执行的一个或更多个服务器提供。服务器可以托管各种服务、虚拟机、门户和/或其他资源。例如,可以托管个或更多个门户、网站和/或其他信息或提供对一个或更多个门户、网站和/或其他信息的访问。
主机系统802可以包括处理器808和存储器810。存储器810可以包括操作系统812、应用814以及/或者文件系统816。此外,存储器810可以包括上面参照图1至图6描述的数据依赖检测引擎111。
处理器808可以是单个处理单元或者多个单元,多个单元中的每一个可以包括多个不同的处理单元。处理器可以包括微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元(CPU)、图形处理单元(GPU)、安全处理器等。替选地或附加地,本文描述的一些技术或全部技术可以至少部分地由一个或更多个硬件逻辑部件来执行。例如但不限于,可以使用的说明性类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、状态机、复杂可编程逻辑器件(CPLD)、其他逻辑电路、片上系统(SoC)以及/或者基于指令执行操作的任何其他设备。除了其他能力之外,处理器可以被配置成获取并执行存储在存储器810中的计算机可读指令。
存储器810可以包括一个计算机可读介质或计算机可读介质的组合。如本文所使用的,“计算机可读介质”包括计算机存储介质和通信介质。
计算机存储介质包括以用于存储信息诸如计算机可读指令、数据结构、程序模块或其他数据的任何方法或技术实现的易失性和非易失性介质、可移除和不可移除介质。计算机存储介质包括但不限于:相变存储器(PCM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、闪速存储器或其他存储技术、致密盘ROM(CD-ROM)、数字多功能磁盘(DVD)或其他光学存储设备、磁带盒、磁带、磁盘存储设备或其他磁存储设备,或者可以用于存储信息以供计算设备访问的任何其他介质。
相反,通信介质包括计算机可读指令、数据结构、程序模块或调制数据信号诸如载波中的其他数据。如本文所定义的,计算机存储介质不包括通信介质。
主机系统802可以经由网络接口818通过网络804通信。网络接口818可以包括用于支持两个或更多个设备之间的通信的各种类型的网络硬件和软件。主机系统802还可以包括可以被配置成实现本文公开的功能的各方面的规则引擎819。
本技术可以涉及在一个或更多个机器中发生的操作。如本文所使用的,“机器”意指编程有执行专门的计算操作的指令的物理数据存储和处理硬件。应当理解,两个或更多个不同的机器可以共享硬件部件。例如,同一集成电路可以是两个或更多个不同机器的部分。
应当理解,本文所描述的方法可以在任何时间结束,并且不需要以其整体来执行。可以通过执行包括在计算机存储介质上的如以下所定义的计算机可读指令来执行本文所描述的方法的一些操作或所有操作以及/或者基本上等同的操作。如在说明书和权利要求书中使用的,术语“计算机可读指令”及其变型在本文被广泛地使用以包括例程、应用、应用模块、程序模块、程序、部件、数据结构、算法等。计算机可读指令可以在各种系统配置上实现,各种系统配置包括单处理器或多处理器系统、小型计算机、大型计算机、个人计算机、手持式计算设备、基于微处理器的可编程消费电子产品及其组合等。
因此,应当理解,本文所描述的逻辑操作被实现为(1)在计算系统上运行的计算机实现的动作或程序模块的序列以及/或者(2)计算系统内互连的机器逻辑电路或电路模块。实现方式是取决于计算系统的性能和其他要求的选择问题。因此,本文描述的逻辑操作被不同地称为状态、操作、结构设备、动作或模块。这些操作、结构设备、动作和模块可以以软件、固件、专用数字逻辑及其任何组合来实现。
如本文结合本文所述的附图所描述的,本文将例程的操作描述为至少部分地由应用、部件和/或电路来实现。尽管以下说明涉及指定附图的部件,但是可以理解,例程的操作也可以以许多其他方式来实现。例如,例程可以至少部分地由计算机处理器或另一个计算机的一个处理器或多个处理器来实现。此外,替选地或者附加地,例程的一个或更多个操作可以至少部分地由单独工作的计算机或者与其他软件模块结合工作的计算机来实现。
例如,例程的操作在本文被描述为至少部分地由应用、部件和/或电路来实现,这些应用、部件和/或电路在本文被统称为模块。在一些配置中,模块可以是动态链接库(DLL)、静态链接库、由应用编程接口(API)产生的功能、编译程序、解释程序、脚本或任何其他可执行指令集。数据和/或模块,诸如本文公开的数据和模块,可以以数据结构存储在一个或更多个存储器部件中。通过寻址至数据结构的链接或引用,可以从数据结构中检索数据。
最后,尽管已经以特定于结构特征和/或方法动作的语言描述了本文呈现的各种技术,但是应当理解,在所附表示中定义的主题不必限于所描述的特定特征或动作。相反,这些特定特征和动作是作为实现所要求保护的主题的示例形式来公开的。
Claims (20)
1.一种用于识别由应用消费的数据依赖的计算机实现的方法,包括:
接收识别由所述应用消费的数据依赖的请求;
检索由数据查询处理引擎生成的查询计划,其中,所述查询计划是在处理先前从所述应用接收的数据查询时生成的,并且其中,所述查询计划包括读命令;
解析所述查询计划以识别与所述读命令相关联的数据依赖标识符;以及
将所识别的数据依赖标识符发送至计算设备以标识由所述应用消费的数据依赖。
2.根据权利要求1所述的方法,其中,所述应用是多个松散耦合的应用之一,并且其中,所述多个松散耦合的应用中的数据产生应用通过将数据发布至数据依赖来与所述多个松散耦合的应用的数据消费应用交换数据,使得所述数据消费应用能够从所述数据依赖检索所发布的数据。
3.根据权利要求2所述的方法,其中,所述数据依赖包括数据库、表、位于文件系统上的目录或文件、位于分布式文件系统上的目录或文件、或显示从所述分布式文件系统上的文件检索到的数据的表。
4.根据权利要求1所述的方法,其中,所述查询计划包括节点分层结构,其中,所述节点分层结构的非叶子节点表示查询命令,并且其中,所述节点分层结构的叶子节点标识数据依赖。
5.根据权利要求4所述的方法,其中,通过识别表示所述读命令的所述节点分层结构的非叶模式以及从所述非叶子节点引出并包括所述数据依赖标识符的所述节点分层结构的叶子节点,将所述数据依赖标识符确定为与所述读命令相关联。
6.根据权利要求1所述的方法,还包括:
检索由所述数据查询处理引擎在处理另一先前接收的数据查询时生成的第二查询计划,其中,所述第二查询计划包括写命令;
解析所述第二查询计划以识别与所述写命令相关联的第二数据依赖标识符;以及
将所述第二数据依赖标识符识别为标识由所述应用产生的数据依赖。
7.根据权利要求6所述的方法,其中,所述读命令包括选择命令或项目命令,并且其中,所述写命令包括插入命令或更新命令。
8.一种用于识别由应用消费的数据依赖的计算系统,包括:
一个或更多个处理器;以及
计算机存储介质,其上存储有计算机可执行指令,所述计算机可执行指令在由所述一个或更多个处理器执行时使所述计算系统执行如下步骤:
从计算设备接收识别由所述应用消费的数据依赖的请求;
检索由数据查询处理引擎生成的缓存的查询计划,其中,所述缓存的查询计划是在处理先前从所述应用接收的数据查询时生成的,其中,所述查询计划包括节点分层结构,其中,所述节点分层结构的非叶子节点包括读命令,并且其中,所述节点分层结构的叶子节点包括数据依赖标识符;
通过确定所述叶子节点是所述节点分层结构中的所述非叶子节点的后代来解析所述查询计划以识别所述数据依赖标识符与所述数据读命令相关联;以及
通过将所述数据依赖标识符发送至所述计算设备来对所述请求进行响应。
9.根据权利要求8所述的计算系统,其中,所述计算机可执行指令还使所述计算系统执行如下步骤:
向数据依赖管理和监测系统注册所述应用消费由所述数据依赖标识符标识的数据依赖。
10.根据权利要求9所述的计算系统,其中,所述数据依赖管理和监测系统响应于确定所注册的数据依赖已被发布而向所述应用发送警报。
11.根据权利要求9所述的计算系统,其中,所述数据依赖管理和监测系统响应于确定所注册的数据依赖已变得不可用而向所述应用发送第二警报。
12.根据权利要求8所述的计算系统,其中,所述一个或更多个数据依赖标识符中的每一个引用位于分布式文件系统上的文件或目录,或引用数据库表。
13.根据权利要求8所述的计算系统,其中,所述查询计划包括写命令,并且其中,所述计算机可执行指令还使所述计算系统执行如下步骤:
解析所述查询计划以识别与所述写命令相关联的数据依赖标识符;以及
将所识别的与数据写命令相关联的数据依赖标识符作为由所述应用产生的数据依赖的列表的一部分发送至所述计算设备。
14.根据权利要求9所述的计算系统,其中,所述数据依赖已经被向所述数据依赖管理系统注册为由数据产生应用产生并且具有调度的发布时间,其中,注册所述应用消费数据依赖包括注册延迟容限,并且其中,所述延迟容限确定所述依赖管理和监测系统在所述数据产生应用发布所述数据依赖的所述调度的发布时间之后、向所述应用发送指示所述数据依赖尚未发布的警报之前等待的时间。
15.一种计算机可读存储介质,其上存储有计算机可执行指令,当所述计算机可执行指令由计算设备的处理器执行时,使所述计算设备执行如下步骤:
接收识别由应用产生的数据依赖的请求;
检索由数据查询处理引擎生成的查询计划,其中,所述查询计划是在处理先前从所述应用接收的数据查询时生成的,并且其中,所述查询计划包括写命令;
解析所述查询计划以识别与数据写命令相关联的数据依赖标识符;以及
将所识别的数据依赖标识符发送至计算设备以标识由所述应用产生的数据依赖。
16.根据权利要求15所述的计算机可读存储介质,其中,所述计算机可执行指令还使所述计算设备执行如下步骤:
检索由所述数据查询处理引擎在处理另一先前接收的数据查询时生成的第二查询计划,其中,所述第二查询计划包括读命令;
解析所述第二查询计划以识别与所述读命令相关联的第二数据依赖标识符;以及
将所述第二数据依赖标识符识别为标识由所述应用消费的数据依赖。
17.根据权利要求16所述的计算机可读存储介质,其中,所述计算机可执行指令还使所述处理器:
接收注册数据产生应用的第一应用注册请求;
接收指示所述数据产生应用发布所述数据依赖的依赖发布注册请求,其中,所述依赖发布注册请求包括所述数据产生应用被调度以发布所述数据依赖的时间;
接收注册所述应用的第二应用注册请求;
接收指示所述应用依赖于由所述数据产生应用产生的所述数据依赖的依赖订阅请求;
在所述数据依赖被调度发布的时间之后,确定是否已经发布所述数据依赖;以及
如果确定数据依赖已被发布,则向所述数据消费应用提供所述数据依赖已被发布的指示。
18.根据权利要求17所述的计算系统,其中,所述依赖订阅请求包括联系人地址,并且其中,向所述数据消费应用提供所述指示包括向所述联系人地址传送所述指示。
19.根据权利要求17所述的计算系统,其中,所述依赖订阅请求包括依赖延迟容限,所述计算机可执行指令还使所述计算系统执行如下步骤:
响应于确定从所述数据依赖被调度发布开始所经过的时间量超过所述依赖延迟容限,向所述数据消费应用发送指示所述数据依赖尚未在所述依赖延迟容限内产生的警报。
20.根据权利要求17所述的计算系统,其中,所述计算机可执行指令还使所述一个或更多个处理器执行如下步骤:
接收对所述数据依赖的下游依赖请求;
响应于所述下游依赖请求,递归地识别所述数据依赖所依赖的已注册的数据依赖;以及
响应于所述下游依赖请求,提供所述数据依赖所依赖的所述已注册的数据依赖的列表。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/869,522 | 2020-05-07 | ||
US16/869,522 US11301517B2 (en) | 2020-05-07 | 2020-05-07 | Method and system for identifying, managing, and monitoring data dependencies |
PCT/US2021/025376 WO2021225726A1 (en) | 2020-05-07 | 2021-04-01 | Method and system for identifying, managing, and monitoring data dependencies |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115516432A true CN115516432A (zh) | 2022-12-23 |
Family
ID=78412804
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180032973.1A Pending CN115516432A (zh) | 2020-05-07 | 2021-04-01 | 用于识别、管理和监测数据依赖的方法和系统 |
Country Status (4)
Country | Link |
---|---|
US (3) | US11301517B2 (zh) |
EP (1) | EP4147126A4 (zh) |
CN (1) | CN115516432A (zh) |
WO (1) | WO2021225726A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11301517B2 (en) | 2020-05-07 | 2022-04-12 | Ebay Inc. | Method and system for identifying, managing, and monitoring data dependencies |
US11762940B2 (en) * | 2020-09-12 | 2023-09-19 | HCL America Inc. | Component level data management and state change detection in web applications for data loss protection |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060271542A1 (en) | 2005-05-25 | 2006-11-30 | Harris Steven T | Clustered object state using logical actions |
US20110066719A1 (en) | 2008-01-31 | 2011-03-17 | Vitaly Miryanov | Automated Applicatin Dependency Mapping |
US8312037B1 (en) * | 2008-08-28 | 2012-11-13 | Amazon Technologies, Inc. | Dynamic tree determination for data processing |
US8683498B2 (en) | 2009-12-16 | 2014-03-25 | Ebay Inc. | Systems and methods for facilitating call request aggregation over a network |
US9805101B2 (en) * | 2010-02-26 | 2017-10-31 | Ebay Inc. | Parallel data stream processing system |
US8612600B2 (en) * | 2010-12-07 | 2013-12-17 | Nec Laboratories America, Inc. | Negotiation tool and method for cloud infrastructure data sharing |
US9639575B2 (en) * | 2012-03-30 | 2017-05-02 | Khalifa University Of Science, Technology And Research | Method and system for processing data queries |
US8924373B2 (en) * | 2012-08-09 | 2014-12-30 | International Business Machines Corporation | Query plans with parameter markers in place of object identifiers |
US9262479B2 (en) | 2012-09-28 | 2016-02-16 | Oracle International Corporation | Join operations for continuous queries over archived views |
EP3069245A1 (en) | 2013-11-15 | 2016-09-21 | British Telecommunications Public Limited Company | Selection of data sources for software services |
WO2015094179A1 (en) | 2013-12-17 | 2015-06-25 | Hewlett-Packard Development Company, L.P. | Abstraction layer between a database query engine and a distributed file system |
US20150347507A1 (en) * | 2014-05-28 | 2015-12-03 | Tesora, Inc. | Hierarchical query plans in an elastic parallel database management system |
US10216826B2 (en) * | 2014-09-02 | 2019-02-26 | Salesforce.Com, Inc. | Database query system |
US10318491B1 (en) * | 2015-03-31 | 2019-06-11 | EMC IP Holding Company LLC | Object metadata query with distributed processing systems |
US9547478B1 (en) | 2015-09-30 | 2017-01-17 | Semmle Limited | Hierarchical dependency analysis enhancements using disjoint-or trees |
US10956415B2 (en) * | 2016-09-26 | 2021-03-23 | Splunk Inc. | Generating a subquery for an external data system using a configuration file |
US11036735B2 (en) * | 2018-01-16 | 2021-06-15 | Oracle International Corporation | Dimension context propagation techniques for optimizing SQL query plans |
EP3550444B1 (en) * | 2018-04-02 | 2023-12-27 | Thoughtspot Inc. | Query generation based on a logical data model |
US10775976B1 (en) * | 2018-10-01 | 2020-09-15 | Splunk Inc. | Visual previews for programming an iterative publish-subscribe message processing system |
US11928114B2 (en) * | 2019-04-23 | 2024-03-12 | Thoughtspot, Inc. | Query generation based on a logical data model with one-to-one joins |
US20210209077A1 (en) * | 2020-01-07 | 2021-07-08 | ALTR Solutions, Inc. | Communicating fine-grained application database access to a third-party agent |
US11301517B2 (en) | 2020-05-07 | 2022-04-12 | Ebay Inc. | Method and system for identifying, managing, and monitoring data dependencies |
-
2020
- 2020-05-07 US US16/869,522 patent/US11301517B2/en active Active
-
2021
- 2021-04-01 WO PCT/US2021/025376 patent/WO2021225726A1/en unknown
- 2021-04-01 EP EP21799478.9A patent/EP4147126A4/en active Pending
- 2021-04-01 CN CN202180032973.1A patent/CN115516432A/zh active Pending
-
2022
- 2022-02-15 US US17/672,307 patent/US11836190B2/en active Active
-
2023
- 2023-10-30 US US18/384,964 patent/US20240061888A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20210349946A1 (en) | 2021-11-11 |
WO2021225726A1 (en) | 2021-11-11 |
US11836190B2 (en) | 2023-12-05 |
EP4147126A1 (en) | 2023-03-15 |
US20240061888A1 (en) | 2024-02-22 |
US20220171811A1 (en) | 2022-06-02 |
EP4147126A4 (en) | 2024-05-08 |
US11301517B2 (en) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10372723B2 (en) | Efficient query processing using histograms in a columnar database | |
KR102134494B1 (ko) | 위치 정보를 가진 데이터 프로파일링 | |
US10121169B2 (en) | Table level distributed database system for big data storage and query | |
CN111971666A (zh) | 优化sql查询计划的维度上下文传播技术 | |
US20240061888A1 (en) | Method And System For Identifying, Managing, And Monitoring Data Dependencies | |
US9465831B2 (en) | System and method for optimizing storage of multi-dimensional data in data storage | |
CN111241122B (zh) | 任务监测方法、装置、电子设备和可读存储介质 | |
US20230086966A1 (en) | Search systems and methods utilizing search based user clustering | |
US9514184B2 (en) | Systems and methods for a high speed query infrastructure | |
US20140229435A1 (en) | In-memory real-time synchronized database system and method | |
Gupta et al. | Mesa: A geo-replicated online data warehouse for Google's advertising system | |
Margara et al. | A model and survey of distributed data-intensive systems | |
US8539492B1 (en) | Managing data dependencies among multiple jobs using separate tables that store job results and dependency satisfaction | |
US11494397B1 (en) | Data digital decoupling of legacy systems | |
Moussa et al. | Data Warehouse Systems in the Cloud: Rise to the Benchmarking Challenge. | |
Dory | Study and Comparison of Elastic Cloud Databases: Myth or Reality? | |
Lakhe et al. | Lambda architecture for real-time Hadoop applications | |
Penberthy et al. | Purpose-Built Databases | |
Nagireddy | Job recommendation system with NoSQL databases: Neo4j, MongoDB, DynamoDB, Cassandra and their critical comparison | |
Zannelli | Data Quality for streaming applications | |
Cao | Big Data Database for Business | |
CN117312375A (zh) | 基于clickhouse的实时业务数据流分析处理方法和系统 | |
Ernstsen | Mario. A system for iterative and interactive processing of biological data | |
EP2975539A2 (en) | System and method for optimizing storage of multidimensional data in data storage | |
WO2015116223A1 (en) | Execution of a query on data updates and pushing query results |
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 |