CN116069803A - 使用数据库角色的本机应用 - Google Patents

使用数据库角色的本机应用 Download PDF

Info

Publication number
CN116069803A
CN116069803A CN202211372837.XA CN202211372837A CN116069803A CN 116069803 A CN116069803 A CN 116069803A CN 202211372837 A CN202211372837 A CN 202211372837A CN 116069803 A CN116069803 A CN 116069803A
Authority
CN
China
Prior art keywords
database
application
role
data
objects
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
CN202211372837.XA
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 CN116069803A publication Critical patent/CN116069803A/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/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • G06F21/6227Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/604Tools and structures for managing or administering access control systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/06Buying, selling or leasing transactions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Databases & Information Systems (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Marketing (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Economics (AREA)
  • Development Economics (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Automation & Control Theory (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开涉及使用数据库角色的本机应用。本公开的实施例使得数据共享系统的用户能够构建可以与数据共享系统的其他用户共享的本机应用。本机应用可以像任何其他数据列表一样在数据共享系统中被发布和发现,并且消费者可以将它们安装在他们的本地数据共享系统账户中,以满足他们的数据处理需求。提供者可以定义用于安装应用的安装脚本,并创建安装脚本可以附加到的共享对象。响应于基于共享对象在消费者账户中创建导入的数据库,本机应用框架可以自动执行消费者账户中的安装脚本,并且可以创建一组数据库角色来管理消费者账户中的应用的执行。

Description

使用数据库角色的本机应用
相关申请的交叉引用
本申请要求2021年10月29日提交的题为“Native Applications Using DatabaseRoles”的共同未决美国临时申请第63/273,814号的优先权,该申请通过引用并入本文。
技术领域
本公开涉及数据共享平台,尤其涉及数据共享平台内的共享应用。
背景
数据库广泛用于计算应用中的数据存储和访问。数据库可以包括一个或更多个表,该表包括或引用可以使用查询来读取、修改或删除的数据。数据库可以用于存储和/或访问个人信息或其他敏感信息。可以通过加密和/或以加密形式存储数据来提供对数据库数据的安全存储和访问,以防止未授权的访问。在一些情况下,可能需要数据共享以让其他方针对一组数据执行查询。
附图简述
通过参考以下结合附图的描述,可以最好地理解所描述的实施例及其优点。在不脱离所描述的实施例的精神和范围的情况下,这些附图决不限制本领域技术人员可以对所描述的实施例进行的形式和细节上的任何改变。
图1A是根据本发明的一些实施例,描绘可在其中实施本文公开的方法的示例计算环境的框图。
图1B是根据本发明的一些实施例的示例虚拟仓库的框图。
图2是根据本发明的一些实施例的可用于实现公共或私有数据交换的数据的示意性框图。
图3是根据本发明的一些实施例的数据交换所的部署的示意性框图,示出了消费者和提供者管理的数据访问技术。
图4是根据本发明的一些实施例的数据交换所的部署的框图,示出了应用共享技术。
图5A-图5C为根据本发明的一些实施例说明图4中所述的应用共享技术的代码实施的图示。
图6为根据本发明的一些实施例说明使用隐藏角色向共享对象授予数据库角色的图示。
图7是根据本发明的一些实施例,在数据交换所的用户之间共享应用的方法的流程图。
图8是根据本发明的一些实施例的示例计算设备的框图,该示例计算设备可以执行本文描述的一个或更多个操作。
详细描述
数据提供者经常拥有难以共享的数据资产。数据资产可以是另一实体感兴趣的数据。例如,一个大型在线零售公司可能有包括过去十年中数百万消费者的购买习惯的数据集。这个数据集可能很大。如果在线零售商希望与另一实体共享该数据的全部或部分,则在线零售商可能需要使用旧的且缓慢的方法来传送数据,诸如文件传送协议(FTP),或甚至将数据复制到物理介质上,并且然后将物理介质邮寄到另一个实体。这有几个缺点。首先,速度慢,因为复制太字节或拍字节的数据可能需要几天时间。其次,一旦传递了数据,提供者就无法控制数据发生了什么。接收方可以更改数据,进行复制或与其他方共享。再次,唯一有兴趣以此类方式访问如此大数据集的实体是大型公司,该公司可以负担得起传送和处理数据的复杂后勤工作,以及此类麻烦的数据传送的高昂价格。因此,较小的实体(例如,“夫妻店”)或甚至更小,更灵活的,以云为中心的初创公司通常因价格太高而无法访问该数据,即使该数据对其业务而言可能是有价值的。这可能是因为原始数据资产通常过于粗糙,充满了潜在的敏感数据,不能简单地直接出售/提供给其他公司。数据拥有者必须先进行数据清理、取消标识、聚合、连接和其他形式的数据充实,然后才能与另一方共享。这既费时又昂贵。最后,由于上述原因,传统的数据共享方法不允许可扩展的共享,因此很难与许多实体共享数据资产。传统的共享方法还会给所有访问最近更新的数据的各方带来时延和延迟。
私有数据交换所和公共数据交换所可以使数据提供者更容易且更安全地与其他实体共享其数据资产。公共数据交换所(本文也称为“雪花数据市场(Snowflake datamarketplace)”或“数据市场(data marketplace)”)可以提供开放访问的集中存储库,其中数据提供者可以向成千上万的消费者发布和控制实时和只读数据集。私有数据交换所(本文也称为“数据交换所”)可以在数据提供者的品牌下,并且数据提供者可以控制谁可以获得对数据的访问权。数据交换所可以仅供内部使用,或者也可以向消费者、合作伙伴、供应商或其他人开放。数据提供者可以控制列出哪些数据资产,以及控制谁可以访问哪些数据集。这允许无缝的方式来发现和共享数据提供者的组织内及其业务伙伴的数据。
可通过云计算服务,如SNOWFLAKETM云计算服务,促进数据交换,并允许数据提供者直接从其自有品牌的私人在线市场中的自有在线域(如网站)提供数据资产。数据交换所可以为实体提供集中式的、受管理的中心,以列出内部或外部共享的数据资产,激发数据协作,并且还维护数据治理和审计访问。通过数据交换所,数据提供者能够在公司之间共享数据而不复制数据。数据提供者可以邀请其他实体查看其数据列表,控制哪些数据列表出现在其私有在线市场中,控制谁可以访问数据列表以及其他人如何可与连接到该列表的数据资产进行交互。可以将其视为“围墙花园”市场,在该市场中,进入花园的游客必须得到批准,并且某些列表的访问可能受到限制。
例如,公司A可以是一家消费者数据公司,该消费者数据公司已经收集并分析了数个不同类别中数百万个人的消费习惯。他们的数据集可以包括以下类别的数据:在线购物、视频流、电力消耗、汽车使用、互联网使用、服装购买、移动应用购买、俱乐部会员资格和在线订阅服务。公司A可能希望向其他实体提供这些数据集(或这些数据集的子集或派生产品)。例如,新的服装品牌可能希望访问与消费者服装购买和在线购物习惯有关的数据集。A公司可以在其网站上支持一个页面,该页面是或功能基本上类似于数据交换所,在该页面上,数据消费者(例如,新服装品牌)可以直接从A公司浏览、探索、发现、访问和有可能购买数据集。此外,A公司可以控制:谁可以进入数据交换所、可以查看特定列表的实体、实体可以对列表采取的动作(例如,仅查看)以及任何其他适当的动作。此外,数据提供者可以将其自己的数据与来自例如公共数据交换所(也称为“数据市场”)的其他数据集组合,并使用组合的数据创建新的列表。
数据交换所可以是发现、汇集、清理和丰富数据以使其更加富有价值的适当场所。数据交换所上的一个大公司可以汇集来自其各个分支和部门的可能对另一个公司有价值的数据。此外,私有生态系统数据交换的参与者可以一起工作,以将其数据集连接在一起,共同创建他们当中任何一方都无法单独生产的有用数据产品。这些关联的数据集一旦被创建,它们就可以在数据交换所或数据市场上被列出。
当数据提供者在数据提供者的账户中创建数据库的共享对象(以下称为共享)并授予对数据库的特定对象(例如,表、安全视图和安全用户定义函数(UDF))的共享访问权时,可以执行共享数据。然后,可以使用在共享中提供的信息来创建只读数据库。可以由数据提供者控制对该数据库的访问。“共享”封装了共享数据库中的数据所需的所有信息。共享可以包括至少三条信息:(1)授权访问包含要共享的对象的数据库和模式的特权,(2)授权访问特定对象(例如,表、安全视图和安全UDF)的特权,以及(3)与之共享数据库及其对象的消费者账户。与之共享数据库及其对象的消费者账户可由对包含在共享对象内的那些消费者账户的引用列表来指示。只有共享对象中特别列出的这些消费者账户可以被允许查找该共享对象、访问该共享对象、和/或从该共享对象导入。通过修改其他消费者账户的引用列表,共享对象可以被更多的账户访问或被限制为被更少的账户访问。
在一些实施例中,每个共享对象包含单个角色。在该角色和对象之间的授权定义了共享哪些对象以及这些对象共享哪些特权。角色和授权可以类似于在基于角色的访问控制的实现中的任何其他角色和授权系统。通过修改共享对象中附加到角色的授权集,可以(通过向角色添加授权)共享更多的对象,可以(通过撤销角色的授权)共享更少的对象,或者可以(通过更改授权类型,例如以允许对先前只读的共享表对象进行写访问)以不同的特权来共享对象。在一些实施例中,提供者账户中的共享对象可以使用别名对象和跨账户角色授权而被导入到目标消费者账户中。
共享数据时,不会在用户之间复制或传送数据。通过诸如SNOWFLAKETM的云计算服务提供者的云计算服务来完成共享。然后,共享数据可用于处理SQL查询,该SQL查询可能包括连接、聚合或其他分析。在一些情况下,数据提供者可以定义共享,使得允许关于共享数据执行“安全连接”。可以执行安全连接,使得可以关于共享数据执行分析,但是实际的共享数据不能被数据消费者(例如,共享的接收方)访问。
数据交换所还可实施基于角色的访问控制,以使用账户级角色和授权来管理对消费者账户内对象的访问。在一个实施例中,账户级角色是消费者账户中分配给用户的特殊对象。这些账户级角色和数据库对象之间的授权定义了账户级角色对这些对象拥有什么特权。例如,对数据库具有使用授权的角色在执行命令“显示数据库”时可以“看到”该数据库;对表具有选择授权的角色可以从该表中读取但不能写入该表。角色需要具有对表的修改授权才能写入该表。
数据的消费者通常需要对与其共享的数据执行各种功能的能力。这通常涉及消费者必须与一个或更多个第三方共享数据,让这些第三方对数据运行服务,并将结果发送回消费者。除了由于必须利用第三方服务而产生的延迟之外,消费者还需要与这些第三方共享其潜在的敏感数据。
本公开的实施例通过使数据市场的用户能够构建可与数据市场的其他用户共享的本机应用,解决了上述及其他问题。本机应用可以像任何其他数据列表一样在数据市场中被发布和发现,消费者可以将它们安装在他们的本地数据市场账户中,以满足他们的数据处理需求。这有助于将数据处理服务和能力带给消费者,而不是要求消费者与例如服务提供者共享数据,服务提供者可以执行这些数据处理服务并将处理后的数据共享回消费者。换句话说,代替消费者必须与能够执行必要的数据处理服务并将结果发送回消费者的第三方共享潜在敏感数据,可以封装期望的数据处理功能,然后与消费者共享,使得消费者不必共享他们的潜在敏感数据。本公开的实施例还保护提供者,提供者可能不希望他们的应用的底层细节(例如,源代码)被共享。
图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 S3TM的存储服务在云计算平台110上存储数据和查询结果。在特定实施例中,为了将数据加载到云计算平台110中,可以将数据表水平划分成大的、不可变的文件,该文件可以类似于传统数据库系统中的块或页面。在每个文件内,每个属性或列的值被分组在一起,并使用有时被称为混合列式(hybrid columnar)的方案进行压缩。每个表都有一个表头,表头中除了其他元数据外,还包含文件内每一列的偏移。
除了存储表数据之外,数据存储140还有助于存储由查询操作(例如,连接)生成的临时数据以及包含在大查询结果中的数据。这可以允许系统计算大型查询而不会出现内存不足或磁盘不足的错误。通过该方式存储查询结果可以简化查询处理,因为它不需要传统数据库系统中的服务器端游标(server-side cursors)。
查询处理130可以处理在虚拟机的弹性集群(在本文中称为虚拟仓库或数据仓库)内的查询执行。因此,查询处理130可以包括一个或更多个虚拟仓库131,虚拟仓库131在本文中也可以称为数据仓库。虚拟仓库131可以是在云计算平台110上运行的一个或更多个虚拟机。虚拟仓库131可以是可以根据需要在任何时候创建、破坏或调整大小的计算资源。该功能可以创建“弹性”虚拟仓库,该虚拟仓库可以根据用户的需求进行扩展、收缩或关闭。扩展虚拟仓库涉及生成到虚拟仓库131的一个或更多个计算节点132。收缩虚拟仓库涉及从虚拟仓库131删除一个或更多个计算节点132。更多计算节点132可以导致更快的计算时间。例如,在具有四个节点的系统上花费15个小时进行的数据加载在具有32个节点的系统上可能仅花费2个小时。
云服务120可以是协调云计算服务112上的活动的服务的集合。这些服务将云计算服务112的所有不同组件捆绑在一起,以便处理从登录到查询分发的用户请求。云服务120可以对由云计算服务112从云计算平台110提供的计算实例进行操作。云服务120可以包括管理虚拟仓库、查询、交易、数据交换的服务以及与这些服务相关联的元数据(诸如数据库模式、访问控制信息、加密密钥和使用情况统计信息)的集合。云服务120可以包括但不限于认证(authentication)引擎121、基础设施管理器122、优化器123、交换管理器124、安全引擎125和元数据存储设备126。
图1B是示出示例虚拟仓库131的框图。交换管理器124可以使用例如数据交换所来促进数据提供者和数据消费者之间的数据共享。例如,云计算服务112可以管理数据库108的存储和访问。数据库108可以包括用于不同用户(例如不同的企业或个人)的用户数据150的各种实例。用户数据150可以包括该用户存储和访问的数据的用户数据库152。用户数据库152可以受到访问控制,使得在向云计算服务112认证之后,仅允许数据的所有者改变和访问数据库152。例如,可以对数据进行加密,使得只能使用数据所有者拥有的解密信息对它进行解密。使用交换管理器124,可以根据本文公开的方法以受控的方式与其他用户共享来自受到这些访问控制的用户数据库152的特定数据。特别地,用户可以指定共享154,如上所述,该共享154可以以不受控制的方式在公共或数据交换中共享,或者以受控制的方式与特定的其他用户共享。“共享”封装了共享数据库中的数据所需的所有信息。共享可以包括至少三条信息:(1)授权访问包含要共享的对象的数据库和模式的特权,(2)授权访问特定对象(例如,表、安全视图和安全UDF)的特权,以及(3)与之共享数据库及其对象的消费者账户。共享数据时,不会在用户之间复制或传送数据。共享是通过云计算服务112的云服务120完成的。
当数据提供者在数据提供者的账户中创建数据库的共享并授予对特定对象(例如表、安全视图和安全用户定义函数(UDF))的访问权时,可以执行共享数据。然后可以使用共享中提供的信息创建只读数据库。可以由数据提供者控制对该数据库的访问。
然后,共享数据可用于处理SQL查询,该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可以包括描述由第一用户(“提供者”)共享的数据的多个列表202。列表202可以是数据交换所中或数据市场中的列表。对于数据市场和数据交换所二者,列表的访问控制、管理和治理可能是相似的。
列表202可以包括描述共享数据的元数据204。元数据204可以包括以下一些或全部信息:共享数据的提供者的标识符、与提供者相关联的URL、共享的名称、表的名称、共享数据所属的类别、共享数据的更新频率、表的目录、每个表中的列数和行数,以及列名。元数据204还可以包括帮助用户使用数据的示例。此类示例可以包括样本表(其包括示例表的行和列的样本)、可以针对该表运行的示例查询、示例表的示例视图、基于表数据的示例可视化(例如,图表、仪表板)。元数据204中包括的其他信息可以是供商业智能工具使用的元数据、表中包含的数据的文本描述、与表相关联以促进搜索的关键字、指向与共享数据有关的文档的链接(例如URL),以及指示共享数据的更新频率的刷新间隔和数据的最后更新日期。
列表202可以包括访问控制206,该访问控制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添加到被排除用户的消费共享116)中的被排除用户在浏览目录220时仍可以被允许查看列表的表示,并且可以进一步被允许请求访问列表202,如下所述。可以在呈现给列表202的提供者的界面中列出由此类被排除用户和其他用户访问列表的请求。列表202的提供者然后可以查看访问列表的需求并选择扩展过滤器208以对被排除用户或被排除用户的类别(例如,被排除的地理区域或国家的用户)许可访问权。
过滤器208可以进一步定义用户可以查看哪些数据。特别地,过滤器208可以指示选择列表202以添加到用户的消费共享116的该用户被允许访问该列表所引用的但仅仅是过滤版本的数据,该过滤版本仅包括与该用户的标识符214相关联、与该用户的组织相关联或特定于用户的某个其他分类的数据。在一些实施例中,私有交换是通过邀请进行的:在传递对从提供者接收到的邀请的接受后,由提供者邀请以查看私有交换的列表202的用户被允许通过交换管理器124进行私有交换。
在一些实施例中,列表202可以被寻址到单个用户。因此,对列表202的引用可以被添加到用户可查看的一组“待定共享”。然后,在用户将批准传递给交换管理器124后,可以将列表202添加到用户的一组共享。
列表202可以进一步包括使用数据210。例如,云计算服务112可以实现积分系统,其中积分由用户购买,并且每次用户运行查询,存储数据或使用云计算服务112实现的其他服务时都将消费积分。因此,使用数据210可以记录通过访问共享数据而消费的积分。使用数据210可以包括其他数据,诸如查询次数、针对共享数据执行的多种类型中的每种类型的聚合次数,或其他使用统计信息。在一些实施例中,用户对列表202或多个列表202的使用数据以共享数据库的形式提供给用户,即由交换管理器124将对包括使用数据的数据库的引用添加到用户的消费共享116中。
列表202还可以包括热图(heat map)211,该热图211可以表示用户在该特定列表上单击的地理位置。云计算服务112可以使用热图来做出复制决定或关于列表的其他决定。例如,数据交换所可以显示包含美国佐治亚州的天气数据的列表。热图211可以指示加利福尼亚的许多用户正在选择该列表以了解佐治亚州的天气。鉴于该信息,云计算服务112可以复制该列表,并使该列表在数据库(该数据库的服务器物理上位于美国西部)中可用,使得加利福尼亚州的消费者可以访问该数据。在一些实施例中,实体可以将其数据存储在位于美国西部的服务器上。特定列表可能深受消费者欢迎。云计算服务112可以复制该数据并将其存储在位于美国东部的服务器中,使得中西部和东海岸的消费者也可以访问该数据。
列表202还可以包括一个或更多个标签213。标签213可以促进更简单地共享包含在一个或更多个列表中的数据。例如,大公司可以具有人力资源(HR)列表,人力资源列表包含在数据交换所中对于其内部员工的HR数据。HR数据可以包含十种类型的HR数据(例如,员工编号、选择的健康保险、当前的退休计划、职称等)。公司中的100个人(例如,HR部门的每个人)都可以访问HR列表。HR部门的管理层可能希望添加第十一种类型的HR数据(例如,员工股票期权计划)。并非手动将其添加到HR列表中并向100个人中的每一人授予对该新数据的访问权,管理层可以将HR标签简单地应用于新数据集,并且该HR标签可以用于将数据分类为HR数据,将其与HR列表一起列出,并向100个人授予查看新数据集的访问权。
列表202还可以包括版本元数据215。版本元数据215可以提供跟踪数据集如何改变的方式。这可以帮助确保一个实体正在查看的数据不会过早改变。例如,如果公司拥有原始数据集,并且然后发布该数据集的更新版本,则更新可能会干扰另一用户对该数据集的处理,因为该更新可能具有不同的格式、新列以及可能与接收方用户的当前处理机制不兼容的其他改变。为了对此进行补救,云计算服务112可以使用版本元数据215来跟踪版本更新。云计算服务112可以确保每个数据消费者访问数据的相同版本,直到他们接受不会干扰数据集的当前处理的更新版本为止。
交换数据200可以进一步包括用户记录212。用户记录212可以包括识别与用户记录212相关联的用户的数据,例如,在服务数据库128中具有用户数据151并且由虚拟仓库131管理的用户的标识符(例如,仓库标识符)。
用户记录212可以列出与用户相关联的共享,例如,由用户创建的引用列表202。用户记录212可以列出用户消费的共享,例如由另一个用户创建并已根据本文描述的方法与用户的账户相关联的引用列表202。例如,列表202可以具有标识符,该标识符将用于在用户记录212的共享或消费共享116中引用它。
交换数据200可以进一步包括目录220。目录220可以包括所有可用列表202的列表,并且可以包括来自元数据204的数据的索引,以便于根据本文描述的方法进行浏览和搜索。在一些实施例中,列表202以JavaScript对象符号(JSON)对象的形式存储在目录中。
注意,在不同的云计算平台上存在虚拟仓库131的多个实例的情况下,虚拟仓库131的一个实例的目录220可以存储来自一个或更多个其他云计算平台110上的其他实例的列表或对列表的引用。因此,每个列表202可以是全局唯一的(例如,跨虚拟仓库131的所有实例被分配了全局唯一的标识符)。例如,虚拟仓库131的实例可以同步其目录220的副本,使得每个副本指示可从虚拟仓库131的所有实例获得的列表202。在一些实例中,列表202的提供者可以指定它将仅在指定的一个或更多个计算平台110上可用。
在一些实施例中,目录220在互联网上可用,使得其可由诸如BING或GOOGLE的搜索引擎搜索。该目录可能受搜索引擎优化(SEO)算法支配,以提高其可见性。潜在的消费者因此可以从任何网络浏览器浏览目录220。交换管理器124可以公开链接到每个列表202的统一资源定位符(URL)。该URL可以是可搜索的,并且可以在由交换管理器124实现的任何界面之外共享。例如,列表202的提供者可以发布其列表202的URL,以便促进其列表202及其品牌的使用。
图3示出了包括云部署305的云环境300,云部署305可包括与云计算服务112(在图1A中示出)相似的架构,并且可以是数据交换所或数据市场的部署。尽管用单个云部署来示出,但是云环境300可以具有多个云部署,这些云部署可以在物理上位于分离的远程地理区域中,但是都可以是单个数据交换所或数据市场的部署。尽管关于数据交换所描述了本公开的实施例,但这仅是出于示例目的,并且本公开的实施例可以在任何适当的企业数据库系统或数据共享平台中实现,其中数据可以在系统/平台的用户之间共享。
云部署305可包括硬件,例如处理设备305A(例如,处理器、中央处理单元(CPU))、存储器305B(例如,随机存取存储器(RAM)、存储设备(例如,硬盘驱动器(HDD)、固态驱动器(SSD)等)和其他硬件设备(例如,声卡、显卡等)。存储设备可以包括能够存储数据的永久存储设备。永久存储设备可以是本地存储单元或远程存储单元。永久存储设备可以是磁存储单元、光存储单元、固态存储单元、电子存储单元(主存储器)或类似的存储单元。永久存储设备也可以是单片/单个设备或一组分布式设备。云部署305可包括具有可编程处理器的任何合适类型的计算设备或机器,包括例如服务器计算机、台式计算机、膝上型计算机、平板计算机、智能手机、机顶盒等。在一些示例中,云部署305可包括单个机器或可包括多个互连的机器(例如,在集群中配置的多个服务器)。
数据库和模式可用于组织存储在云部署305中的数据,每个数据库可属于云部署305中的单个账户。每个数据库可以被认为是一个容器,其中有一个经典的文件夹层次结构。每个数据库可以是模式的逻辑分组,而模式可以是数据库对象(表、视图等)的逻辑分组。每个模式可以属于单个数据库。数据库和模式可以一起构成命名空间。当对数据库内的对象执行任何操作时,命名空间是从当前数据库和用于会话的模式中推断出来的。如果数据库和模式没有用于会话,则在对对象执行任何操作时,必须显式指定命名空间。如图3所示,云部署305可以包括提供者账户310,该提供者账户310包括具有模式320A–320D的数据库DB1。
图3还示出了对提供者账户310中对象的基于共享的访问。提供者账户310可以创建共享对象315,其包括对数据库DB1和模式320A的授权,以及对位于模式320A中的表T2的授权。数据库DB1和模式320A上的授权可以是使用授权,而表T2上的授权可以是选择授权。在这种情况下,数据库DB1中的模式320A中的表T2将被共享为只读。共享对象315可包含对包括消费者账户350在内的各种消费者账户的引用列表(未示出)。
共享对象315被创建后,可由消费者账户350(已在共享对象315中列出)导入或引用。消费者账户350可以运行命令来列出所有可用于导入的共享对象。仅当共享对象315是通过对消费者账户350的引用创建的时,消费者账户350才使用列出所有共享对象的命令来展示共享对象,并随后导入它。在一个实施例中,对另一个账户中的共享对象的引用总是通过账户名称限定。例如,消费者账户350将用示例合格名称“A1.SH1”来引用提供者账户A1中的共享对象SH1。当共享对象315被导入消费者账户350(被示为导入的数据库355)时,消费者账户350的管理员角色(例如,账户级角色)可被给予对导入的数据库355的使用授权。以这种方式,具有管理员角色350A的账户350中的用户可以访问来自DB1的数据,该数据被明确地共享/包括在共享对象315中。
图3还示出了数据库角色360。除了数据库角色可以在数据库(例如,图3的例子中的DB1)或任何适当的数据库容器(例如,模式)内定义的事实之外,数据库角色可以类似于账户级角色来工作。数据库角色360可以是与账户级角色或任何其他对象类型不同的对象(例如,可以是新的对象类型),并且可以使用基于在其中创建它的数据库的名称的限定符(例如,DB1.ROLE1)来引用。尽管数据库角色360在可以被分配的特权的授予方面可以类似于账户级角色,但是数据库角色360可以专门存在于数据库DB1(在其中定义它的数据库)内。因此,授予数据库角色360的特权在范围上必须限于在其中定义了数据库角色360的数据库DB1中包含的对象。数据库角色360可以允许由共享对象355提供的特权被模块化,以仅提供对数据库DB1中的共享对象355授权的某些对象的访问。
复制数据库时,可复制相应的账户级角色,或可将数据库本身指定为复制单元。通过在数据库DB1内定义数据库角色360,可以实现数据库角色360和其他复制单元(例如,账户级角色)之间的明确分离。因为对数据库DB1(没有其他数据库)内的对象子集的特权被授予数据库角色360,所以数据库角色360和它被授予特权(例如,模块化特权)的对象子集都被维护在数据库DB1中。此外,提供者账户310的执行角色必须对在其中定义数据库角色360的数据库DB1具有使用特权,以便解析它。
通过这种方式,如果提供者账户310授予消费者账户对已被授予数据库DB1特权的共享对象的访问权,则消费者账户可看到DB1的所有内容。然而,通过利用多个数据库角色,每个数据库角色被授予对数据库DB1内的特定对象(例如,对象的子集)的特权,消费者账户可以仅看到/访问已经被授予数据库角色的特权的对象,而消费者账户已经被授予对该数据库角色的访问权。可以将数据库角色授予账户级角色或同一数据库内的其他数据库角色。不能将数据库角色授予不同数据库中的另一个数据库角色。
在某些情况下,提供者账户可将数据库角色授予多个共享对象,消费者账户可导入多个共享对象中的每一个,以在消费者账户中生成多个导入的数据库。随后,消费者账户可以将每个导入的数据库中的导入数据库角色授予相同的账户级角色。但是,在这种情况下,必须在单独的授权中将不同的数据库对象授予每个共享对象,否则对给定共享对象/导入的数据库的单个撤销操作将导致撤销数据库角色的所有授权。为了防止这种情况,当向共享对象授予数据库角色时,本公开的实施例利用了被称为隐藏角色的概念。图6是部署600的框图,其中示出了使用隐藏角色来向一个或更多个共享对象授予数据库角色。如图6所示,当提供者账户希望向共享对象605授予数据库角色(DB1.ROLE1)时,它可以创建新隐藏角色605A。隐藏角色605A可以是数据库角色或账户级角色,并且可以是匿名的(即,没有名字)。DB1.ROLE1可被授予隐藏角色605A,隐藏角色605A可被授予共享对象605。DB1.ROLE1可以以这种方式被授予每个共享对象605、606和607,以便在数据库角色和共享对象之间建立一对一的关系。通过这样做,从例如共享对象605撤销DB1.ROLE1将不会影响DB1.ROLE1到共享对象606或607的授予。一旦DB1.ROLE1以这种方式被授予每个共享对象605-607,则消费者账户可以导入每个共享对象605-607,并分别基于每个共享对象605-607生成共享数据库610-612。此外,当删除共享对象或从共享对象中移除账户时,隐藏对象的使用还确保仅通过该共享对象提供的授权被丢弃。简而言之,每当将数据库角色授予共享对象时,都会为该被授予的数据库角色和共享对象(即共享被授权者)创建一个隐藏角色。
在一些实施例中,提供者账户授予共享对象的任何对象不会导致在消费者账户中自动创建对象。这样就可以避免生命周期问题。例如,如果共享数据库角色被重命名,则不需要同时重命名所有现有的自动创建的对象。在另一个示例中,如果丢弃了数据库角色,则不需要同时丢弃所有现有的自动创建的对象。在另一示例中,如果新的数据库角色被添加到提供者账户中的共享对象,则新的数据库角色被授予特权的对象将不会在消费者账户中的所有现有共享数据库中被自动创建。
类似于数据可从提供者账户共享至消费者账户的方式,应用也可从提供者账户共享至消费者账户。本公开的实施例使得数据市场的用户能够构建可以与数据市场的其他用户共享的本机应用。本机应用可以像任何其他数据列表一样在数据市场中被发布和发现,消费者可以在他们的账户中安装它们以满足他们的需求(例如,数据处理需求)。这有助于将数据处理服务和能力带给消费者,而不是要求消费者将数据共享给例如能够执行这些数据处理服务并将处理后的数据共享回消费者的服务提供者。换句话说,不是实体必须与第三方共享数据,让第三方在其上运行它们的服务,并将结果发送回实体,而是应用的功能可以被封装,然后与实体共享,使得实体不必共享它们的潜在敏感数据。
与数据共享一样,可使用共享容器来共享本机应用(以下简称为应用)。提供者可以定义应用共享对象(与标准共享对象相同),并且可以将包括用于安装应用的安装脚本的数据库耦合到应用共享对象。在一些实施例中,安装脚本可以是存储过程(storedprocedure)的形式。存储过程可以类似于函数,因为它们都是作为表达式来计算的。然而,与函数不同的是,存储过程是通过CALL语句使用的,不会像函数那样出现在其他语句类型中(例如,在查询的SELECT或WHERE部分)。存储过程的一个主要特性是它们能够执行其他查询并访问它们的结果。与函数一样,存储过程可以创建一次,然后可以执行多次。实际上,用例如Javascript实现的存储过程可以被认为是Javascript UDF,增加了在Javascript主体执行期间发出其他查询的能力。当消费者导入本地耦合到应用共享对象的数据库时,它将触发安装脚本的执行,该安装脚本将构建应用运行所需的所有对象和过程,如这里进一步详细讨论的。
在一些实施例中,可能有两种类型的存储过程,所有者权限和调用者权限。所有者权限存储过程(例如example_sp)可以在一个上下文中定义,在另一个上下文中调用。上下文可以指存储过程的子作业在其中执行的安全和命名上下文。这种上下文可以包括用于编译查询(即,用于名称解析和授权)的账户、角色和模式。例如,存储过程example_sp可以在账户A1中定义,由角色R1拥有,并位于模式S1(数据库DB1)中,这种信息组合就是所谓的所有者上下文。另一方面,example_sp的调用权限又可以授予账户A2(可能与A1相同)中的任何其他角色R2。角色R2可以通过类似“CALL DB1.S1.example_sp();.”的查询,使用仓库WH(会话的默认仓库)从任何默认模式S2(会话的默认模式)调用example_sp。调用者的账户、角色、模式和仓库的组合被称为调用者的上下文。与所有者权限存储过程相反,调用者权限存储过程的子作业是在调用者的上下文中执行的。因此,对它们没有特殊处理,调用者会话的默认上下文(即模式、角色和账户)用于名称解析和授权目的。因此,与所有者权限类型不同,默认仓库可以在主体执行期间(通过子作业)被更改。
图4示出了根据本公开的一些实施例的云环境300。在创建数据库DB1和模式320A后,提供者账户310可以生成安装脚本410并将其作为存储过程存储在模式320A中。本机应用框架475可以使提供者账户310能够指示特定的存储过程是安装脚本,当已经与其共享该存储过程的消费者请求安装该应用时,该安装脚本将不带参数地被自动调用,如在此进一步详细讨论的。
提供者账户310可定义具有必要功能的安装脚本410,以在消费者账户350中安装应用(包括应用所需的任何对象和过程)。提供者账户310可以以与创建普通共享对象相同的方式创建应用共享对象430,并将安装脚本410附加到应用共享对象430。提供者账户310然后可以向应用共享对象430授予必要的特权,包括在数据库DB1上的使用、在模式320A上的使用以及在安装脚本410上的使用。
当消费者账户350运行命令以查看可用共享时,他们可查看应用共享对象430,并可导入应用共享对象430,以从应用共享对象430创建导入的数据库460。响应于导入的数据库460的创建,本机应用框架475可以自动触发安装脚本410的执行,这可以创建对应于消费者账户350中的应用的功能的对象以及任务/过程。例如,安装脚本410可以创建周期性地联系第三方API并将来自第三方API的数据检索到导入的数据库460以供处理的过程。由于应用必须访问数据并执行各种功能,导入的数据库460不再是只读数据库,因为它不仅包括来自提供者账户310(只读)的应用共享对象430,还具有通过应用附带的存储过程/安装脚本410在导入的数据库内本地创建的对象。
本机应用框架475可创建一组数据库角色,作为应用安装的一部分,以协助共享过程。更具体地,本机应用框架475可以创建主数据库角色470,其可以代表应用本身,并且可以控制安装脚本410的执行,并且控制与安装脚本410生成的应用的功能相对应的任何对象或过程的使用或执行。换句话说,主数据库角色470可以控制应用,类似于账户中的顶级角色。主数据库角色470可以使得安装脚本410能够在消费者账户350的上下文中执行,但是使用类似于(但不相同于)提供者账户310的权限的模型。应当注意,主数据库角色470不是使用提供者账户310(所有者的)权限来执行的,因为它是在提供者账户310中定义的,而提供者账户310在消费者账户350中没有任何特权。还应注意,主数据库角色470不是使用消费者账户350的(调用者的)权限来执行的,因为消费者账户350可能不希望绝对地信任安装脚本410,并且不希望对应于安装脚本410的存储过程继承授予消费者账户350的任何特权。实际上,存储过程是在主数据库角色470(即,应用的权限)的上下文中执行的。
本机应用框架475还可创建导出者数据库角色480,安装脚本410可向其授予对它(安装脚本410)在应用安装期间创建的某些对象和/或过程(对应于应用的功能)的许可。本机应用框架475也可以创建导入者数据库角色490。当消费者账户350的对象/许可被授予应用时,导入的数据库角色490可以自动获取这些对象/许可。本机应用框架475可以自动将导入者数据库角色490授予主数据库角色470,使得主数据库角色470可以承担授予应用的所有许可(通过导入者数据库角色490)。本机应用框架475还可以自动将导出者数据库角色480授予管理员角色485(即,消费者账户350通过其安装应用的角色),管理员角色485是消费者账户350的账户级角色。结果,由安装脚本410授予导出者数据库角色480的某些对象和/或过程对于消费者账户350是可见的/可访问的(例如,可由管理员角色485访问)。例如,在应用运行所需的对象和过程的安装期间,安装脚本410可以创建模式S2和表T2。安装脚本410可被定义为向导出者数据库角色480授予对模式S2的使用访问权,并向导出者数据库角色480授予对T2的选择访问权,使得它具有对T2的选择访问权。通过定义本机应用框架475的基本功能,导出者数据库角色480被授予管理员角色485(即,执行安装脚本的角色)。因此,消费者账户350(例如,通过管理员角色485)可以具有对表T2的选择访问权。
通过这种方式,主数据库角色470可通过导出者数据库角色480提供对应用共享对象430的对象的细粒度访问(与全有或全无方法相反),如本文进一步详述的。此外,不同的集合可以被分配给消费者端的不同角色。应当注意,当消费者账户350安装应用时,安装脚本410本身没有被授予导出者数据库角色480,因此消费者账户350不能以任何方式看到或访问它。类似地,由安装脚本410创建的任何数据(例如,对象、过程、模式、表等)对于消费者账户350(例如,任何消费者角色)默认是不可见/不可访问的,除非安装脚本410指示它们被授予导出者数据库角色480。但是如果任何对象或过程没有被授予导出者数据库角色480,那么它们意味着仅仅是应用使用。
在图4的示例中,提供者账户310可通过向应用共享对象430的隐藏角色450授予数据库DB1的使用权限、模式320A的使用权限和安装脚本410的使用权限,向应用共享对象430授予必要的特权。消费者账户350(经由管理员角色485)可以从应用共享对象430创建导入的数据库460,响应于此,本机应用框架475可以自动触发消费者账户350中的安装脚本410的执行。因为安装脚本410已被授予隐藏角色450,而隐藏角色450又被专门授予主数据库角色470,所以消费者账户350不能访问安装脚本410。更具体地,消费者账户350不能访问安装脚本410的内容,不能看到安装脚本410的内容,并且对安装脚本410没有任何使用许可。然而,消费者账户350可以执行安装脚本410,因为一旦他们导入应用共享对象430,本机应用框架475自动触发消费者账户350中的安装脚本410的执行,尽管消费者账户350实际上不能访问安装脚本410的底层内容。此外,如果应用的安装需要其他数据/对象(例如,表等),提供者账户310也可以将这些对象专门授予主数据库角色470,并且它们对于消费者账户350将也是不可见/不可访问的。以这种方式,默认地,消费者账户350不具有在应用安装期间查看或执行由安装脚本410创建的任何对象或过程的许可。除非安装脚本410指示在应用安装期间创建的某些对象和/或过程被授予导出者数据库角色480,否则消费者账户350不能查看、访问或以其他方式利用它们。
因此,本公开的实施例还保护了可能不希望与消费者共享其应用细节(如底层代码/逻辑)的应用提供者。事实上,提供者账户可能希望消费者账户能够执行应用,但是可能不希望消费者账户能够访问应用的内容。
消费者账户350可创建将由应用使用的必要对象,如凭证、API集成和仓库。消费者账户350还可以授予应用运行所必需的特权(一些特权被授予由消费者账户350管理和拥有的对象),包括对秘密的使用、对API集成的使用、对仓库的使用,以及如果数据应用需要访问消费者账户350的对象或执行消费者账户350中的过程则授予数据应用的特权。一旦安装,只要消费者账户350已经授权,该应用就可以在消费者账户350中执行各种功能。该应用可以充当代理,并且采取消费者账户350上的任何角色可以采取的任何动作,例如建立任务流水线、建立数据摄取(例如,经由SnowpipeTM摄取),或者该应用的任何其他定义的功能。该应用可以代表消费者账户350并以编程的方式执行过程。
如图4所示,提供者账户310可创建数据库角色360,并可向数据库角色360授予配置脚本420(也为存储过程)的使用权。提供者账户310还将数据库角色360授予应用共享对象430的隐藏角色440。配置脚本420可以用于精细调节应用如何运行。例如,如果应用的功能是将数据摄取到消费者账户350中,则消费者可能想要配置摄取的频率,或者他们想要摄取什么表等。该功能可以由配置脚本420提供。提供者账户310可以将隐藏角色440直接授予导出者数据库角色480。这样,具有激活的管理员角色485的消费者可以使用主数据库角色470作为执行角色来执行共享配置脚本420存储过程。
始终使用主数据库角色470执行共享存储过程(例如,安装脚本410)为消费者账户350提供了安全措施,因为授予主数据库角色470的特权是针对应用的对象/过程或消费者对象(其已由消费者账户350特别授予)。在该模型中,安装脚本410(消费者账户350将不能访问或分析该安装脚本)将被限制在类似沙箱的外围,而消费者账户350不必信任安装脚本410存储过程的代码。
当提供者升级其共享应用的逻辑和代码时,本机应用框架475可用于确保升级的功能在消费者侧复制。在一些实施例中,本机应用框架475可以拍摄应用的周期性“快照”,并保存每个快照。每个快照可以类似于应用的一个版本,并且可以包括关于该应用版本的元数据。每个版本的元数据可以被存储并用于过渡/迁移到应用的新版本。由本机应用框架475保存的元数据种类的一些示例可以包括应用版本的版本数据和应用版本的状态数据。例如,状态数据可以包括指示应用被启用并处于活动状态的启用标志,以及指示应用处于休眠状态的禁用标志,在休眠状态中当前没有活动的用户任务,并且对应用或本地/共享对象的任何调用都导致错误。当应用升级时,它可能只需要升级导入的数据库中它对其具有特权的对象,而可能不修改任何账户级别的对象。在一些实施例中,应用升级可以包括暂停应用的状态,执行任何必要的修改、添加和/或移除应用的对象和配置,然后恢复应用。升级可能需要将额外的消费者本地对象/许可授予应用,这是通过上文进一步详细讨论的导入者数据库角色490来执行的。在一些实施例中,本机应用框架475可以提示用户向应用授予所需的附加消费者本地对象/许可。
在一些实施例中,本机应用框架475可提供记录应用的使用度量的功能,详细说明消费者如何使用这些应用,并将此类使用度量日志提供给提供者。
当提供者共享应用时(例如,通过在数据交换所中为其创建列表),他们可在列表的元数据中包括此类使用度量,以便消费者将了解通过应用消费的资源,并可设定用于其消费预算的配额。例如,提供者可以在列表元数据中提供运行该应用所需的资源(例如,计算、存储资源)的指示,并且对该应用感兴趣的任何消费者可以相应地设置他们各自的配额。
在一些实施例中,本机应用框架475可监控应用的执行,并生成执行日志,其可提供给消费者。在一些实施例中,响应于确定共享应用没有正常运行,消费者可以(经由本机应用框架475)以编程方式暂停应用的执行,并与提供者共享他们的执行日志。本机应用框架可以在与提供者共享个人/敏感数据的执行日志之前清除它们。提供者可以使用共享的执行日志来修复应用中的任何错误/问题,并共享应用的更新版本。如这里所讨论的,消费者可以通过编程升级到应用的更新版本。此外,应用可以生成消费者可以(例如,经由本机应用框架475)监控的度量。本机应用框架475还可以使消费者能够定义发出警报的标准,例如当某些度量达到阈值时。当应用遇到异常时,它还可能向消费者生成事件。
在一些实施例中,本机应用框架475还可利用可扩展性机制,例如连接器功能,以调用任何适当的第三方服务/端点。本机应用框架475可以利用数据交换所支持的任何语言(例如,Javascript、Java和Python等),从而使得本机应用能够以数据交换所支持的任何语言来编写。
可以看出,本公开的实施例使提供者能够开发应用和过程,以使用数据交换原语设置和安装应用的功能。提供者可以使用上面关于普通数据共享所讨论的列表来“宣传”应用,并且可以通过具有适当RBAC控件的可共享容器使应用对消费者可用,以确保只有对本机应用的公共工件的访问权被授予消费者。消费者可以通过编程方式发现这些应用,并将它们作为沙箱容器安装到自己的账户中。然后,可以使用授权凭证、应用实例所需的计算资源以及可能需要外部设置的其他应用特定配置,以编程方式配置应用。消费者可以通过编程动态配置和管理应用的生命周期。
图5A-图5C示出了根据本公开的一些实施例的示例应用共享过程500的代码实施。图5A示出了示例共享过程的提供者侧代码。如图5A所示,提供者可以创建数据库(“createdatabase time_DB”),然后在数据库内创建模式(“create schema time_db.installer_schema”),安装脚本505将驻留在该模式中。提供者可以用应用的期望功能来定义安装脚本(time_db.installer_schema.installer())。
在图5A-图5C的示例中,应用的基本功能是定期将时间戳插入表中。更具体地说(继续参考图5A),提供者可以定义安装脚本505来创建应用可以在其中执行的时间戳模式(“create schema time_schema”)。提供者也可以定义安装脚本505来创建一个可以记录时间戳的时间戳表(“create table time_schema.time_table(ts_timestamp)”),并创建一个时间戳插入过程来监控时间戳并将时间戳插入到表中(“create procedure time_schema.record_time()”)。安装脚本还可以被定义为创建启动服务过程(“createprocedure time_schema.start_service(wh_name string)”),其周期性地调用时间戳插入过程。
安装脚本505还可定义为具有向由如本文上面讨论的本机应用框架创建的导出者数据库角色(app_exporter)授予对存储有安装脚本505的模式的访问权(“grant usage onschema time_schema to database role app_exporter”)、启动服务过程的访问权(“grant usage on procedure time_schema.start_service(string)to database roleapp_exporter”)和时间戳表的访问权(“grant select on table time_schema.time_table to database role app_exporter”)的功能。这是因为默认情况下,消费者账户不能访问这些对象或过程中的任何一个,如上文进一步详细讨论的。从图5A中可以看出,安装脚本505没有授权访问时间戳插入过程,因此在安装应用时,消费者账户350不能看到时间戳插入过程的底层代码或者以其他方式直接访问时间戳插入过程,但是可以使用启动服务过程调用它。
现在参考图5B,提供者可以与创建普通共享相同的方式创建应用共享(“createshare time_share installer”),并将安装脚本505附加到应用共享(time_db.installer_schema.installer())。然后,提供者可以向应用共享授予必要的特权(如图5B中的特权集510所示),包括在数据库上的使用(time_db)、在模式上的使用(installer_schema)以及在安装脚本505上的使用(installer_schema.installer)。
图5C示出了示例应用共享过程500的消费者侧代码。如图5C所示,当消费者运行命令来查看可用共享(“show shares”)时,他们可以看到共享time.share,并且可以从共享time.share创建名为time_app的数据库(导入的数据库)(“create or replace databasetime_app from share nativeappsorg.native_apps_provider.time_share”)。这将自动触发创建时间戳模式(time_schema)、时间戳表(time_table)和启动服务过程(start_service(string))的安装过程。如果消费者运行命令来显示模式(“show schemas”),他们将看到模式time_schema。如果消费者运行命令来显示表(“show tables”),他们将看到时间戳表(time_table)。如果消费者运行命令来显示过程(“show procedures”),他们将看到启动服务过程(start_service(string)),但不会看到时间戳插入过程(record_time())。
此时,消费者账户将授予所述应用在所述消费者账户中运行任务(例如,启动服务过程)所需的特权(“grant execute task on account to database time_app”),并授予所述应用将在其中执行的数据仓库(导入的数据库)上的使用特权(“grant usage onwarehouse time_service_wh to database time_app”)。消费者账户可以执行启动服务过程,该过程可以运行时间戳插入过程。
图7是根据本公开的一些实施例,用于在数据库用户之间共享应用的方法700的流程图。方法700可由处理逻辑执行,该处理逻辑可包括硬件(例如,电路、专用逻辑、可编程逻辑、处理器、处理设备、中央处理单元(CPU)、片上系统(SoC)等)、软件(例如,在处理设备上运行/执行的指令)、固件(例如,微码)或它们的组合。在一些实施例中,方法700可以由云部署305(如图3和图4所示)的处理设备来执行。
同时参考图4,创建数据库DB1和模式320A后,在块705,提供者账户310可生成安装脚本410,并将其作为存储过程存储在模式320A中。如在此进一步详细讨论的,提供者账户310可以定义具有必要功能的安装脚本410,以在消费者账户350中安装应用(包括应用所需的任何对象和过程)。在块710,提供者账户310可以以与创建普通共享对象相同的方式创建应用共享对象430,并将安装脚本410附加到应用共享对象430。提供者账户310然后可以向应用共享对象430授予必要的特权,包括在数据库DB1上的使用、在模式320A上的使用以及在安装脚本410上的使用。当消费者账户350运行命令来查看可用共享时,他们可以看到应用共享对象430,并且可以导入应用共享对象430以从应用共享对象430创建导入的数据库460。在块715,响应于导入的数据库460的创建,在块720,本机应用框架475可以自动触发安装脚本410的执行,这可以创建对应于消费者账户350中的应用的功能的对象以及任务/过程。例如,安装脚本410可以创建周期性地联系第三方API并将来自第三方API的数据检索到导入的数据库460以供处理的过程。由于应用必须访问数据并执行各种功能,导入的数据库460DB1不再是只读数据库,因为它将不仅包括来自提供者账户310(只读)的应用共享对象430,还具有通过应用附带的存储过程/安装脚本410在导入的数据库内本地创建的对象。
在块725,本机应用框架475可创建一组数据库角色,作为应用安装的一部分,以协助共享过程。更具体地,本机应用框架475可以创建主数据库角色470,其可以代表应用本身,并且可以控制对应于应用的功能的任何对象或过程的使用或执行。换句话说,主数据库角色470可以控制应用,类似于账户中的顶级角色。本机应用框架475还可以创建导出者数据库角色480,安装脚本410可以向导出者数据库角色480授予对它(安装脚本410)在应用安装期间创建的某些对象和/或过程的许可。本机应用框架475也可以创建导入者数据库角色490。当消费者账户350的对象/许可被授予应用时,导入的数据库角色490可以自动获取这些对象/许可。本机应用框架475可以自动将导入者数据库角色490授予主数据库角色470,使得主数据库角色470可以承担(通过导入者数据库角色490)授予应用的所有许可。本机应用框架475可以自动将导出者数据库角色480授予管理员角色480(即,消费者账户350通过其安装应用的角色),管理员角色485是消费者账户350的账户级角色。结果,由安装脚本410授予导出者数据库角色480的某些对象和/或过程对于消费者账户350可以是可见的/可访问的(例如,可由管理员角色485访问)。例如,在应用运行所需的对象和过程的安装期间,安装脚本410可以创建模式S2和表T2。安装脚本410可以被定义为向导出者数据库角色480和导入者数据库角色490授予对模式S2的使用访问权,以及向导出者数据库角色480授予对T2的选择访问权,使得它具有对T2的选择访问权。通过定义本机应用框架475的基本功能,导出者数据库角色480被授予管理员角色485(即,执行安装脚本的角色)。因此,消费者账户350(例如,通过管理员角色485)可以具有对表T2的选择访问权。
通过这种方式,主数据库角色470可通过导出者数据库角色480提供对应用共享对象430的对象的细粒度访问(与全有或全无方法相反),如本文进一步详细讨论的。应当注意,当消费者账户350安装应用时,安装脚本410本身没有被授予导出者数据库角色480,因此消费者账户350看不到它。类似地,由安装脚本410创建的任何数据(例如,对象、模式、表等)对于任何消费者角色默认是不可见/不可访问的,除非安装脚本410指示它们被授予导出者数据库角色480。但是如果任何对象或过程没有被授予导出者数据库角色480,那么它们意味着仅仅是应用使用。
图8示出了计算机系统800的示例形式的机器的图解表示,其中,一组指令用于使机器执行本文所述的用于将共享对象复制到部署的任何一种或更多种方法。更具体地,机器可以将第一账户的共享对象修改为全局对象,其中共享对象包括指示对数据库的一组对象的共享授权的授权元数据。机器可以在位于部署中的第二账户中基于全局对象创建在部署上的共享对象的本地副本,并将数据库的一组对象复制到部署上的本地数据库副本;以及刷新对共享对象的本地副本的共享授权。
在可选实施例中,机器可以连接(例如,联网)到局域网(LAN)、内联网、外联网或互联网中的其他机器。机器可以在客户端-服务器网络环境中以服务器或客户端机器的能力操作,或者在对等(或分布式)网络环境中作为对等机器操作。机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设备(web appliance)、服务器、网络路由器、交换机或桥接器、集线器、接入点、网络访问控制设备或能够(顺序地或以其他方式)执行一组指令的任何机器,该一组指令指定由该机器采取的动作。此外,虽然仅示出了单个机器,但术语“机器”还应被理解为包括单独或关联地执行一组(或多组)指令以实施本文所讨论方法中的任何一个或更多个方法的机器的任意集合。在一个实施例中,计算机系统800可以表示服务器。
示例性计算机系统800包括处理设备802、主存储器804(例如,只读存储器(ROM)、闪存、动态随机存取存储器(DRAM))、静态存储器805(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备818,它们经由总线830彼此通信。本文所述的在各种总线上提供的任何信号可以与其他信号时间复用并通过一个或更多个公共总线被提供。此外,在电路组件或块之间的互连可以被示为总线或单信号线。总线中的每个可以可选地是一个或更多个单信号线,并且单信号线中的每个可以可选地是总线。
计算设备800可以进一步包括可以与网络820通信的网络接口设备808。计算设备800还可以包括视频显示单元810(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备812(例如键盘)、光标控制设备814(例如鼠标)和声音信号生成设备815(例如扬声器)。在一个实施例中,视频显示单元810、字母数字输入设备812和光标控制设备814可以组合成单个组件或设备(例如,LCD触摸屏)。
处理设备802表示一个或更多个通用处理设备,例如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算机(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集组合的处理器。处理设备802还可以是一个或更多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备802被配置为执行应用共享指令825,以执行本文讨论的操作和步骤。
数据存储设备818可以包括机器可读存储介质828,在该介质上存储体现本文描述的任何一个或更多个功能方法的一组或更多组应用共享指令825(例如,软件)。在计算机系统800执行应用共享指令825期间,应用共享指令825还可以完全或至少部分驻留在主存储器804内或在处理设备802内;主存储器804和处理设备802也构成机器可读存储介质。应用共享指令825还可以经由网络接口设备808在网络820上被发送或接收。
如本文所述,机器可读存储介质828还可用于存储指令以执行用于确定要编译的功能的方法。尽管机器可读存储介质828在示例性实施例中被示为单个介质,但是术语“机器可读存储介质”应该被认为包括存储一组或更多组指令的单个介质或多个介质(例如,集中式或分布式数据库,或相关联的高速缓存和服务器)。机器可读介质包括用于以机器(例如,计算机)可读的形式(例如,诸如软件、处理应用)存储信息的任何机制。机器可读介质可以包括但不限于磁存储介质(例如,软盘);光学存储介质(例如,CD-ROM);磁光存储介质;只读存储器(ROM);随机存取存储器(RAM);可擦除可编程存储器(例如,EPROM和EEPROM);闪存;或适用于存储电子指令的另一种类型的介质。
除非另有明确说明,否则诸如“接收”、“路由”、“授予”、“确定”、“发布”、“提供”、“指定”、“编码”等的术语是指由计算设备执行或实现的动作和过程,该动作和过程将表示为计算设备的寄存器和存储器内的物理(电子)量的数据操纵和转换为类似表示为计算设备存储器或寄存器或其他此类信息存储、传输或显示设备内的物理量的其他数据。此外,如本文中所使用的,术语“第一”、“第二”、“第三”、“第四”等是指用于区分不同元件的标签,并且不一定具有根据它们的数字名称的序数含义。
本文描述的示例还涉及用于执行本文描述的操作的装置。该装置可以被特殊地构造用于所需目的,或者它可以包括由存储在计算设备中的计算机程序选择性地编程的通用计算设备。此类计算机程序可以被存储在计算机可读的非暂态存储介质中。
本文描述的方法和说明性示例与任何特定计算机或其他装置不是固有地相关。可以根据本文描述的教导来使用各种通用系统,或者可以证明构造更专用的装置以执行所需的方法步骤是方便的。如上面的描述中所示,各种这些系统的所需结构将出现。
以上描述旨在是说明性的,而不是限制性的。尽管已经参考特定的说明性示例描述了本公开,但是将认识到,本公开不限于所描述的示例。本公开的范围应参考所附权利要求书以及权利要求书所赋予的等效物的全部范围来确定。
如本文中所使用的,单数形式“一(a)”、“一个(an)”和“该(the)”也意图包括复数形式,除非上下文另外明确指出。将进一步理解的是,当在本文中使用时,术语“包括(comprises)”、“包括(comprising)”、“包含(includes)”和/或“包含(including)”指定存在所述特征、整数、步骤、操作、元素和/或组件,但不排除一个或更多个其他特征、整数、步骤、操作、元素、组件和/或其组的存在或添加。因此,本文所使用的术语仅出于描述特定实施例的目的,而无意于进行限制。
还应注意,在某些替代实现中,提到的功能/动作可能不按照图中提到的顺序发生。例如,取决于所涉及的功能/动作,连续示出的两个图实际上可以基本上同时执行,或者有时可以以相反的顺序执行。
尽管以特定顺序描述了方法操作,但是应该理解,可以在所描述的操作之间执行其他操作,可以调节所描述的操作,使得它们在稍微不同的时间发生,或者所描述的操作可以分布在允许以与处理相关联的各种间隔处发生处理操作的系统中。
各种单元、电路或其他组件可以被描述或要求为“被配置为”或“可配置为”执行一个或多个任务。在此类上下文中,短语“被配置为”或“可配置为”用于通过指示单元/电路/组件包括在操作期间执行一个或多个任务的结构(例如,电路)来表示结构。这样,即使当指定的单元/电路/组件当前不工作(例如,未接通)时,也可以说该单元/电路/组件被配置为执行任务,或者可以配置为执行任务。与“被配置为”或“可配置为”语言一起使用的单元/电路/组件包括硬件——例如,电路、存储可执行以实现操作的程序指令的存储器等。声明某个单元/电路/组件“被配置为”执行一个或更多个任务,或者“可配置为”执行一个或更多个任务,显然不旨在针对该单元/电路/组件调用35U.S.C.112,第六段。另外,“被配置为”或“可配置为”可包括由软件和/或固件(例如,FPGA或执行软件的通用处理器)操纵来以能够执行讨论中的任务的方式操作的通用结构(例如,通用电路)。“被配置为”还可包括使制造过程(例如,半导体制造设施)适应于制造适于实现或执行一个或更多个任务的设备(例如,集成电路)。明确表示“可配置为”不适用于空白介质、未编程的处理器或未编程的通用计算机、或未编程的可编程逻辑设备、可编程门阵列或其他未编程的设备,除非伴随有赋予未编程设备被配置为执行所公开的功能的能力的编程的介质。
可以利用一种或更多种计算机可用或计算机可读介质的任何组合。例如,计算机可读介质可以包括便携式计算机磁盘、硬盘、随机存取存储器(RAM)设备、只读存储器(ROM)设备、可擦可编程只读存储器(EPROM或闪存)设备、便携式光盘只读存储器(CDROM)、光学存储设备和磁性存储设备中的一种或更多种。可以以一种或多更种编程语言的任何组合来编写用于执行本公开的操作的计算机程序代码。可以将此类代码从源代码编译为适合于将在其上执行代码的设备或计算机的计算机可读汇编语言或机器代码。
实施例也可以在云计算环境中实现。在本说明书和所附权利要求中,“云计算”可以被定义为用于使得能够对可配置计算资源(例如,网络、服务器、存储、应用和服务)的共享池进行普遍、方便、按需的网络访问的模型,其可以快速配置(包括经由虚拟化)并以最小的管理工作量或服务提供商交互来发布(released),并且然后相应地进行扩展。云模型可以由各种特征(例如,按需自助服务、广泛的网络访问、资源池化(resource pooling)、快速弹性和可衡量的服务)、服务模型(例如,软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础架构即服务(“IaaS”))以及部署模型(例如,私有云、社区云、公共云和混合云)组成。
附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示代码的模块、段或部分,其包括用于实现指定的逻辑功能的一个或更多个可执行指令。还应注意,框图或流程图的每个框以及框图或流程图中的框的组合,可以通过执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指导计算机或其他可编程数据处理装置以特定方式运行,使得存储在计算机可读介质中的指令产生包括指令装置的制品,该指令装置实现在流程图和/或一个或更多个框图框中指定的功能/动作。
出于解释的目的,已经参考特定实施例描述了前述描述。然而,上面的说明性讨论并不意欲为无遗漏的或将本发明限制到所公开的精确形式。鉴于上面的教导,许多修改和变形是可能的。选择和描述这些实施例是为了最好地解释实施例的原理及其实际应用,从而使本领域的其他技术人员能够最好地利用实施例以及如可以适合于预期的特定用途的各种修改。因此,本实施例应被认为是说明性的而不是限制性的,并且本发明不限于本文给出的细节,而是可以在所附权利要求的范围和等效物内进行修改。

Claims (20)

1.一种方法,包括:
定义用于在数据交换所的账户中安装应用的安装脚本;
创建共享对象并将所述安装脚本附加到所述共享对象;和
响应于基于所述共享对象在消费者账户中创建导入的数据库:
由处理设备自动执行所述消费者账户中的所述安装脚本,以创建对应于所述应用的功能的一组对象和一组过程;和
创建一组数据库角色来管理所述消费者账户中所述应用的执行。
2.根据权利要求1所述的方法,其中,所述消费者账户不具有对所述一组对象中的任何对象的默认访问权,并且不具有对与所述应用的功能相对应的所述一组过程中的任何过程的默认访问权,并且其中所述一组数据库角色包括:
第一数据库角色,其用于控制所述应用在所述消费者账户中的执行;和
第二数据库角色,所述安装脚本授予所述第二数据库角色对与所述应用的功能相对应的所述一组对象中的一个或更多个和所述一组过程中的一个或更多个的访问权,其中所述第二数据库角色被授予所述消费者账户的账户级角色。
3.根据权利要求2所述的方法,还包括:
通过所述第二数据库角色执行对应于所述应用的功能的所述一组对象中的一个或更多个和所述一组过程中的一个或更多个。
4.根据权利要求2所述的方法,其中,所述一组数据库角色还包括第三数据库角色,响应于所述消费者账户的对象和许可被授予所述应用,所述消费者账户的对象和许可被授予所述第三数据库角色。
5.根据权利要求4所述的方法,还包括将所述第三数据库角色授予所述第一数据库角色,使得所述第一数据库角色承担对所述消费者账户的对象和许可的授予。
6.根据权利要求2所述的方法,还包括:
将配置脚本的使用授予所述共享对象的隐藏角色;
将所述共享对象的隐藏角色授予所述第二数据库角色;和
使用所述第二数据库角色来执行所述配置脚本,以修改所述应用的功能。
7.根据权利要求1所述的方法,还包括:
在所述数据交换所中生成用于共享所述应用的列表。
8.一种系统,包括:
存储器;以及
可操作地耦合到所述存储器的处理设备,所述处理设备用于:
定义用于在数据交换所的账户中安装应用的安装脚本;
创建共享对象并将所述安装脚本附加到所述共享对象;和
响应于基于所述共享对象在消费者账户中创建导入的数据库:
自动执行所述消费者账户中的所述安装脚本,以创建对应于所述应用的功能的一组对象和一组过程;和
创建一组数据库角色来管理所述消费者账户中所述应用的执行。
9.根据权利要求8所述的系统,其中所述一组数据库角色包括:
第一数据库角色,其用于控制所述应用在所述消费者账户中的执行;和
第二数据库角色,所述安装脚本授予所述第二数据库角色对与所述应用的功能相对应的所述一组对象中的一个或更多个和所述一组过程中的一个或更多个的访问权,其中所述第二数据库角色被授予所述消费者账户的账户级角色。
10.根据权利要求9所述的系统,其中,所述消费者账户不具有对所述一组对象中的任何对象的默认访问权,并且不具有对与所述应用的功能相对应的所述一组过程中的任何过程的默认访问权,并且其中所述处理设备还用于:
经由所述第二数据库角色,执行对应于所述应用的功能的所述一组对象中的一个或更多个以及所述一组过程中的一个或更多个。
11.根据权利要求9所述的系统,其中,所述一组数据库角色还包括第三数据库角色,响应于所述消费者账户的对象和许可被授予所述应用,所述消费者账户的对象和许可被授予所述第三数据库角色。
12.根据权利要求11所述的系统,其中,所述处理设备还用于:
将所述第三数据库角色授予所述第一数据库角色,使得所述第一数据库角色承担对所述消费者账户的对象和许可的授予。
13.根据权利要求9所述的系统,其中,所述处理设备还用于:
将配置脚本的使用授予所述共享对象的隐藏角色;
将所述共享对象的隐藏角色授予所述第二数据库角色;和
使用所述第二数据库角色来执行所述配置脚本,以修改所述应用的功能。
14.根据权利要求8所述的系统,其中,所述处理设备还用于:
在所述数据交换所中生成用于共享所述应用的列表。
15.一种非暂态计算机可读介质,其上存储有指令,所述指令在由处理设备执行时使所述处理设备:
定义用于在数据交换所的账户中安装应用的安装脚本;
创建共享对象并将所述安装脚本附加到所述共享对象;和
响应于基于所述共享对象在消费者账户中创建导入的数据库:
由所述处理设备自动执行所述消费者账户中的所述安装脚本,以创建对应于所述应用的功能的一组对象和一组过程;和
创建一组数据库角色来管理所述消费者账户中所述应用的执行。
16.根据权利要求15所述的非暂态计算机可读介质,其中所述消费者账户不具有对所述一组对象中的任何对象的默认访问权,并且不具有对与所述应用的功能相对应的所述一组过程中的任何过程的默认访问权,并且其中所述一组数据库角色包括:
第一数据库角色,其用于控制所述应用在所述消费者账户中的执行;和
第二数据库角色,所述安装脚本授予所述第二数据库角色对与所述应用的功能相对应的所述一组对象中的一个或更多个和所述一组过程中的一个或更多个的访问权,其中所述第二数据库角色被授予所述消费者账户的账户级角色。
17.根据权利要求16所述的非暂态计算机可读介质,其中,所述处理设备还用于:
经由所述第二数据库角色,执行对应于所述应用的功能的所述一组对象中的一个或更多个以及所述一组过程中的一个或更多个。
18.根据权利要求16所述的非暂态计算机可读介质,其中,所述一组数据库角色还包括第三数据库角色,响应于所述消费者账户的对象和许可被授予所述应用,所述消费者账户的对象和许可被授予所述第三数据库角色。
19.根据权利要求18所述的非暂态计算机可读介质,其中,所述处理设备还用于:
将所述第三数据库角色授予所述第一数据库角色,使得所述第一数据库角色承担对所述消费者账户的对象和许可的授予。
20.根据权利要求16所述的非暂态计算机可读介质,其中,所述处理设备还用于:
将配置脚本的使用授予所述共享对象的隐藏角色;
将所述共享对象的隐藏角色授予所述第二数据库角色;和
使用所述第二数据库角色来执行所述配置脚本,以修改所述应用的功能。
CN202211372837.XA 2021-10-29 2022-10-31 使用数据库角色的本机应用 Pending CN116069803A (zh)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163273814P 2021-10-29 2021-10-29
US63/273,814 2021-10-29
US17/535,529 US11436362B1 (en) 2021-10-29 2021-11-24 Native applications using database roles
US17/535,529 2021-11-24

Publications (1)

Publication Number Publication Date
CN116069803A true CN116069803A (zh) 2023-05-05

Family

ID=83149811

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211372837.XA Pending CN116069803A (zh) 2021-10-29 2022-10-31 使用数据库角色的本机应用

Country Status (2)

Country Link
US (3) US11436362B1 (zh)
CN (1) CN116069803A (zh)

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7069271B1 (en) * 2000-11-03 2006-06-27 Oracle International Corp. Methods and apparatus for implementing internet storefronts to provide integrated functions
WO2002041105A2 (en) * 2000-11-15 2002-05-23 Dmo, Inc. Online diagnosing of computer hardware and software
US9569231B2 (en) * 2009-02-09 2017-02-14 Kryon Systems Ltd. Device, system, and method for providing interactive guidance with execution of operations
US8689181B2 (en) * 2010-11-23 2014-04-01 Axeda Corporation Scripting web services
US11169997B1 (en) * 2014-08-28 2021-11-09 State Farm Mutual Automobile Insurance Company Centralized data access tool implementing resource governance
US9619305B2 (en) * 2015-06-02 2017-04-11 International Business Machines Corporation Locale aware platform
US10146915B2 (en) 2015-09-14 2018-12-04 Salesforce.Com, Inc. Publication of collaborative file to library
US10228926B2 (en) * 2016-01-28 2019-03-12 T-Mobile Usa, Inc. Remote support installation mechanism
US10547621B2 (en) 2016-11-28 2020-01-28 Microsift Technology Licensing, Llc Persistent mutable sharing of electronic content
US9942409B1 (en) * 2017-07-05 2018-04-10 State Farm Mutual Automobile Insurance Company System and computer-implemented method for translating coding language for graphical scripts
US10657032B2 (en) * 2018-03-30 2020-05-19 Atlassian Pty Ltd Systems and methods for monitoring performance of applications
US20200285450A1 (en) * 2018-08-07 2020-09-10 Muvi Llc System for providing instant preview of a mobile application under development
US11262997B2 (en) * 2018-11-09 2022-03-01 Walmart Apollo, Llc Parallel software deployment system
US11677735B2 (en) * 2020-12-18 2023-06-13 Shopify Inc. Hidden line property of online content to inhibit bot activity

Also Published As

Publication number Publication date
US11436362B1 (en) 2022-09-06
US11983292B2 (en) 2024-05-14
US20230185952A1 (en) 2023-06-15
US11593509B1 (en) 2023-02-28

Similar Documents

Publication Publication Date Title
US11294868B2 (en) Share replication between remote deployments
US20220050855A1 (en) Data exchange availability, listing visibility, and listing fulfillment
US11809586B2 (en) Shared object discovery techniques
US11822689B2 (en) Fine-grained access control via database roles
US20240056499A1 (en) Sharing of data share metrics to customers
US11436362B1 (en) Native applications using database roles
EP4174705A1 (en) Native applications using database roles
US11809922B1 (en) Sharing events and other metrics in native applications
US11973763B1 (en) Events account for native app event sharing
US20240062197A1 (en) Sharing events and other metrics in native applications
US20240171586A1 (en) Secure roles for data sharing
WO2023027879A1 (en) Fine-grained access control via database roles

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.