掌桥专利:专业的专利平台
掌桥专利
首页

相关申请

本申请根据35 U.S.C.§119(e)要求于2019年5月31日提交的美国专利申请第16/428,592号的权益,其全部内容特此通过引用并入本文。

技术领域

本公开涉及管理数据存储和计算资源的资源管理系统和方法。

背景

每天产生的数据量是惊人的。在由许多服务提供者、商家、顾客(customer)、数据存储库和其他实体组成的多样化生态系统(ecosystem)中,存在许多数据源。数据科学应用和机器学习技术能够使用数据来提供见解,检测异常并执行其它有用的功能。然而,这些技术受限制于可用数据量和可用数据所代表的主题领域。

改进在此类应用中使用的数据的可用性将是本领域的进步。

附图简述

参考以下附图描述了本公开的非限制性和非穷举性实施例,其中,除非另外指明,否则贯穿各个附图,相同的附图标记表示相同的部分。

图1是描绘其中可以实现本文公开的方法的示例计算环境的框图。

图2是根据本发明的实施例的可用于实现数据交换的数据的示意性框图。

图3是根据本发明的实施例的用于实现数据交换的组件的示意性框图。

图4A是根据本发明的实施例的用于在数据交换中的实体之间控制数据共享的方法的过程流程图。

图4B是示出根据本发明的实施例的用于实现数据的私有共享的数据的图。

图4C是示出根据本发明的实施例的用于实现数据的私有共享的安全视图的图。

图5是根据本发明的实施例的用于在数据交换中的实体之间公共共享数据的方法的过程流程图。

图6是根据本发明的实施例的用于在数据交换中执行双向共享的方法的过程流程图。

图7是根据本发明的实施例的用于在数据交换中提供丰富的数据的方法的过程流程图。

图8是描绘示例计算设备的框图。

详细描述

在下面的描述中,参考形成说明书的一部分的附图,并且在附图中通过图示的方式示出了可以实践本公开的特定示例性实施例。足够详细地描述了这些实施例,以使本领域技术人员能够实践本文公开的概念,并且应当理解,在不脱离本公开的范围的情况下,可以对各种公开的实施例进行修改,并且可以利用其它实施例。因此,以下详细描述不应被视为限制性的。

在整个说明书中,对“一个实施例”、“实施例”、“一个示例”或“示例”的引用是指结合该实施例或示例描述的特定特征、结构或特性包括在本公开的至少一个实施例中。因此,在整个说明书中各处出现的短语“在一个实施例中”、“在实施例中”、“一个示例”或“示例”不一定都指的是同一实施例或示例。另外,应当理解,随此提供的附图是出于对本领域普通技术人员的解释的目的,并且附图不一定按比例绘制。

根据本公开的实施例可以体现为装置、方法或计算机程序产品。因此,本公开可以采取完全包括硬件的实施例、完全包括软件的实施例(包括固件、常驻软件、微代码等)或结合了在本文中通常都可以统称为“电路”、“模块”或“系统”的软件和硬件方面的实施例。此外,本公开的实施例可以采取计算机程序产品的形式,计算机程序产品体现在任何有形表达介质中,具有嵌入该介质中的计算机可用程序代码。

可以利用一种或更多种计算机可用或计算机可读介质的任何组合。例如,计算机可读介质可以包括便携式计算机磁盘、硬盘、随机存取存储器(RAM)设备、只读存储器(ROM)设备、可擦可编程只读存储器(EPROM或闪存)设备、便携式光盘只读存储器(CDROM)、光学存储设备和磁性存储设备中的一种或更多种。可以以一种或更多种编程语言的任何组合来编写用于执行本公开的操作的计算机程序代码。可以将此类代码从源代码编译为适合于将在其上执行代码的设备或计算机的计算机可读汇编语言或机器代码。

实施例也可以在云计算环境中实现。在本说明书和所附权利要求中,“云计算”可以被定义为用于使得能够对可配置计算资源(例如,网络、服务器、存储装置、应用和服务)的共享池进行普遍、方便、按需的网络访问的模型,其可以经由虚拟化被快速配置并以最小的管理工作量或服务提供者交互来发布(released),并且然后相应地进行扩展。云模型可以由各种特征(例如,按需自助服务、广泛的网络访问、资源池化(resource pooling)、快速弹性和可衡量的服务)、服务模型(例如,软件即服务(“SaaS”)、平台即服务(“PaaS”)和基础架构即服务(“IaaS”))以及部署模型(例如,私有云、社区云、公共云和混合云)组成。

附图中的流程图和框图示出了根据本公开的各种实施例的系统、方法和计算机程序产品的可能实现的架构、功能和操作。就这一点而言,流程图或框图中的每个框可以表示代码的模块、段或部分,其包括用于实现指定的逻辑功能的一个或更多个可执行指令。还应注意,框图或流程图的每个框以及框图或流程图中的框的组合,可以通过执行指定功能或动作的基于专用硬件的系统或专用硬件和计算机指令的组合来实现。这些计算机程序指令还可以存储在计算机可读介质中,该计算机可读介质可以指导计算机或其它可编程数据处理装置以特定方式运行,使得存储在计算机可读介质中的指令产生包括指令装置的制品,该指令装置实现在流程图和/或一个或更多个流程图框中指定的功能/动作。

本文描述的系统和方法使用新的数据处理平台提供了灵活且可扩展的数据仓库(warehouse)。在一些实施例中,所描述的系统和方法利用支持基于云的存储资源,计算资源等的云基础设施。示例的基于云的存储资源以低成本提供了按需可用的大存储容量。此外,这些基于云的存储资源可能是容错的并且高度可扩展,这在私有数据存储系统中实现可能会很昂贵。示例的基于云的计算资源是按需可用的,并且可以基于资源的实际使用水平来定价。通常,以快速方式动态部署、重新配置和停用(decommission)云基础设施。

在所描述的系统和方法中,数据存储系统利用基于SQL(结构化查询语言)的关系数据库。然而,这些系统和方法适用于使用任何数据存储架构和使用任何语言在数据存储和检索平台内存储和检索数据的任何类型的数据库以及任何类型的数据存储和检索平台。本文描述的系统和方法进一步提供了多租户(multi-tenant)系统,该多租户系统支持隔离不同顾客/客户端(client)之间以及同一顾客/客户端内的不同用户之间的计算资源和数据。

图1是其中可以实现本文公开的系统和方法的示例计算环境100的框图。特别地,可以实现云计算平台102,诸如亚马逊网络服务(AMAZON WEB SERVICES,AWS)、微软天蓝色(MICROSOFT AZURE)、谷歌云(GOOGLE CLOUD)等等。如本领域中已知的,云计算平台102提供可以被获取(购买)并且被配置为执行应用和存储数据的计算资源和存储资源。

云计算平台102可以执行数据仓库模块104,该数据仓库模块104提供数据存储(例如数据管理和访问)以及分析功能(例如SQL查询、分析和其它计算能力)二者。例如,数据仓库模块104可以是由SNOWFLAKE实现的数据仓库。数据仓库模块104可以在云计算平台102、不同的云计算平台或与云计算平台102对接的不同服务器上执行以在云计算平台上执行数据仓库功能。

注意,可能存在在多个云计算平台102上执行的数据仓库模块104的实例。数据仓库模块104的这些实例可以彼此通信以便根据本文公开的方法跨多个云计算平台协调数据交换。

数据仓库模块104可以托管或访问交换管理模块106,该交换管理模块106促进不同用户之间的数据共享。例如,数据仓库模块104可以管理数据库108的存储和访问,该数据库108针对不同用户(例如不同的企业或个人)存储用户数据110的各种实例。用户数据可以包括由该用户存储和访问的数据的用户数据库112。

用户数据库112可以受到访问控制,使得仅在使用数据仓库模块104进行认证后,才允许数据所有者改变和访问数据库112。例如,可以对数据库112中的数据进行加密使得仅能够使用数据所有者拥有的解密信息对它进行解密。使用交换管理模块106,可以根据本文公开的方法以受控的方式与其他用户共享来自用户数据库112的受制于这些访问控制的特定数据。特别地,用户可以指定可以以不受控制的方式与公众共享或如上所述以受控的方式与特定其他用户共享的共享114。用户数据110还可指定消费共享116,该消费共享116是该用户已获得访问权的其他用户的共享114。

注意,当第一用户向第一用户的消费共享116添加数据时,消费共享116的数据不被复制到第一用户的用户数据110。取而代之,消费共享116是对第二用户的用户数据110中的共享数据的引用,然后根据第二用户施加的控制,如第一用户所请求对其进行访问。如果由第二用户改变了消费共享116所引用的数据,则第一用户将能够访问该修改的数据(受任何访问控制限制),因为两个用户都使用相同版本的数据。

然后,共享数据可用于处理SQL查询,诸如连接、聚合或其它分析。在一些情况下,第二用户可以定义共享114,使得仅允许关于共享数据执行“安全连接”。可以执行安全连接,使得可以关于共享数据执行分析,但是实际共享数据不能由第一用户访问。可以在2019年3月18日提交并且题为SECURE DATA JOINS in A MULTIPLE TENENT DATABASE SYSTEM(代理人案卷号SNOW-04100)的美国申请序列号16/368,339中所述执行安全连接,该申请的全部内容特此通过引用并入本文。

云计算平台102可以实现服务模块118,诸如软件即服务(SaaS)平台(例如SALESFORCE)。服务模块118可以独立于数据仓库模块104例如由不同的实体操作。因此,服务模块118可以是数据仓库模块104的用户。服务模块118可以定义各种界面,服务模块118的用户可以通过这些界面来访问它。例如,认证界面120可以使用户能够关于服务模块118进行认证,诸如借助于登录信息(用户名和密码)、证书、令牌或其它认证信息。

服务模块118可以创建和/或访问服务数据库128,该服务数据库128存储由用户根据由服务模块118实现的功能生成和使用的用户数据130。因此,用户数据130可以由特定用户拥有,使得仅当通过认证界面120进行认证后,服务模块118才允许访问特定用户的数据130。

在一些实施例中,服务数据库128由数据仓库模块104实现和管理,使得通过由数据仓库模块104定义的界面来执行对数据库128的数据读取和写入。

在所示的配置中,服务模块118和数据仓库模块104驻留在同一云计算平台102中。在其它实施例中,服务模块118在不同的云计算平台上或在单独的服务器系统上执行。

诸如膝上型计算机、台式计算机、移动电话、平板计算机或其它计算设备的用户设备126可以用于通过诸如互联网的网络127来访问数据仓库模块104或服务模块118。

在下面的描述中,将动作归因于用户,特别是消费者和提供者。应当理解此类动作是关于由此类用户操作的设备126执行的。例如,对用户的通知可以被理解为是发送到设备126的通知,可以理解是通过用户的设备126接收来自用户的输入或指令,并且用户与界面的交互应该被理解为与用户设备126上的界面的交互。此外,归因于用户(消费者或提供者)的数据库操作(连接、聚合、分析等)应被理解为包括由数据仓库模块104响应于来自该用户的指令执行此类动作。

参考图2,交换管理模块106可以关于一些或全部所示交换数据200进行操作,该数据可以存储在执行交换管理模块106的平台(例如,云计算平台102)上或某个其它位置处。

交换数据200可以包括描述由第一用户(“提供者”)共享的数据的多个列表202。列表202可以包括描述共享数据的元数据204。元数据204可以包括以下一些或全部信息:

·共享数据的共享者的标识符

·共享数据的共享者的统一资源定位符(URL)

·共享的名称

·表的名称(可包括共享表的模式和模式视图)

·共享数据所属的类别

·共享数据的更新频率

·表的目录

·列数和行数

·列或行的名称

·示例表(例如,表的行和列的样本)

·可以针对表运行的示例查询

·表的示例视图

·基于表中数据的示例曲线图、可视化图或仪表板

·供商业智能工具(诸如查找器块)使用的元数据

·表中包含的数据的文本(散文)描述

·描述该表的关键字列表,以便于搜索

·指向与共享数据有关的文档的链接(例如URL)

·刷新间隔,指示共享数据多久更新

·数据最后更新的日期。

列表202可以包括访问控制206。例如,访问控制206可以指示共享数据不受限制地可供公众使用(如本文其它地方使用的“任何共享”)。访问控制206可以指定被允许访问数据的用户类别(特定组或组织的成员)。访问控制206可以指定“点对点”共享(参见图4的讨论),其中用户可以请求访问,但是仅在提供者的批准下才被允许访问。访问控制206可以指定被排除在能够访问由列表202所引用的数据之外的用户的一组用户标识符。

注意,一些列表202可以被不具有认证或访问许可的用户发现,而只有在随后的认证步骤之后才允许实际访问(参见图4和图6的讨论)。访问控制206可以指定列表202仅可由特定用户或用户类别发现。

还应注意,列表202的默认功能是共享所引用的数据不可由消费者导出。可替代地,访问控制206可以指定不允许这样做。例如,访问控制206可以指定仅可以关于共享数据执行安全操作(如下所讨论的安全连接和安全函数),使得不允许查看和导出共享数据。

在一些实施例中,一旦关于列表202认证了用户,则对该用户的引用(例如,该用户在数据仓库模块104中的账户的用户标识符)被添加到访问控制206,使得该用户随后将无需进一步认证就可以访问列表202引用的数据。

列表202可以定义一个更或多个过滤器208。例如,过滤器208可以定义在浏览目录220时可以查看对列表202的引用的用户的特定用户标识符214。过滤器208可以定义在浏览目录220时可以查看对列表202的引用的用户类别(特定行业的用户,与特定公司或组织相关联的用户,特定地理区域或国家内的用户)。以该方式,可以由交换管理模块106使用相同的组件来实现私有交换。在一些实施例中,被排除访问列表202(即,将列表202添加到被排除用户的消费共享116)的被排除用户在浏览目录220时仍可以被允许查看列表的表示,并且可以进一步被允许请求访问列表202,如下所讨论的。可以在呈现给列表202的提供者的界面中列出由此类被排除用户和其他用户访问列表的请求。列表202的提供者然后可以查看对列表的访问的需求并选择扩展过滤器208以允许被排除的用户或被排除的用户类别(例如,被排除的地理区域或国家中的用户)的访问权。

过滤器208可以进一步定义用户可以查看哪些数据。特别地,过滤器208可以指示选择列表202以添加到该用户的消费共享116的用户被允许访问该列表所引用的、但仅仅是过滤版本的数据,该过滤版本仅包括与该用户的标识符214相关联、与该用户的组织相关联或特定于用户的某个其它分类的数据。在一些实施例中,私有交换是通过邀请进行的:在传递接受从提供者接收到的邀请后,由提供者邀请以查看私有交换的列表202的用户被允许通过交换管理模块进行私有交换。

在一些实施例中,列表202可以被寻址到单个用户。因此,对列表202的引用可以被添加到用户可查看的一组“待定共享”。在用户将批准传递给交换管理模块106后,该列表202被添加到用户的消费共享116。

列表202可以进一步包括使用数据210。例如,数据仓库模块104可以实现积分系统,其中积分由用户购买,并且每次用户运行查询,存储数据或使用由数据仓库模块104实现的其它服务时都将消费积分。因此,使用数据210可以记录通过访问共享数据而消费的积分。使用数据210可以包括其它数据,诸如查询次数、针对共享数据执行的多种类型中的每种类型的聚合次数、或其它使用统计信息。在一些实施例中,用于用户的一个列表202或多个列表202的使用数据以共享数据库的形式被提供给用户(即,交换管理模块106将对包括使用数据的数据库的引用添加到用户的消费共享116)。

交换数据200可以进一步包括用户记录212。用户记录212可以包括识别与用户记录212相关联的用户的数据,例如,具有由数据仓库模块104管理的用户数据110的用户的标识符(例如,仓库标识符)。

用户记录212可以列出用户的共享114,例如,由用户创建的引用列表202。用户记录212可以列出用户消费共享116,例如由另一个用户创建并已根据本文描述的方法与用户的账户相关联的引用列表202。例如,列表202可以具有标识符,该标识符将用于在用户记录212的共享114或消费共享116中引用列表202。

交换数据200可以进一步包括目录220。目录220可以包括所有可用列表202的列表,并且可以包括来自元数据204的数据的索引,以便于根据本文描述的方法进行浏览和搜索。在一些实施例中,列表202以JavaScript对象符号(JSON)对象的形式存储在目录中。

注意,在不同的云计算平台上存在数据仓库模块104的多个实例的情况下,数据仓库模块104的一个实例的目录220可以在一个或更多个其它云计算平台102上存储来自其它实例的列表或对列表的引用。因此,每个列表202可以是全局唯一的(例如,被分配了跨数据仓库模块104的所有实例的全局唯一的标识符)。例如,数据仓库模块104的实例可以同步其目录220的副本,使得每个副本指示可从数据仓库模块104的所有实例获得的列表102。在一些实例中,列表202的提供者可以指定它只能在指定的一个或更多个计算平台102上可用。

在一些实施例中,目录220在互联网上可用,使得其可由诸如BING或GOOGLE的搜索引擎搜索。该目录可能受搜索引擎优化(SEO)算法支配,以提高其可见性。潜在的消费者因此可以从任何网络浏览器浏览目录220。交换管理模块106可以公开链接到每个列表202的统一资源定位符(URL)。该URL可以是可搜索的,可以在由交换管理模块106实现的任何界面之外共享。例如,列表202的提供者可以发布其列表202的URL,以便促进其列表202及其品牌的使用。

图3示出交换管理模块106中可以包括的各种组件300-310。创建模块300可以提供用于创建列表202的界面。例如,数据仓库模块104的网页界面使用户能够在设备126上选择数据,例如用户的用户数据110中的特定表,用于共享并输入定义一些或全部元数据204、访问控制206和过滤器208的值。在一些实施例中,创建可以由用户通过在云计算平台102上执行并通过用户设备126上的网页界面访问的SQL解释器中的SQL命令来执行。

确认模块302可以确认由提供者在尝试创建列表202时提供的信息。注意,在一些实施例中,归因于确认模块302的动作可以由人回顾提供者提供的信息来执行。在其它实施例中,这些动作是自动执行的。确认模块302可以执行或有助于人类操作员执行以下动作中的一些或全部:

·验证元数据204是一致的,例如引用的共享数据与描述共享数据的任何其它信息是一致的。

·验证元数据204引用的共享数据不是盗版数据、个人识别信息(PII)、个人健康信息(PHI)或不希望共享或非法的其它数据。

·验证数据是否新鲜并在合理的时间段内(例如至少每天)更新。

·验证数据不是静态的(即,无法从其它静态公共源获得)。

·验证数据不只是样本,即数据足够完整进而有用的。例如,地理上受限制的数据可能是不希望的,而在其他方面没有限制的数据的聚合可以仍然是有用的。

交换管理模块106可以包括搜索模块304。搜索模块304可以实现可由用户在用户设备126上访问的网页界面,以便关于目录220中的元数据调用对搜索字符串的搜索,接收对搜索的响应,并选择对搜索结果中列表202的引用,以将其添加到执行搜索的用户的用户记录212的消费共享116中。在一些实施例中,搜索可以由用户通过在云计算平台102上执行并通过用户设备126上的网页界面访问的SQL解释器中的SQL命令来执行。例如,可以通过针对下面讨论的SQL引擎310内的目录220的SQL查询来执行共享的搜索。

搜索模块304可以进一步实现推荐算法。例如,推荐算法可以基于用户的消费共享116中或先前在用户的消费共享中的其它列表来为用户推荐其它列表202。推荐可以基于逻辑相似性:一种天气数据来源导致第二天气数据来源的推荐。可以基于不同点进行推荐:一个列表用于一个域(地理区域、技术领域等)中的数据,结果导致不同域(不同地理区域、相关技术领域等)中的列表,以便于用户分析的完整覆盖。

交换管理模块106可以包括访问管理模块306。如上所述,用户可以添加列表202。这可能需要关于列表202的提供者的认证。一旦列表202被添加到用户的用户记录212的消费共享116,用户可以(a)每次访问列表202引用的数据时都需要认证,或者(b)一旦添加了列表202就自动认证并被允许访问数据。访问管理模块306可以管理对用户的消费共享116中的数据的后续访问的自动认证,以便提供对共享数据的无缝访问,就好像它是该用户的用户数据110的一部分一样。为此,访问管理模块306可以访问列表202的访问控制206、证书、令牌或其它认证材料,以便在执行对共享数据的访问时对用户进行认证。

交换管理模块106可以包括连接模块308。连接模块308管理由用户的消费共享116引用的共享数据(即来自不同提供者的共享数据)彼此以及与用户拥有的数据的用户数据库112的集成。特别地,连接模块308可以管理关于这些各种数据来源的查询和其它计算功能的执行,使得它们的访问对用户是透明的。连接模块308可以进一步管理数据的访问以对共享数据实施限制,例如使得可以执行分析并显示分析结果,而不会将基础数据暴露给数据消费者(其中该限制由列表202的访问控制206指示)。

交换管理模块106可进一步包括标准查询语言(SQL)引擎310,该SQL引擎被编程为从用户接收查询并关于查询所引用的数据执行查询,该数据可以包括用户的消费共享116和用户拥有的用户数据112。SQL引擎310可以执行本领域中已知的任何查询处理功能。SQL引擎310可以另外地或可替代地包括本领域中已知的任何其它数据库管理工具或数据分析工具。SQL引擎310可以定义在云计算平台102上执行的网页界面,通过该网页界面输入SQL查询并呈现对SQL查询的响应。

参考图4A,所示的方法400可以由交换管理模块106执行,以便实现第一用户(“提供者402”)和第二用户(“消费者404”)之间的点对点共享。

方法400可以包括提供者输入406元数据。这可以包括提供者的设备126上的用户将元数据输入到由交换管理模块106提供的网页中的表格的字段中。在一些实施例中,可以通过SQL引擎310使用SQL命令来输入406元数据。元数据项可以包括以上关于列表202的元数据204所讨论的那些项中的一些或全部。步骤406可以包括接收用于列表202的其它数据,诸如访问控制206和定义过滤器208的参数。

提供者402然后可以在设备126上调用表格和输入数据的提交。

交换管理模块106然后可以验证408元数据并确认410由元数据引用的数据。这可以包括执行归因于确认模块302的一些或全部动作。

如果元数据和共享数据没有被成功验证408和确认410,则交换管理模块106可以诸如借助于通过网络界面的通知来通知提供者402,在步骤406通过该网络界面提交元数据。

如果元数据和共享数据没有被成功验证408和确认410,则交换管理模块106可以诸如通过在步骤406通过其提交元数据的网络界面来通知提供者402。

交换管理模块106可以进一步创建412包括在步骤406提交的数据的列表202,并且可以进一步在目录220中创建条目。例如,元数据中的关键字、描述性文本和其它信息项可以被索引以便于搜索。

注意,步骤406-412可以借助于提供给提供者402的界面来执行。此类界面可以包括诸如:

·界面元素,用于输入列表202的数据(元素204-210中的一些或全部),并调用列表202向目录220的添加。

·调用取消发布列表202(例如,使其他用户不可查看)的界面元素。

·编辑列表的元数据204并改变为元数据204的较新版本或回滚到先前版本。

·用于查看列表202的再现(就像它将呈现给消费者404的那样)的界面元素。

·添加列表202的待定请求列表以及用于调用添加列表202的请求的批准、拒绝添加列表202的请求的界面元素。

·界面元素,用于调用向消费者404添加列表202的权限的撤销,该权限先前已被批准以添加列表,或向所有消费者404删除对列表202的所有访问。

·已经添加了提供者402的列表202的消费者404的编号(number)和身份的表示。

·该列表202的所有消费者404或特定消费者404对列表202引用的数据的使用模式的表示。

然后,充当消费者404的另一用户可以浏览414目录。这可以包括访问提供目录搜索界面的可公开访问的网页。该网页可以在数据仓库模块104的外部,即可以由未登录数据仓库模块104的用户访问。在其它实施例中,只有登录到数据仓库模块104的用户才能够访问搜索界面。如上所述,可以使用对引用目录220的SQL引擎310的查询来执行目录220的浏览。例如,用户设备126可以具有到SQL引擎310的基于网络的界面,通过该界面针对目录220的查询由消费者404输入并被发送到SQL引擎310。

响应于消费者的浏览活动,交换管理模块106可以显示目录并关于该目录执行416搜索,以识别具有与消费者404提交的查询或搜索字符串相对应的元数据的列表202。执行该搜索的方式可以根据本领域中已知的任何搜索算法。在SQL查询的情况下,可以根据本领域中已知的用于处理SQL查询的任何方法来处理查询。

交换管理模块106可以将搜索字符串或SQL查询的结果返回给消费者404的设备126,诸如以对根据搜索算法或处理SQL查询所识别的列表202的引用列表的形式。该列表可以包括元数据项或消费者404可以选择以调用元数据显示的链接。特别地,列表202的元数据204的任何项可以显示在列表中或通过列表中与搜索记录202相对应的条目链接。

注意,图4A中引用的交换可以是私有交换或公共交换。特别地,在浏览414期间被显示和搜索416并且消费者404可以查看的那些列表202可以限于具有过滤器208的那些列表,该过滤器208指示该列表202可以被消费者404、消费者的组织或消费者404所属的某个其它分类查看。在交换是公开的情况下,则在一些实施例中,消费者404不需要满足任何过滤标准。

方法400可以包括消费者404请求418访问与列表202相对应的数据。例如,通过在消费者404的设备126上选择列表中的条目,这调用到交换管理模块106的请求的传输,以将与该条目相对应的列表202添加到消费者404的用户记录212中的消费共享116中。

在所示的示例中,所选条目的列表202具有访问控制206。因此,交换管理模块106可以将请求连同消费者404的标识符一起转发420至提供者402。消费者404和提供者402然后可以交互以执行以下两者之一或两者:(a)关于提供者402认证(登录)424消费者404;以及(b)处理424用于访问列表202所引用的数据的支付。该交互可以根据任何登录或认证或本领域已知的方法。同样地,可以实现用于处理各方之间的支付的任何方法。在一些实施例中,由于在访问提供者的共享数据时消费者404消费的积分,数据仓库模块可以向提供者402提供折扣。积分可以是由用户购买的使用单位,然后响应于消费者404所使用的数据仓库模块104的服务(例如,对由数据仓库模块104托管的数据执行的查询和其它分析)而被消费。交互可以直接在消费者404的设备126与提供者402之间进行,或可以通过交换管理模块106执行。在一些实施例中,交换管理模块106使用访问控制信息206来认证消费者404,使得不需要与提供者402的交互。同样,列表202可以定义支付条款,使得交换管理模块106无需与提供者402交互就可以处理支付。一旦提供者402确定消费者404被认证并被授权访问列表202所引用的数据,则提供者402可以向交换管理模块106通知426消费者404可以访问列表202所引用的数据。作为响应,交换管理模块将对列表202的引用添加428到消费者404的用户记录212中的消费共享116。

注意,在一些情况下,列表202没有列出特定数据,而是引用了特定服务模块118,例如服务的品牌名称或公司名称。因此,访问列表202的请求是访问发出请求的消费者的用户数据130的请求。因此,步骤422、424、426包括关于认证界面120对消费者404进行认证,使得服务模块118可以验证消费者404的身份并向交换管理模块106通知哪些数据要与消费者404共享。并指示消费者404被授权访问该数据。

在一些实施例中,这可以使用“单点登入”方法来实现,其中,消费者404关于服务模块118进行一次认证(登录),并且然后使其能够访问服务数据库128中的消费者404数据。例如,交换管理模块106可以在消费者404的设备126上向服务模块118呈现界面。消费者404将认证信息(用户名和密码、证书、令牌等)输入到界面中,并且该信息被转发到服务模块118的认证界面120。认证信息处理认证信息,并且,如果该信息对应于用户账户,则向交换管理模块106通知关于该用户账户认证了消费者404。交换管理模块106然后可以识别该用户账户的用户数据130并创建引用该用户数据130的数据库。然后,对该数据库的引用将被添加到消费者404的消费共享116。

在一些实施例中,关于数据仓库模块104的用户认证足以关于服务模块118认证用户,使得鉴于消费者404的先前认证,省略了步骤422、424。例如,消费者404可以将数据仓库模块104指示给服务模块118以被授权验证消费者404的身份。

在一些实施例中,交换管理模块106使用访问控制信息206来认证消费者404,使得不需要与提供者402的交互。同样,列表202可以定义支付条款,使得交换管理模块106无需与提供者的402交互就可以处理支付。因此,在此类实施例中,步骤422由交换管理模块106执行,并且步骤426被省略。一旦消费者404被认证和/或被提供所需的支付,则交换管理模块106然后执行步骤428。

在一些实施例中,将列表202添加到消费者404的消费共享中可以进一步包括:从消费者404接收对呈现给消费者404的条款的认同。在一些实施例中,在消费者404已经根据本文所述的方法400或其它方法添加了列表202之后,由提供者402改变协议的条款的情况下,交换管理模块106可以要求消费者404同意改变的条款,然后再允许其继续访问列表202引用的数据。

添加428列表202引用的数据可以包括创建引用数据的数据库。然后可以将对该数据库的引用添加到消费共享116,并且然后可以将该数据库用于处理引用共享记录所引用的数据的查询。添加428数据可以包括添加根据过滤器208过滤的数据。例如,列表202所引用并且与消费者404、消费者404的组织或消费者404的某个其它分类相关联的数据(例如,数据的过滤视图)。

在一些实施例中,将列表202添加到用户记录212可以包括改变列表202的访问控制206以引用消费者404的身份数据214,使得访问列表202所引用的数据的尝试将由交换管理模块106允许并执行。

消费者404然后可以通过消费者的设备126将查询输入432到SQL引擎310。该查询可以引用在步骤428处添加的列表202中引用的数据以及在用户数据库112和消费共享116中引用的其它数据。然后,SQL引擎310使用在步骤428处创建的数据库处理430查询,并将结果返回给消费者404,或者创建视图,实例化视图或用户可以访问或分析的其它数据。如上所述,由查询操作的消费共享的数据可能先前已被过滤以仅包括与消费者404有关的数据。因此,将相同列表202添加到其消费共享116的不同消费者404将会看到列表202所引用的数据库的不同版本。

参考图4B,在一些实施例中,可以使用所示的数据结构来实现根据消费者404的身份的数据的私有共享和数据过滤。例如,提供者402的服务数据库128可以包括顾客映射434,该顾客映射434包括由提供者402提供的服务(例如,由服务器的服务模块118实现的服务)的用户的顾客标识符436的条目,以及作为用于采用认证界面120进行认证的标识符的顾客标识符436的条目。顾客映射434可以将每个顾客标识符436映射到仓库标识符438,即用户用于向仓库模块104进行认证的用户标识符,使得同一用户对应于两个标识符436、438。可以通过如上所述认证(例如,上述单点登入方法)来执行标识符436和438之间的映射。

顾客映射434可进一步包括对权利表442的引用440,该权利表442可以是多个权利表442中的一个权利表。每个权利表442定义可以采用映射到其的顾客ID 436访问提供者402的一个或更多个表444中的哪个表。权利表442可以进一步定义可以采用顾客ID 436访问的表444的列。权利表442可进一步定义可采用顾客ID 436来访问的表444的行。权利表442可以进一步定义可采用顾客ID 436来访问的表444的模式。

因此,表444的列表202可以指定如由顾客映射434定义的那样执行对数据表444的访问。例如,参考图4C,当消费者404请求为根据顾客映射为其定义访问的数据库添加列表202时,交换管理模块126可以根据映射到消费者404的仓库标识符438的顾客标识符436和权利表442来创建安全视图446。安全视图可以通过执行根据顾客标识符436过滤的,在权利表442中指定的数据库的数据表444(或如在权利表442中指定的数据的一部分)的安全连接而生成,使得连接结果仅包括特定顾客标识符436的数据,并且仅包括在权利表442中指定的数据库的那些部分(表444和/或表444的部分)。生成安全视图的方式可以如2018年8月6日提交和题为“SECURE DATA SHARING IN A MULTI-TENANT DATABASE(代理人案卷号SNOW-02800)”的美国申请序列号16/055,824和2019年1月7日提交和题为“SECURE DATA SHARINGIN A MULTI-TENANT DATABASE(代理人案卷号SNOW-02801)”的美国申请序列号16/241,463中所述,这两个申请特此通过引用全部并入本文。

图5示出用于共享数据的替代方法500,该替代方法500可以在消费者请求418添加对公众可用的列表202时执行。在该情况下,交换管理模块106将对列表202的引用添加428到消费者404的消费共享116,并且省略认证或支付步骤。可以如上所述执行步骤428,除了不执行对访问控制206的改变之外。同样,如上所述,可以关于共享数据执行步骤430和432。图5的交换可以是上面关于图4所述的公共交换或私有交换。图5示出如果列表202可查看的情况(即,如上所述,过滤标准允许消费者404查看),消费者404可以将列表202添加到消费者404的消费共享116中,而无需进一步的认证或支付。

注意,当根据本文公开的任何方法将列表202添加到用户的消费共享116中时,当列表202所引用的数据被更新时,交换管理模块106可以向消费者通知列表202。

参考图6,在一些实施例中,方法600可以包括消费者404从交换管理模块106浏览目录并如本文所述的其它方法(例如参见图4A和图5)所描述的那样选择列表202,关于列表所引用的数据(“共享数据”)的双向共享以及用户数据库112中的附加数据(“用户数据”)。注意,在一些实施例中,提供者402的列表202不引用任何特定数据(例如,特定表或数据库),而是关于消费者404提供的数据提供执行服务。因此,在此类情况下,如下所讨论的,“共享数据”可以被理解为用“所提供的服务”代替。

响应于该请求,交换管理模块106关于消费者404和提供者402实现604共享数据的点对点共享。这可以如以上关于图4A所描述地执行,例如包括对消费者404的认证,并且可能过滤共享数据以仅包括与消费者404相关联的数据,如上所述。交换管理模块106可以进一步如关于图4A所述关于提供者402实现用户数据的点对点共享,除了:(a)消费者404充当提供者,而提供者402充当用户数据的消费者,并且用户的数据被添加到提供者402的消费共享116中,并且(b)消费者404无需创建用于用户数据的列表202,并且用户数据也无需在目录220中列出。

在步骤606之后,消费者404或提供者402都可以访问共享数据和用户数据。然后,可以针对这两者运行查询,连接它们,对连接的数据执行聚合,或关于多个数据库执行本领域已知的任何其它动作。

在一些实施例中,双向共享可以包括或由消费者404请求包括,提供者402还连接608共享数据和用户数据以获得连接数据,并且采用将连接数据的引用添加612到消费者404的消费共享116的请求(交换管理模块106所做),将连接数据的引用返回610给交换管理模块106。

因此,消费者404现在将有权访问连接的数据。步骤608可以进一步包括在连接之前或之后对用户数据和共享数据执行其它动作(聚合、分析)。数据仓库模块104可以响应于来自消费者404的这样做的请求来执行步骤608。

注意,连接结果可以是(a)作为连接结果的新数据库,或者(b)定义共享数据和用户数据的连接的连接数据库视图。

来自步骤608(连接,聚合,分析等)的结果可以可替代地被添加到在步骤606、608处执行的原始共享,例如,定义在步骤608处执行的操作的视图(实例化或非实例化)。

数据仓库模块104也可以响应于来自消费者404或提供者402的这样做的请求而独立于在步骤602处所做出的请求,来执行步骤608-612。

注意,在许多情况下,有许多消费者404尝试关于提供者402执行双向共享,并且这些消费者404可能关于其用户数据寻求双向共享,该用户数据可能采用许多不同的格式(模式),该格式(模式)可能与提供者402的共享数据所使用的模式不同。因此,步骤608可以包括变换步骤。变换步骤将用户数据的源模式映射到共享数据的目标模式。该变换可以是由人类操作员提供的静态变换。该变换可以根据将源模式的列标签映射到目标模式的对应列标签的算法。该算法可以包括被训练以执行变换的机器学习或人工智能模型。例如,多个训练数据条目可以由人类注释者指定,每个条目都包括作为输入的源模式,而作为输出包括源模式和目标模式之间的映射。然后,这些条目可用于训练机器学习或人工智能算法,以针对给定输入源模式输出到目标模式的映射。

添加到消费者404和提供者402所消费的共享的数据然后可以分别由消费者404和提供者402操作,诸如通过针对数据执行查询,聚合数据,分析数据或执行本文描述为关于添加到用户的消费共享116的共享执行的任何其它动作。

参考图7,如本文所述的共享和消费数据的方法使得能够丰富数据并将该丰富的数据返回到交换。例如,提供者A可以以与本文描述的其它方法相同的方式请求702与交换共享数据(共享1)。交换管理模块106验证、确认并将共享1添加704到目录220。

然后,第二提供者B可以浏览目录220并将共享1添加706到其消费共享116。提供者B可以对共享数据执行708操作,诸如将其与其它数据连接,执行聚合,和/或执行关于共享1的其它分析,导致修改的数据(共享2)。然后,提供者B可以请求710与本文所述的交换来共享共享2。注意,步骤708的连接可以包括连接任何数量的数据库,诸如基于任何数量的其他用户的任何数量的列表的任何数量的共享。因此,可以将许多用户对步骤702-710的迭代视为一种层次结构,其中,基于来自大量列表202的数据,将多个用户的大量列表202缩小为较小数量的列表202。

交换管理模块106验证、确认并将共享2添加712到目录220。随着提供者A、提供者B或不同的提供者添加共享2,基于它生成修改的数据,并且以相同的方式将结果添加回目录,可以关于共享2重复714该过程。以该方式,可以使用户获得丰富的数据和分析生态系统。根据方法700的共享可以是根据本文公开的方法的任何共享、点对点共享、私有交换共享或双向交换共享。

注意,存在提供者可以关于基于列表202的列表202执行步骤708和710的可能性。例如,提供者B使用提供者A的列表L1来创建列表L2,提供者C使用该列表L2来创建列表L3,提供者A使用该列表L3来定义列表L1。此类回路可以包括任何数量的步骤。这在一些情况(使得鉴于从L1派生L3,不允许将列表L1修改为引用L3)下可能是不可取的。在其它情况下,如果刷新每个列表引用的数据时存在时间延迟,则允许此类循环。例如,L1可以引用L3,前提是L3直到刷新L1之后的某个时间才会被刷新,并且因此循环引用不会无限期地导致L1和L3的连续更新。

在步骤712处创建的列表(共享2)可以(a)包括在步骤708之后剩余的,来自共享1的数据副本,并如根据步骤708修改,或者(b)包括视图,该视图引用共享1(例如,数据库,其根据本文公开的方法基于共享1的列表202创建),并定义在步骤708处执行的操作,而没有包括来自共享1或从共享1派生的实际数据。因此,如上所述的层次结构可以是视图的层次结构,该视图引用作为根据方法700创建的视图的列表202或根据本文公开的任何方法来自一个或更多个提供者的数据的列表202中的一个或二者。

在本文公开的方法中,公开了用于创建共享(列表202)和用于添加共享的方法。以类似的方式,消费者404可以指示交换管理模块106删除添加的共享。提供者402可以指示交换管理模块106停止共享某些列表202。在一些实施例中,这可以伴随有避免干扰那些列表202的消费者404的动作。诸如通过通知这些消费者404并仅在通知后的指定时间段之后或在所有消费者404从其消费共享116中删除对列表202的引用之后,才停止共享列表202。

用例

在第一用例中,公司根据上述方法实现私有交换。特别地,公司的列表202仅由与公司相关联的消费者404(员工、管理人员、投资者等)可查看。同样,仅允许与公司相关联的人员添加列表202。当将列表202添加到消费共享116时,可以基于添加该列表的消费者的身份,即与该消费者在公司中的角色有关的数据来对其进行过滤。

在第二用例中,提供者402为尚未成为数据仓库模块104用户的消费者404创建读取器或读取器/写入器账户。该账户可与该消费者的账户数据相关联(参见以上讨论的图4B的消费者映射)。然后,消费者404可以登录到该账户,并且然后访问提供者的列表以访问由提供者402管理的消费者数据404(例如,参见图4A的讨论)。

在第五用例中,消费者404添加私有的共享(例如,由于消费者404的身份,根据上述方法可访问),以及公共的共享。然后,消费者404可以将这些共享连接,并用于处理查询。

在第六用例中,可以基于订阅(例如,每月)共享列表202,或者可以基于每个查询的价格或积分提升乘数来访问列表202。因此,交换管理模块106可以管理支付和访问的处理,使得消费者404被允许访问受定价模型支配的数据(订阅、每个查询等)。

在第七用例中,交换管理模块实现可用于处理私有数据的安全函数和安全机器学习模型(训练和评分二者),使得允许消费者404使用该函数或机器学习模型的结果,但无权访问由该函数或机器学习模型处理的原始数据。同样,不允许共享数据的消费者导出共享数据。尽管如此,允许消费者关于共享数据执行复杂的分析功能。例如,可以实现以下安全函数以使得能够以安全方式查看顾客购物数据:

选择6139作为input_item,ss_item_sk作为basket_Item,从udf_demo.public.sales中对baskets计数(不同的ss_ticket_number),其中ss_ticket_numberin(select ss_ticket_number from udf_demo.public.sales where ss_item_sk=6139)group by ss_item_sk order by 3 desc,2;

安全函数还可以包括关于共享数据执行的分析功能。例如,可以关于共享数据执行下面概述的安全函数1、函数2和函数3。

函数1:

创建或替换安全函数

UDF_DEMO.PUBLIC.get_market_basket(input_item_sk number(38))返回表(input_item NUMBER(38,0),basket_item_sk NUMBER(38,0),num_baskets NUMBER(38,0))

作为

'select input_item_sk,ss_item_sk basket_Item,count(distinct ss_ticket_number)baskets from udf_demo.public.sales where ss_ticket_number in(select ss_ticket_number from udf_demo.public.sales where ss_item_sk=input_item_sk)group by ss_item_sk order by 3desc,2';

函数2:

使用数据库UDF_DEMO;

如果不存在,则创建共享UDF_DEMO_SHARE;

授权对数据库UDF_DEMO的使用以共享UDF_DEMO_SHARE;

授权对UDF_DEMO.PUBLIC模式的使用以共享UDF_DEMO_SHARE;

授权对UDF_DEMO.PUBLIC.get_market_basket(number)函数的使用以共享UDF_DEMO_SHARE;

更改共享UDF_DEMO_SHARE添加账户=<消费者账户id>;

函数3:

使用角色accountadmin;

从共享.UDF_DEMO_SHARE创建数据库UDF_TEST;

向角色PUBLIC授权数据库UDF_TEST的导入特权;

使用数据库UDF_TEST;

从表(UDF_TEST.PUBLIC.get_market_basket(6139))中选择*;

INPUT_ITEM BASKET_ITEM_SK NUM_BASKETS

在第八用例中,交换管理模块106可以将一个或更多个消费者404对列表202的使用统计信息(例如查询、使用的积分、扫描的表、命中的表等)提供给列表的提供者402。

在第九用例中,本文公开的系统和方法用于特定于行业的应用。例如:

1.网络安全

a.允许共享风险矢量、不良行为者、IP白名单/黑名单、正在进行的实时攻击、已知的好/坏电子邮件程序等。

2.医疗保健

a.安全共享患者/结果/费用等信息

b.保护多医院数据库,使患者可以将信息共享给多个提供者(例如,如果我前往佛罗里达州并去急诊室,则他们可以从不同的医院和提供者那里访问我的记录)。

根据本文公开的系统和方法,其它行业也可以从数据的私有或公共共享中受益。诸如金融服务业、电信业、媒体和广告业、政府机构、军队和情报机构。

在第十用例中,第一用户为第二用户提供营销服务,因此,第二用户与第一用户共享顾客列表。第一用户向第二用户共享关于营销活动的数据,诸如活动元数据、当前用户事件(特定用户的会话开始/结束,特定用户的购买等)。这可以使用图6的双向共享来实现。可以连接该数据(来自第一用户的顾客列表+顾客事件),以便更好地了解特定用户或一组用户的事件。如上所述,可以在不创建副本或传送数据的情况下执行数据交换-每个用户访问共享数据的相同副本。由于没有数据传送,因此在发生顾客事件时可以几乎实时地访问数据。

例如,第二用户可以共享没有个人识别信息(PII)但包括非PII顾客数据的行和列的顾客概况表,该非PII顾客数据可以包括包含密钥/值阵列的一个或更多个列。交换管理模块106可以将该数据转换为JSON更新流,并诸如通过第一用户的API与第一用户共享这些。例如,更新的形式可以为{成员ID,时间戳,新属性/更改属性的JSON}。在一些实施例中,交换管理模块可以绘制引用架构或基于共享数据定义输出表以供第一用户使用。

图8是描绘示例计算设备800的框图。在一些实施例中,计算设备800用于实现本文所讨论的系统和组件中的一个或更多个,诸如云计算平台102和用户设备126。计算设备800可以用于执行各种过程和任务,诸如本文所讨论的那些。计算设备800可以用作服务器、客户端或任何其它计算实体。计算设备800可以是多种计算设备中的任何一种,诸如台式计算机、笔记本计算机、服务器计算机、手持式计算机、平板计算机等。

计算设备800包括一个或更多个处理器802、一个或更多个存储器设备804、一个或更多个界面806、一个或多个大容量存储设备808(硬盘驱动器824、远程存储装置826等),以及一个或更多个输入/输出(I/O)设备810,所有这些都耦合到总线812。处理器802包括一个或更多个处理器或控制器,它们执行存储在存储器设备804和/或大容量存储设备808中的指令。处理器802还可以包括各种类型的计算机可读介质,诸如高速缓冲存储器。

存储器设备804包括各种计算机可读介质,诸如易失性存储器(例如,随机存取存储器(RAM)814)和/或非易失性存储器(例如,只读存储器(ROM))。存储器设备804还可以包括可重写ROM 816,诸如闪存。

大容量存储设备808包括各种计算机可读介质,诸如磁带、磁盘、光盘、固态存储器(例如闪存)等。大容量存储设备808中还可包括各种驱动器,以使得能够从各种计算机可读介质读取和/或写入各种计算机可读介质。大容量存储设备808包括可移除介质和/或不可移除介质。

I/O设备810包括允许将数据和/或其它信息输入到计算设备800或从计算设备800检索的各种设备。示例I/O设备810包括光标控制设备、键盘、小键盘、麦克风、监视器或其它显示设备830、扬声器、打印机、网络接口卡、调制解调器、镜头、CCD或其它图像捕获设备等。

界面806包括允许计算设备800与其它系统、设备或计算环境交互的各种界面。示例界面806包括用户界面818或任何数量的不同网络界面820,诸如到局域网(LAN)、广域网(WAN)、无线网络和互联网的界面。界面806可以进一步包括到外围设备的界面822。

总线812允许处理器802、存储器设备804、界面806、大容量存储设备808和I/O设备810彼此以及与耦合到总线812的其它设备或组件通信。总线812代表几种类型的总线结构中的一种或更多种,诸如系统总线、PCI总线、IEEE 1394总线、USB总线等。

为了说明的目的,程序和其它可执行程序组件在本文中被示为分立的块,但是应当理解,此类程序和组件可以在各种时间驻留在计算设备800的不同存储组件中,并且由处理器802执行。可替代地,本文所述的系统和过程可以以硬件或硬件、软件和/或固件的组合来实现。例如,可以对一个或更多个专用集成电路(ASIC)进行编程以执行本文所述的系统或过程中的一个或更多个。

尽管根据某些优选实施例描述了本公开,但是鉴于本公开的益处,其它实施例对于本领域普通技术人员将是显而易见的,包括未提供本文阐述的所有益处和特征的实施例,它们也在本公开的范围内。应该理解,在不脱离本公开的范围的情况下,可以利用其它实施例。

相关技术
  • 数据交换系统、数据交换方法、与数据交换程序
  • 核电厂DCS系统级联数据交换系统及其数据交换方法
技术分类

06120112381680