CN113994319A - 在远程部署之间共享复制 - Google Patents

在远程部署之间共享复制 Download PDF

Info

Publication number
CN113994319A
CN113994319A CN202180001590.8A CN202180001590A CN113994319A CN 113994319 A CN113994319 A CN 113994319A CN 202180001590 A CN202180001590 A CN 202180001590A CN 113994319 A CN113994319 A CN 113994319A
Authority
CN
China
Prior art keywords
shared
data
account
objects
database
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
Application number
CN202180001590.8A
Other languages
English (en)
Inventor
朱培基
本诺特·戴奇维勒
施瑞亚斯·纳伦德拉·德赛
杰曼·阿尔贝托·吉尔埃切韦里
普拉桑纳·克里希南
维斯奴·杜特·帕拉杜古
张博文
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Snowflake Inc
Original Assignee
Snowflake Computing Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Snowflake Computing Inc filed Critical Snowflake Computing Inc
Publication of CN113994319A publication Critical patent/CN113994319A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/178Techniques for file synchronisation in file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • G06F16/128Details of file system snapshots on the file-level, e.g. snapshot creation, administration, deletion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/1734Details of monitoring file system events, e.g. by the use of hooks, filter drivers, logs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/1824Distributed file systems implemented using Network-attached Storage [NAS] architecture
    • G06F16/1827Management specifically adapted to NAS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • G06F16/184Distributed file systems implemented as replicated file system
    • G06F16/1844Management specifically adapted to replicated file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/275Synchronous replication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/546Message passing systems or structures, e.g. queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本文提供了用于向远程部署复制共享对象的有效方法的系统和方法。例如,该方法可以包括将数据交换所的第一账户的共享对象修改为全局对象,其中该共享对象包括指示对数据库的一组对象的共享许可的许可元数据。该方法还可以包括在数据交换所的第二账户中,基于全局对象在远程部署上创建共享对象的本地副本,其中第二账户位于远程部署中。数据库的一组对象可以被复制到远程部署上的本地数据库副本,并且共享许可可以被复制到共享对象的本地副本。

Description

在远程部署之间共享复制
相关申请
本申请根据35U.S.C.§119(e)要求2021年3月5日提交的美国专利申请第17/193,192号的权益,该申请是2020年6月12日提交的美国专利申请第16/900,840号的继续,现在是2021年3月16日发布的美国专利第10,949,402号,该申请要求2020年5月26日提交的美国临时专利申请第63/030,267号的权益,其公开内容通过引用结合于此。
技术领域
本公开涉及数据共享平台,尤其涉及在其远程部署之间共享数据。
背景
数据库被广泛用于计算应用中的数据存储和访问。数据库可以包括一个或更多个表,这些表包含或引用可以使用查询读取、修改或删除的数据。数据库可用于存储和/或访问个人信息或其他敏感信息。可以通过加密和/或以加密形式存储数据来提供数据库数据的安全存储和访问,以防止未授权的访问。在某些情况下,数据共享可能有助于让其他方对一组数据执行查询。
附图简述
通过结合附图参考以下描述,可以最好地理解所描述的实施例及其优点。在不脱离所描述的实施例的精神和范围的情况下,这些附图决不限制本领域技术人员可以对所描述的实施例进行的形式和细节上的任何改变。
图1A是描绘其中可以实现本文公开的方法的示例计算环境的框图。
图1B是示出示例虚拟仓库的框图。
图2是根据本发明实施例的可用于实现公共或私有数据交换所(data exchange)的数据的示意框图。
图3是根据本发明实施例的用于实现数据交换所的组件的示意框图。
图4是根据本发明一些实施例的数据交换所中远程部署的框图。
图5是示出根据本发明一些实施例的共享许可刷新的图。
图6A和6B是示出根据本发明的一些实施例的后续共享许可刷新的图。
图7是根据本发明的一些实施例的用于将共享对象复制到远程部署的方法的流程图。
图8是根据本发明一些实施例的用于执行共享许可刷新操作的方法的流程图。
图9是根据本发明的一些实施例的可以执行这里描述的一个或更多个操作的示例计算设备的框图。
详细描述
数据提供者通常拥有难以共享的数据资产。数据资产可以是另一个实体感兴趣的数据。例如,一家大型在线零售公司可能有一个数据集,其中包括过去十年数百万客户的购买习惯。这个数据集可能很大。如果在线零售商希望与另一个实体共享全部或部分该数据,在线零售商可能需要使用旧的慢速方法来传输数据,例如文件传输协议(FTP),或者甚至将数据复制到物理介质上并将物理介质邮寄给另一个实体。这有几个缺点。第一,慢。复制万亿字节或千兆字节的数据可能需要几天时间。其次,一旦数据被交付,共享者就不能控制数据会发生什么。收件人可以更改数据、制作副本或与其他方共享数据。第三,对以这种方式访问如此大的数据集感兴趣的唯一实体是大型公司,它们能够承担传输和处理数据的复杂物流以及这种繁琐的数据传输的高价格。因此,规模较小的实体(如“妈妈和爸爸(mom andpop)”商店)或甚至更小、更灵活的以云为中心的初创公司通常因价格而无法访问这些数据,尽管这些数据对他们的业务可能很有价值。这可能是因为原始数据资产通常过于粗糙,充满了潜在的敏感数据,不能直接出售给其他公司。在数据可与另一方共享之前,数据所有者需要执行数据清理、去识别、聚合、连接和其他形式的数据丰富。这既费时又费钱。最后,由于上述原因,传统的数据共享方法不允许可扩展的共享,因此很难与许多实体共享数据资产。传统的共享方法还会在所有各方对最近更新的数据的访问方面引入了等待和延迟。
私有和公共数据交换所可以使数据提供者更容易和更安全地与其他实体共享其数据资产。公共数据交换所(这里也称为“Snowflake数据市场”或“数据市场”)可以提供具有开放访问的集中式储存库,其中数据提供者可以向成千上万的客户发布和控制实时和只读数据集。私有数据交换所(此处也称为“数据交换所”)可以属于数据提供者的品牌,并且数据提供者可以控制谁可以访问它。数据交换所可能仅供内部使用,也可能对客户、合作伙伴、供应商或其他人开放。数据提供者可以控制列出哪些数据资产,以及控制谁有权访问哪些数据集。这允许以无缝的方式在数据提供者的组织内以及与其业务伙伴发现和共享数据。
数据交换所可以通过云计算服务(如SNOWFLAKETM)来促进,并允许数据提供者在私有在线市场上以自己的品牌直接从自己的在线域(如网站)提供数据资产。数据交换所可以为实体提供集中的、受管理的中枢,以列出内部或外部共享的数据资产,激发数据协作,并且还维护数据治理和审计访问。有了数据交换所,数据提供者可以共享数据,而无需在公司之间复制数据。数据提供者可以邀请其他实体查看他们的数据清单,控制哪些数据清单出现在他们的私有在线市场中,控制谁可以访问数据清单以及其他人如何与连接到清单的数据资产交互。这可能被认为是一个“有围墙的花园”市场,在这个市场里,参观花园的人必须得到批准,某些清单的使用权可能会受到限制。
举例来说,A公司可能是一家消费者数据公司,它收集并分析了数百万个人在几个不同类别中的消费习惯。他们的数据集可能包括以下类别的数据:网上购物、视频流、电力消耗、汽车使用、互联网使用、服装购买、移动应用购买、俱乐部会员和在线订阅服务。公司A可能希望向其他实体提供这些数据集(或这些数据集的子集或衍生产品)。例如,一个新的服装品牌可能希望访问与消费者服装购买和网上购物习惯相关的数据集。公司A可以支持其网站上与数据交换所基本相似或功能基本相似的页面,其中数据消费者(例如,新服装品牌)可以直接从公司A浏览、探索、发现、访问和潜在地购买数据集。此外,公司A可以控制:谁可以进入数据交换所、可以查看特定清单的实体、实体可以针对清单采取的动作(例如,仅查看)以及任何其他合适的动作。此外,数据提供者可以将其自己的数据与来自例如公共数据交换所(也称为“Snowflake数据市场”或“数据市场”)的其他数据集组合,并使用组合的数据创建新的清单。
数据交换所可能是发现、汇编、清理和丰富数据以使其更具货币化的合适场所。数据交换所中的一家大型公司可能会汇集来自其各个部门和机构的数据,这些数据可能会对另一家公司有价值。此外,私有生态系统数据交换所的参与者可以一起工作,将他们的数据集连接在一起,共同创建一个有用的数据产品,而任何一个参与者都无法单独生成该产品。一旦创建了这些连接数据集,它们就可以在数据交换所或数据市场上列出。
当数据提供者在数据提供者的账户中创建数据库的共享对象(以下称为共享)并授予对数据库的特定对象(例如,表、安全视图和安全用户定义函数(UDF))的共享访问权限时,可以执行数据共享。然后,可以使用共享中提供的信息创建只读数据库。对该数据库的访问可以由数据提供者控制。“共享”封装了在数据库中共享数据所需的所有信息。共享可以包括至少三条信息:(1)授予对包含要共享的对象的数据库和模式的访问权限的特权,(2)授予对特定对象(例如,表、安全视图和安全UDF)的访问权限的特权,以及(3)共享数据库及其对象的消费者账户。共享数据时,用户之间不会复制或传输任何数据。共享是通过云计算服务提供者(如SNOWFLAKETM)的云计算服务来实现的。
提供者共享的数据可以由提供者在数据交换所或数据市场中定义的清单来描述。对于数据市场和数据交换所,清单的访问控制、管理和治理可能是相似的。清单可以包括描述共享数据的元数据。
共享数据可用于处理SQL查询,可能包括连接、聚合或其他分析。在某些情况下,数据提供者可以定义共享,从而允许对共享数据执行“安全连接”。可以执行安全连接,使得可以针对共享数据执行分析,但是数据消费者(例如,共享的接收者)不能访问实际的共享数据。
在数据交换所中,对清单的许多请求来自远程部署。要授予对清单的数据访问权限,清单所有者需要在远程部署中拥有另一个账户或合作伙伴账户,并创建一个相同的共享。该相同的共享需要对数据库(新创建或复制的)具有相同的特权访问,该数据库需要与清单所有者部署中的原始共享中授予访问权限的数据库相同。
跨一个或更多个远程部署重新创建共享和维护的过程既繁琐又容易出错。用户需要手动登录到每个部署中的账户,并执行一组操作来创建本地共享。用户必须向每个本地共享提供原始共享的所有许可。如果原始共享具有对包含数百或数千个对象的数据库上的各种对象的大量许可,那么用户将需要执行数百或数千个操作来重新创建原始共享。对共享的任何编辑(如添加账户)同样需要对每个部署中的每个拷贝执行一组操作(如ALTER操作)。
这里描述的系统和方法提供了在数据交换所中复制共享对象的有效方式。例如,该方法可以包括将数据交换所的第一账户的共享对象修改为全局对象,其中该共享对象包括指示对数据库的一组对象的共享许可的许可元数据。该方法还可以包括在数据交换所的第二账户中,基于全局对象在远程部署上创建共享对象的本地副本,其中第二账户位于远程部署中。数据库的一组对象可以被复制到远程部署上的本地数据库副本,并且共享许可可以被复制到共享对象的本地副本。
图1A是其中可以实现本文公开的系统和方法的示例计算环境100的框图。具体而言,可以实现云计算平台110,例如AMAZON WEB SERVICESTM(AWS)、微软AZURETM、GOOGLECLOUDTM等。如本领域中已知的,云计算平台110提供计算资源和存储资源,这些资源可以被获取(购买)或租赁并被配置为执行应用和存储数据。
云计算平台110可以托管云计算服务112,该云计算服务112便于在云计算平台110上存储数据(例如,数据管理和访问)和分析功能(例如,SQL查询、分析),以及其他计算能力(例如,云计算平台110的用户之间的安全数据共享)。云计算平台110可以包括三层架构:数据存储140、查询处理130和云服务120。
数据存储140可以促进云计算平台110上的数据在一个或更多个云数据库141中的存储。数据存储140可以使用诸如AMAZON S3的存储服务来在云计算平台110上存储数据和查询结果。在特定实施例中,为了将数据加载到云计算平台110中,数据表可以被水平分割成大的、不可变的文件,这些文件可以类似于传统数据库系统中的块或页。在每个文件中,每个属性或列的值被分组在一起,并使用有时被称为混合列的方案进行压缩。每个表都有一个表头,除其他元数据外,还包含文件中每一列的偏移量。
除了存储表数据之外,数据存储140便于存储由查询操作(例如,连接)生成的临时数据,以及包含在大型查询结果中的数据。这可能允许系统在没有内存不足或磁盘不足错误的情况下计算大型查询。这样存储查询结果可以简化查询处理,因为它消除了传统数据库系统中对服务器端游标的需求。
查询处理130可以处理虚拟机的弹性集群(这里称为虚拟仓库或数据仓库)内的查询执行。因此,查询处理130可以包括一个或更多个虚拟仓库131,其在这里也可以被称为数据仓库。虚拟仓库131可以是在云计算平台110上运行的一个或更多个虚拟机。虚拟仓库131可以是计算资源,可以根据需要在任何时候创建、销毁或调整大小。这个功能可以创建一个“弹性”的虚拟仓库,它可以根据用户的需要进行扩展、收缩或关闭。扩展虚拟仓库包括生成虚拟仓库131的一个或更多个计算节点132。收缩虚拟仓库包括从虚拟仓库131中移除一个或更多个计算节点132。更多的计算节点132可以导致更快的计算时间。例如,在有四个节点的系统上,数据加载需要十五个小时,而在有三十二个节点的系统上,可能只需要两个小时。
云服务120可以是跨云计算服务110协调活动的服务集合。这些服务将云计算服务110的所有不同组件联系在一起,以便处理从登录到查询分派的用户请求。云服务120可以在由云计算服务110从云计算平台110提供的计算实例上操作。云服务120可以包括管理虚拟仓库、查询、事务、数据交换以及与这些服务相关联的元数据(例如数据库模式、访问控制信息、加密密钥和使用统计)的服务集合。云服务120可以包括但不限于认证引擎121、架构管理器122、优化器123、交换管理器124、安全引擎125和元数据储存器126。
图1B是示出示例虚拟仓库131的框图。交换管理器124可以使用例如数据交换所来促进数据提供者和数据消费者之间的数据共享。例如,云计算服务112可以管理数据库108的存储和访问。数据库108可以包括不同用户,例如不同企业或个人的用户数据150的各种实例。用户数据可以包括由该用户存储和访问的数据的用户数据库152。用户数据库152可以受到访问控制,使得在向云计算服务112认证时,仅允许数据的所有者改变和访问数据库112。例如,数据可以被加密,使得它只能使用数据所有者拥有的解密信息来解密。使用交换管理器124,来自用户数据库152的受到这些访问控制的特定数据可以根据本文公开的方法以受控的方式与其他用户共享。特别地,用户可以指定共享154,共享154可以以不受控制的方式在公共或数据交换所中共享,或者以如上所述的受控制的方式与特定的其他用户共享。“共享”封装了在数据库中共享数据所需的所有信息。共享可以包括至少三条信息:(1)授予对包含要共享的对象的数据库和模式的访问权限的特权,(2)授予对特定对象(例如,表、安全视图和安全UDF)的访问权限的特权,以及(3)共享数据库及其对象的消费者账户。共享数据时,用户之间不会复制或传输任何数据。共享是通过云计算服务110的云服务120来实现的。
当数据提供者在数据提供者的账户中创建数据库的共享并许可访问特定对象(例如,表、安全视图和安全用户定义函数(UDF))时,可以执行数据共享。然后,可以使用共享中提供的信息创建只读数据库。对该数据库的访问可以由数据提供者控制。
共享数据可用于处理SQL查询,可能包括连接、聚合或其他分析。在某些情况下,数据提供者可以定义共享,从而允许对共享数据执行“安全连接”。可以执行安全连接,使得可以针对共享数据执行分析,但是数据消费者(例如,共享的接收者)不能访问实际的共享数据。如2019年3月18日提交的美国申请序列号16/368,339中所述,可以执行安全连接。
用户设备101-104,例如膝上型计算机、台式计算机、移动电话、平板计算机、云托管计算机、云托管无服务器进程或其他计算进程或设备,可用于通过网络105,例如互联网或专用网络,访问虚拟仓库131或云服务120。
在下面的描述中,动作归于用户,特别是消费者和提供者。这种动作应当理解为是针对由这种用户操作的设备101-104来执行的。例如,给用户的通知可以被理解为发送到设备101-104的通知,来自用户的输入或指令可以被理解为通过用户的设备101-104接收,并且用户与界面的交互应该被理解为与用户的设备101-104上的界面的交互。此外,归属于用户(消费者或提供者)的数据库操作(连接、聚合、分析等)应被理解为包括云计算服务110响应于来自用户的指令而执行这样的动作。
图2是根据本发明实施例的可用于实现公共或数据交换所的数据的示意框图。交换管理器124可以针对一些或所有所示的交换数据200进行操作,交换数据200可以存储在执行交换管理器124的平台(例如,云计算平台110)上或某个其他位置。交换数据200可以包括描述由第一用户(“提供者”)共享的数据的多个清单202。清单202可以是数据交换所或数据市场中的清单。对于数据市场和数据交换所,清单的访问控制、管理和治理可能是相似的。
清单202可以包括描述共享数据的元数据204。元数据204可以包括以下信息中的一些或全部:共享数据的共享者的标识符、与共享者相关联的URL、共享的名称、表的名称、共享数据所属的类别、共享数据的更新频率、表的目录、每个表中的列数和行数以及列的名称。元数据204还可以包括帮助用户使用数据的示例。这样的示例可以包括示例表,该示例表包括示例表的行和列的示例、可以对表运行的示例查询、示例表的示例视图、基于表数据的示例可视化(例如,图形、仪表板)。元数据204中包括的其他信息可以是供商业智能工具使用的元数据、包含在表中的数据的文本描述、与表相关联以便于搜索的关键词、到与共享数据相关的文档的链接(例如,URL)、以及指示共享数据更新的频率以及数据最后更新的日期的刷新间隔。
清单202可以包括访问控制206,其可以被配置为任何合适的访问配置。例如,访问控制206可以指示共享数据对于私有交换所的任何成员都是可用的,而没有限制(本文别处使用的“任何共享”)。访问控制206可以指定被允许访问数据和/或查看清单的一类用户(特定组或组织的成员)。访问控制206可以指定“点对点”共享(参见图4的讨论),其中用户可以请求访问,但是仅在提供者批准后才被允许访问。访问控制206可以指定被排除在能够访问由清单202引用的数据之外的用户的一组用户标识符。
注意,一些清单202可以被用户发现,而无需进一步的认证或访问权限,而实际的访问仅在随后的认证步骤之后被允许(参见图4和6的讨论)。访问控制206可以指定清单202仅可由特定用户或用户类别发现。
还要注意,清单202的默认功能是共享引用的数据不可由消费者导出。可选地,访问控制206可以指定这是不允许的。例如,访问控制206可以指定可以对共享数据执行安全操作(如下所述的安全连接和安全功能),使得不允许查看和导出共享数据。
在一些实施例中,一旦用户相对于清单202被认证,对该用户的引用(例如,用户在虚拟仓库131中的账户的用户标识符)被添加到访问控制206,使得该用户随后能够访问清单202所引用的数据而无需进一步认证。
清单202可以定义一个或更多个过滤器208。例如,过滤器208可以定义在浏览目录220时可以查看对清单202的引用的用户的特定用户标识符214。过滤器208可以定义当浏览目录220时可以查看对清单202的引用的一类用户(特定职业的用户、与特定公司或组织相关联的用户、特定地理区域或国家内的用户)。以这种方式,私有交换所可以由交换管理器124使用相同的组件来实现。在一些实施例中,被排除访问清单202(即,将清单202添加到被排除用户的消费共享156)的被排除用户在浏览目录220时仍然可以被允许查看清单的表示,并且还可以被允许请求访问清单202,如下所述。由这些被排除的用户和其他用户访问清单的请求可以在呈现给清单202的提供者的界面中列出。清单202的提供者然后可以查看对访问清单的需求,并选择扩展过滤器208以允许被排除的用户或被排除的用户类别(例如,被排除的地理区域或国家中的用户)的访问。
过滤器208可以进一步定义用户可以查看什么数据。特别地,过滤器208可以指示选择清单202来添加到用户的消费共享156的用户被允许访问清单所引用的数据,但仅仅是数据的过滤版本,该过滤版本仅包括与该用户的标识符214相关联、与该用户的组织相关联或者特定于该用户的某个其他分类的数据。在一些实施例中,私有交换是通过邀请进行的:由提供者邀请来查看私有交换的清单202的用户能够在传达接受从提供者接收的邀请时通过交换管理器124来进行。
在一些实施例中,清单202可以寻址到单个用户。因此,对清单202的引用可以被添加到用户可见的一组“未决共享”中。一旦用户向交换管理器124传达批准,清单202就可以被添加到用户的一组共享中。
清单202可以进一步包括使用数据210。例如,云计算服务112可以实现信用系统,其中信用由用户购买,并在每次用户运行查询、存储数据或使用云计算服务112实现的其他服务时被消费。因此,使用数据210可以记录通过访问共享数据消耗的信用量。使用数据210可以包括其他数据,例如多个查询、针对共享数据执行的多种类型的每种类型的多个聚合、或者其他使用统计。在一些实施例中,用户的清单202或多个清单202的使用数据以共享数据库的形式提供给用户,即,对包括使用数据的数据库的引用由交换管理器124添加到用户的消费共享。
清单202还可以包括热图211,热图211可以表示用户点击该特定清单的地理位置。云计算服务110可以使用热图来对清单做出复制决定或其他决定。例如,数据交换所可以显示包含美国Georgia天气数据的清单。热图211可以指示California的许多用户正在选择清单以了解更多关于Georgia的天气。鉴于该信息,云计算服务110可以复制该清单,并使该清单在服务器物理上位于美国西部的数据库中可用,使得California的消费者可以访问该数据。在一些实施例中,实体可以将其数据存储在位于美国西部的服务器上。某个特定的清单可能非常受消费者欢迎。云计算服务110可以复制该数据并将其存储在位于美国东部的服务器中,使得中西部和东海岸的消费者也可以访问该数据。
清单202还可以包括一个或更多个标签213。标签213可以促进包含在一个或更多个清单中的数据的更简单的共享。例如,一家大公司可能在数据交换所中有人力资源(HR)清单,其中包含其内部员工的HR数据。HR数据可能包含十种类型的HR数据(例如,员工编号、选定的健康保险、当前退休计划、职称等)。HR清单可以被公司的100个人访问(例如,HR部门的每个人)。HR部门的管理层可能希望添加第十一种HR数据(例如,员工股票期权计划)。管理人员可以简单地将HR标签应用于新的数据集,并将新数据归类为HR数据,将其与HR清单一起列出,并授予100人查看新数据集的权限,而不是手动将其添加到HR清单并授予100人访问新数据的权限。
清单202还可以包括版本元数据215。版本元数据215可以提供跟踪数据集如何改变的方式。这可能有助于确保一个实体正在查看的数据不会过早更改。例如,如果一家公司有一个原始数据集,然后发布该数据集的更新版本,则更新可能会干扰另一个用户对该数据集的处理,因为更新可能会有不同的格式、新列和其他可能与接收用户的当前处理机制不兼容的更改。为了补救这一点,云计算服务112可以使用版本元数据215来跟踪版本更新。云计算服务112可以确保每个数据消费者访问相同版本的数据,直到他们接受不会干扰数据集的当前处理的更新版本。
交换数据200可以进一步包括用户记录212。用户记录212可以包括标识与用户记录212相关联的用户的数据,例如在服务数据库128中具有用户数据150并由虚拟仓库131管理的用户的标识符(例如仓库标识符)。
用户记录212可以列出与用户相关联的共享,例如,由用户创建的参考清单202。用户记录212可以列出用户消费的共享,例如由另一个用户创建的并且已经根据这里描述的方法与用户的账户相关联的参考清单202。例如,清单202可以具有将用于在用户记录212的共享或消费共享中引用它的标识符。
交换数据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及其品牌的使用。
图3示出了可以包含在交换管理器124中的各种组件300-310。创建模块300可以提供用于创建清单202的界面。例如,到虚拟仓库131的网页界面,其使得设备101-104上的用户能够选择数据,例如用户的用户数据150中的特定表,用于共享和输入定义元数据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的消费共享156。在一些实施例中,搜索可以由用户通过SQL解释器中的SQL命令来执行,该SQL解释器在云计算平台102上执行并通过用户设备101-104上的网页界面来访问。例如,搜索共享可以通过在下面讨论的SQL引擎310内对目录220的SQL查询来执行。
搜索模块304可以进一步实现推荐算法。例如,推荐算法可以基于用户的消费共享156中或先前用户的消费共享中的其他清单,为用户推荐其他清单202。推荐可以基于逻辑上的相似性:一个气象数据来源导致对第二个气象数据来源的推荐。推荐可以基于不相似性:一个清单是针对一个领域(地理区域、技术领域等)的数据导致不同领域的清单,以便于用户分析的完全覆盖(不同的地理区域、相关的技术领域等)。
交换管理器124可以包括访问管理模块306。如上所述,用户可以添加清单202。这可能需要关于清单202的提供者的认证。一旦清单202被添加到用户的用户记录212的消费共享156,用户可以(a)被要求在每次访问清单202所引用的数据时进行认证,或者(b)一旦清单202被添加,就被自动认证并被允许访问数据。访问管理模块306可以管理对用户的消费共享156中的数据的后续访问的自动认证,以便提供共享数据的无缝访问,就好像它是该用户的用户数据150的一部分一样。为此,访问管理模块306可以访问清单202的控制206、证书、令牌或其他认证材料,以便在执行对共享数据的访问时认证用户。
交换管理器124可以包括连接模块308。连接模块308管理用户的消费共享156所引用的共享数据(即来自不同提供者的共享数据)与彼此的集成,以及与用户拥有的数据的用户数据库152的集成。特别地,连接模块308可以管理关于这些各种数据源的查询和其他计算功能的执行,使得它们的访问对用户是透明的。连接模块308可以进一步管理数据的访问,以对共享数据实施限制,例如,使得可以执行分析并且显示分析结果,而不向数据的消费者展示基础数据,其中该限制由清单202的访问控制206指示。
交换管理器124还可以包括标准查询语言(SQL)引擎310,其被编程为接收来自用户的查询,并针对该查询所引用的数据执行该查询,该数据可以包括用户的消费共享156和用户拥有的用户数据112。SQL引擎310可以执行本领域已知的任何查询处理功能。SQL引擎310可以附加地或替代地包括本领域已知的任何其他数据库管理工具或数据分析工具。SQL引擎310可以定义在云计算平台102上执行的网页界面,通过该网页界面输入SQL查询并呈现对SQL查询的响应。
图4示出了包括多个远程云部署401、402和403的云环境400。远程部署401、402和403中的每一个可以包括与云计算服务112(在图1A中示出)相似的架构。远程部署401、402和403可以都物理上位于单独的远程地理区域(因此术语“远程部署”)中,但是都可以是单个数据交换所或数据市场的部署。在云环境400中,对远程部署401上的清单的请求可以源自远程部署402上的账户。为了许可对清单的数据访问,清单所有者需要在远程部署402中具有另一个账户或伙伴账户,并创建相同的共享。相同的共享需要对数据库(新创建或复制的)具有相同的访问特权,该数据库需要与清单所有者部署中被许可原始共享的数据库相同。
尽管为了便于描述,本公开的实施例是关于数据交换所来描述的,但是这里描述的用于共享复制的系统和方法不需要耦合到数据交换所。例如,远程部署401-403可以各自包括独立设置中的用户账户和数据库。
如上所述,重新创建和维护共享的过程既繁琐又容易出错。用户需要手动登录到每个部署中的账户,并执行大量操作来创建本地共享,并提供从原始共享到本地共享的许可。对本地共享的任何编辑(如添加表)同样需要对每个部署中的每个拷贝执行一组ALTER操作。
现有的数据库复制机制不要求如此广泛的操作集的性能。例如,如果账户A驻留在位于区域1的远程部署401上,并且在远程部署401上具有他想要与驻留在位于区域2的远程部署402内的账户B共享的数据库DB1,则账户A可以改变数据库DB1,使得它成为全局类型数据库(与区域特定相反),并且将DB1的元数据复制到远程部署402(例如,通过使用命令“alter database DB1 enable replication to accounts Reg_2.B”)。账户B可以获得他们有权访问的数据库列表(例如,使用命令“show replication databases”),其将返回指示DB1的标识符“Reg_1.A.DB1(primary)"。账户B可以在远程部署402上创建DB1的本地副本(在图4中显示为DB1R)(例如,通过使用命令“create database DB1R as replica of Reg_1.A.DB1”),它创建了一个全局类型数据库,因为它是作为副本创建的。应该注意的是,到目前为止,还没有开始数据复制。此时,“show replication databases”命令将返回标识符“Reg_1.A.DB1(primary)”和“Reg_2.B.DB1(secondary)”。账户B可以通过使用命令(例如,“alter database DB1 refresh”)来启动数据复制,该命令是同步操作,其持续时间取决于要同步的数据量。
本公开的实施例可以模仿上述数据库复制过程的各方面,以实现共享复制,这不需要在每个部署中手动创建本地共享,并且手动将原始共享S1上的所有许可提供给每个本地共享。例如,账户A(驻留在位于区域1的远程部署401中)具有共享对象S1,该共享对象已被授予对数据库DB1的某些特权(“share grants”或“grants”)。例如,S1可能有允许访问和使用DB1以及在DB1内的模式、表、视图、函数和格式等的使用和选择许可。S1的共享许可可以以许可元数据的形式存储。远程部署401可以利用任何适当的元数据储存器,例如FoundationDB,来存储S1的许可元数据以及S1的共享元数据和DB1的数据库元数据。如果账户A想要将S1复制到账户B(位于区域2中的远程部署402中),则账户A可以将S1更改为全局对象,并将S1复制到远程部署402(例如,使用命令“alter share S1 enable replicationto accounts Reg_2.B”)。更具体地,远程部署401可以修改作为区域1特有的对象的S1,以包括区域2中存在的全局表示。远程部署401可以设置S1的授权属性,以存储能够创建S1的本地副本并包括在列表账户B中的全局账户列表。S1可以包括现有的“primaryOn”字段,该字段可以被设置为当账户A将S1改变为全局对象并将S1复制到远程部署402时的时间戳值。这样,远程部署401可以将S1标识为主要,并将其与任何次要副本区分开。账户B可以获得由他/她自己或同一复制组中的其他人拥有的、对其启用了访问权限的共享对象的列表(例如,使用命令“show replication shares”),并且该列表可以包括S1的标识符(“Reg_1.A.S1(primary))”。在一些实施例中,S1可能不需要是主要的,并且从中创建的任何副本对象可以被指定为主要的。
由于区域2中存在S1的全局表示,因此账户B可以创建S1的本地副本(例如,使用命令“create share S1R as replica of Reg_1.A.S1(primary)”),它创建了一个全局共享对象,该对象是S1的副本(在图4中显示为S1R),其中“primaryOn”字段被设置为“0”,因为它是一个副本。DB1的本地副本(DB1R)可以在远程部署402上使用上文关于数据库复制所讨论的相同过程来创建,该过程将DB1R创建为全局类型数据库,因为它被创建为已经成为全局的DB1的副本。如上所述,账户B还可以获得允许访问的数据库清单。在一些实施例中,账户A可以使用例如SSH的通信协议来建立到账户B的安全连接,通过该安全连接,账户A可以“远程登录(remote login)”到账户B,或者在账户B中启动远程执行上下文,以创建副本共享对象S1R和副本数据库DB1R。更具体地,可以创建链接到(例如,有权访问的)多个账户(在这种情况下,账户A和账户B)的全局身份。在创建该全局身份时,登录到账户A的用户可以建立到账户B的安全连接,通过该安全连接,账户A可以“远程登录”到账户B或在账户B中启动远程执行上下文。此时,账户A可以在远程部署401上启动用于创建副本共享对象S1R和副本数据库DB1R的功能,并且这些功能可以随后在远程部署402上的账户B中执行。S1R和DB1R可以被复制到任何适当的对象,例如远程部署402的本地元数据储存器(例如,FoundationDB)中的字典对象。
应当指出,在这一点上,S1和原始数据库DB1或数据库DB1的基础数据(例如,DB1的基础模式、表、视图、函数、格式等)之间的共享许可(例如,许可元数据)的复制还没有发生。为了开始复制S1的共享许可,账户B可以发起共享刷新操作(例如,使用命令“alter shareS1R refresh”)。远程部署402可以向远程部署401发送刷新消息(在图5中显示为“refreshS1R(刷新S1R)”),远程部署401将向远程部署402复制必要的信息。更具体地,在接收到刷新消息时,远程部署401可以将S1的许可元数据复制到S1R,如下面参考图5进一步详细讨论的。此外,响应于共享刷新消息(例如,可以是共享刷新操作的一部分),上面讨论的数据库复制过程可以被自动触发,以启动DB1的基础数据(例如,DB1的基础模式、表、视图、函数、格式等)到DB1R的复制。在一些实施例中,数据库复制过程与共享刷新操作分离,并且不由刷新消息自动触发,并且可以由用户自行决定触发。例如,账户B的所有者可以选择触发共享刷新,作为数据库复制的下游任务。在一些实施例中,账户A可以使用任何适当的通信协议来“远程登录”到账户B,或者如本文所述在账户B中启动远程执行上下文,并且触发刷新操作。
图5示出了将S1的共享许可(例如许可元数据)复制到S1R(也称为“共享刷新操作”)。响应于从远程部署402接收到刷新消息(“刷新S1R(refresh S1R)”),远程部署401可以检索S1的所有共享许可,序列化所有共享许可,将序列化的共享许可放入文件中,并将包括该文件的消息传输到远程部署402。在一些实施例中,远程部署401可以利用全局消息传递框架,并利用专门实现共享复制的特殊消息类型(这里称为“快照消息(snapshotmessage)”)。对于每种全局消息类型,都有相应的处理函数适用于处理该类型的消息。因此,特定类型的全局消息将包括定制逻辑,用于针对该特定消息类型需要进行的处理。快照消息类型可以包括通知部署该消息包括许可的信息,并允许远程部署为了共享复制的目的适当地反序列化许可。更具体地,消息的主体可以包括S1的全局对象引用和表示S1对DB1及其基础对象具有的许可的修改的许可对象的列表。全局对象引用可以包括原始部署ID(例如,远程部署401的ID)和要复制的对象的ID(在该示例中,其是共享对象S1的ID)的元组。每个许可对象可以是对S1的特定许可的内部表示,并且可以与S1相关联,以允许消费者使用/选择由许可定义的基础数据库对象。例如,每个许可对象可以具有几个字段,包括:许可共享的DB1或其基础对象之一的全局对象引用、对象类型(例如,安全类型)、特权/许可类型(例如,使用或选择)以及许可发生的时间戳。
在接收到特殊消息后,远程部署402可以反序列化该消息并将共享许可应用于S1R。可以看出,这里描述的共享刷新是基于拉取模型的(与推送模型相反)。换句话说,S1R将仅在请求共享刷新时更新,并且S1R和S1之间将存在差异,直到S1R的共享刷新被执行。
在一些实施例中,例如,数据库复制和共享刷新操作可以是分开的,并且数据库复制可以由账户B的所有者管理。账户B的所有者可以控制是否/何时启动数据库复制。专用API可用于执行共享刷新。在其他实施例中,数据库复制对用户隐藏,并且作为共享刷新的一部分自动执行。在任一情况下,共享S1的共享许可的复制(即共享刷新操作)是在数据库复制之前进行的。
远程部署402中账户B的用户可以发起S1到S1R的后续的共享刷新操作,以更新共享许可。后续的共享刷新可能会定期启动,以响应对S1的共享许可的修改,由账户B的所有者自行决定,或基于任何其他适当的标准。如上所述,共享刷新操作本质上需要将S1上的共享许可(也称为“许可元数据”)(例如,对DB1的表、视图、函数、格式等的许可)刷新到S1R。这需要预先复制DB1的基础对象。因此,当对S1的共享许可进行修改时(例如,响应于对DB1的修改),可能存在某些新的共享许可在共享刷新期间不能被复制到S1R的情况,因为对应于那些新的共享许可的基础对象还没有被复制到DB1R。
例如,由于数据库复制和共享刷新之间的时间延迟,以及不一致的数据库复制和共享刷新频率,对象可能会丢失。在共享刷新和数据库复制操作分开的情况下,这一点尤其明显。在一些实施例中,如果数据库复制尚未完成,则可以执行部分共享刷新。例如,共享刷新任务在特定时间范围内正常执行可能很重要,在这种情况下,共享刷新不能等待数据库复制完成。可以更新在共享刷新时在DB1R中检测到的DB1对象的共享许可(例如,许可元数据),并且对于DB1R中不再在DB1中的对象,可以撤销S1R中对那些对象的任何许可。对于那些在共享刷新时不在DB1R中/在DB1R中丢失的,或者在共享刷新时包含在DB1R中但不在DB1中的DB1的对象,可以创建一个日志,该日志指示在DB1R中丢失的/在DB1R之外的DB1对象,以及更新的共享许可,这些共享许可不能被复制到S1R或应该从S1R中删除。
在一些实施例中,共享刷新任务可以遵循“全或无(all or nothing)”的方法。如果有一个或更多个丢失的对象,将不会应用新的许可。在这些情况下,可以创建日志,该日志指示其基础数据未被定位的数据库对象,并且不能为其复制更新的许可元数据。
通过将共享对象S1的共享许可应用于远程部署中的副本共享对象,用户可以避免手动登录到他们希望将共享对象S1复制到的每个远程部署中的账户,并执行一大组操作来创建本地共享并将许可从原始共享提供给本地共享。通过这种方式,提供了一种资源效率更高的共享复制方法。
图6A示出了根据本公开的一些实施例,在如上文关于图4和图5所讨论的共享复制操作之后,S1和S1R及其相关联的共享许可。图6A示出了账户A和账户B以及它们相关联的数据库和共享,以及应用于它们相关联的共享的共享许可。如图6A所示,S1对DB1有使用许可,对模式A和B有使用许可,对DB1的表T1、T2、T3和T4有选择许可。S1R在这里讨论的共享复制操作之后,对DB1R具有类似的使用许可。
如图6B所示,表T3随后可以从DB1删除,表T5可以添加到DB1,因此在S1的共享许可中不再存在对应于T3的选择许可,而T5的选择许可已经添加到S1的共享许可中。账户B可以执行后续的共享刷新操作,并可以触发后续的数据库复制,以将新表T5复制到DB1R,并从DB1R中删除T3。如上所述,数据库复制可以由账户B的所有者自行决定触发,或者可以在启动共享刷新操作时自动触发。
在图6B的示例中,可能要求共享刷新操作在某个时间范围内正常执行,并且在共享刷新的启动和数据库复制操作之间可能存在时间延迟。因此,当共享刷新开始时,T3的删除和T5的添加都没有被复制到DB1R。在共享刷新期间,远程部署402可以确定T3在DB1R内但不在DB1内,并且因此可以从S1R撤销对T3的任何许可。远程部署402然后可以检查T5的选择许可,并且确定对象T5还没有被复制到DB1R,并且因此可以将T5和T5的选择许可添加到日志中,以通知账户B的所有者由于缺少对象而不能复制它们。远程部署402还可以向账户B的所有者发出通知/消息,指示他们的数据库DB1R必须被刷新。这样,一旦在数据库复制期间创建了表T5,对T5的选择许可就可以在随后的共享刷新操作期间复制到S1R。
图7是根据一些实施例的将共享对象复制到远程部署的方法700的流程图。方法700可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微码)或其组合。在一些实施例中,方法700可以由远程部署401和402(在图4和5中示出)的相应处理设备来执行。
同时参考图4,如果账户A想要将S1复制到区域2中的远程部署402中的账户B,则账户A可以将S1更改为全局对象,并将S1复制到远程部署402(例如,使用命令“alter shareS1 enable replication to accounts Reg_2.B”)。更具体地,在框705,远程部署401可以修改S1(其是区域1特有的对象),以包括区域2中存在的全局表示。远程部署401可以设置S1的授权属性,以存储能够创建S1的本地副本并包括在列表账户B中的全局账户列表。S1可以包括现有的“primaryOn”字段,该字段被设置为当账户A将S1改变为全局对象并将S1复制到远程部署402时的时间戳。以便将S1标识为主要的,并将其与任何次要副本区分开来。账户B可以获得由他/她自己或同一复制组中的其他人拥有的、对其启用了访问权限的共享对象的列表(例如,使用命令“show replication shares”),并且该列表可以包括S1的标识符(“Reg_1.A.S1(primary)”。在一些实施例中,S1以及由此创建的任何副本对象可以被指定为主要的。
因为S1的全局表示存在于区域2中,所以在框710,账户B然后可以创建S1的本地副本(例如,使用命令“create share S1R as replica of Reg_1.A.S1(primary)”),它创建了一个全局共享对象,该对象是S1的副本(在图4中显示为S1R),其中“primary”字段被设置为“0”,因为它是一个副本。DB1的本地副本(DB1R)可以在远程部署402上使用上文关于数据库复制所讨论的相同过程来创建,该过程将DB1R创建为全局类型数据库,因为它被创建为已经成为全局的DB1的副本。如上所述,账户B还可以获得允许访问的数据库列表。在一些实施例中,账户A可以使用例如SSH的通信协议来建立到账户B的安全连接,通过该安全连接,账户A可以“远程登录”到账户B,或者在账户B中启动远程执行上下文,以创建副本共享对象S1R和副本数据库DB1R。更具体地,可以创建链接到(例如,有权访问的)多个账户(在这种情况下,账户A和账户B)的全局身份。在创建该全局身份时,登录到账户A的用户可以建立到账户B的安全连接,通过该安全连接,账户A可以“远程登录”到账户B或在账户B中启动远程执行上下文。此时,账户A可以在远程部署401上启动用于创建副本共享对象S1R和副本数据库DB1R的功能,并且这些功能可以随后在远程部署402上的账户B中执行。S1R和DB1R可以被复制到任何适当的对象,例如远程部署402的本地元数据储存器(例如,FoundationDB)中的字典对象。
应当指出,在这一点上,S1和原始数据库DB1或数据库DB1的基础数据(例如,DB1的基础模式、表、视图、函数、格式等)之间的共享许可(例如,许可元数据)的复制还没有发生。为了开始复制S1的共享许可,在框715,账户B可以发起将DB1的基础数据(例如,DB1的基础模式、表、视图、函数、格式等)复制到DB1R。在框720,账户B可以发起共享刷新操作(例如,使用命令“alter share S1R refresh”)。远程部署402可以向远程部署401发送刷新消息(在图5中显示为“刷新S1R”),远程部署401将向远程部署402复制必要的信息。更具体地,在接收到刷新消息时,远程部署401可以将S1的许可元数据复制到S1R,如下面参考图8进一步详细讨论的。在一些实施例中,响应于共享刷新消息(例如,可以是共享刷新操作的一部分),上面讨论的数据库复制过程可以被自动触发,以启动DB1的基础数据(例如,DB1的基础模式、表、视图、函数、格式等)到DB1R的复制。在一些实施例中,数据库复制过程与共享刷新操作分离,并且不由刷新消息自动触发,并且可以由用户自行决定触发。例如,账户B的所有者可以选择触发共享刷新,作为数据库复制的下游任务。在一些实施例中,账户A可以使用任何适当的通信协议来“远程登录”到账户B,或者如本文所述在账户B中启动远程执行上下文,并且触发刷新操作。
图8是根据本公开的一些实施例的将共享许可刷新到远程部署中的共享对象的方法800的流程图。方法800可以由处理逻辑来执行,该处理逻辑可以包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微码)或其组合。在一些实施例中,方法800可以由远程部署401和402(在图4和5中示出)的相应处理设备来执行。
还参考图5,响应于从远程部署402接收到刷新消息(“刷新S1R”),在框805,远程部署401可以检索S1的所有共享许可并序列化所有共享许可。在框810,远程部署401可以将序列化的共享许可放入文件中,并且向远程部署402发送包括该文件的消息。在一些实施例中,远程部署401可以利用全局消息传递框架,并利用专门实现共享复制的特殊消息类型(这里称为“快照消息”)。对于每种全局消息类型,都有相应的处理函数适用于处理该类型的消息。因此,特定类型的全局消息将包括定制逻辑,用于针对该特定消息类型需要进行的处理。快照消息类型可以包括通知部署该消息包括许可的信息,并允许远程部署为了共享复制的目的适当地反序列化许可。更具体地,消息的主体可以包括S1的全局对象引用和表示S1对DB1及其基础对象具有的许可的修改的许可对象的列表。全局对象引用可以包括原始部署ID(例如,远程部署401的ID)和要复制的对象的ID(在该示例中,其是共享对象S1的ID)的元组。每个许可对象可以是对S1的特定许可的内部表示,并且可以与S1相关联,以允许消费者使用/选择由许可定义的基础数据库对象。例如,每个许可对象可以具有几个字段,包括:许可共享的DB1或其基础对象之一的全局对象引用、对象类型(例如,安全类型)、特权/许可类型(例如,使用或选择)以及许可发生的时间戳。
在框815,远程部署402可以反序列化该消息并将共享许可应用于S1R。可以看出,这里描述的共享刷新是基于拉取模型的(与推送模型相反)。换句话说,S1R将仅在请求共享刷新时更新,并且S1R和S1之间将存在差异,直到S1R的共享刷新被执行。
图9以计算机系统900的示例形式示出了机器的图解表示,其中一组指令用于使机器执行这里讨论的用于将共享对象复制到远程部署的任何一种或多种方法。更具体地,机器可以将第一账户的共享对象修改为全局对象,其中共享对象包括指示对数据库的一组对象的共享许可的许可元数据。机器可以在位于远程部署中的第二账户中,基于全局对象在远程部署上创建共享对象的本地副本,并将数据库的一组对象复制到远程部署上的本地数据库副本;并将共享许可刷新到共享对象的本地副本。
在替代实施例中,机器可以连接(例如,联网)到局域网(LAN)、内联网、外联网或互联网中的其他机器。机器可以在客户端-服务器网络环境中以服务器或客户端机器的能力操作,或者在对等(或分布式)网络环境中作为对等机器操作。该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、web设备、服务器、网络路由器、交换机或网桥、集线器、接入点、网络访问控制设备或能够(顺序地或以其他方式)执行指定该机器要采取的动作的一组指令的任何机器。此外,虽然仅示出了单个机器,但是术语“机器”也应被理解为包括单独或共同执行一组(或多组)指令以执行这里讨论的任何一种或多种方法的任何机器集合。在一个实施例中,计算机系统900可以代表服务器。
示例性计算机系统900包括处理设备902、主存储器904(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM)、静态存储器906(例如,闪存、静态随机存取存储器(SRAM)等),以及数据存储设备918,它们通过总线930相互通信。本文所述的在各种总线上提供的任何信号可以与其它信号时间复用并通过一个或更多个公共总线被提供。此外,在电路部件或块之间的互连可被示为总线或单信号线。总线中的每个可以可选地是一个或更多个单信号线,并且单信号线中的每个可以可选地是总线。
计算设备900还可以包括可以与网络920通信的网络接口设备908。计算设备900还可以包括视频显示单元910(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备912(例如,键盘)、光标控制设备914(例如,鼠标)和声音信号生成设备916(例如,扬声器)。在一个实施例中,视频显示单元910、字母数字输入设备912和光标控制设备914可以组合成单个组件或设备(例如,LCD触摸屏)。
处理设备902代表一个或更多个通用处理设备,例如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集组合的处理器。处理设备902也可以是一个或更多个专用处理设备,例如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备902被配置为执行函数编译指令925,用于执行这里讨论的操作和步骤。
数据存储设备918可以包括机器可读存储介质928,其上存储有一组或多组共享对象复制指令925(例如,软件),其体现了这里描述的功能的一种或多种方法。共享对象复制指令925也可以在由计算机系统900执行期间完全或至少部分地驻留在主存储器904内或处理设备902内;主存储器904和处理设备902也构成机器可读存储介质。共享对象复制指令925还可以经由网络接口设备908在网络920上传输或接收。
机器可读存储介质928还可以用于存储指令,以执行用于确定要编译的函数的方法,如本文所述。尽管机器可读存储介质928在示例性实施方案中被示为是单个介质,但是术语“机器可读存储介质”应该被认为包括存储一组或多组指令的单个介质或多个介质(例如,集中式或分布式数据库,或相关联的高速缓存和服务器)。机器可读介质包括用于以机器(例如,计算机)可读的形式(例如,诸如软件、处理应用)存储信息的任何机制。机器可读介质可以包括但不限于磁存储介质(例如,软盘);光学存储介质(例如,CD-ROM)、磁光存储介质;只读存储器(ROM);随机存取存储器(RAM);可擦除可编程存储器(例如,EPROM和EEPROM);闪存;或适用于存储电子指令的另一种类型的介质。
除非特别说明,否则诸如“接收”、“路由”、“许可”、“确定”、“发布”、“提供”、“指定”、“编码”等术语是指由计算设备执行或实现的动作和过程,其将计算设备的寄存器和存储器中表示为物理(电子)量的数据操纵和转换成计算设备存储器或寄存器或其他这种信息存储、传输或显示设备中类似地表示为物理量的其他数据。此外,术语“第一”、“第二”、“第三”、“第四”等,如这里所使用的,是指用于区分不同元件的标签,并且不一定根据它们的数字名称具有序数意义。
这里描述的例子还涉及用于执行这里描述的操作的装置。该装置可以为所需目的而专门构造,或者它可以包括由存储在计算设备中的计算机程序选择性编程的通用计算设备。这种计算机程序可以存储在计算机可读的非暂时性存储介质中。
这里描述的方法和说明性例子并不固有地与任何特定的计算机或其他装置相关。根据这里描述的教导,可以使用各种通用系统,或者可以证明构造更专用的装置来执行所需的方法步骤是方便的。各种这些系统所需的结构将如以上描述中所述。
以上描述是说明性的,而不是限制性的。尽管已经参考具体的说明性示例描述了本公开,但是将认识到,本公开不限于所描述的示例。本公开的范围应当参考以下权利要求以及权利要求所赋予的等同物的全部范围来确定。
如本文使用的,单数形式“一(a)”、“一(an)”和“该(the)”意图也包括复数形式,除非上下文另有清楚地指示。还将理解的是,术语“包括(comprises)”、“包括(comprising)”、“包括(includes)”和/或“包括(including)”在本文使用时,列举所陈述的特征、整数、步骤、操作、元件和/或部件的存在,但不排除存在或添加一个或多个其它特征、整数、步骤、操作、元件、部件和/或它们的组。因此,这里使用的术语仅仅是为了描述特定的实施例,而不是为了限制。
还应当注意,在一些替代实施方式中,所述的功能/动作可以不按图中所示的顺序发生。例如,根据所涉及的功能/动作,连续示出的两个特征实际上可以基本上同时执行,或者有时可以以相反的顺序执行。
虽然以特定顺序描述了方法操作,但是应当理解,在所描述的操作之间可以执行其他操作,可以调整所描述的操作,使得它们在稍微不同的时间发生,或者所描述的操作可以分布在允许在与处理相关联的各种间隔发生处理操作的系统中。
各种单元、电路或其他组件可以被描述或要求为“配置成”或“可配置成”执行一项或多项任务。在这样的上下文中,短语“配置成”或“可配置成”用于通过指示单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来暗示结构。同样地,单元/电路/组件可以说被配置为执行任务,或者可被配置为执行任务,即使当指定的单元/电路/组件当前不工作(例如,不开启)时。与“配置为”或“可配置为”语言一起使用的单元/电路/组件包括硬件——例如,电路、存储可执行以实现操作的程序指令的存储器等。陈述单元/电路/部件被“配置”来执行一个或更多个任务,或者“可配置”来执行一个或更多个任务,显然不是为了针对该单元/电路/部件援引35U.S.C.112第6段。另外,“配置成”或“可配置成”可以包括通用结构(例如,通用电路),其由软件和/或固件(例如,FPGA或执行软件的通用处理器)操纵,以能够执行所讨论的任务的方式操作。“配置成”还可以包括调整制造工艺(例如,半导体制造设施)以制造适于实现或执行一个或更多个任务的器件(例如,集成电路)。“可配置为”明确地不打算应用于空白介质、未编程的处理器或未编程的通用计算机、或未编程的可编程逻辑器件、可编程门阵列或其他未编程的器件,除非伴随有赋予未编程的器件被配置为执行所公开的功能的能力的已编程介质。
可使用一个或多个计算机可用或计算机可读介质的任何组合。例如,计算机可读介质可包括在下列各项中的一项或更多项:便携式计算机磁盘、硬盘、随机存取存储器(RAM)设备、只读存储器(ROM)设备、可擦除可编程只读存储器(EPROM或闪速存储器)设备、便携式光盘只读存储器(CDROM)、光学储存设备、磁储存设备。用于执行本公开的操作的计算机程序代码可以用一种或多种编程语言的任意组合来编写。这种代码可以从源代码编译成计算机可读汇编语言或适用于将在其上执行代码的设备或计算机的机器代码。
实施例也可以在云计算环境中实现。在本说明书和所附权利要求中,“云计算”可以被定义为一种模型,用于实现对可配置计算资源(例如,网络、服务器、存储、应用和服务)的共享池的无处不在、方便的、按需的网络访问,这些计算资源可以以最小的管理工作或服务提供者交互来被快速地供应(包括通过虚拟化)和释放,然后相应地进行缩放。云模型可以由各种特征(例如,按需自助服务、广泛的网络访问、资源池、快速弹性和可测量的服务)、服务模型(例如,软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础架构即服务(“IaaS”)以及部署模型(例如,私有云、社区云、公共云和混合云)组成。
附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能的实施的架构、功能性和操作。就这点而言,在流程图或框图中的每个块可以表示代码的模块、段或部分,其包括用于实现指定的逻辑功能的一个或更多个可执行指令。还将注意,框图或流程图中的每个块以及在框图或流程图中的块的组合可由执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合实现。这些计算机程序指令还可以储存在可指导计算机或其它可编程数据处理装置以特定方式起作用的计算机可读介质中,使得储存在计算机可读介质中的指令产生制造的物品,其包括实现在流程图和/或框图的一个或更多个块中所指定的功能/动作的指令手段。
为了解释的目的,已经参考特定实施例描述了前述描述。然而,上面的说明性讨论并没有被规定为无遗漏的或将本发明限制到所公开的精确形式。鉴于上面的教导,许多修改和变形是可能的。选择和描述这些实施例是为了最好地解释这些实施例的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用这些实施例和可能适合于预期的特定用途的各种修改。因此,本实施例被认为是说明性的而非限制性的,并且本发明不限于这里给出的细节,而是可以在所附权利要求的范围和等同物内进行修改。

Claims (20)

1.一种方法,包括:
由处理设备将第一账户的共享对象修改为全局对象,所述第一账户驻留在第一部署中,并且其中所述共享对象包括对数据库的一组对象的共享许可;
基于所述全局对象在第二账户中创建所述共享对象的本地副本,其中所述第二账户驻留在远离所述第一部署的第二部署中;
将所述数据库的所述一组对象复制到所述第二部署上的本地数据库副本;和
将所述共享许可刷新到所述共享对象的所述本地副本。
2.根据权利要求1所述的方法,还包括:
执行所述共享许可到所述共享对象的所述本地副本的后续刷新;和
执行所述数据库的所述一组对象到所述本地数据库副本的后续复制,其中所述共享许可和所述一组对象中的一个或更多个被修改。
3.根据权利要求2所述的方法,其中响应于在所述后续刷新期间确定所述一组对象中的一个或更多个对象不存在于所述本地数据库副本中:
将与所述本地数据库副本中存在的对象相关联的共享许可刷新到所述共享对象的本地副本;和
创建日志文件,所述日志文件指示:
所述本地数据库副本中不存在的所述一个或更多个对象;和
与所述本地数据库副本中不存在的所述一个或更多个对象相关联的共享许可。
4.根据权利要求1所述的方法,其中将所述共享许可刷新到所述共享对象的所述本地副本包括:
接收共享刷新消息;
序列化所述共享对象的共享许可;
将序列化的共享许可存储到消息中,其中所述消息包括将所述序列化的共享许可反序列化的信息;和
将快照消息传输到所述第二部署。
5.根据权利要求4所述的方法,其中将所述共享许可刷新到所述共享对象的所述本地副本还包括:
基于所述信息反序列化所述快照消息,以反序列化所述序列化的共享许可;和
将所述共享许可应用于所述共享对象的所述本地副本。
6.根据权利要求1所述的方法,其中将所述共享对象修改为全局对象包括生成所述共享对象的全局表示。
7.根据权利要求1所述的方法,其中创建所述本地副本包括:
在所述第一账户和所述第二账户之间建立安全连接;和
在所述第二账户中建立远程执行上下文,其中所述第一账户能够使用所述远程执行上下文在所述第二账户中创建所述本地副本。
8.一种系统,包括:
存储器;和
处理设备,其可操作地耦合到所述存储器,所述处理设备用于:
将第一账户的共享对象修改为全局对象,所述第一账户驻留在第一部署中,并且其中所述共享对象包括对所述数据库的一组对象的共享许可;
基于所述全局对象在第二账户中创建所述共享对象的本地副本,其中所述第二账户驻留在远离所述第一部署的第二部署中;
将所述数据库的所述一组对象复制到所述第二部署上的本地数据库副本;和
将所述共享许可刷新到所述共享对象的所述本地副本。
9.根据权利要求8所述的系统,其中所述处理设备还用于:
执行所述共享许可到所述共享对象的所述本地副本的后续刷新;和
执行所述数据库的所述一组对象到所述本地数据库副本的后续复制,其中所述共享许可和所述一组对象中的一个或更多个被修改。
10.根据权利要求9所述的系统,其中,响应于在所述后续刷新期间确定所述一组对象中的一个或更多个对象不存在于所述本地数据库副本中,所述处理设备:
将与所述本地数据库副本中存在的对象相关联的共享许可刷新到所述共享对象的本地副本;和
创建日志文件,所述日志文件指示:
所述本地数据库副本中不存在的所述一个或更多个对象;和
与所述本地数据库副本中不存在的所述一个或更多个对象相关联的共享许可。
11.根据权利要求8所述的系统,其中,为了将所述共享许可刷新到所述共享对象的所述本地副本,所述处理设备:
接收共享刷新消息;
序列化所述共享对象的共享许可;
将序列化的共享许可存储到消息中,其中所述消息包括将所述序列化的共享许可反序列化的信息;和
将快照消息传输到所述第二部署。
12.根据权利要求11所述的系统,其中,为了将所述共享许可刷新到所述共享对象的所述本地副本,所述处理设备还用于:
基于所述信息反序列化所述快照消息,以反序列化所述序列化的共享许可;和
将所述共享许可应用于所述共享对象的所述本地副本。
13.根据权利要求8所述的系统,其中,为了将所述共享对象修改成全局对象,所述处理设备要生成所述共享对象的全局表示。
14.根据权利要求8所述的系统,其中为了创建所述本地副本,所述处理设备:
在所述第一账户和所述第二账户之间建立安全连接;和
在所述第二账户中建立远程执行上下文,其中所述第一账户能够使用所述远程执行上下文在所述第二账户中创建所述本地副本。
15.一种其上存储有指令的非暂时性计算机可读存储介质,当由处理设备执行时,所述指令使得所述处理设备:
由所述处理设备将第一账户的共享对象修改为全局对象,所述第一账户驻留在第一部署中,并且其中所述共享对象包括对数据库的一组对象的共享许可;
基于所述全局对象在第二账户中创建所述共享对象的本地副本,其中所述第二账户驻留在远离所述第一部署的第二部署中;
将所述数据库的所述一组对象复制到所述第二部署上的本地数据库副本;和
将所述共享许可刷新到所述共享对象的所述本地副本。
16.根据权利要求15所述的非暂时性计算机可读存储介质,其中,所述处理设备还用于:
执行所述共享许可到所述共享对象的所述本地副本的后续刷新;和
执行所述数据库的所述一组对象到所述本地数据库副本的后续复制,其中所述共享许可和所述一组对象中的一个或更多个被修改。
17.根据权利要求16所述的非暂时性计算机可读存储介质,其中,响应于在所述后续刷新期间确定所述一组对象中的一个或更多个对象不存在于所述本地数据库副本中,所述处理设备:
将与所述本地数据库副本中存在的对象相关联的共享许可刷新到所述共享对象的本地副本;和
创建日志文件,所述日志文件指示:
所述本地数据库副本中不存在的所述一个或更多个对象;和
与所述本地数据库副本中不存在的所述一个或更多个对象相关联的共享许可。
18.根据权利要求15所述的非暂时性计算机可读存储介质,其中,为了将所述共享许可刷新到所述共享对象的所述本地副本,所述处理设备:
接收共享刷新消息;
序列化所述共享对象的共享许可;
将序列化的共享许可存储到消息中,其中所述消息包括将所述序列化的共享许可反序列化的信息;和
将快照消息传输到所述第二部署。
19.根据权利要求18所述的非暂时性计算机可读存储介质,其中,为了将所述共享许可刷新到所述共享对象的所述本地副本,所述处理设备还用于:
基于所述信息反序列化所述快照消息,以反序列化所述序列化的共享许可;和
将所述共享许可应用于所述共享对象的所述本地副本。
20.根据权利要求15所述的非暂时性计算机可读存储介质,其中,为了将所述共享对象修改成全局对象,所述处理设备要生成所述共享对象的全局表示。
CN202180001590.8A 2020-05-26 2021-04-27 在远程部署之间共享复制 Pending CN113994319A (zh)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US202063030267P 2020-05-26 2020-05-26
US63/030,267 2020-05-26
US16/900,840 US10949402B1 (en) 2020-05-26 2020-06-12 Share replication between remote deployments
US16/900,840 2020-06-12
US17/193,192 US11144511B1 (en) 2020-05-26 2021-03-05 Share replication between remote deployments
US17/193,192 2021-03-05
PCT/US2021/029474 WO2021242465A1 (en) 2020-05-26 2021-04-27 Share replication between remote deployments

Publications (1)

Publication Number Publication Date
CN113994319A true CN113994319A (zh) 2022-01-28

Family

ID=74870185

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180001590.8A Pending CN113994319A (zh) 2020-05-26 2021-04-27 在远程部署之间共享复制

Country Status (4)

Country Link
US (6) US10949402B1 (zh)
EP (1) EP4158477A4 (zh)
CN (1) CN113994319A (zh)
WO (1) WO2021242465A1 (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11921872B2 (en) * 2020-12-16 2024-03-05 International Business Machines Corporation Access control for a data object including data with different access requirements
US11570245B2 (en) 2021-04-30 2023-01-31 Snowflake Inc. Sharing of data share metrics to customers
US20230062012A1 (en) * 2021-08-27 2023-03-02 Business Objects Software Ltd. Managing query models based on shared objects
US11748374B2 (en) * 2021-11-30 2023-09-05 Snowflake Inc. Replication group objects configuration in a network-based database system
US11989164B2 (en) 2022-09-30 2024-05-21 Snowflake Inc. Data dictionary metadata for marketplace listings
US20240111784A1 (en) * 2022-09-30 2024-04-04 Snowflake Inc. Distributing large amounts of global metadata using object files
US11775559B1 (en) * 2022-09-30 2023-10-03 Snowflake Inc. Distributing large amounts of global metadata using object files

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5870765A (en) * 1996-10-09 1999-02-09 Oracle Corporation Database synchronizer
US6044374A (en) 1997-11-14 2000-03-28 Informatica Corporation Method and apparatus for sharing metadata between multiple data marts through object references
US6532479B2 (en) * 1998-05-28 2003-03-11 Oracle Corp. Data replication for front office automation
US20030145315A1 (en) * 2002-01-23 2003-07-31 Tuomo Aro Exchange of data between components of distributed software having different versions of software
WO2003083614A2 (en) * 2002-03-25 2003-10-09 Eternal Systems, Inc. Transparent consistent active replication of multithreaded application programs
US20050071195A1 (en) * 2003-09-30 2005-03-31 Cassel David A. System and method of synchronizing data sets across distributed systems
GB0510549D0 (en) 2005-05-24 2005-06-29 Cognima Ltd Battery power saving
EP2067104A1 (en) * 2006-09-28 2009-06-10 Xeround Systems Ltd. Apparatus and method for a distributed storage global database
US9071626B2 (en) * 2008-10-03 2015-06-30 Vidsys, Inc. Method and apparatus for surveillance system peering
EP2480974B1 (en) * 2009-09-21 2018-09-05 Qualcomm Incorporated Distributed content storage and retrieval
US8793684B2 (en) 2011-03-16 2014-07-29 International Business Machines Corporation Optimized deployment and replication of virtual machines
US8812439B2 (en) * 2011-03-22 2014-08-19 Oracle International Corporation Folder structure and authorization mirroring from enterprise resource planning systems to document management systems
US8752138B1 (en) * 2011-08-31 2014-06-10 Google Inc. Securing user contact information in collaboration session
KR101962874B1 (ko) * 2012-04-24 2019-03-27 삼성전자주식회사 메모리 장치, 메모리 컨트롤러, 메모리 시스템 및 이의 동작 방법
US9258744B2 (en) * 2012-08-29 2016-02-09 At&T Mobility Ii, Llc Sharing of network resources within a managed network
US9185078B2 (en) * 2012-12-18 2015-11-10 Salesforce.Com, Inc. Systems, methods, and apparatuses for implementing cross organizational data sharing
US8860569B2 (en) * 2013-03-15 2014-10-14 Onset Computer Corporation Automatic detection and offloading of data logger sensed data
US20170200122A1 (en) * 2014-01-10 2017-07-13 Kuhoo G. Edson Information organization, management, and processing system and methods
US9569108B2 (en) * 2014-05-06 2017-02-14 International Business Machines Corporation Dataset replica migration
CA2964485C (en) * 2014-10-15 2022-07-12 Avigilon Corporation Distributed security system over multiple sites
US10033702B2 (en) * 2015-08-05 2018-07-24 Intralinks, Inc. Systems and methods of secure data exchange
US10154091B1 (en) * 2015-12-28 2018-12-11 Amazon Technologies, Inc. Deploying infrastructure units according to resource hosting constraints
US10534675B2 (en) * 2016-09-30 2020-01-14 International Business Machines Corporation ACL based open transactions in replication environment
US10592681B2 (en) * 2017-01-10 2020-03-17 Snowflake Inc. Data sharing in a multi-tenant database system
US11829583B2 (en) * 2017-07-07 2023-11-28 Open Text Sa Ulc Systems and methods for content sharing through external systems
US11151161B2 (en) * 2018-07-06 2021-10-19 Snowflake Inc. Data replication and data failover in database systems
US11048815B2 (en) * 2018-08-06 2021-06-29 Snowflake Inc. Secure data sharing in a multi-tenant database system
US11263348B2 (en) * 2018-09-28 2022-03-01 Atlassian Pty Ltd. Managing content authorization in a federated application system
US10990608B2 (en) * 2019-03-19 2021-04-27 Snowflake Inc. Transferring connections in a multiple deployment database
US11113278B2 (en) * 2019-05-31 2021-09-07 Snowflake Inc. Data sharing and materialized views in multiple tenant database systems
US11194773B2 (en) * 2019-09-12 2021-12-07 Oracle International Corporation Integration of existing databases into a sharding environment
US11086841B1 (en) * 2020-01-31 2021-08-10 Snowflake Inc. Streams on shared database objects

Also Published As

Publication number Publication date
US20230244642A1 (en) 2023-08-03
US11645244B2 (en) 2023-05-09
US20210390083A1 (en) 2021-12-16
WO2021242465A1 (en) 2021-12-02
US11144511B1 (en) 2021-10-12
US20220405252A1 (en) 2022-12-22
US10949402B1 (en) 2021-03-16
US11294868B2 (en) 2022-04-05
EP4158477A4 (en) 2023-10-25
US20220197872A1 (en) 2022-06-23
US11461285B2 (en) 2022-10-04
US11983150B2 (en) 2024-05-14
EP4158477A1 (en) 2023-04-05

Similar Documents

Publication Publication Date Title
US11294868B2 (en) Share replication between remote deployments
US20220050855A1 (en) Data exchange availability, listing visibility, and listing fulfillment
US11822689B2 (en) Fine-grained access control via database roles
US11809586B2 (en) Shared object discovery techniques
US11968258B2 (en) Sharing of data share metrics to customers
US11809922B1 (en) Sharing events and other metrics in native applications
US11983292B2 (en) Native applications using database roles
US11973763B1 (en) Events account for native app event sharing
US20240169077A1 (en) Implementing inherited grants using secure schemas
US20230252179A1 (en) Organizing, discovering and evaluating marketplace datasets and services by industry business needs

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
CB02 Change of applicant information
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.