CN117807028A - 使用目标文件分发大量全局元数据 - Google Patents
使用目标文件分发大量全局元数据 Download PDFInfo
- Publication number
- CN117807028A CN117807028A CN202311297752.4A CN202311297752A CN117807028A CN 117807028 A CN117807028 A CN 117807028A CN 202311297752 A CN202311297752 A CN 202311297752A CN 117807028 A CN117807028 A CN 117807028A
- Authority
- CN
- China
- Prior art keywords
- data
- manifest
- deployment
- data dictionary
- dictionary
- 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 claims abstract description 127
- 238000003860 storage Methods 0.000 claims description 51
- 238000012545 processing Methods 0.000 claims description 26
- 230000004048 modification Effects 0.000 claims description 14
- 238000012986 modification Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 11
- 238000009826 distribution Methods 0.000 abstract description 18
- 230000010076 replication Effects 0.000 abstract description 18
- 230000006870 function Effects 0.000 description 66
- 238000010586 diagram Methods 0.000 description 28
- 230000015654 memory Effects 0.000 description 15
- 230000008569 process Effects 0.000 description 15
- 238000004891 communication Methods 0.000 description 12
- 238000004458 analytical method Methods 0.000 description 10
- 230000005540 biological transmission Effects 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 238000005516 engineering process Methods 0.000 description 8
- 230000003068 static effect Effects 0.000 description 8
- 230000002776 aggregation Effects 0.000 description 7
- 238000004220 aggregation Methods 0.000 description 7
- 239000012634 fragment Substances 0.000 description 7
- 230000008878 coupling Effects 0.000 description 6
- 238000010168 coupling process Methods 0.000 description 6
- 238000005859 coupling reaction Methods 0.000 description 6
- 238000013500 data storage Methods 0.000 description 6
- 238000007726 management method Methods 0.000 description 6
- 230000008520 organization Effects 0.000 description 6
- 238000012795 verification Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 5
- 238000013498 data listing Methods 0.000 description 5
- 230000003993 interaction Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000001413 cellular effect Effects 0.000 description 3
- 235000019580 granularity Nutrition 0.000 description 3
- 230000003362 replicative effect Effects 0.000 description 3
- 230000000007 visual effect Effects 0.000 description 3
- 101100412394 Drosophila melanogaster Reg-2 gene Proteins 0.000 description 2
- 238000004140 cleaning Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- GVVPGTZRZFNKDS-JXMROGBWSA-N geranyl diphosphate Chemical compound CC(C)=CCC\C(C)=C\CO[P@](O)(=O)OP(O)(O)=O GVVPGTZRZFNKDS-JXMROGBWSA-N 0.000 description 2
- 230000005291 magnetic effect Effects 0.000 description 2
- 230000002093 peripheral effect Effects 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000012550 audit Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000010267 cellular communication Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 238000013503 de-identification Methods 0.000 description 1
- 230000036541 health Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000009434 installation Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000005693 optoelectronics Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
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/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
- G06F16/164—File meta data generation
-
- 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/14—Details of searching files based on file metadata
- G06F16/148—File search processing
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to 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/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
- G06F16/184—Distributed file systems implemented as replicated file system
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Library & Information Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及使用目标文件分发大量全局元数据。数据字典生成系统自动为提供共享数据的清单填充并更新数据字典。数据清单分发组件通过使用全局消息传递框架和复制方法将数据字典分发到数据交换所中的各种远程部署。例如,数据清单分发组件将为清单生成的数据字典及其共享数据从源部署复制到与各种地理区域相关联的一个或更多个目的地部署。数据清单分发组件将清单分发到各种远程部署以允许清单,包括其共享数据和数据字典,被与远程部署相关联的地理区域内的用户访问。
Description
技术领域
本公开涉及数据共享,尤其涉及分发描述共享数据的元数据。
背景
包括数据库的数据共享平台广泛用于计算应用中的数据存储和访问。数据库可以包括一个或更多个表,这些表包括或引用数据,可以使用查询来对这些数据进行读取、修改或删除。数据库可用于存储和/或访问个人信息或其他敏感信息。可以通过加密和/或以加密形式存储数据来提供数据库数据的安全存储和访问,以防止未授权的访问。在某些情况下,数据共享可能有助于让其他方对一组数据执行查询。此外,数据提供者可能希望为潜在的数据消费者提供共享数据的描述。例如,描述共享数据的数据(诸如包括的表、列、模式(schema)和数据类型)为数据消费者提供了信息,以确定哪些共享数据对他们有价值以及如何使用这些数据。
附图简述
通过参考以下结合附图进行的描述,可以最好地理解所描述的实施例及其优点。这些附图决不限制本领域技术人员在不脱离所描述的实施例的精神和范围的情况下可以对所描述的实施例做出的形式和细节上的任何改变。
图1A是根据本公开的一些实施例的描绘可以在其中实现本文公开的方法的示例计算环境的框图。
图1B是根据本公开的一些实施例的示出用于实现公共或私有数据交换所(dataexchange)的云计算服务的组件的框图。
图2是根据本公开的一些实施例的可用于实现公共或私有数据交换所的数据的示意性框图。
图3是根据本公开的一些实施例的用于实现数据交换所的组件的示意性框图。
图4A是根据本发明的一些实施例的在数据交换所中的远程部署的框图。
图4B是根据本发明的一些实施例的在数据交换所中的远程部署的框图。
图5是根据本发明的一些实施例的在数据交换所中的远程部署的框图。
图6是根据本发明的一些实施例的在数据交换所中的远程部署的框图。
图7是根据本发明的一些实施例的用于管理数据交换所可用性和数据清单(datalisting)可见性的方法的流程图。
图8是根据本发明的一些实施例的用于管理清单批准请求的方法的流程图。
图9是根据本发明的一些实施例的数据共享平台的框图。
图10是根据本发明的一些实施例的数据字典(data dictionary)生成系统的框图。
图11是根据本发明的一些实施例的用于自动为清单生成数据字典的方法的流程图。
图12是根据本发明的一些实施例的用于自动为清单更新数据字典的方法的流程图。
图13是根据本发明的一些实施例的用于生成元数据以填充数据字典的方法的流程图。
图14是根据本发明的一些实施例的用于生成描述表的元数据以填充数据字典的方法的流程图。
图15是根据本发明的一些实施例的用于为多个清单生成数据字典的方法的流程图。
图16是根据本发明的一些实施例的用于为由清单提供的共享数据中的每个数据对象生成元数据以填充数据字典的方法的流程图。
图17是根据本发明的一些实施例示出数据字典模式的框图。
图18是根据本发明的一些实施例的用户界面的框图,该用户界面呈现具有数据字典的清单的描述。
图19是根据本发明的一些实施例的另一用户界面的框图,该另一用户界面呈现具有数据字典的清单的描述。
图20是根据本发明的一些实施例呈现给数据提供者的用户界面的框图。
图21是根据本发明的一些实施例的用于将清单从源部署分发到目的地部署的方法的流程图。
图22是根据本发明的一些实施例的用于在目的地部署处复制清单的方法的流程图。
图23是根据本发明的一些实施例的用于将清单从源部署分发到目的地部署的系统的框图。
图24示出了根据本公开的一些实施例的计算机系统形式的机器的图解表示,在该计算机系统形式的机器内可以执行指令集,以用于使机器执行本文所讨论方法中的任何一种或更多种方法。
详细描述
数据提供者通常拥有难以共享的数据资产。数据资产可能是另一个实体感兴趣的数据。例如,一家大型在线零售公司可能有一个数据集,其中包括过去十年数百万客户的购买习惯。这个数据集可能很大。如果在线零售商希望与另一实体共享该数据的全部或部分(根据适用的隐私法和合同义务,匿名和/或聚合),在线零售商可能需要使用旧的且缓慢的方法来传输数据,例如文件传输协议(FTP),或者甚至将数据复制到物理介质上并将物理介质邮寄给另一实体。这有几个缺点。第一,比较慢。复制万亿字节或千兆字节的数据可能需要几天时间。其次,一旦数据被交付,共享者就无法控制数据会发生什么。接收者可以更改数据、制作副本或与其他方共享数据。第三,对以这种方式访问如此大的数据集感兴趣的唯一实体是大型公司,它们能够承担传输和处理数据的复杂物流以及这种繁琐的数据传输的高昂价格。因此,较小的实体(例如,中小型企业(SMB)、“夫妻店”等),或者甚至更小、更灵活的云理念初创企业(cloud-focused startup),往往由于价格过高而无法访问这些数据,尽管这些数据可能对他们的企业很有价值。这可能是因为原始数据资产通常过于粗糙(unpolished),充满了潜在的敏感数据,不能直接出售给其他公司。在数据可与另一方共享之前,数据所有者需要执行数据清洗(data cleaning)、去标识化、聚合、连接(joining)和其他形式的数据扩充(data enrichment)。这既费时又费钱。最后,由于上述原因,传统的数据共享方法不允许可扩展的共享,因此很难与许多实体共享数据资产。传统的共享方法还会在所有各方对最近更新的数据的访问方面引入了等待和延迟。
私有和公共数据交换所可以使数据提供者更容易和更安全地与其他实体共享其数据资产。公共数据交换所(本文也称为“数据市场(data marketplace)”)可以提供具有开放访问权的集中式储存库,其中数据提供者可以向成千上万的客户发布和控制实时的和只读数据集。私有数据交换所(本文也称为“数据交换所”)可以属于数据提供者的品牌,并且数据提供者可以控制谁可以访问它。数据交换所可以仅供内部使用,也可以对客户、合作伙伴、供应商或其他人开放。数据提供者可以控制列出哪些数据资产,以及控制谁具有对哪些数据集的访问权。这允许以无缝的方式在数据提供者的组织内以及与其业务伙伴发现和共享数据。
数据交换所可以通过诸如的云计算服务来促进,并允许数据提供者在具有其自己品牌的私有在线市场中直接从他们自己的在线域(例如,网站)提供数据资产。数据交换所可以为实体提供集中式的、受管理的中心(hub),以列出内部或外部共享的数据资产,激发数据协作,并且还维护数据治理和审计访问。有了数据交换所,数据提供者可以共享数据,而无需在公司之间复制数据。数据提供者可以邀请其他实体查看他们的数据清单,控制哪些数据清单出现在他们的私有在线市场中,控制谁可以访问数据清单以及其他人如何与连接到清单的数据资产交互。这可能被认为是一个“围墙花园(walledgarden)”市场,在这个市场里,参观花园的人必须得到批准,对某些清单的访问权可能会受到限制。
举例来说,A公司可能是一家消费者数据公司,它收集并分析了数百万个人在几个不同类别中的消费习惯。他们的数据集可以包括以下类别的数据:在线购物、视频流、电力消耗、汽车使用、互联网使用、服装购买、移动应用购买、俱乐部会员资格和在线订阅服务。A公司可能希望向其他实体提供这些数据集(或这些数据集的子集或衍生产品)。例如,一个新的服装品牌可能希望访问与消费者服装购买和在线购物习惯相关的数据集。A公司可以在其网站上支持一个页面,该页面是或功能基本上类似于数据交换所,在该页面上,数据消费者(例如,新的服装品牌)可以直接从A公司浏览、探索、发现、访问和有可能购买数据集。此外,A公司可以控制:谁可以进入数据交换所、可以查看特定清单的实体、实体可以对清单采取的动作(例如,仅查看)以及任何其他适当的动作。另外,数据提供者可以将其自己的数据与来自例如公共数据交换所的其它数据集进行组合,并使用组合的数据创建新清单。
数据交换所可以是发现、汇集(assemble)、清洗和扩充数据以使其更具货币化的合适场所。数据交换所中的一家大型公司可能会汇集来自其各个部门和机构的数据,这些数据可能会对另一家公司有价值。此外,私有生态系统数据交换所的参与者可以一起工作,将他们的数据集连接在一起,共同创建一个有用的数据产品,而任何一个参与者都无法单独生成该产品。一旦创建了这些连接的数据集,它们就可以在数据交换所或数据市场上列出。
当数据提供者在数据提供者的账户中创建数据库的共享对象(以下称为共享)并授予对数据库的特定对象(例如,表、安全视图和安全用户定义函数(UDF))的共享访问权限时,可以执行数据共享。然后,可以使用共享中提供的信息创建只读数据库。对该数据库的访问可以由数据提供者控制。“共享”封装共享数据库中的数据所需的所有信息。共享可以包括至少三条信息:(1)授权访问数据库和包含要共享的对象的模式的特权,(2)授权访问特定对象(例如,表、安全视图和安全UDF)的特权,以及(3)与之共享数据库及数据库的对象的消费者账户。当共享数据时,用户之间不会复制或传输任何数据。通过云计算服务提供者的云计算服务来完成共享。
由提供者(也称为“数据提供者”)共享的数据可以通过提供者在数据交换所或数据市场中定义的清单来描述。对于数据市场和数据交换所,对清单的访问控制、管理和治理可能是相似的。
共享数据可用于处理SQL查询,可能包括连接、聚合或其他分析。在某些情况下,数据提供者可以定义共享,从而允许对共享数据执行“安全连接(secure joins)”。可以执行安全连接,使得可以针对共享数据执行分析,但是数据消费者(例如,共享的接收者)不能访问实际的共享数据。
每个清单可以包括由数据提供者提供的、描述由清单提供的共享数据的描述。例如,描述可以包括描述在共享数据中包括的函数、表、列和数据类型的元数据。该描述允许数据消费者理解由清单提供的共享数据,识别数据消费者感兴趣的清单,并允许数据消费者理解如何使用由清单提供的共享数据。然而,生成和维护描述是一项费力且耗时的任务。例如,数据提供者必须手动为每个清单生成描述,其可以包括多个表、模式、视图和函数。因此,所提供的描述可能没有包括足够的细节来让数据消费者理解共享数据的细节。此外,由清单提供的共享数据可能会随着时间的推移而演变,需要数据提供者更新描述。因此,描述可能变得过时和/或不能正确地描述由清单提供的共享数据。
为了缓解这些问题,数据字典生成系统自动生成并更新定义每个清单中包括的共享数据的数据字典。数据字典包括描述由整个清单提供的共享数据的元数据,以及描述在共享数据中包括的单个对象(诸如单个表、模式、视图、函数等)的元数据。由清单提供的共享数据和在共享数据中包括的每个单个的数据对象可以在数据字典中由对应于共享数据或单个对象的对象类型的数据字段集来描述。例如,用于描述清单的数据字段集可以包括由清单提供的共享数据的高级摘要(summary),诸如共享数据中包括的模式、表、视图、函数和/或存储过程的数量。用于描述单个对象的数据字段集可以提供关于该对象及其内容的更具体的数据。例如,用于描述表的数据字段集可以包括描述表的信息(例如,表名称、描述、大小、行数、列数)、描述表中每列的信息(例如,名称、描述、数据类型、示例值)、列统计数据(例如,值的范围、频率)和表预览。作为另一示例,用于描述函数或存储过程的数据字段集可以包括函数或存储过程的名称、描述、参数名称和参数类型。
当数据消费者请求时,填充到数据字典中的元数据可以与清单的描述一起呈现给数据消费者。例如,当数据消费者选择查看通过数据交换所可用的清单时,填充到数据字典中的元数据可以与描述一起呈现在用户界面中。数据字典中提供的数据为数据消费者提供了共享数据的全面描述,包括共享数据的高级摘要和共享数据中包括的每个单个对象的描述。数据字典中包括的信息允许数据消费者理解由清单提供的共享数据的内容以及如何使用由清单提供的共享数据。
为了给清单生成数据字典,数据字典生成系统分析由清单提供的共享数据,以识别共享数据中包括的对象。数据字典生成系统识别与每个识别的对象相关联的数据字段集,并基于由清单提供的共享数据填充与每个识别的对象相关联的数据字段集。例如,数据字典生成系统可以访问表的标题以填充表名称数据字段,计数表中包括的列数以填充列数数据字段,等等。由数据字典生成系统生成的数据字典可以被填充到与清单相关联的清单文件(manifest file)中,该清单文件随后可以用于生成清单的描述。
为了确保针对每个清单的数据字典被生成,并且当清单中包括的共享数据被更新时保持最新,数据字典生成系统周期性地扫描清单以识别对授予清单的共享访问权的任何改变。例如,数据字典生成系统确定清单是否已被授予对新对象的访问权,是否已被撤销对对象的访问权,或者对对象的访问权是否已被修改。如果检测到对授予清单的共享访问权的改变,则数据字典生成系统为该清单生成更新的数据字典。然后,更新的数据字典被填充到与清单相关联的清单文件中,以提供清单的更新的描述。
图1A是其中可以实现本文公开的系统和方法的示例计算环境100的框图。特别地,可以实现云计算平台110,例如AMAZON WEB SERVICESTM(AWS)、MICROSOFT AZURETM、GOOGLECLOUDTM等。如本领域中已知的,云计算平台110提供计算资源和存储资源,这些资源可以被获取(购买)或租赁并被配置为执行应用和存储数据。
云计算平台110可以托管云计算服务112,该云计算服务112促进云计算平台110上的数据的存储(例如,数据管理和访问)和分析功能(例如,SQL查询、分析),以及其他计算能力(例如,云计算平台110的用户之间的安全数据共享)。云计算平台110可以包括三层架构:数据存储设备140,查询处理130和云服务120。
数据存储设备140可以促进云计算平台110上的数据在一个或更多个云数据库141中的存储。数据存储设备140可以使用诸如AMAZON S3的存储服务来在云计算平台110上存储数据和查询结果。在特定实施例中,为了将数据加载到云计算平台110中,数据表可以被水平分割成大的、不可变的文件,这些文件可以类似于传统数据库系统中的块或页。在每个文件中,每个属性或列的值被分组在一起,并使用有时被称为混合列的方案进行压缩。每个表都有一个表头(header),除其他元数据外,该表头还包含文件中每一列的偏移量。
除了存储表数据之外,数据存储设备140促进存储由查询操作(例如,连接)生成的临时数据,以及包含在大型查询结果中的数据。这可以允许系统计算大型查询而没有内存不足或磁盘不足错误。这样存储查询结果可以简化查询处理,因为它消除了传统数据库系统中对服务器端游标的需求。
查询处理130可以处理虚拟机的弹性集群(在本文称为虚拟仓库或数据仓库)内的查询执行。因此,查询处理130可以包括一个或更多个虚拟仓库131,其在本文也可以被称为数据仓库。虚拟仓库131可以是在云计算平台110上操作的一个或更多个虚拟机。虚拟仓库131可以是计算资源,可以根据需要在任何时候创建、销毁或调整大小。这个功能可以创建一个“弹性”的虚拟仓库,它可以根据用户的需要进行扩展、收缩或关闭。扩展虚拟仓库包括生成虚拟仓库131的一个或更多个计算节点132。收缩虚拟仓库包括从虚拟仓库131中移除一个或更多个计算节点132。更多的计算节点132可以导致更快的计算时间。例如,在具有四个节点的系统上,数据加载需要十五个小时,而在具有三十二个节点的系统上,可能只需要两个小时。
云服务120可以是跨云计算服务112协调活动的服务集合。这些服务将云计算服务112的所有不同组件联系在一起,以便处理从登录到查询分派的用户请求。云服务120可以在由云计算服务112从云计算平台110提供的计算实例上操作。云服务120可以包括管理以下项的服务集合:虚拟仓库、查询、事务、数据交换以及与这些服务相关联的元数据(例如数据库模式、访问控制信息、加密密钥和使用统计)。云服务120可以包括但不限于认证(authentication)引擎121、基础设施管理器122、优化器123、交换管理器124、安全引擎125和元数据存储设备126。
图1B是根据本公开的一些实施例示出用于实现公共或私有数据交换所的云计算服务112的组件的框图。交换管理器124可以使用例如数据交换所来促进数据提供者和数据消费者之间的数据共享。例如,云计算服务112可以管理数据库108的存储和访问。数据库108可以包括对于不同用户(例如不同企业或个人)的用户数据133的各种实例。用户数据可以包括由该用户存储和访问的数据的用户数据库152。用户数据库152可以受到访问控制,使得在向云计算服务112认证之后,仅允许数据的所有者改变和访问数据库152。例如,数据可以被加密,使得它只能使用数据所有者拥有的解密信息来解密。使用交换管理器124,来自用户数据库152的受到这些访问控制的特定数据可以根据本文公开的方法以受控的方式与其他用户共享。特别地,用户可以指定共享114,该共享114可以以不受控制的方式在公共或私有数据交换所中共享,或者如上所述,以受控制的方式与特定的其他用户共享。“共享”封装了在数据库中共享数据所需的所有信息。共享可以包括至少三条信息:(1)授权访问数据库和包含要共享的对象的模式的特权,(2)授权访问特定对象(例如,表、安全视图和安全UDF)的特权,以及(3)与之共享数据库以及数据库的对象的消费者账户。当共享数据时,用户之间不会复制或传输任何数据。共享是通过云计算服务112的云服务120来实现的。
当数据提供者在数据提供者的账户中创建数据库的共享并授权访问特定对象(例如,表、安全视图和安全用户定义函数(UDF))时,可以执行数据共享。然后,可以使用共享中提供的信息创建只读数据库。对该数据库的访问可以由数据提供者控制。
共享数据可用于处理SQL查询,可能包括连接、聚合或其他分析。在某些情况下,数据提供者可以定义共享,从而允许对共享数据执行“安全连接”。可以执行安全连接,使得可以针对共享数据执行分析,但是数据消费者(例如,共享的接收者)不能访问实际的共享数据。如2019年3月18日提交的美国申请序列号16/368,339中所述,可以执行安全连接。
用户设备101-104(例如膝上型计算机、台式计算机、移动电话、平板计算机、云托管计算机、云托管无服务器进程或其他计算进程或设备)可用于通过网络105(例如互联网或专用网络)访问虚拟仓库131或云服务120。
在下面的描述中,动作归属于用户,特别是消费者和提供者。这种动作应当被理解为是针对由这种用户操作的设备101-104来执行的。例如,给用户的通知可以被理解为发送到设备101-104的通知,来自用户的输入或指令可以被理解为通过用户的设备101-104接收,并且用户与界面的交互应该被理解为与用户的设备101-104上的界面的交互。另外,归属于用户(消费者或提供者)的数据库操作(连接、聚合、分析等)应被理解为包括云计算服务112响应于来自该用户的指令执行此类动作。
图2是根据本发明的实施例的可用于实现公共或私有数据交换所的数据的示意性框图。交换管理器124可以针对一些或所有所示的交换数据200进行操作,交换数据200可以存储在执行交换管理器124的平台(例如,云计算平台110)上或某个其他位置。交换数据200可以包括描述由第一用户(“提供者”)共享的数据的多个(a plurality of)清单202。清单202可以是数据交换所或数据市场中的清单。对于数据市场和数据交换所,对清单的访问控制、管理和治理可能是相似的。
清单202可以包括描述共享数据的元数据204。元数据204可以是由数据提供者提供(例如,手动输入)以描述共享数据的数据。例如,元数据204可以包括以下一些或全部信息:共享数据的共享者(例如,数据提供者)的标识符、与共享者相关联的URL、共享的名称、表的名称、共享数据所属的类别、共享数据的更新频率、表的目录、每个表中的列数和行数,以及列的名称。元数据204还可以包括帮助用户使用数据的示例。这样的示例可以包括样品表(sample table),该样品表包括示例表的行和列的样品、可以对表运行的示例查询、示例表的示例视图、基于表数据的示例可视化(例如,图形、仪表板)。元数据204中包括的其他信息可以是供商业智能工具使用的元数据、包含在表中的数据的文本描述、与表相关联以便于搜索的关键词、到与共享数据相关的文档的链接(例如,URL)、以及指示共享数据更新的频率以及数据最后更新的日期的刷新间隔。
清单202可以包括访问控制206,其可以被配置为任何合适的访问配置。例如,访问控制206可以指示共享数据对于私有交换所的任何成员都是可用的,而没有限制(本文别处使用的“任何共享”)。访问控制206可以指定被允许访问数据和/或查看清单的一类用户(特定组或组织的成员)。访问控制206可以指定“点对点”共享(参见图4A和图4B的讨论),其中用户可以请求访问,但是只有在提供者批准后才允许访问。访问控制206可以指定被排除在能够访问由清单202引用的数据之外的用户的一组用户标识符。
注意,一些清单202可能被用户发现而没有进一步的认证或访问许可,而实际访问仅在后续的认证步骤之后才被允许(参见图4A-图4B和图6的讨论)。访问控制206可以指定清单202仅可由特定用户或特定类别的用户发现。
还要注意,清单202的默认功能是由共享引用的数据不可由消费者导出。可选地,访问控制206可以指定这是不允许的。例如,访问控制206可以指定可以对共享数据执行安全操作(如下所述的安全连接和安全功能),使得不允许查看和导出共享数据。
在一些实施例中,一旦用户相对于清单202被认证,对该用户的引用(例如,用户在虚拟仓库131中的账户的用户标识符)被添加到访问控制206,使得该用户随后能够访问清单202所引用的数据而无需进一步认证。
清单202可以定义一个或更多个过滤器208。例如,过滤器208可以定义在浏览目录220时可以查看对清单202的引用的用户的特定用户标识符214。过滤器208可以定义当浏览目录220时可以查看对清单202的引用的一类用户(特定职业的用户、与特定公司或组织相关联的用户、特定地理区域或国家内的用户)。以这种方式,私有交换所可以由交换管理器124使用相同的组件来实现。在一些实施例中,被排除访问清单202(即,将清单202添加到被排除用户的消费共享116)的被排除用户在浏览目录220时仍然可以被允许查看清单的表示,并且还可以被允许请求访问清单202,如下所述。由这些被排除的用户和其他用户访问清单的请求可以在呈现给清单202的提供者的界面中列出。清单202的提供者然后可以查看对访问清单的需求,并选择扩展过滤器208以允许被排除的用户或被排除的用户类别(例如,被排除的地理区域或国家中的用户)的访问。
过滤器208可以进一步定义用户可以查看什么数据。特别地,过滤器208可以指示选择清单202来添加到用户的消费共享116的用户被允许访问清单所引用的数据,但仅仅是数据的过滤版本,该过滤版本仅包括与该用户的标识符214相关联、与该用户的组织相关联或者特定于该用户的某个其他分类的数据。在一些实施例中,私有交换是通过邀请进行的:在传递对从提供者接收到的邀请的接受后,由提供者邀请查看私有交换所的清单202的用户被允许通过交换管理器124进行查看。
在一些实施例中,清单202可以寻址到单个用户。因此,对清单202的引用可以被添加到用户可见的一组“未决共享(pending shares)”中。一旦用户向交换管理器124传达批准,清单202就可以被添加到用户的一组共享中。
清单202可以进一步包括使用数据(usage data)210。例如,云计算服务112可以实现信用系统,其中信用由用户购买,并在每次用户运行查询、存储数据或使用云计算服务112实现的其他服务时被消费。因此,使用数据210可以记录通过访问共享数据消耗的信用量。使用数据210可以包括其他数据,例如查询的数目、针对共享数据执行的多种类型聚合中的每种类型聚合的数目、或者其他使用统计数据。在一些实施例中,用户的清单202或多个清单202的使用数据以共享数据库的形式提供给用户,即,对包括使用数据的数据库的引用由交换管理器124添加到用户的消费共享。
交换数据200可以进一步包括用户记录212。用户记录212可以包括标识与用户记录212相关联的用户的数据,例如在服务数据库128中具有用户数据133并由虚拟仓库131管理的用户的标识符(例如,仓库标识符)。
用户记录212可以列出与用户相关联的共享,例如,由用户创建的参考清单202。用户记录212可以列出用户消费的共享,例如由另一个用户创建的并且已经根据本文描述的方法与用户的账户相关联的参考清单202。例如,清单202可以具有将用于在用户记录212的共享或消费共享216中对其进行引用的标识符。
交换数据200可以进一步包括目录220。目录220可以包括所有可用清单202的清单,并且可以包括来自元数据204的数据的索引,以便于根据本文描述的方法进行浏览和搜索。在一些实施例中,清单202以JavaScript对象符号(JSON)对象的形式存储在目录中。
注意,在不同云计算平台上存在虚拟仓库131的多个实例的情况下,虚拟仓库131的一个实例的目录220可以存储来自一个或更多个其他云计算平台110上的其他实例的清单或对清单的引用。因此,每个清单202可以是全局唯一的(例如,在虚拟仓库131的所有实例中被分配一个全局唯一的标识符)。例如,虚拟仓库131的实例可以同步它们的目录220的副本,使得每个副本指示可从虚拟仓库131的所有实例获得的清单202。在一些情况下,清单202的提供者可以指定它仅在指定的一个或更多个计算平台110上可用。
在一些实施例中,目录220可在互联网上获得,使得它可由诸如BING或GOOGLE的搜索引擎搜索。目录可能会受到搜索引擎优化(SEO)算法的影响,以提高其可见性。潜在消费者因此可以从任何web浏览器浏览目录220。交换管理器124可以展示链接到每个清单202的统一资源定位符(URL)。该URL可以是可搜索的,并且可以在由交换管理器124实现的任何界面之外被共享。例如,清单202的提供者可以发布其清单202的URL,以便促进其清单202及其品牌的使用。
如前所述,由数据提供者提供的共享数据(例如,元数据204)的描述可能没有包括足够的细节来让数据消费者理解由清单202提供的共享数据的细节,因为数据提供者必须手动输入每个清单的描述。此外,由于由清单202提供的共享数据随时间演变,描述可能变得过时和/或不能正确描述由清单202提供的共享数据。为了缓解这些问题,定义清单及其提供的对象的数据字典被自动生成,并与清单的描述一起呈现。每个清单的数据字典可以存储在目录220中包含的对应清单文件(未示出)中。
图3示出了交换管理器124中可以包括的各种组件300-314。创建模块300可以提供用于创建清单202的界面。例如,到虚拟仓库131的网页界面使用户能够在设备101-104上选择用于共享的数据(例如用户的用户数据133中的特定表)以及输入定义元数据204、访问控制206和过滤器208中的一些或全部的值。在一些实施例中,创建可以由用户通过SQL解释器中的SQL命令来执行,该SQL解释器在云计算平台110上执行并通过用户设备101-104上的网页界面来访问。
当试图创建清单202时,验证模块302可以验证由提供者提供的信息。注意,在一些实施例中,归属于验证模块302的动作可以由检查由提供者提供的信息的人来执行。在其他实施例中,这些动作是自动执行的。验证模块302可以执行或便于操作员执行各种功能。这些功能可以包括验证元数据204与其引用的共享数据一致,验证由元数据204引用的共享数据不是盗版数据、个人身份信息(PII)、个人健康信息(PHI)或共享不合乎要求或非法的其他数据。验证模块302还可以便于验证数据已经在阈值时间段内(例如,在最近二十四小时内)被更新。验证模块302还可以便于验证数据不是静态的或者不能从其他静态公共源获得。验证模块302还可以便于验证数据不仅仅是样本(例如,数据足够完整以至于有用)。例如,地理上受限的数据可能是不期望的,而其他方面不受限制的数据聚合可能仍然有用。
交换管理器124可以包括搜索模块304。搜索模块304可以实现通过使用用户设备101-104可访问的网页界面,以便调用关于目录220中元数据的搜索字符串的搜索,接收对搜索的响应,并选择搜索结果中对清单202的引用,以添加到执行搜索的用户的用户记录212的消费共享216。在一些实施例中,搜索可以由用户通过SQL解释器中的SQL命令来执行,该SQL解释器在云计算平台102上执行并通过用户设备101-104上的网页界面来访问。例如,搜索共享可以通过在下面讨论的SQL引擎310内对目录220的SQL查询来执行。
搜索模块304可以进一步实现推荐算法。例如,推荐算法可以基于用户的消费共享116中或先前用户的消费共享中的其他清单,为用户推荐其他清单202。推荐可以基于逻辑相似性:天气的一个数据来源导致天气数据的第二来源的推荐。推荐可以基于非相似性:一个清单用于一个域(地理区域、技术领域等)中的数据,结果导致不同域(不同地理区域、相关技术领域等)中的清单,以促进用户分析的完整覆盖。
交换管理器124可以包括访问管理模块306。如上所述,用户可以添加可能需要关于清单202的提供者的认证的清单202。一旦清单202被添加到用户的用户记录212的消费共享216,用户可以(a)被要求在每次访问由清单202引用的数据时进行认证,或者(b)一旦清单202被添加,就被自动认证并被允许访问数据。访问管理模块306可以管理对用户的消费共享116中的数据的后续访问的自动认证,以便提供共享数据的无缝访问,就好像它是该用户的用户数据133的一部分一样。为此,访问管理模块306可以访问清单202的访问控制206、证书、令牌或其他认证材料,以便在执行对共享数据的访问时认证用户。
交换管理器124可以包括连接模块308。连接模块308管理用户的消费共享116所引用的共享数据(即来自不同提供者的共享数据)与彼此的集成,以及与用户拥有的数据的用户数据库152的集成。特别地,连接模块308可以管理关于这些各种数据源的查询和其他计算功能的执行,使得它们的访问对用户是透明的。连接模块308可以进一步管理对数据的访问,以对共享数据实施限制,例如,使得可以执行分析并且显示分析结果,而不向数据的消费者展示基础数据,其中该限制由清单202的访问控制206指示。
交换管理器124还可以包括标准查询语言(SQL)引擎310,其被编程为接收来自用户的查询,并针对该查询所引用的数据执行该查询,该数据可以包括用户的消费共享116和用户拥有的用户数据133。SQL引擎310可以执行本领域已知的任何查询处理功能。SQL引擎310可以附加地或替代地包括本领域已知的任何其他数据库管理工具或数据分析工具。SQL引擎310可以定义在云计算平台110上执行的网页界面,通过该网页界面输入SQL查询并呈现对SQL查询的响应。
交换管理器124还可以包括数据字典生成系统312,该数据字典生成系统312被编程为自动填充和更新对于每个清单202的数据字典。数据字典包括描述整个清单202中包括的共享数据的元数据,以及描述清单202中包括的单个对象(诸如单个表、模式、视图、函数等)的元数据。由清单202提供的共享数据和每个单个数据对象可以在数据字典中由对应于共享数据集或单个对象的对象类型的数据字段集来描述。例如,用于描述清单202的数据字段集可以包括清单202中包括的共享数据的高级摘要,诸如共享数据中包括的模式、表、视图、函数和/或存储过程的数量。用于描述单个对象的数据字段集可以提供关于该对象及其内容的更具体的数据。例如,用于描述表的数据字段集可以包括描述表的信息(例如,表名称、描述、大小、行数、列数)、描述表中每列的信息(例如,名称、描述、数据类型、示例值)、列统计数据(例如,值的范围、频率)和表预览。作为另一示例,用于描述函数或存储过程的数据字段集可以包括函数或存储过程的名称、描述、参数名称和参数类型。
当数据消费者请求时,填充到数据字典的元数据可以与清单202的描述一起呈现给数据消费者。例如,当数据消费者选择查看通过数据交换所可用的清单202时,填充到数据字典的元数据可以与描述一起呈现在用户界面中。数据字典中提供的数据向数据消费者提供了由清单202提供的共享数据的全面描述,包括共享数据的高级摘要和共享数据中包括的每个单独对象的描述。数据字典中包括的信息允许数据消费者理解由清单202提供的共享数据的内容以及如何使用清单202中包括的共享数据。
为了给清单202生成数据字典,数据字典生成系统312分析由清单202提供的共享数据,以识别在共享数据中包括的对象。数据字典生成系统312识别与每个识别的对象相关联的数据字段集,并基于由清单202提供的共享数据填充与每个识别的对象相关联的数据字段集。例如,数据字典生成系统312可以访问表的标题以填充表名称数据字段,计数表中包括的列数以填充列数数据字段,等等。由数据字典生成系统312生成的数据字典可以被填充到与清单202相关联的清单文件中。例如,清单文件可以存储在目录220中,存储的数据字典可以随后从目录220中被访问并用于生成清单202的描述。
为了确保针对每个清单202的数据字典被生成并且当由清单提供的共享数据被更新时保持最新,数据字典生成系统312周期性地扫描清单202以识别对授予清单202的共享访问权的任何改变。例如,数据字典生成系统312确定清单202是否已经被授予对新对象的访问权,是否已经撤销了对对象的访问权,或者是否已经修改了对对象的访问权。如果检测到对授予清单202的共享访问权的改变,数据字典生成系统312为清单202生成更新的数据字典。然后,更新的数据字典被填充到与清单202相关联的清单文件中,以提供清单202的更新的描述。
下面结合图10-图16更详细地描述数据字典生成系统312的功能。
交换管理器124还可以包括数据清单分发组件314,该数据清单分发组件314对将清单202分发到数据交换所中的各种远程部署进行管理。例如,数据清单分发组件314可以将为清单202生成的数据字典和由清单202提供的共享数据从源部署复制到一个或更多个目的地部署。每个远程部署可以与地理区域相关联。数据清单分发组件314将清单202分发到各个远程部署,以允许与地理区域相关联的区域内的用户访问清单202。数据清单分发组件314可以利用以下关于图4A和图4B描述的全局消息传递框架和复制方法。下面结合图21-图23进一步详细描述数据清单分发组件314的功能。
图4A示出了包括经由网络410通信的多个远程云部署401、402和403的云环境400。远程部署401、402和403中的每一个可以包括类似于(在图1A中示出的)云计算服务112的架构。远程部署401、402和403都可以物理地位于分离的远程地理区域中,但都可以是单个数据交换所或单个数据市场的部署。在云环境400中,对数据(诸如数据清单、数据库或远程部署401上的共享)的请求可以来自远程部署402或远程部署403上的账户。远程部署401可以是数据交换所或数据市场的原始部署,并且可以利用适当的数据复制方法来使这种请求的数据在远程部署402和403上可用。
例如,如果账户A驻留在位于区域1中的远程部署401上,并且在远程部署401上具有数据库DB1,账户A希望与驻留在位于区域2中的远程部署402内的账户B共享该数据库DB1,则账户A可以更改数据库DB1,使其成为全局类型数据库(与区域特定相对),并(例如,通过使用SQL命令“alter database DB1 enable replication to accounts Reg_2.B”)将DB1的元数据复制到远程部署402。账户B可以获得他们可以(例如,使用SQL命令“showreplication databases”)访问的数据库的列表(a list of databases),这将返回指示DB1的标识符“Reg_1.A.DB1(primary)”。账户B可以(例如,通过使用SQL命令“createdatabase DB1R as replica of Reg_1.A.DB1”)在远程部署402上创建DB1的本地副本(在图4A中示为DB1R),其创建全局类型数据库,因为它被创建为副本。应该注意的是,到目前为止,还没有开始数据复制。此时,“show replication databases”命令将返回标识符“Reg_1.A.DB1(primary)”和“Reg_2.B.DB1(secondary)”。账户B可以通过使用命令(例如,“alterdatabase DB1 refresh”)来启动数据复制,该命令是同步操作,其持续时间取决于要同步的数据量。如图4B所示,每个远程部署都包括某些本地对象和它访问的全局版本的对象。尽管讨论的是数据库,但上述方法可用于在远程部署之间复制各种类型的数据对象,例如,包括数据交换所、数据清单和共享。
在一些实施例中,远程部署401-403可以利用全局消息传递框架,该全局消息传递框架利用(如本文进一步详细讨论的)特殊消息类型,每个特殊消息类型都专门启用各种不同的函数。对于每种全局消息类型,都有相应的处理函数适用于处理该类型的消息。因此,如本文进一步详细讨论的,特定类型的全局消息将包括用于需要对该特定消息类型执行什么处理的自定义逻辑(custom logic)。
尽管可以实现上面讨论的跨区域功能,但在某些场景中,数据交换所所有者/管理员可能希望限制数据交换所在哪里(例如,在哪些区域或远程部署)可用。此外,数据提供者可能希望控制其数据清单在哪里可见。例如,公司和政府可能对在哪里可以获得某些数据有不同的和变化的要求/规定。数据提供者本身可能对谁可以看到/访问其数据以及在哪里可以看到/访问其数据有自己的要求/限制,也可能希望限制其清单在哪里可见。尽管可以在数据交换所的单个实例中实现关于清单可见性的控制,但在跨区域数据交换所中、在不共享相同存储装置的远程部署上实现这样的控制是不可行的。此外,即使在多个部署402和403上清单是可见的,但是由于数据仍然驻留在本地部署401中,因此还是需要用于请求和实现数据的手段。
本公开的实施例可以利用本文描述的数据复制过程和全局消息传递框架来基于定制逻辑在远程部署401-403之间复制数据,以便使数据交换所在特定区域中可用,该特定区域可以是跨云的,并且还将关于数据交换所中的每个数据清单的可见性的信息复制到特定区域,使得即使数据清单最初不是在那里创建的,也可以在每个远程部署中实施这样的限制。尽管讨论的是数据交换所,但是本公开的实施例也可以在数据市场中实现。图4B示出了根据本公开的一些实施例的云环境400。
图4B示出了远程部署401,其可以是数据交换所DX1以及远程部署402和403的原始部署。远程部署402和403是可以使数据交换所DX1在其中可用的远程部署,并且如上所述,每个远程部署都可以驻留在它们自己的地理区域(以下称为“区域”,并在图4B中示为区域1、区域2、区域3)中。数据交换所DX1可以具有指定的数据交换所管理员账户(以下称为“交换所管理员(exchange admin)”),并且可以提供以下功能:允许远程部署401上的交换所管理员指定数据交换所DX1将可用(可解析)的区域以及可以从哪些区域将客户添加为数据交换所DX1的成员。应注意,交换所管理员(与其他账户一样)可以包括账户管理员角色,该账户管理员角色可将指定数据交换所DX1在其中可用的区域的能力委托给交换所管理员中的其他角色。数据交换所DX1还可以包括允许数据提供者限制这样的区域的功能:在该区域中允许其清单(例如,图4B所示的清单DXL1)的可见性。远程部署401可以为交换所管理员提供命令(例如,SQL命令)以设置可用区域。例如,交换所管理员可以使用命令“Create dataexchange<data_exchange_name>regions=region1,...”来创建在某些区域(例如,区域1等)中可用的数据交换所。当交换所管理员希望修改可用区域时,他们可以使用命令“Alterdata exchange<data_exchange_name>set regions=region1,region2...”来修改数据交换所是可用的区域。例如,交换所管理员还可以使用命令“Alter data exchange<data_exchange_name>unset regions”来去除所有当前设置的可用区域。在一些实施例中,交换所管理员可以修改可用性区域,而数据交换所账户持有人、管理员和数据提供者可以(例如,使用命令“Show regions in data exchange<data_exchange_name>”)查看可用区域的列表。对于公共数据交换所,可用区域可以自动设置为公共数据交换所当前被复制的那些区域。
当交换所管理员设置用于数据交换所的可用区域时,该信息可以作为列表保存在远程部署401的本地数据库(未示出)中。本地数据库可以是任何适当的数据库,例如FoundationDB。远程部署401的本地数据库可以包括多个数据处理对象(DPO),其中可以存储与数据交换所DX1有关的数据。例如,基础字典(base dictionary)DPO可以包括一组数据库表,其用于存储关于数据库定义的信息,这些信息包括关于数据库对象(诸如表、索引、列、数据类型(datatypes)和视图)的信息。
一个这样的DPO可以是扩展基础字典DPO的可用区域DPO并且数据交换所DX1的可用区域可以保存在其中。换句话说,指定的可用区域可以是基础字典DPO的属性。如从上面列出的示例命令中可以看出,交换所管理员可以在逐个区域的基础上指定数据交换所DX1在其中可用的区域,而不是在逐个部署的基础上指定DX1在其中可用的特定远程部署。因此,当执行“Alter data exchange”命令时,远程部署401可以保存要使数据交换所DX1在其中可用的每个区域的部署位置ID,而不是保存要使数据交换所DX1在其中可用的远程部署的部署标识符(ID)。部署位置ID可以以任何合适的字母-数字形式表示,例如1001或region1(对应于区域1)以及1002或region2(对应于区域2)。可用部署位置ID的列表可以存储为可用区域DPO内的字符串(定义为例如静态最终字符串AVAILABLE_DEPLOYMENT_LOCATION_IDS=“availabledeploymentlocationIDs”),并且当数据交换所DX1的成员希望知道可用区域时,可以解析该字符串以确定数据交换所DX1在其中可用的区域的部署位置ID。应该注意的是,区域1、区域2和区域3中的任何一个都可以包含多个远程部署,并且这些远程部署中的每一个可以被称为部署分片(deployment shard)。特定区域中的每个部署分片将共享同一部署位置ID。利用部署位置ID是高效的,因为不需要在每次创建新部署时手动刷新可用区域DPO中的可用部署ID的列表(字符串)。例如,如果一个新的分片部署(sharding deployment)被添加到一个区域,存储部署ID将需要手动刷新相关DPO中可用部署ID的列表。通过利用/存储部署位置ID,如果例如在任何区域中创建新部署/分片,则远程部署401只需要获得新部署/分片的部署区域,这是容易的,因为它被包括在新部署/分片的部署元数据中。
远程部署401然后可以使用上文讨论的数据库复制方法来将数据交换所DX1复制到(如由交换所管理员指定的)数据交换所在其中可用的每个区域中的每个远程部署中。对于对应于数据交换所DX1的全局对象,远程部署401可以通过以下操作来决定全局对象要复制到哪个(哪些)远程部署:解析来自可用区域DPO的部署位置ID的字符串以确定数据交换所DX1在其中可用的区域的列表。在图4B的所示的示例中,交换所管理员可以将区域1(其当前已经存在)和区域2设置为可用区域。当复制数据交换所DX1时,远程部署401需要知道在区域2中有哪些远程部署可用,并且可以获得区域2中的所有远程部署(例如,部署位置ID1002)。在图4B的示例中,这可以包括远程部署402、402B和402C)。更具体地说,远程部署401可以包括区域2的部署位置ID和区域2中每个部署分片的部署ID之间的映射。因此,数据交换所DX1可以容易地查找区域2(由其部署位置ID标识)中的所有部署分片ID,并将信息复制到所有相关的部署分片。如图4B所示,对应于数据交换所DX1的全局对象随后被复制到远程部署402。当创建新部署时,可以通过刷新要复制的远程部署的列表来回填(backfill)该列表。远程部署401然后可以继续上面描述的数据复制方法,以将数据交换所DX1复制到区域2中的每个远程部署(即远程部署402)。在一些实施例中,远程部署401可以执行这样的过程:获得可用区域的列表并以规则间隔将数据交换所DX1复制到那些区域中的远程部署。如图4B中可以看出,远程部署402现在可以访问数据交换所DX1的全局副本。
在设置用于数据交换所DX1的可用区域后,数据交换所DX1的数据提供者可以设置其清单将在其中可见的区域(例如,设置清单可见性)。清单可以是数据提供者希望共享的数据的消费者可视表示。清单可以描述基础数据是关于什么的,包含关于数据的使用示例以及本文讨论的其他元数据。数据提供者创建清单,并且在创建时,只有数据提供者可以看到清单。数据提供者可以将清单发送给交换所管理员以用于发布批准(如本文进一步详细描述的,称为“清单批准”)。一旦获得批准,数据提供者就可以在数据交换所DX1在其中可用的区域中发布全局可用的清单。
清单可见性并不是指由于远程部署中存在(或缺少)清单而实施的物理限制,这意味着清单仍然可以复制到这些部署中,同时对这些部署的消费者保持不可见。一旦交换所管理员决定数据交换所DX1在哪些区域中可用,数据提供者就可以选择这些区域的子集,使在该子集中清单可见。
在图4B的所示的示例中,远程部署402中的数据提供者可以(在远程部署402中本地地)生成清单DXL1以共享特定数据。(例如,先前从远程部署401复制的)数据交换所DX1的本地副本可以为数据提供者提供一组命令(例如,SQL命令)来设置清单DXL1在其中可见的区域。例如,数据提供者可以使用命令“Alter listing<listing_name>set regions=region1,region2...”来设置DXL1在其中可见的区域。数据提供者可以使用命令“Alterlisting<listing_name>unset regions”来去除所有先前设置的区域(使得清单在任何区域中都不可见),并且可以使用命令“Show listings in data exchange<dx_name>;”来查看DXL1在其中可见的当前区域。
当数据提供者设置清单DXL1在其中可见的区域时,该信息可以作为列表保存在远程部署402的本地数据库中(未示出)。远程部署402的本地数据库可以是任何合适的数据库,例如FoundationDB,并且远程部署402的本地数据库可以包括清单可见区域DPO(未示出),该清单可见区域DPO扩展基础字典DPO并且在该清单可见区域DPO中可以保存一个或更多个清单在其中可见的区域。如在上面列出的示例命令中可以看到的,数据提供者可以在逐个区域的基础上指定其清单在其中可见的区域,而不是在逐个部署的基础上指定其清单在其上可见的特定部署。因此,当执行“Alter listing<listing_name>set regions”命令时,远程部署402可以保存使清单DXL1在其中可见的每个区域的部署位置ID,而不是保存使清单在其上可见的远程部署的部署ID。使清单DXL1在其中可见的部署位置ID的列表可以作为字符串(被定义为例如静态最终字符串VISIBLE_DEPLOYMENT_LOCATION_IDS=“availabledeploymentlocationIDs”)存储在清单可见区域DPO中,并且当数据提供者或交换所管理员希望知道清单DXL1在其中可见的区域时,可以解析该字符串以确定清单DXL1在其中可见的区域的部署位置ID。
使用部署位置ID是有效的,因为每次创建新部署时,不需要手动刷新在清单可见区域DPO中清单在其上可见的部署的部署ID的列表。例如,如果新的分片部署被添加到一个区域,存储部署ID将需要手动刷新清单在其上可见的部署ID的列表。通过利用/存储部署位置ID,如果创建了新部署/分片,数据交换所只需要获取新部署/分片的部署位置(区域),这很容易,因为它位于新部署/分片的部署元数据中。
当设置了清单DXL1的可见区域时,远程部署402可以将清单DXL1和可见性列表复制到清单DXL1在其中可见的每个区域中的每个远程部署。如上所述,远程部署402可以通过解析来自清单可见区域DPO的部署位置ID的字符串来获得清单DXL1在其中可见的区域的列表,并且可以将区域的列表连同关于清单DXL1的其他信息(诸如清单DXL1的类型以及清单DXL1的元数据)打包到单个清单信息包中。远程部署402可以利用本文描述的数据复制方法,并且当创建对应于清单DXL1的全局对象时,其可以包括清单信息包。在一些实施例中,如果交换所管理员位于与数据提供者不同的远程部署上(如在图4B的示例中),则交换所管理员可以从对应于清单DXL1的全局对象(其包括清单信息包的副本)获得清单DXL1在其中可见的区域的列表。远程部署402可以基于清单DXL1在其中可见的区域的列表来决定全局对象要复制到哪个(哪些)远程部署。远程部署402然后可以完成数据复制以将清单DXL1和清单信息包复制到清单DXL1在其中可见的每个区域中的每个远程部署。远程部署402可以执行这样的过程:获得清单DXL1在其中可见的区域的列表并以规则间隔将清单DXL1与清单信息包复制到那些区域中的远程部署。在图4B的示例中,数据提供者已经将区域1和区域2设置为DXL1在其中可见的区域,因此如图所示将DXL1复制到远程部署401。
在一些实施例中,清单DXL1和相对应的可见性列表可以被复制到数据交换所DX1在其中可用的每个区域,并且清单可见性限制可以在由数据提供者指定的其中意在使清单是不可见的区域中的远程部署上在逻辑上实施。例如,如果区域3的部署位置ID不包括在可见性列表中,则清单DXL1和可见性列表仍然可以被复制到远程部署403(如果在此数据交换所可用),但是当远程部署403上的消费者想要解析对他们可用的清单时,远程部署403可以在逻辑上实施由数据提供者设置的可见性限制,并且远程部署403上的消费者可能看不到清单DXL1。
当区域1(例如,其中(如由数据提供者指定)清单是可见的)中的远程部署401中的消费者试图解析对他们可用的清单时,他们可以看到数据提供者的清单DXL1,并且可以请求访问清单DXL1的数据。如果清单是预批准的并且数据已经被附加到清单DXL1,则清单DXL1的数据将立即/直接与清单DXL1和清单信息包一起被复制。如果数据尚未被附加到清单DXL1,则清单DXL1和清单信息包仍将被复制到远程部署401,但是区域1中的消费者将需要请求数据。
如果数据提供者随后更新清单DXL1的可见区域的列表,使得该清单在它在其中先前是可见的区域中不再可见,则在清单复制时作为数据交换所DX1成员的在该区域的远程部署上的消费者仍然能够解析该清单,然而作为数据交换所DX1新成员的在该区域的远程部署上的消费者可能无法解析该清单。
在将清单DXL1复制到每个适当的远程部署时,数据交换所DX1和清单DXL1被设置为全局的,允许来自任何适当的远程部署中的消费者的请求发出消费清单DXL1的基础数据的请求。然而,尽管清单DXL1在多个远程部署中可见,但基础数据仍然驻留在本地远程部署401中。为了请求基础数据并实现请求,现有的全局消息传递框架被用来管理消费者对清单的请求,并允许数据提供者管理清单批准请求。
图5示出了云环境500的图,云环境500可以类似于图4A和图4B中示出的云环境400。在图5的示例中,清单DXL2在其中可见的远程部署503上的消费者希望向拥有远程部署502上的清单DXL2的数据提供者请求清单DXL2的数据,该数据提供者可以与远程部署501上的交换所管理员通信。
当远程部署503中的消费者希望请求清单DXL2时,他们可以利用清单元数据(清单元数据被包括在清单信息包中,该清单信息包是关于对应于清单DXL2的全局对象复制的),该清单元数据指示数据提供者是谁以及他们来自哪里/他们起源的远程部署,以确定向哪里发送请求。远程部署503可以利用全局消息,其具有全局消息类型“DATA_EXCHANGE_LISTING_REQUEST_SYNC”。如上所述,对于每种全局消息类型,都有对应的处理函数,该对应的处理函数应用于该类型的处理消息。因此,特定类型的全局消息将包括自定义逻辑,用于针对该特定消息类型需要进行的处理。可以使用DATA_EXCHANGE_LISTING_REQUEST_SYNC消息类型来管理消费者发给提供者的针对清单的请求。这包括创建、取消、拒绝和实现这些请求,以及在从数据交换所中去除成员或删除清单时清理掉请求(使其过期)。这些消息在数据提供者和消费者之间发送。远程部署503可以发送创建消息(类型为:DATA_EXCHANGE_LISTING_REQUEST_SYNC)到远程部署502,其可以包括具有访问请求DPO(未示出)的本地数据库,该访问请求DPO可以被数据提供者用来管理对关于数据清单的请求的批准/拒绝。如本文关于全局消息框架所讨论的,创建消息可以包括专用逻辑以用请求的信息更新访问请求DPO的适当切片(slice)。请求信息的示例可以包括请求者联系信息、请求者账户和请求者所在的区域,以及他们可能感兴趣的原因。如本文所使用的,诸如DPO的一个切片的多维数组(a slice of a multi-dimensional array)是与特定维度的一个或更多个成员的单个值相对应的数据列。
远程部署502中的数据提供者可以通过创建与清单相关联的共享并向消费者授予对与清单相关联的共享的访问权来实现对清单DXL2的请求。“ListingRequestFulfiller”后台服务(BG)可以同步清单请求实现信息,并将该信息通知/复制到可能感兴趣的其他区域/部署分片。更具体地说,“ListingRequestFulfiller”BG可以调用实现(全局)消息(类型为:DATA_EXCHANGE_LISTING_REQUEST_SYNC),其将在访问请求DPO中为清单提供者将请求标记为已实现,将其从访问请求DPO的“provider_pending”切片中移除,并在将其状态设置为已实现(FULFILLED)之后将其写入访问请求DPO的“provider_history”切片。应当注意,与该清单DXL2相关联的共享可以由数据提供者、或者由作为与消费者(例如,远程部署503)处于同一远程部署分片中的数据提供者的或作为与消费者(例如,区域3)位于同一区域中的数据提供者的实现者创建(并授予对该共享的访问权)。如果访问权由与消费者在相同的部署分片中的实现者授予,则这可以触发对远程部署503上共享状态DPO中的“listingShareUpdatedOn”切片的写入,消费者使用该切片来管理他们的清单数据请求。“listingShareUpdatedOn”切片可用于指示消费者已被授予对共享的访问权的数据清单。如果访问权由与消费者不在同一部署分片中但位于同一区域的部署分片上的实现者授予,则在同一区域的部署分片之间同步账户和共享信息的“RemoteShardAccountManager”BG可以在消费者的远程部署503中运行,看到消费者被添加到共享中,并更新共享状态DPO的“listingShareUpdatedOn”切片。“ListingRequestFulfiller”BG将在消费者的远程部署503中运行,并在共享状态DPO中将请求标记为本地实现,并发送实现消息(fulfillmentmessage)(类型为:DATA_EXCHANGE_LISTING_REQUEST_SYNC)至远程部署502上的提供者,以通过以下操作来更新访问请求DPO:将请求标记为已实现,将其从“provider_pending”切片中移除,并在将其状态设置为FULFILLED之后将其写入“provider_history”切片。
如果提供者拒绝请求,那么它可以更新访问请求DPO并发送拒绝消息(类型为:DATA_EXCHANGE_LISTING_REQUEST_SYNC)到远程部署503,并具有更新共享状态DPO的适当切片的逻辑。
在一些实施例中,不需要来自消费者的请求,并且数据提供者可以创建共享(未示出)并将其附加到数据清单DXL2。数据提供者可以将消费者添加到共享中,并且消费者可以消费来自共享的数据。注意,在消费者没有发出请求的实施例中,共享可以由数据提供者或实现者(该实现者是与消费者在同一远程部署中的数据提供者)创建。
图6示出了云环境600,其可以类似于图4A和图4B中示出的云环境400。在图6的示例中,远程部署602上的数据提供者可能希望向远程部署601上的交换所管理员发送关于批准发布其清单DXL3的请求。数据提供者和交换所管理员可以使用特殊的全局消息类型(例如,全局消息类型:DATA_EXCHANGE_LISTING_APPROVAL_REQUEST_SYNC),其用于管理数据提供者对批准发布其清单的请求,包括发布请求的创建、取消、拒绝和批准。远程部署601的本地数据库上的发布请求DPO可以由交换所管理员用于管理对清单发布请求的批准/拒绝。发布请求DPO可以包括多个切片,其中每个切片是对应于DPO的特定维度的一个或更多个成员中的每一个成员的单个值的数据列。发布请求DPO可以包括关于交换所管理员的“exchangeadmin”切片、关于数据提供者的“数据提供者(data provider)”切片以及关于跟踪请求最后更新时的时间的“updatedOn”切片。每个切片可以包括一个或更多个数据类别,诸如所请求的清单的数据交换所的本地实体ID、所请求的清单的数据交换所位于的部署、所请求的清单位于的部署、所请求的清单的本地实体ID、清单所有者(提供者)的账户ID、请求的状态(例如,待定、拒绝、批准等)、包含用于用户界面(UI)显示的信息的JSON字符串、请求为什么被拒绝的原因(如果请求被拒绝)、发出请求时的时间戳以及请求最后更新时的时间戳。远程部署602的本地数据库可以包括与发布请求DPO相同的单独的清单批准请求DPO并且由数据提供者使用来管理清单发布请求。清单批准请求DPO和发布请求DPO可以共享相似的信息,因为多个账户不能修改相同的对象/DPO,并且因此两个单独但相似的DPO(各自由单个参与者(例如,交换所管理员和提供者)拥有)被利用。
数据提供者可以生成指示他/她希望在交换所管理员的远程部署601上发布的清单DXL3的批准请求,并用该请求的信息更新清单批准请求DPO的“提供者”切片(的相关数据类别)。随后,数据提供者(例如,经由远程部署602)可以向远程部署601上的交换所管理员发送创建消息,以请求在远程部署601上发布数据清单DXL3。创建消息可以将批准请求写入远程部署601上的发布请求DPO的“exchange admin”切片和“updatedOn”切片。更具体地,创建消息可以用批准请求的相关信息更新关于发布请求DPO的“exchange admin”切片和“updatedOn”切片中每一个的上面列出的每个相关数据类别。创建消息还可以从管理员切片中去除对同一清单的任何拒绝的或批准的批准请求。
如果交换所管理员决定拒绝批准请求,则其可以更新发布请求DPO的“exchangeadmin”切片和“updatedOn”切片中的“请求状态”和“拒绝原因”字段,并使用拒绝消息来更新远程部署602上的清单批准请求DPO的“数据提供者”切片。作为更新数据提供者切片的一部分,拒绝消息可以相应地更新清单批准请求DPO的“数据提供者”切片中的“请求状态”和“拒绝原因”字段。
如果交换所管理员决定授予批准请求,则其可以更新发布请求DPO的“exchangeadmin”和“updatedOn”切片中的“请求状态”和“拒绝原因”字段,并使用实现消息来更新远程部署602上的清单批准请求DPO的数据提供者切片。作为更新数据提供者切片的一部分,实现消息可以相应地更新清单批准请求DPO的“数据提供者”切片中的“请求状态”和“拒绝原因”字段。
数据提供者还可以利用取消消息,该取消消息可以从远程部署601上的发布请求DPO的交换所管理员切片中去除(具有待定(PENDING)状态或批准(APPROVED)状态或拒绝(REJECTED)状态的)任何批准请求。当数据提供者发布已批准的清单时,清理(cleanup)将代表他们使用相同的代码路径“取消”请求,以去除交换所管理员端的请求。
图7是根据一些实施例的用于管理数据交换所的可用性和其中数据清单的可见性的方法700的流程图。方法700可由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微代码)或它们的组合。在一些实施例中,方法700可以由(在图4B中示出的)远程部署401和402的相应处理设备执行。
同时参考图4B,在块705处,交换所管理员可以设置数据交换所DX1将在其中可用的区域。数据交换所DX1可以提供以下功能:允许远程部署401上的交换所管理员指定数据交换所DX1将在其中可用(可解析)的区域以及从哪些区域可以将客户添加为数据交换所DX1的成员。远程部署401可以为交换所管理员提供命令(例如,SQL命令)以设置可用区域。当交换所管理员设置用于数据交换所的可用区域时,该信息可以作为列表保存在远程部署401的本地数据库(未示出)中。本地数据库可以是任何适当的数据库,例如FoundationDB。远程部署401的本地数据库可以包括多个数据处理对象(DPO),其中可以存储与数据交换所DX1有关的数据。例如,基础字典DPO可以包括一组数据库表,其用于存储关于数据库定义的信息,这些信息包括关于诸如表、索引、列、数据类型和视图等数据库对象的信息。
一个这样的DPO可以是扩展基础字典DPO的可用区域DPO并且数据交换所DX1的可用区域可以保存在其中。如从上面列出的示例命令中可以看出,交换所管理员可以在逐个区域的基础上指定数据交换所DX1在其中可用的区域,而不是在逐个部署的基础上指定DX1在其中可用的特定远程部署。远程部署401可以保存数据交换所将在其中可用的每个区域的部署位置ID。部署位置ID可以以任何合适的字母-数字形式表示,例如1001或region1(对应于区域1)、1002或region2(对应于区域2)。可用部署位置ID的列表可以存储为可用区域DPO内的字符串(定义为例如静态最终字符串AVAILABLE_DEPLOYMENT_LOCATION_IDS=“availabledeploymentlocationIDs”),并且当数据交换所DX1的成员希望知道可用区域时,可以解析该字符串以确定数据交换所DX1在其中可用的区域的部署位置ID。
在块710处,远程部署401然后可以使用上文讨论的数据库复制方法来将数据交换所DX1复制到(如由交换所管理员指定的)数据交换所将在其中可用的每个区域中的每个远程部署。对于对应于数据交换所DX1的全局对象,远程部署401可以通过以下操作来决定全局对象要复制到哪个(哪些)远程部署:解析来自可用区域DPO的部署位置ID的字符串以确定数据交换所DX1在其中可用的区域的列表。
在设置用于数据交换所的可用区域后,在块715处,数据交换所DX1的数据提供者可以设置其清单(例如,清单DXL1)将在其中可见的区域(例如,设置清单可见性)。清单可以是数据提供者希望共享的数据的客户可视表示。清单可以描述基础数据是关于什么的,包含关于数据的用法示例以及其他元数据。数据提供者创建清单,并且在创建时,只有数据提供者可以看到清单。数据提供者可以将清单发送给交换所管理员以用于发布批准(如本文进一步详细描述的,称为“清单批准”)。一旦获得批准,数据提供者就可以在数据交换所DX1在其中可用的区域中发布全局可用的清单。
当数据提供者设置清单DXL1将在其中可见的区域时,该信息可以作为列表保存在远程部署402的本地数据库中(未示出)。远程部署402的本地数据库可以是任何合适的数据库,例如FoundationDB,并且远程部署402的本地数据库可以包括清单可见区域DPO(未示出),该清单可见区域DPO扩展基础字典DPO并且其中可以保存一个或更多个清单可见的区域。如在上面列出的示例命令中可以看到的,数据提供者可以在逐个区域的基础上指定其清单在其中可见的区域,而不是在逐个部署的基础上指定其清单在其上可见的特定部署。使清单DXL1在其中可见的部署位置ID的列表可以作为字符串存储在清单可见区域DPO中,并且当数据提供者或交换所管理员希望知道清单DXL1将在其中可见的区域时,可以解析该字符串以确定清单DXL1在其中可见的区域的部署位置ID。
当设置了清单DXL1的可见区域时,在块720处,远程部署402可以将清单DXL1和可见性列表复制到使清单DXL1在其中可见的每个区域中的每个远程部署。如上所述,远程部署402可以通过解析来自清单可见区域DPO的部署位置ID的字符串来获得清单在其中可见的区域的列表,并且可以将区域的列表连同关于清单的其他信息(诸如清单的类型以及清单的元数据)打包到单个清单信息包中。远程部署402可以利用上文描述的复制方法,并且当创建对应于清单DXL1的全局对象时,其可以包括清单信息包。
现在也参考图5,当远程部署503中的消费者希望请求清单DXL2时,他们可以利用清单元数据(清单元数据被包括在清单信息包中,该清单信息包是关于对应于清单DXL2的全局对象复制的),该清单元数据指示数据提供者是谁以及他们来自哪里/他们起源的远程部署,以确定向哪里发送请求。远程部署503可以利用全局消息,其具有全局消息类型“DATA_EXCHANGE_LISTING_REQUEST_SYNC”。可以使用这种消息类型来管理消费者发给提供者的针对清单的请求。这包括创建、取消、拒绝和实现这些请求,以及在从数据交换所中去除成员或删除清单时清理掉请求(使其过期)。在块725处,远程部署503可以向远程部署502发送请求访问清单DXL2的创建消息,该远程部署502可以包括具有访问请求DPO的本地数据库,该访问请求DPO可以由数据提供者用于管理对针对数据清单的请求的批准/拒绝。
在块730处,远程部署502中的数据提供者可以通过创建与清单相关联的共享并向消费者授予对与清单相关联的共享的访问权来实现对清单DXL2的请求。应当注意,与该清单DXL2相关联的共享可以由数据提供者或作为与消费者处于同一远程部署(例如,远程部署403)中的数据提供者的实现者创建(并授予对该共享的访问权)。
图8是根据一些实施例的用于管理清单批准请求的方法800的流程图。方法800可由处理逻辑执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微代码)或它们的组合。在一些实施例中,方法800可以由(在图4B中示出的)远程部署401和402的相应处理设备执行。
还参考图6,远程部署602上的数据提供者可能希望向远程部署601上的交换所管理员发送关于批准发布其清单DXL3的请求。数据提供者和交换所管理员可以使用特殊的全局消息类型(例如,全局消息类型:DATA_EXCHANGE_LISTING_APPROVAL_REQUEST_SYNC),其用于管理数据提供者对批准发布其清单的请求,包括发布请求的创建、取消、拒绝和批准。远程部署601的本地数据库上的发布请求DPO可以由交换所管理员用于管理对清单发布请求的批准/拒绝。发布请求DPO可以包括多个切片,其中每个切片是对应于关于DPO的特定维度的一个或更多个成员中的每一个成员的单个值的数据列。发布请求DPO可以包括关于交换所管理员的“exchange admin”切片、关于数据提供者的“数据提供者”切片以及关于跟踪请求最后更新时的时间的“updatedOn”切片。每个切片可以包括一个或更多个数据类别,诸如所请求的清单的数据交换所的本地实体ID、所请求的清单的数据交换所处于的部署、所请求的清单处于的部署、所请求的清单的本地实体ID、清单所有者(提供者)的账户ID、请求的状态(例如,待定、拒绝、批准等)、包含用于用户界面(UI)显示的信息的JSON字符串、请求为什么被拒绝的原因(如果请求被拒绝)、发出请求时的时间戳以及请求最后更新时的时间戳。远程部署602的本地数据库可以包括与发布请求DPO相同的单独的清单批准请求DPO并且由数据提供者使用来管理清单发布请求。
在块805处,远程部署602上的数据提供者可以生成指示他/她希望在交换所管理员的远程部署601上发布的清单DXL3的批准请求,并用该请求的信息更新清单批准请求DPO的“提供者”切片(的相关数据类别)。随后,在块810处,数据提供者(例如,经由远程部署602)可以向远程部署601上的交换所管理员发送创建消息,以请求在远程部署601上发布数据清单DXL3。创建消息可以将批准请求写入远程部署601上的发布请求DPO的“exchangeadmin”切片和“updatedOn”切片。更具体地,创建消息可以用批准请求的相关信息更新关于发布请求DPO的“exchange admin”切片和“updatedOn”切片中每一个的上面列出的每个相关数据类别。创建消息还可以从“admin”切片中去除对同一清单的任何拒绝的或批准的批准请求。
在块815处,如果交换所管理员决定拒绝批准请求,则在块820处,它可以更新发布请求DPO的“exchange admin”切片和“updatedOn”切片中的“请求状态”和“拒绝原因”字段,并且使用拒绝消息来更新远程部署602上的清单批准请求DPO的数据提供者切片。作为更新“数据提供者”切片的一部分,拒绝消息可以相应地更新清单批准请求DPO的“数据提供者”切片中的“请求状态”和“拒绝原因”字段。
如果在块815处,交换所管理员决定同意批准请求,则在块825处,它可以更新发布请求DPO的“exchange admin”切片和“updatedOn”切片中的“请求状态”和“拒绝原因”字段,并且使用实现消息来更新远程部署602上的清单批准请求DPO的数据提供者切片。作为更新数据提供者切片的一部分,实现消息可以相应地更新清单批准请求DPO的“数据提供者”切片中的“请求状态”和“拒绝原因”字段。
数据提供者还可以利用取消消息,该取消消息可以从远程部署401上的发布请求DPO的交换所管理者切片中去除(具有待定状态或批准状态或拒绝状态的)任何批准请求。当数据提供者发布已批准的清单时,清理将代表他们使用相同的代码路径“取消”请求,以去除交换所管理员端的请求。
图9是根据本发明的一些实施例的数据共享平台900的框图。在图9中,数据共享平台900包括耦合到客户端908A-908C的数据交换所902。在一个实施例中,使用交换数据200和交换管理器124来实现数据交换所902,如以上图2中所述。在一个实施例中,数据交换所902包括来自数据提供者904A-904B的数据清单906A-906E。如图9所示,数据提供者904A具有三个数据清单906A-906C,并且数据提供者904B具有数据清单906D-906E。虽然在一个实施例中,数据交换所902包括两个数据提供者904A-904B和五个数据清单906A-906E,但在替代实施例中,可以或多或少地存在数据提供者和/或数据清单中的每一个。在一个实施例中,数据提供者是使用关于一个或更多个数据集的数据清单来共享该数据集的用户。此外,数据清单906A-906E中的每一个可以是如以上在图2中所描述的清单。
在一个实施例中,客户端908A-908C可以查看和访问数据清单906A-906E中的每一个。在该实施例中,客户端908A-908C中的每一个可以使用用于访问数据集的、本领域已知的访问方法(例如,超文本传输协议(HTTP)或某个其他类型的访问方法)来访问一个或更多个数据清单。在一个实施例中,客户端可以访问清单、查看清单、请求清单、挂载数据库、查询挂载的数据库和/或其他类型的活动。
响应于客户端访问和/或使用清单906A-906E中的一个或更多个,提供数据交换所902的云计算服务可以收集关于数据清单906A-906E的使用的度量,并将这些度量914保存在收集的度量数据库910中。在一个实施例中,云计算系统可以收集用于客户端遥测(client telemetry)的数据、数据集的获取和请求以及交换所消费数据。在该实施例中,客户端遥测度量是关于与数据清单的客户端交互912A-912B的数据,获取和请求度量是表征数据集的获取和/或请求的数据,以及交换所消费度量是关于共享的交换所的数据。例如,在一个实施例中,客户端遥测度量包括清单所有者账户部署、清单所有者账户标识符、交换所名称、数据、区域、消费者账户区域、清单标识符、清单名称、清单点击数(listingclicks)、发起的请求、请求成功、消费者账户每日点击数、消费者账户每日发起的请求、消费者账户每日成功的请求、消费者账户每月清单点击数、消费者账户每月发起的请求以及消费者账户每月成功的请求。另外,获取和请求度量可以包括清单所有者账户部署、清单所有者账户标识符、数据、交换所名称、事件类型(例如,获取、请求和/或另一种类型的事件)、区域、消费者账户名称、清单标识符、清单名称、消费者账户名称、消费者组织名称、接受的条款和消费者电子邮件。此外,交换所度量可以包括清单所有者账户部署、清单所有者账户标识符、日期、交换所名称、交换所标识符、交换所区域、清单、名称、清单区域、清单全局名称、共享所有者账户名称、共享名称、共享标识符、消费者账户名称、消费者组织名称、消费者账户区域以及计数成功作业。在一个实施例中,度量被存储在与云计算服务的运营商相关联的账户下。
使用存储在度量数据库中的度量,云计算服务处理这些度量,并将这些度量作为共享数据集与数据提供者共享。在一个实施例中,云计算服务处理数据并将数据复制到云计算服务的本地安装。在一个实施例中,由于清单可以是全局的,因此单个清单可以具有大范围区域中的消费度量和客户端遥测度量。在该实施例中,将给定清单的度量共享回提供者的主账户,提供者从该主账户发布清单。这意味着,在将该数据共享回提供者的本地账户之前,将首先在单个区域中聚合度量。在一个实施例中,收集的度量数据库910可以包括支持不同度量粒度的度量数据。例如,且在一个实施例中,度量可以被聚合以示出汇总的度量,或者可以以不同粒度级别进行公开(expose)以允许数据提供者钻研以理解对数据提供者的一个或更多个清单的使用。在该示例中,度量可以说明消费者的使用情况,例如执行的查询数、(由消费者进行的且总计的)清单查看、转换度量(将对清单的挂载数据库的所请求清单的查看转换为在挂载数据库上运行的实际查询)、清单请求、每个消费者的平均查询、消费者总计、对清单的查询总计、访问类型和/或其他类型的度量。此外,度量可以基于表或更细的粒度(例如,基于行或列)。此外,度量可以是在一个时间段内,也可以在迄今为止的所有时间内。在每月、每周、每天或某个其他时间段内,可能有数百、数千或更多类型的客户端交互。在该实施例中,这种类型的度量可以允许数据提供者理解如何使用清单。
图10是根据本发明的一些实施例的数据字典生成系统312的框图。如上所述,数据字典生成系统312被编程为自动填充和更新对于每个清单202的数据字典。数据字典包括描述整个清单202中包括的共享数据的元数据,以及描述清单202中包括的单个对象(诸如单个表、模式、视图、函数等)的元数据。由清单202提供的共享数据和每个单个数据对象可以在数据字典中由对应于共享数据集或单个对象的对象类型的数据字段集来描述。例如,用于描述清单202的数据字段集可以包括清单202中包括的共享数据的高级摘要,诸如共享数据中包括的模式、表、视图、函数和/或存储过程的数量。用于描述单个对象的数据字段集可以提供关于该对象及其内容的更具体的数据。例如,用于描述表的数据字段集可以包括描述表的信息(例如,表名称、描述、大小、行数、列数)、描述表中每列的信息(例如,名称、描述、数据类型、示例值)、列统计数据(例如,值的范围、频率)和表预览。作为另一示例,用于描述函数或存储过程的数据字段集可以包括函数或存储过程的名称、描述、参数名称和参数类型。
当数据消费者请求时,填充到数据字典的元数据可以与清单202的描述一起呈现给数据消费者。例如,当数据消费者选择查看通过数据交换所可用的清单202时,填充到数据字典的元数据可以与描述一起呈现在用户界面中。数据字典中提供的数据向数据消费者提供了由清单202提供的共享数据的全面描述,包括共享数据的高级摘要和共享数据中包括的每个单独对象的描述。数据字典中包括的信息允许数据消费者理解由清单202提供的共享数据的内容以及如何使用清单202中包括的共享数据。
如所示,数据字典生成系统312包括数据提供者界面组件1002、清单扫描组件1004、对象识别组件1006、元数据填充组件1008和数据字典输出组件1010。
数据提供者界面组件1002提供界面,该界面使得数据提供者能够配置为其清单202自动生成的数据字典。例如,数据提供者界面组件1002可以提供包括各种用户界面元素(例如,文本框、复选框等)的用户界面,使数据提供者能够提供输入来配置数据字典。在一些实施例中,该界面使数据提供者能够为清单选择一组特征对象。一组特征对象可以是在由清单202提供的共享数据中包括的对象,数据提供者希望将其推广(promote)到数据消费者。例如,一组特征对象可以包括在数据提供者认为对数据消费者具有高价值或重要性的共享数据中包括的表、模式等。当在清单202的描述内呈现给数据消费者时,所选择的一组特征对象可以被优先化。数据提供者界面组件1002可以向数据字典生成系统312的其他组件(诸如字典定义输出组件1010)提供定义清单202的一组特征对象的任何接收到的数据。
清单扫描组件1004扫描清单202以识别对授予清单202的共享访问权的任何改变。对授予清单的共享访问权的改变可以包括与清单202共享的新对象、对与清单共享的对象的访问权被撤销、和/或对与清单202共享的对象的访问权的修改。检测到对授予清单202的共享访问权的修改,触发数据字典生成系统312为清单202生成数据字典。这可以包括为清单生成初始数据字典,诸如当创建新清单202时,或者为清单202生成更新的数据字典时。清单扫描组件1004可以以指定的时间间隔(例如,每2小时、每4小时等)扫描清单202和/或响应于接收到用户发起的扫描清单202或特定清单202的命令。例如,数据提供者可以使用由数据提供者界面组件1002提供的用户界面来发起对清单202的数据字典的更新。
清单扫描组件1004向数据字典生成系统312的另一组件提供数据,该数据字典生成系统312识别已经检测到对授予清单202的共享访问权的改变的清单202。例如,清单扫描组件1004可以向对象识别组件1006提供数据。
对象识别组件1006扫描由清单扫描组件1004识别的清单202,以识别由清单202提供的共享数据中包括的各个对象。对象可以包括共享数据中包括的模式、表、视图、函数、存储过程等。对象识别组件1006可以向数据字典生成系统312的其他组件提供识别对象中每一个及其对应对象类型的数据。例如,对象识别组件1006可以向元数据填充组件1008提供数据。
元数据填充组件1008填充清单202的数据字典。例如,元数据填充组件1008访问对应于清单202和由清单202提供的共享数据中包括的每个识别对象的数据字段集。每个数据字段集中包括的数据字段描述了它们所对应的清单或对象。例如,对应于清单202的数据字段集包括数据字段,以提供由清单202提供的共享数据的高级摘要,例如共享数据中包括的模式、表、视图、函数和/或存储过程的数量。用于描述单个对象的数据字段集可以提供关于该对象及其内容的更具体的数据。例如,用于描述表的数据字段集可以包括描述表的信息(例如,表名称、描述、大小、行数、列数)、描述表中每列的信息(例如,名称、描述、数据类型、示例值)、列统计数据(例如,值的范围、频率)和表预览。作为另一示例,用于描述函数或存储过程的数据字段集可以包括函数或存储过程的名称、描述、参数名称和参数类型。
元数据填充组件1008基于从由清单202提供的共享数据中提取的数据来填充清单202和每个识别对象的数据字段集。例如,元数据填充组件1008可以分析共享数据,以确定共享数据中包括的模式、表、视图、函数和/或存储过程的数量,并填充对应于清单202的数据字段集。作为另一示例,元数据填充组件1008可以分析在共享数据中包括的表,以确定表名称、提供的描述、大小、行数和列数,以填充数据字段集。类似地,元数据填充组件1008可以分析表中的每一列,以确定名称、描述、数据类型和示例值,从而填充对应于表的数据字段集。在一些实施例中,元数据填充组件1008可以用关于对象的统计数据填充数据字段集,诸如列或表中包括的值的范围和频率。
元数据填充组件1008可以类似地填充对应于对象(诸如函数或存储过程)的数据字段集。例如,元数据填充组件1008可以分析函数或存储过程,以确定名称、提供的描述、参数名称和/或参数类型,从而填充对应于函数或存储过程的数据字段集。
这些只是可用于描述由清单202提供的共享数据及其包括的对象的数据字段类型的几个示例,并不意味着是限制性的。数据字段可以包括描述共享数据和/或对象的任何期望的数据字段。例如,数据字段可以包括列中不同值的数量、唯一值的百分比、最后更新的日期、更新的频率、陈旧性(staleness)、大小、行计数、阶段中非结构化文件的计数、具有0值的行的百分比、具有负值的行的百分比、最小值/最大值、标准偏差/平均值、百分位数值、最小/最大/平均字符串长度、表/列预览、示例值等。
在一些实施例中,数据提供者可以选择在数据字典中待包括的数据字段和/或定义在数据字典中待包括的数据字段。例如,数据提供者可以使用由数据提供者界面组件1002提供的界面来选择单个数据字段,以描述由清单202提供的共享数据和/或在共享数据中包括的单个对象。作为另一示例,数据提供者可以使用由数据提供者界面组件1002提供的界面来定义自定义数据字段(custom data field),例如通过定义待由元数据填充组件1008执行的操作来填充自定义数据字段。
在填充之后,数据字段集将提供其对应共享数据或单个对象的描述。元数据填充组件1008可以将这些生成的描述提供给数据字典生成系统312的其他组件,诸如数据字典输出组件1010。
数据字典输出组件1010基于由元数据填充组件1008生成的描述(例如,经填充的数据字段集)来为清单202生成和输出数据字典。例如,数据字典输出组件1010为清单202生成清单文件,该清单文件包括描述中每一个,并且将清单文件添加到目录220和/或覆盖目录220中对应于清单202的清单文件的先前版本。
在一些实施例中,数据字典输出组件1010可以基于由数据提供者提供的偏好来生成清单文件。例如,数据字典组件1010可以识别和/或排序存储在清单(manifest)中的描述,以向由数据提供者定义的一组特征对象提供更高优先级。当数据字典作为清单202的描述的一部分呈现给数据消费者时,这可以导致特征对象被更突出地特征化。例如,一组特征对象可以呈现在用户界面的优先化和/或突出显示的部分内,首先呈现在在共享数据中包括的对象列表中,等等。
图11是根据本发明的一些实施例的用于自动为清单生成数据字典的方法1100的流程图。
在操作1102处,数据字典生成系统312访问通过数据市场提供共享数据的清单202。
在操作1104处,数据字典生成系统312自动生成描述清单202的数据字典。为了生成清单202的数据字典,数据字典生成系统312分析由清单202提供的共享数据,以识别在共享数据中包括的对象。数据字典生成系统312识别与每个识别的对象相关联的数据字段集,并基于由清单202提供的共享数据填充与每个识别的对象相关联的数据字段集。例如,数据字典生成系统312可以访问表的标题以填充表名称数据字段,计数表中包括的列数以填充列数数据字段,等等。由数据字典生成系统312生成的数据字典可以被填充到与清单202相关联的清单文件中。例如,清单文件可以存储在目录220中,存储的数据字典可以随后从目录220中被访问并用于生成清单202的描述。在一些实施例中,数据字典生成系统312可以使用关于图13-图16描述的一种或更多种方法来生成数据字典。
在操作1106处,交换管理器124接收查看清单202的请求。该请求可以从数据消费者的客户端设备接收。
在操作1108处,交换管理器124基于数据字典呈现清单202的描述。例如,交换管理器124可以从目录220访问对于清单202的清单文件,并生成清单202的包括数据字典的描述。下面结合图18和图19讨论包括数据字典的清单202的示例呈现。
图12是根据本发明的一些实施例的用于自动为清单更新数据字典的方法1200的流程图。
在操作1202处,数据字典生成系统312检测对通过数据市场提供共享数据的清单的修改。为了确保针对每个清单202的数据字典被生成并且当由清单提供的共享数据被更新时保持最新,数据字典生成系统312周期性地扫描清单202以识别对授予清单202的共享访问权的任何改变。例如,数据字典生成系统312确定清单202是否已经被授予了对新对象的访问权,是否已经撤销了对对象的访问权,或者是否已经修改了对对象的访问权。
如果检测到对授予清单202的共享访问权的改变,则在操作1204处,数据字典生成系统312自动生成描述清单的更新的数据字典。例如,数据字典生成系统312分析由清单202提供的共享数据,以识别在共享数据中包括的对象。数据字典生成系统312识别与每个识别的对象相关联的数据字段集,并基于清单202提供的共享数据填充与每个识别的对象相关联的数据字段集。例如,数据字典生成系统312可以访问表的标题以填充表名称数据字段,计数表中包括的列数以填充列数数据字段,等等。由数据字典生成系统312生成的更新的数据字典可以被填充到与清单202相关联的清单文件中,以提供清单202的更新的描述。例如,清单文件可以存储在目录220中,存储的数据字典可以随后从目录220中被访问并用于生成清单202的描述。在一些实施例中,数据字典生成系统312可以使用关于图13-图16描述的一种或更多种方法来生成数据字典。
在操作1206处,交换管理器124接收查看清单的后续请求。该请求可以从数据消费者的客户端设备接收。
在操作1208处,交换管理器124基于更新的数据字典来呈现清单的更新的描述。例如,交换管理器124可以从目录220访问清单202的清单文件,并生成清单202的包括更新的数据字典的描述。下面结合图18和图19讨论包括数据字典的清单202的示例呈现。
图13是根据本发明的一些实施例的用于生成元数据以填充数据字典的方法1300的流程图。数据字典包括描述整个清单202中包括的共享数据的元数据,以及描述清单202中包括的单个对象(诸如单个表、模式、视图、函数等)的元数据。由清单202提供的共享数据和每个单个数据对象可以在数据字典中由对应于共享数据集或单个对象的对象类型的数据字段集来描述。例如,用于描述清单202的数据字段集可以包括清单202中包括的共享数据的高级摘要,诸如共享数据中包括的模式、表、视图、函数和/或存储过程的数量。用于描述单个对象的数据字段集可以提供关于该对象及其内容的更具体的数据。例如,用于描述表的数据字段集可以包括描述表的信息(例如,表名称、描述、大小、行数、列数)、描述表中每列的信息(例如,名称、描述、数据类型、示例值)、列统计数据(例如,值的范围、频率)和表预览。作为另一示例,用于描述函数或存储过程的数据字段集可以包括函数或存储过程的名称、描述、参数名称和参数类型。
在操作1302处,数据字典生成系统312生成描述在由清单提供的共享数据中包括的一组数据对象的元数据。描述一组数据对象的元数据提供了清单202中包括的共享数据的高级摘要,诸如共享数据中包括的模式、表、视图、函数和/或存储过程的数量。
在操作1304处,数据字典生成系统312生成描述在一组数据对象中包括的每个单个数据对象的元数据。描述每个单个数据对象的元数据提供了关于数据对象及其内容的更具体的数据。例如,用于描述表的数据字段集可以包括描述表的信息(例如,表名称、描述、大小、行数、列数)、描述表中每列的信息(例如,名称、描述、数据类型、示例值)、列统计数据(例如,值的范围、频率)和表预览。作为另一示例,用于描述函数或存储过程的数据字段集可以包括函数或存储过程的名称、描述、参数名称和参数类型。
在操作1306处,数据字典生成系统312基于描述一组数据对象的元数据和描述在一组数据对象中包括的每个单个数据对象的元数据来为清单生成数据字典。
图14是根据本发明的一些实施例的用于生成描述表的元数据以填充数据字典的方法1400的流程图。
在操作1402处,数据字典生成系统312生成描述在由清单提供的共享数据中包括的表的元数据。例如,描述表的元数据可以包括描述表的信息(例如,表名称、描述、大小、行数、列数)。
在操作1404处,数据字典生成系统312生成描述在表中包括的每个单个列的元数据。描述每个单个列的元数据可以包括列名称、描述、列中包括的值的数据类型和示例值,以及生成的列统计数据,诸如值的范围、列中值的频率。
在操作1406处,数据字典生成系统312基于描述表的元数据和描述在表中包括的每个单个列的元数据,生成描述表的清单的数据字典的一部分。数据字典的这个部分可以与描述由清单202作为整体提供的共享数据中的一组对象的附加元数据(例如,高级概述)以及描述共享数据中包括的每个其他对象的元数据相结合。
图15是根据本发明的一些实施例的用于为多个清单生成数据字典的方法1500的流程图。
在操作1502处,清单扫描组件1004扫描通过数据市场提供共享数据的清单202,以进行特权授予修改。对授予清单202的共享访问权的改变可以包括与清单202共享的新对象、对与清单共享的对象的访问权被撤销、和/或对与清单202共享的对象的访问权的修改。检测到对授予清单202的共享访问权的修改,触发数据字典生成系统312为清单202生成数据字典。这可以包括为清单生成初始数据字典,诸如当创建新清单202时,或者为清单202生成更新的数据字典时。清单扫描组件1004可以以指定的时间间隔(例如,每2小时、每4小时等)扫描清单202和/或响应于接收到用户发起的扫描清单202或特定清单202的命令。例如,数据提供者可以使用由数据提供者界面组件1002提供的用户界面来发起对清单202的数据字典的更新。
如果在操作1504处,清单扫描组件1004确定检测到特权授予修改,则方法1500继续到操作1506,在操作1506处,数据字典生成系统312为清单202生成数据字典。例如,数据字典生成系统312可以使用关于图16描述的方法1600来生成数据字典。替代地,如果清单扫描组件1004确定未检测到特权授予修改,则方法1500继续到操作1508,在操作1508处,清单扫描组件1004确定是否有任何清单202保持未扫描。类似地,在数据字典生成系统312为清单202生成数据字典之后,方法继续到操作1508。
如果在操作1508处,清单扫描组件1004确定存在保持尚未被扫描的清单202,则方法1500返回到操作1502,其中清单扫描组件1004扫描未被扫描的清单202之一以进行特权授予修改。替代地,如果在操作1508处,清单扫描组件1004确定没有清单202尚未被扫描(例如,清单202中每一个都已经被扫描),则方法1500继续到操作1510并结束扫描过程。清单扫描组件1004可以以预定的间隔和/或响应于用户输入重复方法1500,从而为数据市场中提供的每个清单202生成新的和更新的数据字典定义。
图16是根据本发明的一些实施例的用于为由清单202提供的共享数据中的每个数据对象生成元数据以填充数据字典的方法1600的流程图。
在操作1602处,对象识别组件1006识别在由清单202提供的共享数据中包括的数据对象。对象识别组件1006扫描由清单扫描组件1004识别的清单202,以识别由清单202提供的共享数据中包括的各个对象。对象可以包括共享数据中包括的模式、表、视图、函数、存储过程等。对象识别组件1006可以向数据字典生成系统312的其他组件提供识别对象中每一个及其对应对象类型的数据。例如,对象识别组件1006可以向元数据填充组件1008提供数据。
在操作1604处,元数据填充组件1008识别数据对象的数据对象类型。元数据填充组件1008填充清单202的数据字典。例如,元数据填充组件1008访问对应于清单202和由清单202提供的共享数据中包括的每个识别对象的数据字段集。每个数据字段集中包括的数据字段描述了它们所对应的清单或对象。例如,对应于清单202的数据字段集包括数据字段,以提供由清单202提供的共享数据的高级摘要,例如共享数据中包括的模式、表、视图、函数和/或存储过程的数量。用于描述单个对象的数据字段集可以提供关于该对象及其内容的更具体的数据。例如,用于描述表的数据字段集可以包括描述表的信息(例如,表名称、描述、大小、行数、列数)、描述表中每列的信息(例如,名称、描述、数据类型、示例值)、列统计数据(例如,值的范围、频率)和表预览。作为另一示例,用于描述函数或存储过程的数据字段集可以包括函数或存储过程的名称、描述、参数名称和参数类型。
在操作1606处,元数据填充组件1008用从数据对象确定的元数据填充对应于数据对象类型的数据字段集。元数据填充组件1008基于从由清单202提供的共享数据中提取的数据来填充清单202和每个识别的对象的数据字段集。例如,元数据填充组件1008可以分析共享数据,以确定共享数据中包括的模式、表、视图、函数和/或存储过程的数量,并填充对应于清单202的数据字段集。作为另一示例,元数据填充组件1008可以分析在共享数据中包括的表,以确定表名称、提供的描述、大小、行数和列数,以填充数据字段集。类似地,元数据填充组件1008可以分析表中的每一列,以确定名称、描述、数据类型和示例值,从而填充对应于表的数据字段集。在一些实施例中,元数据填充组件1008可以用关于对象的统计数据填充数据字段集,诸如列或表中包括的值的范围和频率。
元数据填充组件1008可以类似地填充对应于对象(诸如函数或存储过程)的数据字段集。例如,元数据填充组件1008可以分析函数或存储过程,以确定名称、提供的描述、参数名称和/或参数类型,从而填充对应于函数或存储过程的数据字段集。
这些只是可用于描述由清单202提供的共享数据及其包括的对象的数据字段类型的几个示例,并不意味着是限制性的。数据字段可以包括描述共享数据和/或对象的任何期望的数据字段。例如,数据字段可以包括列中不同值的数量、唯一值的百分比、最后更新的日期、更新的频率、陈旧性、大小、行计数、阶段中非结构化文件的计数、具有0值的行的百分比、具有负值的行的百分比、最小值/最大值、标准偏差/平均值、百分位数值、最小/最大/平均字符串长度、表/列预览、示例值等。
在一些实施例中,数据提供者可以选择在数据字典中待包括的数据字段和/或定义在数据字典中待包括的数据字段。例如,数据提供者可以使用由数据提供者界面组件1002提供的界面来选择单个数据字段,以描述由清单202提供的共享数据和/或在共享数据中包括的单个对象。作为另一示例,数据提供者可以使用由数据提供者界面组件1002提供的界面来定义自定义数据字段,例如通过定义待由元数据填充组件1008执行的操作来填充自定义数据字段。
在填充之后,数据字段将提供其对应共享数据或单个对象的描述。元数据填充组件1008可以将这些生成的描述提供给数据字典生成系统312的其他组件,诸如数据字典输出组件1010。
在操作1608处,对象识别组件1006确定是否已经为共享数据中包括的所有对象生成了元数据。如果还没有为所有数据对象生成元数据,则方法1600返回到操作1602,在操作1602处,对象识别组件1006识别在共享数据中包括的尚未为其生成元数据的另一个数据对象。替代地,如果在操作1608处,对象识别组件1006确定已经为清单中包括的所有数据对象生成了元数据,则在操作1610处,数据字典输出组件1010基于每个对象的填充数据字段为清单202生成数据字典。数据字典输出组件1010基于由元数据填充组件1008生成的描述(例如,经填充的数据字段集)来为清单202生成和输出数据字典。例如,数据字典输出组件1010为清单202生成清单文件,该清单文件包括描述中每一个,并且将清单文件添加到目录220和/或覆盖目录220中对应于清单202的清单文件的先前版本。
在一些实施例中,数据字典输出组件1010可以基于由数据提供者提供的偏好来生成清单文件。例如,数据字典组件1010可以识别和/或排序存储在清单中的描述,以向由数据提供者定义的一组特征对象提供更高优先级。当数据字典作为清单202的描述的一部分呈现给数据消费者时,这可以导致特征对象被更突出地特征化。例如,一组特征对象可以呈现在用户界面的优先化和/或突出显示的部分内,首先呈现在在共享数据中包括的对象列表中,等等。
图17是根据本发明的一些实施例示出数据字典模式1700的框图。如所示,数据字典模式1700包括由清单202提供的共享数据的高级摘要、描述共享数据中包括的表的表信息、描述共享数据中的视图的视图信息、描述共享数据中的函数的函数信息以及描述共享数据中的存储过程的存储过程信息。还为共享数据中的每个表和视图提供了每列信息。如所示,每个对象都包括数据字段集。例如,高级摘要信息包括共享数据中的模式、表、视图、函数和存储过程的数量。表信息包括名称、描述、大小、最后更新、表中的行数和列数。视图信息包括名称、描述、最后更新和视图中的列数。函数和存储过程信息包括函数或存储过程的名称、描述、参数名称和参数类型。类似地,每列信息包括表或视图中包括的每个列的名称、描述、数据值类型和示例值。
图18是根据本发明的一些实施例的用户界面1800的框图,该用户界面1800呈现具有数据字典的清单的描述。如所示,用户界面1800包括清单的描述,包括书面描述和价格。此外,用户界面1800包括为清单生成的数据字典的部分。所示的数据字典的部分包括高级摘要信息和共享数据中包括的对于一组对象的信息,诸如表、视图和函数。所示对象可以是由数据提供者选择的特征对象。用户界面1800还包括查看完整数据字典的按钮。
图19是根据本发明的一些实施例的另一用户界面1900的框图,该另一用户界面1900呈现具有数据字典的清单的描述。当数据消费者选择按钮来查看对于图18中所示的清单的完整数据字典时,可以呈现所示的用户界面1900。用户界面1900包括对象浏览器,该对象浏览器允许数据消费者呈现描述由清单提供的共享数据中包括的每个对象的数据字典。
图20是根据本发明的一些实施例呈现给数据提供者的用户界面2000的框图。用户界面2000使数据提供者能够配置为其清单202自动生成的数据字典。如所示,用户界面2000允许数据提供者定义清单的基本信息,诸如数据访问设置、简档、标题、副标题、数据更新频率和类别。用户界面2000还允许数据提供者添加关于数据产品的数据,诸如定义安全共享、要在清单中突出显示的特征数据对象、归属的免费样本、付费数据属性和定价。
图21是根据本发明的一些实施例的用于将清单从源部署分发到目的地部署的方法2100的流程图。
在操作2102处,数据清单分发组件314访问为清单对象生成的数据字典。可以从源部署处的本地存储设备访问数据字典。例如,本地存储设备可以是与源部署处提供的清单202(例如,清单对象)相关联的本地云对象存储桶。数据字典可能已经由交换管理器124在源部署处生成。例如,数据字典可能已经响应于检测到与清单202相关的特权授予修改而生成,并且作为清单文件存储在源部署处的本地存储设备中。
在操作2104处,数据清单分发组件314识别清单对象要被复制到的目的地部署。例如,数据清单分发组件314可以基于与清单对象相关联的区域可见性来识别目的地部署。清单对象的区域可见性定义了清单202可以在其中分发的可用区域,例如,如关于图4B所描述的。
在操作2106处,数据清单分发组件314将数据字典和共享数据写入全局云对象存储桶。数据清单分发组件314可以基于清单的数据字典中包括的信息来访问共享数据(例如,共享数据中包括的单个对象)。全局云对象存储桶可以与目的地部署和/或清单202相关联。也就是说,存储在全局云对象存储桶中的数据可以被目的地部署访问,以便复制到目的地部署。全局云对象存储桶利用了关于图4A和图4B所讨论的消息传递框架和复制方法,以将数据复制到目的地部署。例如,将数据存储到全局云对象存储桶可能会使指定功能出现,从而将写入全局云对象存储桶的数据复制到目的地部署。因此,在操作2108处,数据清单分发组件314向目的地部署发送通知,以在目的地部署处复制共享数据和数据字典。该通知使目的地部署在目的地部署处本地复制数据,以在与目的地部署相关联的地理区域内提供清单。例如,目的地部署处的交换管理器124将共享数据和数据字典从全局云对象存储桶写入目的地部署处的本地存储设备,并覆盖与清单202相关联的清单文件,如关于图22所描述的那样。
图22是根据本发明的一些实施例的用于在目的地部署处复制清单的方法2200的流程图。
在操作2202处,目的地部署(例如,目的地部署处的交换管理器124)从全局对象存储桶接收从清单对象复制共享数据和数据字典的通知。
在操作2204处,目的地部署将共享数据写入与清单对象相关联的本地存储设备。在一些实施例中,本地存储设备是与清单202相关联的本地对象存储桶。
在操作2206处,目的地部署基于数据字典覆盖与清单对象相关联的清单文件。清单文件包括数据字典和指向被复制到目的地部署的共享数据的标识符。例如,清单文件可以包括指向被复制到目的地部署的共享数据中的每个对象的指针。
在操作2208处,目的地部署实现延迟周期。延迟周期提供了在删除在目的地部署处存储的共享数据的先前版本之前的时间。这为完成与共享数据的先前版本相关的正在执行的任何访问或操作提供了时间。延迟周期可以是任何期望的时间长度,诸如24小时、48小时等。
在延迟周期完成之后,在操作2210处,目的地部署删除共享数据的先前版本。
图23是根据本发明的一些实施例的用于将清单从源部署分发到目的地部署的系统2300的框图。如所示,源部署和目的地部署都包括交换管理器、本地云对象存储桶和全局云对象存储桶。在源部署处,交换管理器124为清单202生成数据字典。交换管理器124将数据字典存储在源部署的本地云对象存储桶处。为了将清单202分发到目的地部署,交换管理器124(例如,数据清单分发组件314)识别清单对象将被复制到的目的地部署。例如,数据清单分发组件314可以基于与清单对象相关联的区域可见性来识别目的地部署。清单对象的区域可见性定义了清单202可以在其中分发的可用区域,例如,如关于图4B所描述的。
在确定了清单对象将被复制到目的地部署后,交换管理器124将清单202的数据字典和由清单提供的共享数据写入全局云对象存储桶。交换管理器124可以基于在清单202的数据字典中包括的信息来访问共享数据(例如,在共享数据中包括的单个对象)。全局云对象存储桶可以与目的地部署和/或清单202相关联。也就是说,存储在全局云对象存储桶中的数据可以被目的地部署访问,以便复制到目的地部署。全局云对象存储桶利用了关于图4A和图4B所讨论的消息传递框架和复制方法,以将数据复制到目的地部署。例如,将数据存储到全局云对象存储桶可以导致出现指定功能,以导致将写入全局云对象存储桶的数据复制到目的地部署。因此,交换管理器124向目的地部署发送通知,以在目的地部署处复制共享数据和数据字典。
该通知使目的地部署在目的地部署处本地复制数据,以在与目的地部署相关联的地理区域内提供清单。例如,目的地部署处的交换管理器124将共享数据和数据字典从全局云对象存储桶写入目的地部署处的本地存储设备,并覆盖与清单202相关联的清单文件,如关于图22所描述的那样。
图24示出了根据示例实施例的计算机系统形式的机器2400的图解表示,在该计算机系统形式的机器2400内可以执行指令集以使机器2400执行本文所讨论方法中的任何一种或更多种方法。具体地,图24以计算机系统的示例形式示出了机器2400的图解表示,用于使机器2400执行本文所讨论方法中的任何一种或更多种方法的指令2416(例如,软件、程序、应用、小程序、app、或其他可执行代码)可以在该计算机系统内执行。例如,指令2416可以使机器2400执行图7、图8、图11-图16、图21和图22中所示方法的任何一个或更多个操作。作为另一个示例,指令2416可以使机器2400实现图1A-图6、图9、图10、图17-图20和图23中的任何一个或更多个中所示的功能的部分。以这种方式,指令2416将通用的、未编程的机器转换成特定的机器2400,该特定的机器2400被特别配置成以本文描述的方式执行所描述和示出的功能中的任何一个。
在替代实施例中,机器2400作为独立的设备操作或者可以耦合(例如,联网)到其它机器。在联网部署中,机器2400可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份来操作,或者作为对等(或分布式)网络环境中的对等机器来操作。机器2400可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本(netbook)、智能电话、移动设备、网络路由器、网络交换机、网络桥接器(networkbridge)或能够顺序地或以其它方式执行指令2416的任何机器,指令2416指定要由机器2400采取的动作。此外,虽然仅示出了单个机器2400,但术语“机器”还应被理解为包括单独或联合地执行指令2416以执行本文所讨论方法中的任何一种或更多种方法的机器2400的集合。
机器2400包括处理器2410、存储器2430和输入/输出(I/O)部件2450,它们被配置成例如经由总线2402彼此通信。在示例实施例中,处理器2410(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合)可以包括例如可以执行指令2416的处理器2414和处理器2412。术语“处理器”旨在包括多核处理器2410,多核处理器2410可以包括可以同时执行指令2416的两个或更多个独立处理器(有时称为“核”)。尽管图24示出了多个处理器2410,但是机器2400可以包括具有单核的单个处理器、具有多核的单个处理器(例如,多核处理器)、具有单核的多个处理器、具有多核的多个处理器或者它们的任意组合。
存储器2430可以包括主存储器2432、静态存储器2434和存储单元2436,它们都可以由处理器2410例如经由总线2402访问。主存储器2432、静态存储器2434和存储单元2436存储指令2416,指令2416体现本文描述的方法或功能中的任何一种或更多种。在由机器2400执行期间,指令2416也可以全部或部分地驻留在主存储器2432内、静态存储器2434内、存储单元2436内、处理器2410中的至少一个内(例如,在处理器的高速缓存内)或其任何合适的组合。
I/O部件2450包括用于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量值等的部件。包括在特定机器2400中的具体的I/O部件2450将取决于机器的类型。例如,诸如移动电话的便携式机器将有可能包括触摸输入设备或其他这样的输入机构,而无头服务器机器将不太可能包括这样的触摸输入设备。将认识到的是,I/O部件2450可以包括图24中未示出的许多其他部件。I/O部件2450根据功能进行分组仅仅是为了简化下面的讨论,并且该分组决不是限制性的。在各种示例实施例中,I/O部件2450可以包括输出部件2452和输入部件2454。输出部件2452可以包括视觉部件(例如,诸如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、声学部件(例如,扬声器)、其他信号发生器等。输入部件2454可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于指向的输入部件(例如,鼠标、触控板、轨迹球、操纵杆、运动传感器或另一指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
可以使用多种技术来实现通信。I/O部件2450可以包括通信部件2464,通信部件2464可操作来分别经由耦合2482和耦合2472将机器2400耦合到网络2480或设备2470。例如,通信部件2464可以包括网络接口部件或与网络2480对接的另一合适的设备。在进一步的示例中,通信部件2464可以包括有线通信部件、无线通信部件、蜂窝通信部件和经由其他模态提供通信的其他通信部件。设备2470可以是另一台机器或多种外围设备中的任一种(例如,经由通用串行总线(USB)耦合的外围设备)。例如,如上所述,机器2400可以对应于云计算服务112的任何一个组件,并且设备2470可以包括数据存储设备或本文描述的任何其他计算设备。
各种存储器(例如,2430、2432、2434和/或处理器2410的存储器和/或存储单元2436)可以存储指令2416和数据结构(例如,软件)的一个或更多个集合,这些指令2416和数据结构(例如软件)体现本文所描述的方法或功能中的任何一种或更多种或被本文所描述的方法或功能中的任何一种或更多种利用。当由处理器2410执行时,这些指令2416使各种操作实现所公开的实施例。
如本文所使用的,术语“机器存储介质”、“设备存储介质”和“计算机存储介质”意思相同,并且可以在本公开中互换使用。这些术语指的是存储可执行指令和/或数据的单个或多个存储设备和/或介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。相应地,这些术语应当被认为包括但不限于固态存储器以及光介质和磁介质,包括在处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括非易失性存储器,非易失性存储器包括例如:半导体存储器设备,诸如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、现场可编程门阵列(FPGA)和闪存设备;磁盘,例如内部硬盘和可移除磁盘;磁光盘;以及CD-ROM和DVD-ROM光盘。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”具体排除了载波、经调制的数据信号和其他这样的介质(其中的至少一些包含在下面讨论的术语“信号介质”中)。
在各种示例实施例中,网络2480的一个或更多个部分可以是自组织网络(ad hocnetwork)、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网络(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络、或两种或更多种这样的网络的组合。例如,网络2480或网络2480的一部分可以包括无线或蜂窝网络,并且耦合2482可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或另一种类型的蜂窝或无线耦合。在该示例中,耦合2482可以实现多种类型的数据传输技术中的任何一种,例如单载波无线电传输技术(1xRTT)、演进数据优化(Evolution-Data Optimized,EVDO)技术、通用分组无线电服务(GPRS)技术、增强型数据速率GSM演进(EDGE)技术、包括3G、第四代无线(4G)网络、通用移动电信系统(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准的第三代合作伙伴计划(3GPP)、由各种标准设置组织定义的其他技术、其他长程协议、或其他数据传输技术。
指令2416可以使用传输介质经由网络接口设备(例如,包括在通信部件2464中的网络接口部件)并利用多种众所周知的传输协议(例如,超文本传输协议(HTTP))中的任何一种在网络2480上传输或接收。类似地,指令2416可以使用传输介质经由耦合2472(例如,对等耦合)被传输或接收到设备2470。术语“传输介质”和“信号介质”意思相同,并且在本公开中可以互换使用。术语“传输介质”和“信号介质”应被理解为包括能够存储、编码或携带用于由机器2400执行的指令2416的任何无形介质,并且包括数字或模拟通信信号或便于这样的软件的通信的其他无形介质。因此,术语“传输介质”和“信号介质”应被理解为包括任何形式的经调制的数据信号、载波等。术语“经调制的数据信号”意指这样的信号:其具有以对信号中的信息进行编码的这样的方式设置或更改的其特性中的一个或更多个特性。
术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意思相同,并且在本公开中可以互换使用。这些术语被定义为包括机器存储介质和传输介质二者。因此,这些术语包括存储设备/介质和载波/经调制的数据信号二者。
本文描述的示例方法的各种操作可以至少部分地由被临时配置(例如,通过软件)或永久配置为执行相关操作的一个或更多个处理器来执行。类似地,本文描述的方法可以至少部分是处理器实现的。例如,方法700、800、1100、1200、1300、1400、1500和1600的至少一些操作可以由一个或更多个处理器来执行。某些操作的执行可以在一个或更多个处理器之间分配,该一个或更多个处理器不仅驻留在单个机器内,而且跨多个机器部署。在一些示例实施例中,一个或更多个处理器可以位于单个位置中(例如,在家庭环境、办公室环境或服务器场内),而在其他实施例中,处理器可以跨多个位置分布。
尽管参考具体的示例实施例描述了本公开的实施例,但显然地,在不偏离本发明主题的更广泛范围的情况下,可以对这些实施例做出各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的。形成本申请的一部分的附图通过说明而非限制的方式示出了其中可以实施主题的具体实施例。所示出的实施例以充分的细节被描述,以使本领域的技术人员能够实施本文公开的教导。可以使用其他实施例和从其中衍生的实施例,使得可以做出结构和逻辑的替换和改变而不偏离本公开的范围。因此,此详细描述不应被理解为限制性意义,并且各种实施例的范围仅由所附权利要求连同这些权利要求所享有的完整范围的等同物一起限定。
本发明主题的这样的实施例可以在本文中单独地和/或共同地由术语“发明”提到,这仅仅是为了便利,并不意图自愿将本申请的范围局限于任何单一发明或发明构思(如果实际上公开了多于一种发明或发明构思的话)。因此,虽然本文中已经说明和描述了特定实施例,但是应当理解,可以用经计算以实现相同目的的任何布置来替换所示出的特定实施例。本公开意图涵盖各种实施例的所有改编或变型。在阅读以上描述后,以上实施例的组合以及本文未具体描述的其他实施例对于本领域的技术人员来说将是明显的。
在本文档中,术语“一个(a)”或“一个(an)”,如专利文档中常见的那样,用于包括一个或多于一个,与“至少一个”或“一个或更多个”的任何其他实例或用法无关。在本文档中,术语“或”用于指非排他性的或,因此除非另有说明,否则“A或B”包括“A但不包括B”、“B但不包括A”和“A和B”。在所附权利要求中,术语“包括(including)”和“其中(in which)”被用作相应术语“包括(comprising)”和“其中(wherein)”的纯英语等效词。此外,在所附权利要求中,术语“包括(including)”和“包括(comprising)”是开放式的;也就是说,包括除了权利要求中在这样的术语之后列出的那些元素之外的元素的系统、设备、物品或过程仍然被认为落入该权利要求的范围内。
Claims (30)
1.一种方法,包括:
在源部署处访问为清单对象生成的数据字典,所述数据字典描述由所述清单对象提供的共享数据;
通过至少一个硬件处理器识别所述清单对象将被复制到的目的地部署;
将所述数据字典和由所述清单对象提供的所述共享数据写入与所述目的地部署相关联的全局云对象存储桶;和
基于将所述数据字典和由所述清单对象提供的所述共享数据写入所述全局云对象存储桶,向所述目的地部署发送通知,所述通知使所述目的地部署在所述目的地部署处复制所述共享数据和所述数据字典。
2.根据权利要求1所述的方法,其中,所述通知使用全局消息传递框架来发送,所述全局消息传递框架定义了对所述通知的对应处理函数。
3.根据权利要求1所述的方法,其中,所述目的地部署使用在所述目的地部署处复制的所述共享数据和所述数据字典来在所述目的地部署处提供由所述清单对象提供的所述共享数据以及包括所述数据字典的所述共享数据的描述。
4.根据权利要求3所述的方法,在所述目的地部署处复制的所述共享数据和所述数据字典替换在所述目的地部署处复制的所述共享数据和所述数据字典的先前版本。
5.根据权利要求4所述的方法,其中,所述目的地部署通过覆盖与所述清单对象相关联的清单文件以指向在所述目的地部署处复制的所述共享数据和所述数据字典来替换在所述目的地部署处复制的所述共享数据和所述数据字典的所述先前版本,并删除在所述目的地部署处复制的所述共享数据和所述数据字典的所述先前版本。
6.根据权利要求5所述的方法,其中,所述目的地部署实现在覆盖所述清单文件和删除所述共享数据和所述数据字典的所述先前版本之间的延迟周期。
7.根据权利要求1所述的方法,还包括:
为所述清单对象生成所述数据字典;和
将所述数据字典写入所述源部署的本地云对象存储桶,其中,所述数据字典从所述本地云对象存储桶进行访问。
8.根据权利要求1所述的方法,其中,响应于检测到对所述清单对象的特权授予修改而生成所述清单对象的所述数据字典。
9.根据权利要求1所述的方法,还包括:
访问为所述清单对象生成的更新的数据字典,所述更新的数据字典描述由所述清单对象提供的更新的共享数据;
识别所述清单对象将被复制到的所述目的地部署;
将所述更新的数据字典和由所述清单对象提供的所述更新的共享数据写入与所述目的地部署相关联的所述全局云对象存储桶;和
基于将所述更新的数据字典和由所述清单对象提供的所述更新的共享数据写入所述全局云对象存储桶,向所述目的地部署发送后续通知,所述后续通知使所述目的地部署在所述目的地部署处复制所述更新的共享数据和所述更新的数据字典。
10.根据权利要求1所述的方法,其中,识别所述清单对象将被复制到的所述目的地部署包括:
访问与所述清单对象相关联的区域可见性,所述区域可见性识别远程部署,所述清单对象在所述远程部署处被授权提供所述共享数据。
11.一种系统,包括:
一个或更多个计算机处理器;和
一个或更多个计算机可读介质,所述计算机可读介质存储指令,所述指令在由所述一个或更多个计算机处理器执行时使所述系统执行包括以下项的操作:
在源部署处访问为清单对象生成的数据字典,所述数据字典描述由所述清单对象提供的共享数据;
识别所述清单对象将被复制到的目的地部署;
将所述数据字典和由所述清单对象提供的所述共享数据写入与所述目的地部署相关联的全局云对象存储桶;和
基于将所述数据字典和由所述清单对象提供的所述共享数据写入所述全局云对象存储桶,向所述目的地部署发送通知,所述通知使所述目的地部署在所述目的地部署处复制所述共享数据和所述数据字典。
12.根据权利要求11所述的系统,其中,所述通知使用全局消息传递框架来发送,所述全局消息传递框架定义了对所述通知的对应处理函数。
13.根据权利要求11所述的系统,其中,所述目的地部署使用在所述目的地部署处复制的所述共享数据和所述数据字典来在所述目的地部署处提供由所述清单对象提供的所述共享数据以及包括所述数据字典的所述共享数据的描述。
14.根据权利要求13所述的系统,在所述目的地部署处复制的所述共享数据和所述数据字典替换在所述目的地部署处复制的所述共享数据和所述数据字典的先前版本。
15.根据权利要求14所述的系统,其中,所述目的地部署通过覆盖与所述清单对象相关联的清单文件以指向在所述目的地部署处复制的所述共享数据和所述数据字典来替换在所述目的地部署处复制的所述共享数据和所述数据字典的所述先前版本,并删除在所述目的地部署处复制的所述共享数据和所述数据字典的所述先前版本。
16.根据权利要求15所述的系统,其中,所述目的地部署实现在覆盖所述清单文件和删除所述共享数据和所述数据字典的所述先前版本之间的延迟周期。
17.根据权利要求11所述的系统,所述操作还包括:
为所述清单对象生成所述数据字典;和
将所述数据字典写入所述源部署的本地云对象存储桶,其中,所述数据字典从所述本地云对象存储桶进行访问。
18.根据权利要求11所述的系统,其中,响应于检测到对所述清单对象的特权授予修改而生成所述清单对象的所述数据字典。
19.根据权利要求11所述的系统,所述操作还包括:
访问为所述清单对象生成的更新的数据字典,所述更新的数据字典描述由所述清单对象提供的更新的共享数据;
识别所述清单对象将被复制到的所述目的地部署;
将所述更新的数据字典和由所述清单对象提供的所述更新的共享数据写入与所述目的地部署相关联的所述全局云对象存储桶;和
基于将所述更新的数据字典和由所述清单对象提供的所述更新的共享数据写入所述全局云对象存储桶,向所述目的地部署发送后续通知,所述后续通知使所述目的地部署在所述目的地部署处复制所述更新的共享数据和所述更新的数据字典。
20.根据权利要求11所述的系统,其中,识别所述清单对象将被复制到的所述目的地部署包括:
访问与所述清单对象相关联的区域可见性,所述区域可见性识别远程部署,所述清单对象在所述远程部署处被授权提供所述共享数据。
21.一种存储指令的计算机存储介质,所述指令在由一个或更多个计算设备的一个或更多个计算机处理器执行时使所述一个或更多个计算设备执行包括以下项的操作:
在源部署处访问为清单对象生成的数据字典,所述数据字典描述由所述清单对象提供的共享数据;
识别所述清单对象将被复制到的目的地部署;
将所述数据字典和由所述清单对象提供的所述共享数据写入与所述目的地部署相关联的全局云对象存储桶;和
基于将所述数据字典和由所述清单对象提供的所述共享数据写入所述全局云对象存储桶,向所述目的地部署发送通知,所述通知使所述目的地部署在所述目的地部署处复制所述共享数据和所述数据字典。
22.根据权利要求21所述的计算机存储介质,其中,所述通知使用全局消息传递框架来发送,所述全局消息传递框架定义了对所述通知的对应处理函数。
23.根据权利要求21所述的计算机存储介质,其中,所述目的地部署使用在所述目的地部署处复制的所述共享数据和所述数据字典来在所述目的地部署处提供由所述清单对象提供的所述共享数据以及包括所述数据字典的所述共享数据的描述。
24.根据权利要求23所述的计算机存储介质,在所述目的地部署处复制的所述共享数据和所述数据字典替换在所述目的地部署处复制的所述共享数据和所述数据字典的先前版本。
25.根据权利要求24所述的计算机存储介质,其中,所述目的地部署通过覆盖与所述清单对象相关联的清单文件以指向在所述目的地部署处复制的所述共享数据和所述数据字典来替换在所述目的地部署处复制的所述共享数据和所述数据字典的所述先前版本,并删除在所述目的地部署处复制的所述共享数据和所述数据字典的所述先前版本。
26.根据权利要求25所述的计算机存储介质,其中,所述目的地部署实现在覆盖所述清单文件和删除所述共享数据和所述数据字典的所述先前版本之间的延迟周期。
27.根据权利要求21所述的计算机存储介质,所述操作还包括:
为所述清单对象生成所述数据字典;和
将所述数据字典写入所述源部署的本地云对象存储桶,其中,所述数据字典从所述本地云对象存储桶进行访问。
28.根据权利要求21所述的计算机存储介质,其中,响应于检测到对所述清单对象的特权授予修改而生成所述清单对象的所述数据字典。
29.根据权利要求21所述的计算机存储介质,所述操作还包括:
访问为所述清单对象生成的更新的数据字典,所述更新的数据字典描述由所述清单对象提供的更新的共享数据;
识别所述清单对象将被复制到的所述目的地部署;
将所述更新的数据字典和由所述清单对象提供的所述更新的共享数据写入与所述目的地部署相关联的所述全局云对象存储桶;和
基于将所述更新的数据字典和由所述清单对象提供的所述更新的共享数据写入所述全局云对象存储桶,向所述目的地部署发送后续通知,所述后续通知使所述目的地部署在所述目的地部署处复制所述更新的共享数据和所述更新的数据字典。
30.根据权利要求21所述的计算机存储介质,其中,识别所述清单对象将被复制到的所述目的地部署包括:
访问与所述清单对象相关联的区域可见性,所述区域可见性识别远程部署,所述清单对象在所述远程部署处被授权提供所述共享数据。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US63/377,860 | 2022-09-30 | ||
US17/977,817 | 2022-10-31 | ||
US18/447,897 US12130835B2 (en) | 2023-08-10 | Distributing large amounts of global metadata using object files | |
US18/447,897 | 2023-08-10 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117807028A true CN117807028A (zh) | 2024-04-02 |
Family
ID=90424145
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311297752.4A Pending CN117807028A (zh) | 2022-09-30 | 2023-10-09 | 使用目标文件分发大量全局元数据 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117807028A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12130835B2 (en) | 2023-08-10 | 2024-10-29 | Snowflake Inc. | Distributing large amounts of global metadata using object files |
-
2023
- 2023-10-09 CN CN202311297752.4A patent/CN117807028A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12130835B2 (en) | 2023-08-10 | 2024-10-29 | Snowflake Inc. | Distributing large amounts of global metadata using object files |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11595399B2 (en) | Private data exchange metrics sharing | |
US11645413B2 (en) | Secure document sharing using a data exchange listing | |
US11669630B1 (en) | Background service to generate data dictionary metadata | |
US20220050855A1 (en) | Data exchange availability, listing visibility, and listing fulfillment | |
CN113994319A (zh) | 在远程部署之间共享复制 | |
US20240176822A1 (en) | Projection constraint policies in a database system | |
US11968258B2 (en) | Sharing of data share metrics to customers | |
US11775559B1 (en) | Distributing large amounts of global metadata using object files | |
US12130835B2 (en) | Distributing large amounts of global metadata using object files | |
US20240111784A1 (en) | Distributing large amounts of global metadata using object files | |
US12050710B2 (en) | Generating data dictionary metadata | |
EP4345643A1 (en) | Distributing large amounts of global metadata using object files | |
US11989164B2 (en) | Data dictionary metadata for marketplace listings | |
CN117807028A (zh) | 使用目标文件分发大量全局元数据 | |
EP4345639A1 (en) | Background service to generate data dictionary metadata | |
CN117807572A (zh) | 用于生成数据字典元数据的后台服务 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
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. |
|
CB02 | Change of applicant information |