CN116472527A - 用于控制数据库系统中的信息访问的受限视图 - Google Patents

用于控制数据库系统中的信息访问的受限视图 Download PDF

Info

Publication number
CN116472527A
CN116472527A CN202180077198.1A CN202180077198A CN116472527A CN 116472527 A CN116472527 A CN 116472527A CN 202180077198 A CN202180077198 A CN 202180077198A CN 116472527 A CN116472527 A CN 116472527A
Authority
CN
China
Prior art keywords
view
query
restricted
limitation
user
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.)
Granted
Application number
CN202180077198.1A
Other languages
English (en)
Other versions
CN116472527B (zh
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 CN116472527A publication Critical patent/CN116472527A/zh
Application granted granted Critical
Publication of CN116472527B publication Critical patent/CN116472527B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/23Updating
    • G06F16/2393Updating materialised views
    • 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
    • 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/21Design, administration or maintenance of databases
    • 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
    • G06F16/2445Data retrieval commands; View definitions
    • 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/245Query processing
    • G06F16/2457Query processing with adaptation to user needs
    • G06F16/24573Query processing with adaptation to user needs using data annotations, e.g. user-defined metadata
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • General Health & Medical Sciences (AREA)
  • Software Systems (AREA)
  • Bioethics (AREA)
  • Health & Medical Sciences (AREA)
  • Mathematical Physics (AREA)
  • Library & Information Science (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computing Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Storage Device Security (AREA)

Abstract

数据库系统接收受限视图定义。该受限视图定义使用对视图的使用的一个或更多个限制来定义数据库表上的视图。数据库表上的视图是基于受限视图定义生成的。数据库系统接收针对该视图的查询。数据库系统基于对视图的使用的一个或更多个限制来确定是否允许针对该视图的查询。

Description

用于控制数据库系统中的信息访问的受限视图
相关申请的交叉引用
本申请要求于2021年1月15日提交的序列号为17/150,593的美国专利申请的优先权,该美国专利申请要求于2020年11月16日提交的序列号为63/114,326的美国临时专利申请的优先权,该美国专利申请和美国临时专利申请的内容通过引用以其整体并入。
技术领域
本公开的实施例总体上涉及数据库,并且更具体地涉及生成和使用受限视图(restricted view)来控制对数据库系统中的信息的访问。
背景
数据库广泛用于计算应用中的数据存储和访问。数据库存储的目标是以有组织的方式提供大量信息,以便可以对其进行访问、管理、更新和共享。在数据库中,数据可以被组织成行、列和表。各种实体和公司都使用数据库来存储可能需要访问或分析的信息。
附图简述
从下面给出的详细描述和本公开的各种实施例的附图中,将更全面地理解本公开。
图1示出了根据本公开的一些实施例的示例计算环境,其包括与云存储提供商系统通信的基于网络的数据库系统。
图2是示出根据本公开的一些实施例的计算服务管理器的部件的框图。
图3是示出根据本公开的一些实施例的执行平台的部件的框图。
图4是示出根据本公开的一些实施例的,在用于生成和使用数据库表的受限视图的过程期间,在计算环境内的交互的交互图。
图5和图6是示出根据本公开的一些实施例的,基于网络的数据库系统在执行用于生成和使用数据库表的受限视图的方法时的操作的流程图。
图7示出了根据本公开的一些实施例的计算机系统形式的机器的图解表示,在该计算机系统形式的机器内可以执行指令集,以用于使机器执行本文所讨论方法中的任何一种或更多种方法。
详细描述
现在将详细参考用于实现本发明主题的具体示例实施例。这些具体实施例的示例在附图中示出,并且具体细节在以下描述中阐述,以便提供对主题的透彻理解。应当理解,这些示例并不旨在将权利要求的范围限制于所示的实施例。相反,它们旨在覆盖可能被包含在本公开范围内的替代、修改、和等同物。
当数据库中的数据与其他人共享时,由于各种原因,数据所有者通常期望只提供对数据的有限访问。作为示例,数据所有者可能希望在向其他人收取完全访问的费用之前,免费向其他人给出数据的“样本”。作为另一个示例,数据所有者可能希望限制对数据集的数据访问频率,或者限制“提取”所提供的整个数据集的能力,同时保持“查询”相关信息的能力。作为又一个示例,数据库所有者可能期望提供聚合信息而不暴露细节(例如,用于私人信息保护)。然而,提供对完整数据集的访问,以使得用户可以访问数据的全部值,同时保护数据所有者,以免消费者简单地复制完整数据集并随心所欲地使用完整数据集,这目前来说是一种挑战。
传统上,应对这一挑战的方法是基于提供数据的子集或样本,或者为数据提供一组预定义的应用编程接口(API)和查询。然而,提供样本或子集限制了数据消费者访问数据值和有意义地查询数据的能力。这组预定义的API和查询可以允许对数据的完全访问,但是只能回答预定的问题。
本公开的方面利用数据库系统解决了传统方法的问题,该数据库系统促进生成和使用数据库表上的受限视图。本文中使用的“视图”包括所存储的在数据库表上的查询的结果集或另一种视图。视图表现为虚拟表,当请求访问视图时,根据表中的数据动态地计算出该虚拟表。数据库系统的用户可以像查询持久化数据库对象一样查询视图。“受限”视图包括对被授权访问该视图的人使用该视图的一个或更多个限制。应用于视图的限制提供了基于数据所有者偏好的一组控制机制。作为示例,受限视图可以限制在一次查询中可以消费的数据子集,限制可以对数据消费者可见的数据粒度,限制可以从底层数据中提取的信息量,限制访问频率,或者限制对底层数据的操作。
基于由对应于数据所有者的第一用户提供的受限视图定义来生成受限视图。该受限视图定义定义了表上的视图,并指定对其他用户使用该视图的一个或更多个限制。该一个或更多个限制可以一般地适用于被授权访问视图的任何用户,或者可以专门与特定用户或账户关联。受限视图可以与第二用户共享,从而允许第二用户提交针对视图的查询。第一用户和第二用户可以与相同的客户账户或不同的客户账户相关联。在从第二用户接收到针对视图的查询后,数据库系统基于与该视图相关联的一个或更多个限制来确定是否允许查询。在一些实例中,数据库系统可以基于查询来执行至少一些处理,以确定是否允许查询。如果不允许查询,数据库系统响应于查询而返回错误消息。如果允许查询,数据库系统返回处理查询的结果。
图1示出了根据本公开的一些实施例的示例计算环境100,其包括与存储平台104通信的数据库系统102。为了避免用不必要的细节模糊本发明主题,图1中省略了与传达对本发明主题的理解不密切相关的各种功能部件。然而,本领域技术人员将容易认识到,各种附加功能部件可以被包括作为计算环境100的一部分,以促进本文没有具体描述的附加功能。
如图所示,计算环境100包括数据库系统102和存储平台104(例如,Microsoft Azure Blob/>或Google Cloud/>)。数据库系统102用于报告和分析来自一个或更多个不同源的集成数据,该一个或更多个不同源包括存储平台104内的存储设备106-1至106-N。存储平台104包括多个计算机器,并向数据库系统102按需提供计算机系统资源,例如数据存储和计算能力。
数据库系统102包括计算服务管理器108、执行平台110和数据库114。数据库系统102托管数据报告和分析服务并向多个客户端账户提供数据报告和分析服务。管理用户可以创建和管理身份(例如,用户、角色和组),并使用许可(permission)来允许或拒绝身份对资源和服务的访问。
计算服务管理器108协调和管理数据库系统102的操作。计算服务管理器108还执行查询优化和编译,以及管理提供计算资源的计算服务的集群(也称为“虚拟仓库”)。计算服务管理器108可以支持任意数量的客户端账户,例如提供数据存储和检索请求的终端用户、管理本文描述的系统和方法的系统管理员、以及与计算服务管理器108交互的其他部件/设备。在示例中,计算服务管理器108可以允许用户创建和共享数据表上的受限视图。受限视图是包含对其使用的一个或更多个限制的视图。受限视图可以由第一用户创建,并与第二用户共享。第二用户可以以与数据库表相同的方式执行针对视图的查询。在接收到针对受限视图的查询后,计算服务管理器108基于与该视图相关联的任何限制来检查是否允许该查询。如果允许该查询,则响应于该查询返回查询的结果,但是如果禁止该查询,则响应于该查询返回错误消息。
计算服务管理器108还与计算设备112通信。计算设备112对应于由数据库系统102支持的多个客户端账户之一的用户。在一些实施例中,计算服务管理器108不从计算设备112接收任何直接通信,并且仅从数据库系统102内的队列接收关于作业的通信。
计算服务管理器108还耦合到数据库114,数据库114与存储在计算环境100中的数据相关联。数据库114存储涉及与数据库系统102及其用户相关联的各种功能和方面的数据。在一些实施例中,数据库114包括存储在远程数据存储系统中的数据以及可从本地高速缓存获得的数据的概要。另外,数据库114可以包括关于数据如何在远程数据存储系统(例如,存储平台104)和本地高速缓存中被组织的信息。数据库114允许系统和服务在不从存储设备加载或访问实际数据的情况下确定一段数据是否需要被访问。
计算服务管理器108还耦合到执行平台110,执行平台110提供执行各种数据存储和数据检索任务的多个计算资源。执行平台110耦合到存储平台104的存储平台104。存储平台104包括多个数据存储设备106-1至106-N。在一些实施例中,数据存储设备106-1至106-N是位于一个或更多个地理位置的基于云的存储设备。例如,数据存储设备106-1至106-N可以是公共云基础设施或私有云基础设施的一部分。数据存储设备106-1至106-N可以是硬盘驱动器(HDD)、固态驱动器(SSD)、存储集群、亚马逊(Amazon)S3TM存储系统、或任何其它数据存储技术。另外,存储平台104可以包括分布式文件系统(例如,Hadoop分布式文件系统(HDFS))、对象存储系统等。
执行平台110包括多个计算节点。计算节点上的进程集合执行由计算服务管理器108编译的查询计划。该进程集合可以包括:第一进程,该第一进程用于执行查询计划;第二进程,该第二进程用于使用最近最少使用(least recently used,LRU)策略来监视和删除数据库分区文件,并实现内存不足(OOM)错误缓解进程;第三进程,该第三进程从进程日志和状态提取健康信息以发送回计算服务管理器108;第四进程,该第四进程用于在系统引导(boot)之后建立与计算服务管理器108的通信;以及第五进程,该第五进程用于为计算服务管理器108提供的给定作业处理与计算集群的所有通信,并将信息传送回计算服务管理器108和执行平台110的其他计算节点。
在一些实施例中,计算环境100的元件之间的通信链路经由一个或更多个数据通信网络来实现。这些数据通信网络可以利用任何通信协议和任何类型的通信介质。在一些实施例中,数据通信网络是彼此耦合的两个或更多个数据通信网络(或子网络)的组合。在可替代的实施例中,这些通信链路使用任何类型的通信介质和任何通信协议来实现。
如图1所示,数据存储设备106-1至106-N从与执行平台110相关联的计算资源解耦。该架构支持数据库系统102基于变化的数据存储/检索需求以及用户和系统的变化的需求进行动态改变。对动态改变的支持允许数据库系统102响应于对数据库系统102内的系统和部件的变化的需求而快速地按规模缩放(scale)。计算资源与数据存储设备的解耦支持大量数据的存储,而无需相应的大量计算资源。类似地,资源的这种解耦支持在特定时间使用的计算资源的显著增加,而不要求相应地增加可用的数据存储资源。
计算服务管理器108、数据库114、执行平台110和存储平台104在图1中示为单独的分立部件。然而,计算服务管理器108、数据库114、执行平台110和存储平台104中的每一个都可以被实现为分布式系统(例如,分布在多个地理位置处的多个系统/平台上)。另外,计算服务管理器108、数据库114、执行平台110和存储平台104中的每一个可以根据所接收到的请求的变化和数据库系统102的变化的需求而(彼此独立地)使其规模放大或缩小。因此,在所描述的实施例中,数据库系统102是动态的并且支持定期改变以满足当前数据处理需求。
在典型操作期间,数据库系统102处理由计算服务管理器108确定的多个作业。这些作业由计算服务管理器108调度和管理,以确定何时以及如何执行作业。例如,计算服务管理器108可以将作业划分为多个离散任务,并且可以确定执行多个离散任务中的每个离散任务需要什么数据。计算服务管理器108可以将多个离散任务中的每个离散任务分配给执行平台110的一个或更多个节点以处理任务。计算服务管理器108可以确定处理任务需要什么数据,并且进一步确定执行平台110内的哪些节点最适合于处理该任务。一些节点可能已经缓存了处理任务所需的数据,因此是处理该任务的不错的候选者。存储在数据库114中的元数据帮助计算服务管理器108确定执行平台110中的哪些节点已经高速缓存了处理任务所需的数据的至少一部分。执行平台110中的一个或更多个节点使用由节点高速缓存的数据以及必要时使用从存储平台104检索到的数据来处理任务。期望从执行平台110内的高速缓存中检索尽可能多的数据,因为该检索速度通常比从存储平台104中检索数据快得多。
如图1所示,计算环境100将执行平台110与存储平台104分开。在这种布置中,执行平台110中的处理资源和高速缓存资源独立于存储平台104中的数据存储设备106-1至106-N进行操作。因此,计算资源和高速缓存资源不限于具体的数据存储设备106-1至106-N。相反,所有计算资源和所有高速缓存资源可以从存储平台104中的任何数据存储资源中检索数据,并将数据存储到其中。
图2是示出根据本公开的一些实施例的计算服务管理器108的部件的框图。如图2所示,计算服务管理器108包括耦合到数据存储设备206的访问管理器202和密钥管理器204。访问管理器202处理针对本文描述的系统的认证和授权任务。密钥管理器204管理在认证和授权任务期间使用的密钥的存储和认证。例如,访问管理器202和密钥管理器204管理用于访问存储在远程存储设备(例如,存储平台104中的数据存储设备)中的数据的密钥。如本文所用,远程存储设备也可以被称为“永久存储设备”或“共享存储设备”。
请求处理服务208管理接收到的数据存储请求和数据检索请求(例如,将对数据库数据执行的作业)。例如,请求处理服务208可以确定处理接收到的查询(例如,数据存储请求或数据检索请求)所需的数据。数据可以存储在执行平台110内的高速缓存中,或者存储在存储平台104中的数据存储设备中。
管理控制台服务210支持管理员和其他系统管理者对各种系统和进程的访问。另外,管理控制台服务210可以接收执行作业并监视系统上的工作负荷的请求。
计算服务管理器108还包括作业编译器212、作业优化器214和作业执行器216。作业编译器212将作业解析为多个离散任务,并为多个离散任务中的每个离散任务生成执行代码。作业优化器214基于需要处理的数据来确定执行多个离散任务的最佳方法。作业优化器214还处理各种数据修剪操作和其他数据优化技术,以提高执行作业的速度和效率。作业执行器216执行从队列接收的或由计算服务管理器108确定的作业的执行代码。
作业调度程序和协调器(job scheduler and coordinator)218将接收到的作业发送到适当的服务或系统,以进行编译、优化、并分派到执行平台110。例如,可以将作业优先化并按该优先顺序对作业进行处理。在实施例中,作业调度程序和协调器218为由计算服务管理器108调度的内部作业和可以由数据库中的其他系统调度但可以利用执行平台110中的相同处理资源的其他“外部”作业(例如用户查询)确定优先级。在一些实施例中,作业调度程序和协调器218识别或分配执行平台110中的特定节点来处理特定任务。虚拟仓库管理器220管理在执行平台110中实现的多个虚拟仓库的操作。如下所述,每个虚拟仓库包括多个执行节点,每个执行节点包括高速缓存和处理器。
另外,计算服务管理器108包括配置和元数据管理器222,配置和元数据管理器222管理与存储在远程数据存储设备和本地高速缓存(例如,执行平台110中的高速缓存)中的数据相关的信息。配置和元数据管理器222使用元数据来确定需要访问哪些分区来检索用于处理特定任务或作业的数据。监视器和工作负荷分析器224监管由计算服务管理器108执行的进程,并管理任务(例如,工作负荷)在执行平台110中的执行节点和虚拟仓库之间的分配。监视器和工作负荷分析器224还根据需要,基于整个数据库系统102中变化的工作负荷来重新分配任务,并且还可以基于也可以由执行平台110处理的用户(例如,“外部”)查询工作负荷来重新分配任务。配置和元数据管理器222以及监视器和工作负荷分析器224耦合到数据存储设备226。图2中的数据存储设备226表示数据库系统102内的任何数据存储设备。例如,数据存储设备226可以表示执行平台110中的高速缓存、存储平台104中的存储设备或任何其他存储设备。
计算服务管理器108还包括视图管理器228,以管理与视图的生成和使用相关的功能。为此,计算服务管理器108负责与生成和共享视图以及支持对视图的查询相关的任务。对于受限视图(具有一个或更多个限制的视图),计算服务管理器108可以结合执行平台110来工作,以基于受限视图确定是否允许给定的查询,并且如果是,则提供由执行查询产生的数据。如果不允许查询,则视图管理器228响应于查询提供错误消息。关于生成和使用受限视图的更多细节会在下面参考图4-图6进行讨论。
图3是示出根据本公开的一些实施例的执行平台110的部件的框图。如图3中所示,执行平台110包括多个虚拟仓库,该多个虚拟仓库包括虚拟仓库1、虚拟仓库2和虚拟仓库n。每个虚拟仓库包括多个执行节点,每个执行节点包括数据高速缓存和处理器。虚拟仓库可以通过使用多个执行节点来并行执行多个任务。如本文所讨论的,执行平台110可以基于系统和用户的当前处理需求实时添加新的虚拟仓库和丢弃现有的虚拟仓库。这种灵活性允许执行平台110在需要时快速部署大量计算资源,而不必在不再需要这些计算资源时被迫继续为它们付费。所有虚拟仓库都可以从任何数据存储设备(例如,存储平台104中的任何存储设备)访问数据。
尽管图3中所示的每个虚拟仓库包括三个执行节点,但是特定的虚拟仓库可以包括任意数量的执行节点。此外,虚拟仓库中执行节点的数量是动态的,使得在存在额外需求时创建新的执行节点,并在不再需要现有的执行节点时将其删除。
每个虚拟仓库能够访问图1中所示的数据存储设备106-1至106-N中的任何一个。因此,虚拟仓库没有必要被分配给特定的数据存储设备106-1至106-N,而是可以从存储平台104内的数据存储设备106-1至106-N中的任何一个访问数据。类似地,图3中所示的每个执行节点可以从数据存储设备106-1至106-N中的任何一个访问数据。在一些实施例中,特定的虚拟仓库或特定的执行节点可以被临时分配给具体的数据存储设备,但是该虚拟仓库或执行节点后续可以从任何其他数据存储设备访问数据。
在图3的示例中,虚拟仓库1包括三个执行节点302-1、302-2和302-n。执行节点302-1包括高速缓存304-1和处理器306-1。执行节点302-2包括高速缓存304-2和处理器306-2。执行节点302-n包括高速缓存304-n和处理器306-n。每个执行节点302-1、302-2和302-n与处理一个或更多个数据存储和/或数据检索任务相关联。例如,虚拟仓库可以处理与内部服务(例如,聚类(clustering)服务、物化视图刷新(materialized view refresh)服务、文件压缩服务、存储过程服务、或文件升级服务)相关联的数据存储和数据检索任务。在其他实施方式中,特定虚拟仓库可以处理与特定数据存储系统或特定类别的数据相关联的数据存储和数据检索任务。
类似于上面讨论的虚拟仓库1,虚拟仓库2包括三个执行节点312-1、312-2和312-n。执行节点312-1包括高速缓存314-1和处理器316-1。执行节点312-2包括高速缓存314-2和处理器316-2。执行节点312-n包括高速缓存314-n和处理器316-n。另外,虚拟仓库3包括三个执行节点322-1、322-2和322-n。执行节点322-1包括高速缓存324-1和处理器326-1。执行节点322-2包括高速缓存324-2和处理器326-2。执行节点322-n包括高速缓存324-n和处理器326-n。
在一些实施例中,相对于执行节点正在缓存的数据而言,图3所示的执行节点是无状态的。例如,这些执行节点不存储或以其他方式维护关于数据由特定执行节点缓存或执行节点的状态信息。因此,在执行节点发生故障的情况下,可以用另一个节点透明地替换发生故障的节点。由于没有与发生故障的执行节点相关联的状态信息,所以新的(替换)执行节点可以轻松替换发生故障的节点,而无需考虑重新创建特定状态。
尽管图3中所示的执行节点各自包括一个数据高速缓存和一个处理器,但是替代实施例可以包括包含任意数量的处理器和任意数量的高速缓存的执行节点。另外,高速缓存的大小在不同执行节点之间可以有所不同。图3中所示的高速缓存在本地执行节点中存储从存储平台104中的一个或更多个数据存储设备检索到的数据。因此,高速缓存减小或消除了在从远程存储系统中不断检索数据的平台中出现的瓶颈问题。本文描述的系统和方法不是从远程存储设备重复访问数据,而是从执行节点中的高速缓存访问数据,这明显更快并且避免了上面讨论的瓶颈问题。在一些实施例中,使用提供对高速缓存的数据的快速访问的高速存储器设备来实现高速缓存。每个高速缓存可以存储来自存储平台104中的任何存储设备的数据。
此外,高速缓存资源和计算资源可以在不同的执行节点之间变化。例如,一个执行节点可以包含大量的计算资源和最少的高速缓存资源,从而使该执行节点对于需要大量计算资源的任务很有用。另一个执行节点可以包含大量的高速缓存资源和最少的计算资源,从而使该执行节点对于需要高速缓存大量数据的任务很有用。又一个执行节点可以包含提供更快的输入-输出操作的高速缓存资源,这对于需要快速扫描大量数据的任务很有用。在一些实施例中,基于执行节点将要执行的预期任务,在创建特定执行节点时确定与该执行节点相关联的高速缓存资源和计算资源。
另外,与特定执行节点相关联的高速缓存资源和计算资源可以基于由执行节点执行的改变的任务而随时间改变。例如,如果执行节点执行的任务变得更加的处理器密集,则可以为执行节点分配更多的处理资源。类似地,如果执行节点执行的任务需要更大的高速缓存容量,则可以为执行节点分配更多的高速缓存资源。
尽管虚拟仓库1、2和n与同一执行平台110相关联,但是可以使用在多个地理位置处的多个计算系统来实现虚拟仓库。例如,虚拟仓库1可以由第一地理位置处的计算系统来实现,而虚拟仓库2和虚拟仓库n可以由第二地理位置处的另一计算系统来实现。在一些实施例中,这些不同的计算系统是由一个或更多个不同实体维护的基于云的计算系统。
另外,每个虚拟仓库在图3中被示为具有多个执行节点。可以使用在多个地理位置处的多个计算系统来实现与每个虚拟仓库相关联的多个执行节点。例如,虚拟仓库1的实例在一个地理位置处的一个计算平台上实现执行节点302-1和302-2,而在另一个地理位置处的不同计算平台上实现执行节点302-n。选择特定计算系统来实现执行节点可以取决于各种因素,例如特定的执行节点所需的资源水平(例如,处理资源要求和高速缓存要求)、特定计算系统处可用的资源、地理位置内或地理位置之间的网络的通信能力、以及哪些计算系统已经实现虚拟仓库中的其他执行节点。
执行平台110也是容错的。例如,如果一个虚拟仓库发生故障,那么该虚拟仓库将快速地被位于不同地理位置处的不同虚拟仓库替换。
特定执行平台110可以包括任意数量的虚拟仓库。另外,特定执行平台中虚拟仓库的数量是动态的,使得当需要附加的处理和/或高速缓存资源时创建新的虚拟仓库。类似地,当与虚拟仓库相关联的资源不再是必要的时,可以删除现有的虚拟仓库。
在一些实施例中,虚拟仓库可以在存储平台104中的相同数据上操作,但是每个虚拟仓库具有其自己的执行节点,其自己的执行节点具有独立的处理和高速缓存资源。这种配置允许不同虚拟仓库上的请求被独立地处理,并且请求之间没有干扰。这种独立处理与动态添加和移除虚拟仓库的能力相结合,支持为新用户添加新的处理能力,而不会影响现有用户观察到的性能。
图4是示出根据本公开的一些实施例的,在用于生成和使用数据库表的受限视图的过程400期间,在计算环境100内的交互的交互图。
如图所示,过程400从操作402开始,在操作402处,用户406向数据库系统102提供受限视图定义404。更具体地,受限视图定义由相关联的用户406使用计算设备408创建。用户406可以使用被提供给计算设备的命令行、用户界面或其他输入机构来创建受限视图定义404。受限视图定义404使用对数据库表的使用的一个或更多个限制来定义数据库表上的视图。受限视图定义404包括指定来自数据库表的数据的查询语句以及用于视图的一个或更多个限制。支持多种类别的限制。例如,受限视图定义404可以包括基于元数据的限制(例如,访问频率、被访问的列的数量)和基于数据的限制(例如,返回的行的数量或数据缩减级别)中的一个或更多个。更具体地,一个或更多个限制可以对以下项进行限制:可以在单次查询中消费的数据子集、能够可见的数据粒度、可以从底层数据中提取的信息量、访问频率、对底层数据的操作(例如,以防止私人信息公开)或其组合。
根据一些实施例,受限视图定义可以指定与被授权访问视图的用户或账户相对应的一个或更多个账户标识符。受限视图定义可以定义宽泛地适用于被授权访问受限视图的任何其他用户的限制,或者可以定义用于特定用户或账户的特定限制。
如图4所示,用户406可以提供受限视图定义404,诸如以下示例代码:
CREATE<RESTRICTED><SECURE>VIEW X_V AS SELECT*FROM X
RESTRICTIONS:'{
"MAX_ROWS_PROCESSED":1M,
"MAX_ROWS_IN_RESULT":1K,
"PROHIBIT_EXPORT":true}';
上面引用的受限视图定义404示例包括在使用select语句(VIEW X_VAS SELECT*FROM X)定义的视图上的三个限制。特别地,这些限制包括:第一限制,其定义了对于针对视图的查询,可以处理的行数的限制;第二限制,其定义了对通过在视图上执行查询而产生的行数的限制;以及禁止从视图导出数据的第三限制。
在一些实例中,受限视图定义404可以基于来自视图的数据或来自另一个表的数据来定义动态限制,而不是使用静态值来定义限制。作为示例,受限视图定义404可以基于来自视图的数据来动态地定义限制(例如,MAX_QUERIES_PER_DAY=SELECT mqpd FROM限制),而不是使用静态值来定义对查询数量的限制(例如,“MAX_QUERYS_PER_DAY=1000”)。
在操作410处,数据库系统102基于受限视图定义404生成数据库表上的视图,并且在操作412处,数据库系统102向用户418提供视图。用户418可以与用户406属于相同的账户,或者用户406和418可以属于不同的账户。用户418在操作414处接收视图,并在操作416处提交针对该视图的查询。更具体地,查询由用户418使用计算设备420提交。用户418可以使用被提供给计算设备420的命令行、用户界面或其他输入机构来提交查询。
在接收到查询后,数据库系统102在操作422处基于由受限视图定义404定义的、对视图的使用的一个或更多个限制来确定是否允许该查询。如上所述,在一些实例中,只有对视图的使用的限制的子集可能与用户418相关联。因此,在确定是否允许查询之前,数据库系统102可以识别与用户418相关联的一个或更多个限制。如果基于该一个或更多个限制,禁止查询,则在操作424处,数据库系统102响应于查询而提供错误消息。如果基于该一个或更多个限制,允许查询,则数据库系统102在操作426处处理查询,并在操作428处提供处理查询的结果。
取决于视图上的限制的类型,数据库系统102可以在确定是否允许查询之前执行查询的至少一些处理。也就是说,在一些实例中,数据库系统102可以在执行查询期间或之后确定禁止该查询。在这些实例中,尽管数据库系统102已经执行了查询的一些处理,但数据库系统102仍然响应于查询而提供错误消息。
在操作430处,对查询的响应(错误消息或结果)由用户418接收。对查询的响应可以由计算设备420呈现。例如,计算设备420可以向用户418显示错误消息或处理查询的结果。
图5和图6是示出根据本公开的一些实施例的,数据库系统102在执行用于生成和使用数据库表的受限视图的方法500时的操作的流程图。方法500可以体现为用于由一个或更多个硬件部件(例如,一个或更多个处理器)执行的计算机可读指令,使得方法500的操作可以由数据库系统102的部件执行。相应地,下面参考这一点通过示例的方式来描述方法500。然而,应当理解,方法500可以部署在各种其他硬件配置上,并且不旨在局限于部署在数据库系统102内。
根据实施例,方法500的操作可以以不同的方式重复,或者涉及未示出的中间操作。虽然方法500的操作可以以特定顺序来描绘和描述,但是执行操作的顺序可以在实施例之间变化,包括并行执行特定操作或者在单独的进程中执行操作的集合。例如,尽管受限视图的使用和生成作为方法500的一部分被一起描述和示出,但是应当理解,根据一些实施例,受限视图的使用和生成可以作为单独的进程来执行。
在操作505处,计算服务管理器108接收受限视图定义,该受限视图定义使用对视图的使用的一个或更多个限制来定义数据库表的视图。受限视图定义包括查询语句,该查询语句指定来自数据库表的要包含在视图中的数据。该一个或更多个限制可以包括基于元数据的限制或基于数据的限制。更具体地,限制可以对以下项进行限制:可以在单次查询中消费的数据子集、能够可见的数据粒度、可以从底层数据中提取的信息量、访问频率、对底层数据的操作(例如,以防止私人信息公开)或其组合。作为非限制性示例,该一个或更多个限制可以包括:对从视图访问的行的数量的限制、对在执行查询时产生的行的数量的限制、禁止从视图导出数据、禁止将视图与另一个视图连接(join)、禁止从视图中的特定列提取值、禁止进行列过滤、对从视图访问的列的数量的限制、对从视图处理的值的数量的限制、最小数据缩减因子、包括等式过滤器(equality filter)的要求、对每次查询的范围大小的限制以及查询率限制。
从第一用户(例如,从参与与数据库系统102的活动会话的计算设备)接收受限视图定义。根据一些实施例,受限视图定义可以指定与被授权访问视图的用户相对应的一个或更多个用户标识符。受限视图定义可以定义宽泛地适用于被授权访问受限视图的任何其他用户的限制,或者可以定义用于特定用户或账户的特定限制。例如,受限视图定义可以定义要应用于第二用户的第一限制,以及要应用于第三用户的第二限制。使该示例更进一步,受限视图定义还可以指定第一限制要应用于第二用户和第三用户,而第二限制仅应用于第三用户。
在操作510处,计算服务管理器108基于受限视图定义生成视图。如上所述,受限视图定义包括查询语句,该查询语句指定视图中要包含哪些数据。因此,在生成视图时,计算服务管理器108可以结合执行平台110来工作以执行查询语句,从而从数据库表中获得结果数据集。
在操作515处,计算服务管理器108接收针对视图的查询。查询可以指定要在视图上执行的一个或更多个操作。从第二用户接收该查询。在一些实例中,第一用户和第二用户属于同一个账户。在其他实例中,第一用户属于第一账户,而第二用户属于第二账户。
在操作520处,计算服务管理器108基于一个或更多个限制确定是否允许查询。如上所述,计算服务管理器108可以支持多种类别的限制,包括基于元数据的限制(例如,访问频率、访问的列的数量)和基于数据的限制(例如,返回的行的数量或数据缩减级别)。在计算服务管理器108能够确定是否允许查询之前,某些类型的基于数据的限制需要至少一些查询处理。因此,在确定是否允许查询时,计算服务管理器108可以与执行平台110一起工作来执行查询的至少一些处理,这取决于与视图相关联的限制类型。因此,取决于对视图的使用的限制,计算服务管理器108可以在确定是否允许查询时执行以下任何一项或更多项:将在处理查询时访问的行的数量与对从视图访问的行的数量的限制进行比较;将在执行查询时产生的行的数量与对在执行查询时产生的行的数量的限制进行比较;确定查询是否包括从视图导出数据的命令;确定查询是否包括将视图与另一个视图连接的命令;确定查询是否包括从视图中被禁止的列提取值的命令;确定查询是否包括列过滤器;将基于查询从视图访问的列的数量与对从视图访问的列的数量的限制进行比较;将从视图处理的值的数量与对从视图处理的值的数量的限制进行比较;确定查询是否达到最小数据缩减因子;确定查询是否包括等式过滤器;将查询的范围大小与对每次查询的范围大小的限制进行比较;以及将第二用户的查询率(例如,每天、每小时或每其他时间单位的查询数量)与查询率限制进行比较。
如果计算服务管理器108确定允许查询,则在操作525处,计算服务管理器108结合执行平台110来工作以提供从处理查询得到的结果数据集。如果计算服务管理器108基于一个或更多个限制确定禁止查询,则在操作530处,计算服务管理器108响应于查询而提供错误消息。错误消息指示禁止查询。在执行至少一些查询处理以确定是否允许查询的实例中,如果计算服务管理器108确定禁止查询,则计算服务管理器108仍然将提供错误消息,而不是提供处理的任何结果。
如上所述,受限视图定义可以定义对视图的使用的一组限制,其中仅该限制的子集适用于提供该查询的第二用户。因此,如图6所示,在一些实施例中,方法500还可以包括操作605和610,操作605和610可以在操作520之前执行,在操作520处,计算服务管理器108确定是否允许查询。在操作605处,计算服务管理器108识别与查询相关联的用户标识符,并且在操作610处,计算服务管理器108识别与用户标识符相关联的一个或更多个限制。即,计算服务管理器108识别与第二用户相关联的用户标识符,并使用该用户标识符来识别与第二用户相关联的限制。在示例中,为视图定义了一组限制,其中第一子集与第二用户相关联,并且第二子集与第三用户相关联。
示例
示例1是一种数据库系统,包括:至少一个硬件处理器;以及存储指令的至少一个存储器,该指令使该至少一个硬件处理器执行包括以下项的操作:接收定义数据库表上的视图的受限视图定义,该受限视图定义包括对视图的使用的一个或更多个限制;基于该受限视图定义生成数据库表上的视图;接收针对该视图的查询;以及根据对视图的使用的一个或更多个限制来确定是否允许针对该视图的查询。
示例2包括示例1的系统,其中,操作还包括:基于根据对受限视图的使用的一个或更多个限制确定允许该查询,提供从处理该查询得到的结果数据集。
示例3包括示例1或2中的任一个或更多个的系统,其中,操作还包括:基于根据对受限视图的使用的一个或更多个限制确定禁止查询,响应于查询,提供错误消息。
示例4包括示例1-3中任一个或更多个的系统,其中,确定是否允许针对受限视图的查询包括:识别与查询相关联的用户标识符;以及识别与该用户标识符相关联的至少一个限制。
示例5包括示例1-4中任一个或更多个的系统,其中:受限视图定义由第一用户提供;以及查询由第二用户提供。
示例6包括示例1-5中任一个或更多个的系统,其中,操作还包括:向第二用户提供视图。
示例7包括示例1-6中任一个或更多个的系统,其中,受限视图定义指定第二用户被允许使用视图。
示例8包括示例1-7中任一个或更多个的系统,其中,受限视图定义包括:与第二用户相关联的至少一个限制;以及与第三用户相关联的至少一个限制。
示例9包括示例1-8中任一个或更多个的系统,其中:受限视图定义包括查询语句;并且生成视图包括执行查询语句以从数据库表中获得结果数据集。
示例10包括示例1-9中任一个或更多个的系统,其中,该一个或更多个限制包括以下至少一个:对从视图访问的行的数量的限制、对在执行查询时产生的行的数量的限制、禁止从视图导出数据、禁止将视图与另一个视图连接、禁止从视图中的特定列提取值、禁止进行列过滤、对从视图访问的列的数量的限制、对从视图处理的值的数量的限制、最小数据缩减因子、包括等式过滤器的要求、对每次查询的范围大小的限制、以及查询率限制。
示例11包括示例1-10中任一个或更多个的系统,其中,确定是否允许针对视图的查询包括以下一项或更多项:将在处理查询时访问的行的数量与第一行限制进行比较;将在执行查询时产生的行的数量与第二行限制进行比较;确定查询是否包括从视图导出数据的命令;确定查询是否包括将视图与另一个视图连接的命令;确定查询是否包括从视图中被禁止的列提取值的命令;确定查询是否包括列过滤器;将从视图访问的列的数量与第一列限制进行比较;将从视图处理的值的数量与值限制进行比较;确定查询是否达到最小数据缩减因子;确定查询是否包括等式过滤器;将查询的范围大小与范围大小限制进行比较;以及将查询率与查询率限制进行比较。
示例12是一种方法,包括:接收定义数据库表上的视图的受限视图定义,该受限视图定义包括对视图的使用的一个或更多个限制;基于受限视图定义生成数据库表上的视图;接收针对该视图的查询;以及根据对视图的使用的一个或更多个限制来确定是否允许针对该视图的查询。
示例13包括示例12的方法,并且还包括:基于根据对受限视图的使用的一个或更多个限制确定允许查询,提供从处理该查询得到的结果数据集。
示例14包括示例12或13中任一个或更多个的方法,并且还包括:基于根据对受限视图的使用的一个或更多个限制确定禁止查询,响应于查询提供错误消息。
示例15包括示例12-14中任一个或更多个的方法,其中,确定是否允许针对受限视图的查询包括:识别与查询相关联的用户标识符;以及识别与该用户标识符相关联的至少一个限制。
示例16包括示例12-15中任一个或更多个的方法,其中:受限视图定义由第一用户提供;以及查询由第二用户提供。
示例17包括示例12-16中任一个或更多个的方法,并且还包括:向第二用户提供视图。
示例18包括示例12-17中任一个或更多个的方法,其中,受限视图定义指定第二用户被允许使用视图。
示例19包括示例12-18中任一个或更多个的方法,其中,该一个或更多个限制包括以下至少一个:对从视图访问的行的数量的限制、对在执行查询时产生的行的数量的限制、禁止从视图导出数据、禁止将视图与另一个视图连接、禁止从视图中的特定列提取值、禁止进行列过滤、对从视图访问的列的数量的限制、对从视图处理的值的数量的限制、最小数据缩减因子、包括等式过滤器的要求、对每次查询的范围大小的限制,以及查询率限制。
示例20包括示例12-19中任一个或更多个的方法,其中,确定是否允许针对视图的查询包括以下一项或更多项:将在处理查询时访问的行的数量与第一行限制进行比较;将在执行查询时产生的行的数量与第二行限制进行比较;确定查询是否包括从视图导出数据的命令;确定查询是否包括将视图与另一个视图连接的命令;确定查询是否包括从视图中被禁止的列提取值的命令;确定查询是否包括列过滤器;将从视图访问的列的数量与第一列限制进行比较;将从视图处理的值的数量与值限制进行比较;确定查询是否达到最小数据缩减因子;确定查询是否包括等式过滤器;将查询的范围大小与范围大小限制进行比较;以及将查询率与查询率限制进行比较。
示例21是一种计算机存储介质,其包括指令,该指令在由机器的一个或更多个处理器执行时,将该机器配置成执行包括以下项的操作:接收定义数据库表上的视图的受限视图定义,该受限视图定义包括对视图的使用的一个或更多个限制;基于该受限视图定义生成数据库表上的视图;接收针对该视图的查询;以及根据对视图的使用的一个或更多个限制来确定是否允许针对该视图的查询。
示例22包括示例21的计算机存储介质,其中,操作还包括:基于根据对受限视图的使用的一个或更多个限制确定允许查询,提供从处理该查询得到的结果数据集。
示例23包括示例21或22中任一个或更多个的计算机存储介质,其中,操作还包括:基于根据对受限视图的使用的一个或更多个限制确定禁止查询,响应于查询提供错误消息。
示例24包括示例21-23中任一个或更多个的计算机存储介质,其中,确定是否允许针对受限视图的查询包括:识别与查询相关联的用户标识符;以及识别与该用户标识符相关联的至少一个限制。
示例25包括示例21-24中任一个或更多个的计算机存储介质,其中:受限视图定义由第一用户提供;并且查询由第二用户提供。
示例26包括示例21-25中任一个或更多个的计算机存储介质,其中,操作还包括:向第二用户提供视图。
示例27包括示例21-26中任一个或更多个的计算机存储介质,其中,受限视图定义指定第二用户被允许使用视图。
示例28包括示例21-27中任一个或更多个的计算机存储介质,其中,受限视图定义包括:与第二用户相关联的至少一个限制;以及与第三用户相关联的至少一个限制。
示例29包括示例21-28中任一个或更多个的计算机存储介质,其中:受限视图定义包括查询语句;并且生成视图包括执行查询语句以从数据库表中获得结果数据集。
示例30包括示例21-29中任一个或更多个的计算机存储介质,其中,该一个或更多个限制包括以下至少一个:对从视图访问的行的数量的限制、对在执行查询时产生的行的数量的限制、禁止从视图导出数据、禁止将视图与另一个视图连接、禁止从视图中的特定列提取值、禁止进行列过滤、对从视图访问的列的数量的限制、对从视图处理的值的数量的限制、最小数据缩减因子、包括等式过滤器的要求、对每次查询的范围大小的限制,以及查询率限制。
图7示出了根据示例实施例的计算机系统形式的机器700的图解表示,在该计算机系统形式的机器700内可以执行指令集以使机器700执行本文所讨论方法中的任何一种或更多种方法。具体地,图7以计算机系统的示例形式示出了机器700的图解表示,用于使机器700执行本文所讨论方法中的任何一种或更多种方法的指令716(例如,软件、程序、应用、小程序、app、或其他可执行代码)可以在该计算机系统内执行。例如,指令716可以使机器700执行方法500中的任何一个或更多个操作。作为另一个示例,指令716可以使机器700实现图4-图8中的任何一个或更多个中所示的功能的部分。以这种方式,指令716将通用的、未编程的机器变换成特定的机器700(例如,计算服务管理器108、执行平台110、计算设备112、408和420、以及数据存储设备206),该特定的机器700被专门配置成以本文描述的方式执行所描述和示出的功能中的任何一个。
在替代实施例中,机器700作为独立的设备操作或者可以耦合(例如,联网)到其它机器。在联网部署中,机器700可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份来操作,或者作为对等(或分布式)网络环境中的对等机器来操作。机器700可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本(netbook)、智能电话、移动设备、网络路由器、网络交换机、网络桥接器(networkbridge)或能够顺序地或以其它方式执行指令716的任何机器,指令716指定要由机器700采取的动作。此外,虽然仅示出了单个机器700,但术语“机器”还应被理解为包括单独或联合地执行指令716以执行本文所讨论方法中的任何一种或更多种方法的机器700的集合。
机器700包括处理器710、存储器730和输入/输出(I/O)部件750,它们被配置成例如经由总线702彼此通信。在示例实施例中,处理器710(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合)可以包括例如可以执行指令716的处理器712和处理器714。术语“处理器”旨在包括多核处理器710,多核处理器710可以包括可以同时执行指令716的两个或更多个独立处理器(有时称为“核”)。尽管图7示出了多个处理器710,但是机器700可以包括具有单核的单个处理器、具有多核的单个处理器(例如,多核处理器)、具有单核的多个处理器、具有多核的多个处理器或者它们的任意组合。
存储器730可以包括主存储器732、静态存储器734和存储单元736,它们都可以由处理器710例如经由总线702访问。主存储器732、静态存储器734和存储单元736存储指令716,指令716体现本文描述的方法或功能中的任何一种或更多种。在由机器700执行期间,指令716也可以全部或部分地驻留在主存储器732内、静态存储器734内、存储单元736内、处理器710中的至少一个内(例如,在处理器的高速缓存存储器内)或其任何合适的组合。
I/O部件750包括用于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量值等的部件。包括在特定机器700中的具体的I/O部件750将取决于机器的类型。例如,诸如移动电话的便携式机器将有可能包括触摸输入设备或其他这样的输入机构,而无头服务器机器将不太可能包括这样的触摸输入设备。将认识到的是,I/O部件750可以包括图7中未示出的许多其他部件。I/O部件750根据功能进行分组仅仅是为了简化下面的讨论,并且该分组决不是限制性的。在各种示例实施例中,I/O部件750可以包括输出部件752和输入部件754。输出部件752可以包括视觉部件(例如,诸如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、声学部件(例如,扬声器)、其他信号发生器等。输入部件754可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于指向的输入部件(例如,鼠标、触控板、轨迹球、操纵杆、运动传感器或另一指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的定位和/或力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
通信可以使用多种技术来实现。I/O部件750可以包括通信部件764,通信部件764可操作来分别经由耦合782和耦合772将机器700耦合到网络780或设备770。例如,通信部件764可以包括网络接口部件或与网络780对接的另一合适的设备。在进一步的示例中,通信部件764可以包括有线通信部件、无线通信部件、蜂窝通信部件、和经由其他模态提供通信的其他通信部件。设备770可以是另一台机器或多种外围设备中的任一种(例如,经由通用串行总线(USB)耦合的外围设备)。例如,如上所述,机器700可以对应于计算服务管理器108、执行平台110中的任何一个,并且设备770可以包括数据存储设备206或本文描述的与基于网络的数据仓库系统102或存储平台104通信的任何其他计算设备。
可执行指令和机器存储介质
各种存储器(例如,730、732、734和/或处理器710和/或存储单元736的存储器)可以存储指令716和数据结构(例如,软件)的一个或更多个集合,这些指令716和数据结构体现本文所描述方法或功能中的任何一种或更多种或被本文所描述方法或功能中的任何一种或更多种所利用。当由处理器710执行时,这些指令716使各种操作实现所公开的实施例。
如本文所使用的,术语“机器存储介质”、“设备存储介质”和“计算机存储介质”意思相同,并且可以在本公开中互换使用。这些术语指的是存储可执行指令和/或数据的单个或多个存储设备和/或介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。相应地,这些术语应当被认为包括但不限于固态存储器以及光介质和磁介质,包括在处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括非易失性存储器,非易失性存储器包括例如:半导体存储器设备,诸如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、现场可编程门阵列(FPGA)和闪存设备;磁盘,例如内部硬盘和可移除磁盘;磁光盘;以及CD-ROM和DVD-ROM光盘。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”具体排除了载波、经调制的数据信号和其他这样的介质(其中的至少一些包含在下面讨论的术语“信号介质”中)。
传输介质
在各种示例实施例中,网络780的一个或更多个部分可以是自组织网络(ad hocnetwork)、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网络(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络、或两种或更多种这样的网络的组合。例如,网络780或网络780的一部分可以包括无线或蜂窝网络,并且耦合782可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或另一种类型的蜂窝或无线耦合。在该示例中,耦合782可以实现多种类型的数据传输技术中的任何一种,例如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、增强型数据速率GSM演进(EDGE)技术、包括3G、第四代无线(4G)网络、通用移动电信系统(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准的第三代合作伙伴计划(3GPP)、由各种标准设置组织定义的其他技术、其他长程协议、或其他数据传输技术。
指令716可以使用传输介质经由网络接口设备(例如,包括在通信部件764中的网络接口部件)并利用多种众所周知的传输协议(例如,超文本传输协议(HTTP))中的任何一种在网络780上传输或接收。类似地,指令716可以使用传输介质经由耦合772(例如,对等耦合)被传输或接收到设备770。术语“传输介质”和“信号介质”意思相同,并且在本公开中可以互换使用。术语“传输介质”和“信号介质”应被理解为包括能够存储、编码或携带用于由机器700执行的指令716的任何无形介质,并且包括数字或模拟通信信号或便于这样的软件的通信的其他无形介质。因此,术语“传输介质”和“信号介质”应被理解为包括任何形式的经调制的数据信号、载波等。术语“经调制的数据信号”意指这样的信号:其具有以对信号中的信息进行编码的这样的方式设置或更改的其特性中的一个或更多个特性。
计算机可读介质
术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意思相同,并且在本公开中可以互换使用。这些术语被定义为包括机器存储介质和传输介质。因此,这些术语包括存储设备/介质和载波/经调制的数据信号。
本文描述的示例方法的各种操作可以至少部分地由被临时配置(例如,通过软件)或永久配置为执行相关操作的一个或更多个处理器来执行。类似地,本文描述的方法可以至少部分是处理器实现的。例如,方法500的至少一些操作可以由一个或更多个处理器执行。某些操作的执行可以在一个或更多个处理器之间分配,该一个或更多个处理器不仅驻留在单个机器内,而且跨多个机器部署。在一些示例实施例中,一个或更多个处理器可以位于单个位置中(例如,在家庭环境、办公室环境或服务器场内),而在其他实施例中,处理器可以跨多个位置分布。
尽管参考具体的示例实施例描述了本公开的实施例,但显然地,在不偏离本发明主题的更广泛范围的情况下,可以对这些实施例做出各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的。形成本申请的一部分的附图通过说明而非限制的方式显示了其中可以实施主题的具体实施例。所示出的实施例以充分的细节被描述,以使本领域的技术人员能够实施本文公开的教导。可以使用其他实施例和从其中衍生的实施例,使得可以做出结构或逻辑的替换和改变而不偏离本公开的范围。因此,此详细描述不应被理解为限制性意义,并且各种实施例的范围仅由所附权利要求连同这些权利要求所享有的完整范围的等同物一起限定。
本发明主题的这样的实施例可以在本文中单独地和/或共同地由术语“发明”提到,这仅仅是为了便利,并不意图自愿将本申请的范围局限于任何单一发明或发明构思(如果实际上公开了多于一种发明或发明构思的话)。因此,虽然本文中已经说明和描述了特定实施例,但是应当理解,可以用经计算以实现相同目的的任何布置来替换所示出的特定实施例。本公开意图涵盖各种实施例的任何和所有改编或变型。在阅读以上描述后,以上实施例的组合以及本文未具体描述的其他实施例对于本领域的技术人员来说将是明显的。
在本文档中,术语“一个(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.根据权利要求1所述的系统,其中,确定是否允许针对所述受限视图的所述查询包括:
识别与所述查询相关联的用户标识符;以及
识别与所述用户标识符相关联的至少一个限制。
5.根据权利要求1所述的系统,其中:
所述受限视图定义由第一用户提供;以及
所述查询由第二用户提供。
6.根据权利要求5所述的系统,其中,所述操作还包括:
向所述第二用户提供所述视图。
7.根据权利要求5所述的系统,其中,所述受限视图定义指定所述第二用户被允许使用所述视图。
8.根据权利要求5所述的系统,其中,所述受限视图定义包括:
与所述第二用户相关联的至少一个限制;以及
与第三用户相关联的至少一个限制。
9.根据权利要求1所述的系统,其中:
所述受限视图定义包括查询语句;以及
生成所述视图包括执行所述查询语句以从所述数据库表获得结果数据集。
10.根据权利要求1所述的系统,其中,所述一个或更多个限制包括以下至少一个:对从所述视图访问的行的数量的限制、对在执行所述查询时产生的行的数量的限制、禁止从所述视图导出数据、禁止将所述视图与另一个视图连接、禁止从所述视图中的特定列提取值、禁止进行列过滤、对从所述视图访问的列的数量的限制、对从所述视图处理的值的数量的限制、最小数据缩减因子、包括等式过滤器的要求、对每次查询的范围大小的限制,以及查询率限制。
11.根据权利要求1所述的系统,其中,确定是否允许针对所述视图的所述查询包括以下一项或更多项:将在处理所述查询时访问的行的数量与第一行限制进行比较;将在执行所述查询时产生的行的数量与第二行限制进行比较;确定所述查询是否包括从所述视图导出数据的命令;确定所述查询是否包括将所述视图与另一个视图连接的命令;确定所述查询是否包括从所述视图中被禁止的列提取值的命令;确定所述查询是否包括列过滤器;将从所述视图访问的列的数量与第一列限制进行比较;将从所述视图处理的值的数量与值限制进行比较;确定所述查询是否达到了最小数据缩减因子;确定所述查询是否包括等式过滤器;将所述查询的范围大小与范围大小限制进行比较;以及将查询率与查询率限制进行比较。
12.一种方法,包括:
接收定义数据库表上的视图的受限视图定义,所述受限视图定义包括对所述视图的使用的一个或更多个限制;
基于所述受限视图定义,生成所述数据库表上的所述视图;
接收针对所述视图的查询;以及
根据对所述视图的使用的所述一个或更多个限制来确定是否允许针对所述视图的所述查询。
13.根据权利要求12所述的方法,还包括:
基于根据对所述受限视图的使用的所述一个或更多个限制确定允许所述查询,提供从处理所述查询得到的结果数据集。
14.根据权利要求12所述的方法,还包括:
基于根据对所述受限视图的使用的所述一个或更多个限制确定禁止所述查询,响应于所述查询提供错误消息。
15.根据权利要求12所述的方法,其中,确定是否允许针对所述受限视图的所述查询包括:
识别与所述查询相关联的用户标识符;以及
识别与所述用户标识符相关联的至少一个限制。
16.根据权利要求12所述的方法,其中:
所述受限视图定义由第一用户提供;并且
所述查询由第二用户提供。
17.根据权利要求16所述的方法,其中,还包括:
向所述第二用户提供所述视图。
18.根据权利要求16所述的方法,其中,所述受限视图定义指定所述第二用户被允许使用所述视图。
19.根据权利要求12所述的方法,其中,所述一个或更多个限制包括以下至少一个:对从所述视图访问的行的数量的限制、对在执行所述查询时产生的行的数量的限制、禁止从所述视图导出数据、禁止将所述视图与另一个视图连接、禁止从所述视图中的特定列提取值、禁止进行列过滤、对从所述视图访问的列的数量的限制、对从所述视图处理的值的数量的限制、最小数据缩减因子、包括等式过滤器的要求、对每次查询的范围大小的限制,以及查询率限制。
20.根据权利要求12所述的方法,其中,确定是否允许针对所述视图的所述查询包括以下一项或更多项:将在处理所述查询时访问的行的数量与第一行限制进行比较;将在执行所述查询时产生的行的数量与第二行限制进行比较;确定所述查询是否包括从所述视图导出数据的命令;确定所述查询是否包括将所述视图与另一个视图连接的命令;确定所述查询是否包括从所述视图中被禁止的列提取值的命令;确定所述查询是否包括列过滤器;将从所述视图访问的列的数量与第一列限制进行比较;将从所述视图处理的值的数量与值限制进行比较;确定所述查询是否达到了最小数据缩减因子;确定所述查询是否包括等式过滤器;将所述查询的范围大小与范围大小限制进行比较;以及将查询率与查询率限制进行比较。
21.一种计算机存储介质,其包括指令,所述指令在由机器的一个或更多个处理器执行时,将所述机器配置成执行包括以下项的操作:
接收定义数据库表上的视图的受限视图定义,所述受限视图定义包括对所述视图的使用的一个或更多个限制;
基于所述受限视图定义,生成所述数据库表上的所述视图;
接收针对所述视图的查询;以及
根据对所述视图的使用的所述一个或更多个限制来确定是否允许针对所述视图的所述查询。
22.根据权利要求21所述的计算机存储介质,其中,所述操作还包括:
基于根据对所述受限视图的使用的所述一个或更多个限制确定允许所述查询,提供从处理所述查询得到的结果数据集。
23.根据权利要求21所述的计算机存储介质,其中,所述操作还包括:
基于根据对所述受限视图的使用的所述一个或更多个限制确定禁止所述查询,响应于所述查询提供错误消息。
24.根据权利要求21所述的计算机存储介质,其中,确定是否允许针对所述受限视图的所述查询包括:
识别与所述查询相关联的用户标识符;以及
识别与所述用户标识符相关联的至少一个限制。
25.根据权利要求21所述的计算机存储介质,其中:
所述受限视图定义由第一用户提供;以及
所述查询由第二用户提供。
26.根据权利要求25所述的计算机存储介质,其中,所述操作还包括:
向所述第二用户提供所述视图。
27.根据权利要求25所述的计算机存储介质,其中,所述受限视图定义指定所述第二用户被允许使用所述视图。
28.根据权利要求25所述的计算机存储介质,其中,所述受限视图定义包括:
与所述第二用户相关联的至少一个限制;以及
与第三用户相关联的至少一个限制。
29.根据权利要求21所述的计算机存储介质,其中:
所述受限视图定义包括查询语句;以及
生成所述视图包括执行所述查询语句以从所述数据库表获得结果数据集。
30.根据权利要求21所述的计算机存储介质,其中,所述一个或更多个限制包括以下至少一个:对从所述视图访问的行的数量的限制、对在执行所述查询时产生的行的数量的限制、禁止从所述视图导出数据、禁止将所述视图与另一个视图连接、禁止从所述视图中的特定列提取值、禁止进行列过滤、对从所述视图访问的列的数量的限制、对从所述视图处理的值的数量的限制、最小数据缩减因子、包括等式过滤器的要求、对每次查询的范围大小的限制,以及查询率限制。
CN202180077198.1A 2020-11-16 2021-06-30 用于控制数据库系统中的信息访问的受限视图 Active CN116472527B (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202063114326P 2020-11-16 2020-11-16
US63/114,326 2020-11-16
US17/150,593 2021-01-15
US17/150,593 US11704306B2 (en) 2020-11-16 2021-01-15 Restricted views to control information access in a database system
PCT/US2021/039763 WO2022103447A1 (en) 2020-11-16 2021-06-30 Restricted views to control information access in a database system

Publications (2)

Publication Number Publication Date
CN116472527A true CN116472527A (zh) 2023-07-21
CN116472527B CN116472527B (zh) 2024-10-01

Family

ID=81587763

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180077198.1A Active CN116472527B (zh) 2020-11-16 2021-06-30 用于控制数据库系统中的信息访问的受限视图

Country Status (5)

Country Link
US (3) US11704306B2 (zh)
EP (1) EP4244727A4 (zh)
CN (1) CN116472527B (zh)
DE (1) DE202021004340U1 (zh)
WO (1) WO2022103447A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11853295B2 (en) 2020-11-16 2023-12-26 Snowflake Inc. Generation of views with restrictions on use

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12061712B2 (en) * 2021-07-26 2024-08-13 Sap Se Persisted data views supporting access control
US20240143674A1 (en) * 2022-10-27 2024-05-02 Onetrust Llc Processing and publishing scanned data for detecting entities in a set of domains via a parallel pipeline

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1729469A (zh) * 2002-09-04 2006-02-01 国际商业机器公司 对关系数据库进行访问控制的方法
CN1977227A (zh) * 2003-01-13 2007-06-06 甲骨文国际公司 属性相关的访问控制策略
CN1987861A (zh) * 2005-12-22 2007-06-27 国际商业机器公司 处理数据库查询的系统和方法
US20090300019A1 (en) * 2008-05-30 2009-12-03 Schumberger Technology Corporation Hierarchical item level entitlement
CN106164941A (zh) * 2013-12-31 2016-11-23 谷歌公司 提供与在消息中的模糊项相关的附加信息
CN108475288A (zh) * 2016-02-19 2018-08-31 华为技术有限公司 一种联合数据库统一访问控制的系统、方法和设备

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6038563A (en) * 1997-10-31 2000-03-14 Sun Microsystems, Inc. System and method for restricting database access to managed object information using a permissions table that specifies access rights corresponding to user access rights to the managed objects
US6636242B2 (en) * 1999-08-31 2003-10-21 Accenture Llp View configurer in a presentation services patterns environment
US6405212B1 (en) * 1999-09-27 2002-06-11 Oracle Corporation Database system event triggers
US6581060B1 (en) * 2000-06-21 2003-06-17 International Business Machines Corporation System and method for RDBMS to protect records in accordance with non-RDBMS access control rules
US7711750B1 (en) 2004-02-11 2010-05-04 Microsoft Corporation Systems and methods that specify row level database security
US7562092B2 (en) 2004-12-22 2009-07-14 Microsoft Corporation Secured views for a CRM database
US7243097B1 (en) 2006-02-21 2007-07-10 International Business Machines Corporation Extending relational database systems to automatically enforce privacy policies
US9178886B2 (en) * 2012-08-29 2015-11-03 Red Hat Israel, Ltd. Flattening permission trees in a virtualization environment
US10346418B2 (en) * 2016-12-16 2019-07-09 Sap Se Optimizing data access based on data aging
US11048815B2 (en) * 2018-08-06 2021-06-29 Snowflake Inc. Secure data sharing in a multi-tenant database system
US11188670B2 (en) * 2019-03-28 2021-11-30 Snowflake Inc. Secure data joins in a multiple tenant database system
US11113278B2 (en) * 2019-05-31 2021-09-07 Snowflake Inc. Data sharing and materialized views in multiple tenant database systems
US20210141920A1 (en) * 2019-11-08 2021-05-13 Okera, Inc. Dynamic view for implementing data access control policies
US11397826B2 (en) * 2020-10-29 2022-07-26 Snowflake Inc. Row-level security
US11704306B2 (en) 2020-11-16 2023-07-18 Snowflake Inc. Restricted views to control information access in a database system

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1729469A (zh) * 2002-09-04 2006-02-01 国际商业机器公司 对关系数据库进行访问控制的方法
CN1977227A (zh) * 2003-01-13 2007-06-06 甲骨文国际公司 属性相关的访问控制策略
CN1987861A (zh) * 2005-12-22 2007-06-27 国际商业机器公司 处理数据库查询的系统和方法
US20090300019A1 (en) * 2008-05-30 2009-12-03 Schumberger Technology Corporation Hierarchical item level entitlement
CN106164941A (zh) * 2013-12-31 2016-11-23 谷歌公司 提供与在消息中的模糊项相关的附加信息
CN108475288A (zh) * 2016-02-19 2018-08-31 华为技术有限公司 一种联合数据库统一访问控制的系统、方法和设备

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11853295B2 (en) 2020-11-16 2023-12-26 Snowflake Inc. Generation of views with restrictions on use

Also Published As

Publication number Publication date
DE202021004340U1 (de) 2023-10-12
US20230297563A1 (en) 2023-09-21
US11853295B2 (en) 2023-12-26
EP4244727A4 (en) 2024-10-23
CN116472527B (zh) 2024-10-01
US20240070148A1 (en) 2024-02-29
EP4244727A1 (en) 2023-09-20
WO2022103447A1 (en) 2022-05-19
US20220156250A1 (en) 2022-05-19
US11704306B2 (en) 2023-07-18

Similar Documents

Publication Publication Date Title
US11755576B1 (en) Data-driven task-execution scheduling using machine learning
EP3910473B1 (en) Flexible computing
CN116472527B (zh) 用于控制数据库系统中的信息访问的受限视图
US20220237192A1 (en) Predictive resource allocation for distributed query execution
US11138038B1 (en) Adaptive freepool size prediction
US20230169202A1 (en) Cloud data sharing for applications
CN113632073B (zh) 数据源上的可扩展流
EP4187402A1 (en) Replication of account security features in multiple deployment database
WO2023244972A1 (en) Unstructured file replication staged between database deployments
US12052249B2 (en) Facilitating access to remotely stored credentials for accessing external resources
EP4352614A1 (en) Stored procedures in a database
WO2022072024A1 (en) Autoscaling external function requests
US11586621B1 (en) Parallel scan of single file using multiple threads
US11734451B1 (en) Secure continuous compliance enforcement on a data exchange system

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.

GR01 Patent grant
GR01 Patent grant