CN114207607B - 支持非结构化、半结构化和结构化文件 - Google Patents

支持非结构化、半结构化和结构化文件 Download PDF

Info

Publication number
CN114207607B
CN114207607B CN202180001774.4A CN202180001774A CN114207607B CN 114207607 B CN114207607 B CN 114207607B CN 202180001774 A CN202180001774 A CN 202180001774A CN 114207607 B CN114207607 B CN 114207607B
Authority
CN
China
Prior art keywords
file
directory table
data platform
staging
file directory
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.)
Active
Application number
CN202180001774.4A
Other languages
English (en)
Other versions
CN114207607A (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 Co
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 CN114207607A publication Critical patent/CN114207607A/zh
Application granted granted Critical
Publication of CN114207607B publication Critical patent/CN114207607B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/11File system administration, e.g. details of archiving or snapshots
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9017Indexing; Data structures therefor; Storage structures using directory or table look-up
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/2455Query execution
    • G06F16/24568Data stream processing; Continuous queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/907Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually
    • G06F16/908Retrieval characterised by using metadata, e.g. metadata not derived from the content or metadata generated manually using metadata automatically derived from the content
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/955Retrieval from the web using information identifiers, e.g. uniform resource locators [URL]

Landscapes

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

Abstract

数据平台为非结构化文件、半结构化文件和结构化文件提供支持。在各种不同的实施例中,数据平台提供用于获得内部和外部暂存区中的文件的相对路径、绝对路径和预签名URL的函数;用于与外部函数集成的应用编程接口(API);内置文件目录表;与云存储平台的集成;灵活的文件共享选项、暂存区加密选项的定制视图;通知集成;用于生成文件目录表的表函数;暂存区上的流;表上的流;和其他特征。

Description

支持非结构化、半结构化和结构化文件
相关申请的交叉引用
本申请要求2020年6月30日提交的序列号为63/046,229的美国临时专利申请的优先权,其内容通过引用整体结合于此。
技术领域
本公开涉及数据平台,更具体地,涉及用于支持非结构化、半结构化和结构化文件的系统和方法。
背景
数据平台广泛用于计算和通信环境中的数据存储和数据访问。关于架构,数据平台可以是本地数据平台、基于网络的数据平台(例如,基于云的数据平台)、两者的组合,和/或包括另一种类型的架构。关于数据处理的类型,数据平台可以实现在线事务处理(OLTP)、在线分析处理(OLAP)、两者的组合和/或另一种类型的数据处理。此外,数据平台可以是或包括关系数据库管理系统(RDBMS)和/或一个或更多个其他类型的数据库管理系统。
在典型实现中,数据平台包括一个或更多个代表客户账户维护的数据库。实际上,数据平台可以包括分别与任意数量的客户账户相关联地维护的一个或更多个数据库,以及与数据平台的一个或更多个系统(例如,管理)账户相关联的一个或更多个数据库,用于管理目的的一个或更多个其他数据库,和/或与一个或更多个其他组织相关联地维护的和/或用于任何其他目的的一个或更多个其他数据库。数据平台可以存储通常与数据平台相关联并且也与特定数据库和/或特定客户账户相关联的元数据。由数据平台维护的关于存储的数据(例如,存储的客户数据)的元数据在本文中有时可被称为“表达属性”。
可能与例如给定客户账户相关联的用户和/或执行过程可以能够经由一种或更多种类型的客户端,使数据被摄取到数据平台中的一个或更多个数据库中,并且还能够操纵数据、针对数据运行查询、创建数据的定制视图(也称为安全视图)、修改数据、插入附加数据、移除数据等。一些示例类型的客户端包括web接口、Java数据库连接(JDBC)驱动器、开放数据库连接(ODBC)驱动器、一种或更多种其他类型的驱动器、桌面应用、移动应用等。
在数据平台的示例实现中,给定数据库被表示为客户账户内的账户级对象,并且客户账户还可以包括一个或更多个其他账户级对象,例如用户、角色等。此外,给定的账户级数据库对象本身可以包含一个或更多个对象,例如表、模式、视图、流、任务等。给定的表可以被组织为记录(例如行),每个记录包括一个或更多个属性(例如列)。数据平台可以将数据库数据物理存储在多个存储单元中,这些存储单元可以被称为块、微分区和/或一个或更多个其他名称。
附图简述
从下面的描述中可以得到更详细的理解,下面的描述是结合附图以举例的方式给出的,其中在附图中,相同的参考数字与相同的元件一起使用。
图1示出了根据至少一个实施例的示例数据平台。
图2示出了根据至少一个实施例的第一示例文件目录表。
图3示出了根据至少一个实施例的第二示例文件目录表。
图4示出了根据至少一个实施例的示例消息流。
图5示出了根据至少一个实施例的第三示例文件目录表。
图6示出了根据至少一个实施例的示例方法。
图7示出了根据至少一个实施例的示例计算设备。
详细描述
引言
在本公开中,存储在数据平台中并且构成例如客户账户中的数据库表的内容的数据的物理单元被称为微分区。在各种不同的实现中,数据平台也可以在微分区中存储元数据。术语“微分区”在本公开中不同于术语“文件”,如这里所使用的,术语“文件”是指诸如图像文件(例如,联合图像专家组(JPEG)文件、便携式网络图形(PNG)文件等)、视频文件(例如,运动图像专家组(MPEG)文件、MPEG-4(MP4)文件、高级视频编码高清(AVCHD)文件等)、可移植文档格式(PDF)文件、被格式化为与一个或更多个文字处理应用兼容的文档、被格式化为与一个或更多个电子表格应用兼容的文档等的数据单元。如果存储在数据平台内部,给定的文件在这里被称为“内部文件”,并且可以存储在这里被称为“内部存储位置”的地方中(或在该“内部存储位置”处,或在该“内部存储位置”上等)。如果存储在数据平台的外部,给定的文件在这里被称为“外部文件”,并且被称为存储在这里被称为“外部存储位置”的地方中(或在该“外部存储位置”处,或在该“外部存储位置”上等)。这些术语将在下面进一步讨论。
计算机可读文件有多种类型,包括非结构化文件、半结构化文件和结构化文件。这些术语可能对不同的人有不同的含义。如这里所使用的,非结构化文件的示例包括图像文件、视频文件、PDF等;半结构化文件的示例包括JavaScript对象符号(JSON)文件、可扩展标记语言(XML)文件等;结构化文件的示例包括变体调用格式(VCF)文件、Keithley数据文件(KDF)文件、分层数据格式版本5(HDF5)文件等。如相关领域的技术人员所知,VCF文件通常用于生物信息学领域,用于存储例如基因序列变异,KDF文件通常用于半导体工业,用于存储例如半导体测试数据,HDF5文件通常用于工业,例如航空工业,在这种情况下用于存储数据,例如飞机排放数据。许多其他非结构化文件类型、半结构化文件类型和结构化文件类型的示例,以及它们的示例使用,当然也可以在这里列出,并且对于相关领域的技术人员来说是熟悉的。相关领域的不同技术人员可以在这些类别中对文件类型进行不同的分类,并且可以使用一个或更多个不同的类别来代替或补充这些类别中的一个或更多个。
如上所述,通常情况下,作为给定数据平台的客户的组织也维护数据平台外部的数据存储(例如,数据湖)(即,一个或更多个外部存储位置)。例如,一家公司可能是某个特定数据平台的客户,并且还单独维护任意数量文件的存储,例如,在他们自己的一个或更多个服务器上和/或在一个或更多个云存储平台上,如AMAZON Web ServicesTM(AWSTM)、MICROSOFTTMAZURETM、GOOGLE CLOUD PLATFORMTM等,这些文件可以是非结构化文件、半结构化文件、结构化文件和/或一种或更多种其他类型的文件。客户自己的服务器和云存储平台都是给定客户可以用作本文所指的外部存储位置的示例。如下所述,数据平台也可以使用云存储平台作为这里所指的相对于数据平台的内部存储位置。
从示例数据平台的角度来看,存储在一个或更多个存储位置的一个或更多个文件在本文中被称为被组织成在本文中被称为“内部暂存区(internal stage)”或“外部暂存区(external stage)”的一个或更多个,其中内部暂存区是对应于在一个或更多个内部存储位置的数据存储部的暂存区,并且其中外部暂存区是对应于在一个或更多个外部存储位置的数据存储部的暂存区。因此,按照本公开的说法,外部文件可以存储在一个或更多个外部存储位置的外部暂存区中,内部文件可以存储在一个或更多个内部存储位置的内部暂存区中,内部存储位置可以包括由管理和控制数据平台的同一组织(例如,公司)管理和控制的服务器,并且可以替代地或附加地包括由数据平台用于其“内部”存储的存储提供商(例如,云存储平台)操作的数据存储资源。数据平台的内部存储在这里也被称为数据平台的“存储平台”。还要注意,给定客户存储在给定外部存储位置的给定外部文件可以存储在外部存储位置的外部暂存区中,也可以不存储在外部暂存区中,即,在一些数据平台实现中,客户可以选择是否在客户的数据平台账户中创建一个或更多个外部暂存区(例如,一个或更多个外部暂存区对象),作为用于经由数据平台方便地与一个或更多个外部文件交互的组织和功能构造。
因此,数据平台上的客户账户可以包括分别对应于一个或更多个暂存区的一个或更多个账户级对象,一个或更多个暂存区可以是内部暂存区,一个或更多个暂存区可以是外部暂存区。代替和/或除了在本公开中作为示例描述的内部暂存区和外部暂存区之外,可以实现一个或更多个其他类型的暂存区。
在包括至少一个内部暂存区和至少一个外部暂存区的示例客户账户中,每个内部暂存区可以具有作为内部暂存区的用户可设置属性的暂存区名称,并且数据平台可以“在幕后”管理该内部暂存区的实际存储位置,使得客户通常不知道并且通常不需要明确知道该内部暂存区的实际精确存储位置(例如,统一资源定位符(URL))。每个外部暂存区不仅可以具有暂存区名称(为了客户的方便和其他参考),而且每个外部暂存区还可以具有用户可设置的属性,该属性明确地指向(例如,以URL的形式)相应外部暂存区的外部存储位置。给定暂存区的暂存区位置属性在这里有时被称为该暂存区的“暂存区URL”;在内部和外部暂存区的情况下,给定暂存区的暂存区名称属性在这里被称为该暂存区的“暂存区名称”;这两个暂存区属性标签在这里都是作为示例给出的,而不是作为限制。
在数据平台的一些当前实现中,数据平台的客户可以使用应用(例如,定制应用)从客户保存在外部存储位置的各种外部文件中提取各种元数据项。客户可以将提取的元数据存储在数据平台上客户账户中的一个或更多个表中。在一个这样的示例中,客户可以创建表,其中每个外部文件由表中的一行表示,并且被提取并被存储在表中的每个元数据项占据表中的一列。在许多情况下,客户还可以在表中包括一列,其中客户在该列中存储在外部存储位置中的对应于外部文件位置的URL,使得URL在表中与也对应于相应外部文件的其他元数据项相关联。在这样的表中,URL通常被存储为字符串(例如,作为字母数字-字符-字符串数据类型的实例),并且通常不能操作来简单地被点击以从相应的外部存储位置下载或打开外部文件,因为这种访问通常需要安全凭证。
在某些情况下,作为元数据的替代或补充,客户可以使用应用(例如,定制应用)来从外部文件中提取一条或更多条内容(例如,一个或更多个字段、一个或更多个特定字节等),然后将一条或更多条提取的内容存储在数据平台上他们的账户中的相同或另一个表的给定列中。在许多情况下,数据平台本身并不支持客户使用和外部存储特定类型的结构化文件。在缺乏本地支持的其他后果中,通常情况是,使用各自的数据平台客户端(例如,JDBC驱动器),相关客户只能共享和/或复制元数据和/或提取内容的表,而不能使用各自的数据平台客户端来共享或复制实际的外部文件。
为了解决现有实现的这些和其他缺点,这里公开了用于在数据平台支持非结构化文件、半结构化文件、结构化文件和任何其他类型文件的系统和方法的各种实施例。这里描述的各种实施例在适当时参考一个或更多个各种附图进行描述。
一个实施例采用一种方法的形式,该方法包括在包括至少一个硬件处理器的数据平台上接收来自客户端的暂存区创建指令,该暂存区创建指令请求由数据平台为数据平台上的用户账户创建文件暂存区,该用户账户与客户端相关联。该方法还包括在数据平台处从客户端接收文件目录表创建指令,该文件目录表创建指令请求数据平台为文件暂存区创建文件目录表。该方法还包括由数据平台响应于接收到文件目录表创建指令来创建文件暂存区的文件目录表,该文件目录表包含对应于文件暂存区中的一个或更多个文件的一个或更多个元数据项。
本公开的一个或更多个实施例采取包括多个操作的方法的形式。一个或更多个其他实施例采取系统(例如,数据平台)的形式,该系统包括至少一个硬件处理器,并且还包括一个或更多个计算机存储介质,该计算机存储介质包含可由该至少一个硬件处理器执行的指令,用于使该至少一个硬件处理器执行多个操作(该操作可以对应于也可以不对应于在此公开的方法实施例中执行的操作)。还有一个或更多个其他实施例采取一个或更多个计算机存储介质的形式,该计算机存储介质包含可由(例如,数据平台的)至少一个硬件处理器执行的指令,用于使至少一个硬件处理器执行多个操作(同样,这些操作可以对应于或不对应于在此公开的方法实施例中执行的操作和/或在此公开的系统实施例中执行的操作)。
此外,本文描述了实施例的多种变化和排列,并且明确指出,本公开中描述的任何变化或排列可以针对任何类型的实施例来实现。例如,在本公开中主要结合方法实施例描述的变化或排列也可以结合系统实施例(例如,数据平台实施例)、计算机存储介质(或计算机存储媒介)实施例和/或一个或更多个其他类型的实施例来实现。此外,尽管这里使用任何稍微不同的语言(例如,过程、方法、方法论、步骤、操作、功能等)来描述和/或表征这样的实施例和/或其任何一个或更多个元素,但是实施例的这种灵活性和交叉适用性是存在的。
数据平台架构和环境
图1示出了根据至少一个实施例的示例数据平台100。在各种实施例中,数据平台100可用于执行本文公开的一个或更多个操作(例如,一个或更多个方法)。如图1所示,数据平台100包括数据库管理器102,数据库管理器102包括资源管理器104和执行平台106。数据库管理器102不需要是定义的物理设备,尽管它可以是,但是通常在这里被用作指代资源管理器104和执行平台106的组合的简写。执行平台106可以包括一个或更多个执行节点(例如,服务器、工作器、线程等)。执行平台106中的一组执行节点可以被称为虚拟仓库,并且在一些实施例中,这种虚拟仓库是可动态扩展的,以满足动态变化的需求。图1中还描绘了元数据存储部108、包括一个或更多个数据存储设备112的存储平台110(其中一个示例包括示例内部暂存区114)、一个或更多个客户端116以及一个或更多个云存储平台118(其中一个示例包括示例外部暂存区120)。在各种不同的实现中,可以有任何数量的图1所示的任何实体,包括任何数量的内部暂存区114和任何数量的外部暂存区120。此外,不同的内部暂存区114可以驻留在不同的数据存储设备112中,不同的外部暂存区120可以驻留在不同的云存储平台118中。
在一些实施例中,除了一个或更多个云存储平台118之外,图1中描绘的所有实体都是这里称为数据平台100的一部分,尽管在其他实施例中并非如此。例如,在至少一个实施例中,数据平台100不包括一个或更多个客户端116中的任何一个。作为另一个示例,在一些实施例中,数据平台100不包括存储平台110。在本文主要描述来说明各种示例的实施例中,数据平台100包括数据库管理器102(包括资源管理器104和执行平台106)、元数据存储部108和存储平台110,并且不包括一个或更多个客户端116中的任何一个或一个或更多个云存储平台118中的任何一个(因此不(物理地)包括任何外部暂存区120)。如下所述和如上所述,存储平台110可以全部或部分地在云存储平台上实现,并且仍然被认为是数据平台100的一部分。
资源管理器104可以被配置成管理多个不同类型的任务,包括从例如客户端116接收的外部数据库任务(例如,查询请求)。资源管理器104可以耦合到任意数量的客户端116。客户端116可以方便终端用户做出数据存储和/或数据检索请求、方便系统管理员管理数据平台100等。在各种不同的实施例中,客户端116可以是web接口、JDBC驱动器、ODBC驱动器、桌面应用、移动应用和/或另一种类型的客户端。如图1所示,客户端116可以与数据平台100(例如,数据库管理器102的资源管理器104)和一个或更多个云存储平台118通信。客户端116可以驻留在客户端侧计算设备上,客户端116在该客户端侧计算设备上与一个或更多个客户端侧应用交互,并且客户端116在该客户端计算设备上利用特定的客户端侧系统资源,例如网络接口、用户接口、存储器(例如,随机存取存储器(RAM))等。
如图1所示,资源管理器104通信地耦合到元数据存储部108,在至少一个实施例中,元数据存储部108与存储在整个数据平台100中的数据相关联,并且还可以反映存储在一个或更多个外部暂存区120上的数据。实际上,在一些实施例中,元数据存储部108包括在一个或更多个本地高速缓存(例如,资源管理器104和/或执行平台106的本地高速缓存)中可获得的数据、存储在存储平台110中的数据和/或存储在一个或更多个外部暂存区120中的数据的一个或更多个概要。另外,元数据存储部108可以包括关于数据在一个或更多个本地高速缓存、一个或更多个存储平台110、一个或更多个外部暂存区120等中如何被组织的信息。
在其他用途中,元数据存储部108可以允许数据平台100的系统和服务在不加载或访问实际存储的数据的情况下确定是否需要处理给定的数据量(结合例如给定的查询)。在各种实施例中,元数据可以反映一个或更多个数据库、一个或更多个表、一个或更多个列、一个或更多个视图和/或一个或更多个其他记录集合、记录部分和/或其他数据量的内容。关于元数据存储部108的实际存储位置,在一些实施例中使用单独的(例如,本地)存储位置(例如,键值储存器),而在其他实施例中,元数据存储部108由数据平台100作为存储在存储平台110中的数据的子集来维护。其他架构也是可能的。
资源管理器104还通信地耦合到执行平台106,执行平台106可以提供多个计算资源,这些计算资源执行涉及数据存储、数据检索、数据分析(例如,查询处理)等的各种任务。在至少一个实施例中,资源管理器104包括相对于数据平台100是全局的代码层(例如,Java代码),其中该代码层包括用于执行诸如编译查询和将请求代理到执行平台106中的一个或更多个执行节点的功能的指令。在一些实施例中,存在用于执行(i)诸如数据库查询的客户端任务和/或(ii)诸如更新元数据、聚类表、生成视图等的内部数据库任务的执行平台106的一个或更多个实例。在一些这样的实施例中,还存在用于数据平台100的特征开发和/或测试的执行平台106的一个或更多个实例,并且执行平台106的每个这样的实例可以与执行平台106的每个客户端任务实例分离,使得例如客户端任务处理不受特征开发任务、数据平台管理任务等的影响。其他安排也是可能的。
执行平台106可以耦合到作为存储平台110的一部分的一个或更多个数据存储设备112,存储平台110可以包括(并且执行平台106能够与之通信)任何数量的数据存储设备112。在一些实施例中,一个或更多个数据存储设备112是位于一个或更多个地理位置的基于云的存储设备。例如,一个或更多个数据存储设备112可以是公共云基础设施或私有云基础设施的一部分。一个或更多个数据存储设备112可以是或包括硬盘驱动器(HDD)、固态驱动器(SSD)、存储集群和/或任何其他数据存储技术。在一些示例中,存储平台110包括分布式文件系统(例如Hadoop分布式文件系统(HDFS))、对象存储系统等。如上所述并且如下文更全面描述的,存储平台110的一个或更多个数据存储设备112可以包含一个或更多个内部暂存区114。
如图1所示,包括一个或更多个数据存储设备112的存储平台110通常从与执行平台106、资源管理器104和数据库管理器102相关联的计算资源解耦。在一个实施例中,多个数据平台部署中的每一个包括各自的存储平台110,存储平台110具有其各自的一个或更多个数据存储设备。这种类型的架构支持基于变化的数据存储和/或数据检索需求以及访问数据平台100的用户和系统的变化需求对数据平台100进行动态改变。对动态变化的支持允许数据平台100响应于对数据平台100内的系统和组件的不断变化的需求而快速扩展。计算资源与数据存储设备的解耦支持大量数据的存储,而不需要相应的大量计算资源。类似地,这种解耦支持在特定时间利用的计算资源的显著增加,而不需要数据存储资源的相应增加。
一般而言,在至少一些实施例中,可以使用诸如云数据平台、基于云的数据仓库、基于网络的数据仓库或简单的数据仓库等术语来指代数据平台100。云数据平台是一种基于网络的数据系统,可用于数据分析和报告,包括来自一个或更多个不同来源的集成数据的中央存储库。云数据平台通常是OLAP数据库,它可以存储当前和历史数据,这些数据可用于根据代表企业维护的数据库中存储的数据为企业创建分析报告。为此,云数据平台通常提供商业智能工具、执行提取-转换-加载(ETL)任务以将数据摄取到存储库中的工具、管理和检索元数据的工具等。还有其他类型的云数据平台,如OLTP数据库,以及数据平台、数据仓库和以多种类型数据库系统特征操作的其他数据系统。如此处所使用的,“数据平台”是指本段、本公开中通常使用的任何术语中的任何一个或任何组合,以及本领域中使用的类似术语。
此外,图1和任何其他附图中描绘的任何一个或更多个组件、设备、系统等可以被实现为具有与下面结合图7描述的示例计算设备700类似的架构的一个或更多个计算设备。此外,在任何附图中描绘的两个或更多实体可以被组合成单个组件,并且在任何附图中描绘为单个组件的任何实体可以替代地分布在多个组件上(例如,分布在多个地理和/或网络拓扑位置处的多个系统、平台等上)。此外,在特定实施例中,图1和任何其他附图中描绘的任何一个或更多个通信链路可以经由一个或更多个数据通信网络来实现,该数据通信网络可以利用任何通信协议和任何类型的通信介质。在一些实施例中,数据通信网络是彼此耦合的两个或更多个数据通信网络(或子网络)的组合。在各种不同的实施例中,这些通信链路使用一种或更多种任何类型的通信介质和一种或更多种任何类型的通信协议来实现。
暂存区创建和加密
在一些实施例中,如上所述,给定的数据平台客户能够使用客户端116来创建一个或更多个内部暂存区114和/或一个或更多个外部暂存区120。客户可以向数据平台100提供由数据平台100上的客户账户中的相应外部暂存区对象表示的每个外部暂存区120的登录凭证(例如,用户名和密码),使得数据平台100可以方便地与相应外部暂存区120和/或存储在其中的一个或更多个外部文件进行交互。
关于内部暂存区114,在至少一个实施例中,数据平台100向正在创建内部暂存区114的用户提供选项,以将内部暂存区114的加密属性设置为这里称为的“完全加密”或这里称为的“仅服务器侧加密”。在至少一个实施例中,其加密属性设置为完全加密的内部暂存区114是服务器侧加密的和客户端侧加密的,而其加密属性设置为仅服务器侧加密的内部暂存区114是服务器侧加密的,但不是客户端侧加密的。此外,在至少一个实施例中,在没有指定完全加密或仅服务器侧加密的情况下创建的外部暂存区120默认设置为使用完全加密。虽然这里没有详细讨论该选项,但是也可以使用仅使用客户端侧加密的实现。
如这里所使用的,在至少一个实施例中,内部暂存区114是“服务器侧加密的”意味着内部暂存区114中的数据(包括例如一个或更多个内部文件)在存储平台110中被数据平台100或被由数据平台100用来实现其存储平台110的存储提供商(例如云存储平台)“静态(at rest)”加密。在数据平台100使用存储平台110的存储提供商的典型实现中,存储提供商可以在将内部文件传输到数据平台100之前使用他们自己的加密/解密密钥来解密内部文件(例如,在客户请求从数据平台100下载一个或更多个他们的内部文件到例如客户自己的服务器或其他计算机的情况下),其中从存储提供商到数据平台100的这种传输可以通过使用超文本传输协议安全(HTTPS)通信来保护,该通信本身使用传输层安全(TLS)协议,该协议是安全套接字层(SSL)协议的更新版本。
此外,如这里所使用的,在至少一个实施例中,内部暂存区114是“客户端侧加密的”意味着,当客户从内部暂存区114请求下载他们的一个或更多个内部文件时,并且在数据平台100从存储提供商请求并接收到一个或更多个内部文件的副本之后,数据平台100用由数据平台100管理的一个或更多个加密/解密密钥加密一个或更多个内部文件,然后将客户端侧加密的内部文件传送给客户(例如,发送给客户用来请求下载的特定客户端116)。该传送也可以是HTTPS/TLS传送。在至少一个其他实施例中,一个或更多个内部文件从数据平台100传输(使用例如HTTPS/TLS传输)到客户端116(该一个或更多个内部文件没有首先由数据平台100使用由数据平台100管理的一个或更多个加密/解密密钥加密),然后由客户端116在客户端侧使用由数据平台100管理的一个或更多个加密/解密密钥加密该一个或更多个内部文件。无论哪种方式,在客户端侧上的客户端116之外都需要由数据平台100管理的一个或更多个加密/解密密钥来访问一个或更多个内部文件的内容。其他实现也是可能的。
因此,在内部暂存区114被客户端侧加密的情况下,在从其内部暂存区114接收到他们的一个或更多个下载文件之后,相关联的客户需要由数据平台100管理的一个或更多个加密/解密密钥的副本,以便能够成功地打开并实质上使用一个或更多个下载的内部文件。然而,如果内部暂存区114不是客户端侧加密的,则数据平台100可以提供由客户的客户端116下载(通过例如HTTPS/TLS传输)(原本)未加密的内部文件,即,数据平台100在将一个或更多个内部文件传输到客户的客户端116之前不会明确地使用任何加密/解密密钥来加密它们,在从数据平台100接收到一个或更多个内部文件之后,客户端116也不会使用任何这样的加密/解密密钥来加密一个或更多个内部文件,并且客户不需要由数据平台100管理的任何加密/解密密钥来成功地打开和实质上使用一个或更多个内部文件。
定义的函数
在本公开的至少一个实施例中,数据平台100提供一个或更多个函数供例如数据平台100的客户、内部开发者、外部开发者等使用。下面通过示例描述一些这样的函数。在本公开中,使用“function_name()”符号来引用函数,其中“function_name”是给定函数的名称,并且函数名称末尾的空括号(即“()”)将其标识为函数(与例如暂存区、暂存区属性名称、数据值等相对)。还要注意的是,给定函数名称末尾的“()”绝不意味着该函数接受零个参数:它可以接受零个参数,但是它也可以接受一个或更多个参数,如这里通过示例描述的那样。作为一些选项,在至少一个实施例中,这些函数中的任何一个或更多个可以在Java函数中、在JavaScript存储过程中、作为结构化查询语言(SQL)语句中的谓词等被调用。
函数:get_relative_path()
在至少一个实施例中由数据平台100提供的一个函数在这里被称为get_relative_path()。在至少一个实施例中,函数get_relative_path()使用户(例如,客户、内部开发者、外部开发者、其他编码人员和/或类似人员)能够获得在此被称为存储在给定内部暂存区114或外部暂存区120上的给定文件的“相对路径”。如此处所使用的,存储在暂存区上的文件的相对路径是该暂存区上的文件的网络位置(即,“绝对路径”,例如URL)的终端部分。在至少一个实施例中,给定文件的绝对路径、文件所在暂存区的暂存区URL以及该暂存区中给定文件的相对路径如下组合在一起:
absolute_path=[stage_URL][relative_path]
(其中方括号被示出以说明性地从相对路径分离暂存区URL,并且不是示出来指示它们实际上在文本上存在)。因此,在至少一个实施例中,给定文件的绝对路径(这里有时表示为“absolute_path”)是该文件的暂存区URL和该文件的相对路径的从左到右的顺序的级联。此外,根据惯例,在本公开中,每个暂存区URL(在这里有时表示为“stage_URL”)不以正斜杠(“/”)结束,并且每个相对路径(在这里有时表示为“relative_path”)以正斜杠开始。相反的惯例也同样适用。
在至少一个实施例中,函数get_relative_path()采用两个参数:(1)内部暂存区114或外部暂存区120的名称(暂存区名称在这里有时被表示为“stage_name”),以及(2)存储在内部暂存区114或外部暂存区120上的文件的绝对路径。函数get_relative_path()的调用可以采用以下形式:
Figure BDA0003139348040000131
/>
Figure BDA0003139348040000141
在至少一个实施例中,函数get_relative_path()将文件在暂存区上的相对路径作为字符串返回。
在示例场景中,客户可以使用以下示例命令创建内部暂存区114:
create stage<my_images_stage>
encryption=(type=SSE)
其中“SSE”代表服务器侧加密,这是上面讨论过的术语。或者客户可以使用以下示例命令创建外部暂存区120:
create stage<my_images_stage>
stage_URL=‘s3://example_bucket/my_images_stage’
其中所描绘的stage_URL的形式使用AWSTM作为示例云存储平台118,并且其中“s3://example_bucket”是文本的占位符,例如:
https://example_bucket.s3.amazonaws.com
本领域技术人员将理解,不同的云存储平台具有不同的语法。无论是内部暂存区114还是外部暂存区120,客户现在已经创建了称为“my_images_stage”的暂存区。注意,如果my_images_stage是内部暂存区114,则它仍然具有暂存区URL,但是该暂存区可以由数据平台100确定,并且不是由创建内部暂存区114的用户明确设置或提供的。
返回到函数get_relative_path(),在一个示例场景中,客户可以在my_images_stage中创建两个顶层(即,相对于stage的顶层)文件夹,称为“landscapes”和“skylines”,并且客户可以,例如,在“landscapes”文件夹中存储分别命名为“image01.jpg”到“image50.jpg”的五十个图像文件,以及在“skylines”文件夹中存储分别命名为“image51.jpg”到“image80.jpg”的三十个图像文件。因此,对于该示例场景,假设my_images_stage是用上面示出的示例命令创建的外部暂存区120,该外部暂存区120上的示例文件“image27.jpg”的示例绝对路径是:
s3://example_bucket/my_images_stage/landscapes/image27.jpg
在本公开中使用该术语时,该外部文件的相对路径是:
/landscapes/image27.jpg
而且暂存区名称是my_images_stage,暂存区URL是:
s3://example_bucket/my_images_stage
因此,函数调用,例如:
select get_relative_path
(
my_images_stage,
‘s3://example_bucket/my_images_stage/landscapes/image27.jpg’
);
在这个示例场景中,将返回字符串
/landscapes/image27.jpg
作为该文件相对于该暂存区的相对路径。
函数get_relative_path()可以至少部分地通过引用my_images_stage对象来操作,将
s3://example_bucket/my_images_stage
识别为该暂存区的暂存区URL,并返回在外部暂存区120的识别的暂存区URL之后的所提供的绝对路径的末端部分(即,子串)。在至少一个实施例中,数据平台100对函数get_relative_path()施加限制,即所提供的绝对路径是具有所提供的暂存区名称的暂存区的暂存区URL的子路径。例如,绝对路径
s3://example_bucket/my_images_stage/landscapes/image27.jpg
是暂存区URL的子路径
s3://example_bucket/my_images_stage
此外,在至少一个实施例中,数据平台100允许在相关暂存区具有使用特权的任何用户调用函数get_relative_path()。
函数:get_absolute_path()
在至少一个实施例中,可以由数据平台100提供的另一个函数是这里称为get_absolute_path()的函数,该函数使得用户能够获得存储在给定内部暂存区114或外部暂存区120上的给定(内部或外部)文件的绝对路径。在至少一个实施例中,函数get_absolute_path()采用两个参数:(1)内部暂存区114或外部暂存区120的名称,以及(2)存储在该内部暂存区114或外部暂存区120上的文件的相对路径。函数get_absolute_path()的调用可以采用以下形式:
Figure BDA0003139348040000161
在至少一个实施例中,函数get_absolute_path()将文件在暂存区上的绝对路径作为字符串返回。继续上面的示例场景,其中my_images_stage是外部暂存区120,用户可以进行下面的示例函数调用:
Figure BDA0003139348040000162
在这个示例场景中,这个函数调用将返回字符串
s3://example_bucket/my_images_stage/landscapes/image27.jpg
作为该文件的绝对路径。函数get_absolute_path()可以至少部分地通过引用my_images_stage对象来操作,将
s3://example_bucket/my_images_stage
识别为该暂存区的暂存区URL,以该顺序级联该暂存区URL和所提供的相对路径,并将该级联操作的结果作为字符串返回。在至少一个实施例中,数据平台100允许在相关暂存区具有使用特权的任何用户调用函数get_absolute_path()。
函数:get_presigned_URL()
在至少一个实施例中,可以由数据平台100提供的另一个函数是在此被称为get_presigned_URL()的函数,其使得用户能够获得存储在给定内部暂存区114或外部暂存区120上的给定文件的所谓的预签名URL。如相关领域的技术人员所知,预签名URL(也称为“签名URL”或其他名称)是URL的一种类型,用于授予(通常是临时的)对驻留在特定网络位置的对象(例如,文件)的访问权。为给定文件创建预签名URL的应用、函数、驱动器等通常在该预签名URL中包括一个或更多个特定参数,这些参数有助于对文件的期望的有限访问。
基于以上示例,其中my_images_stage是外部暂存区120,并且再次使用AWSTM语法作为示例,示例文件“image27.jpg”的预签名URL可以采取类似于以下形式的形式:
https://example_bucket.s3.amazonaws.com/my_images_stage/landscapes/
image27.jpg?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=E98AWK%2F20200626%2Fus-west-2%2Fs3%2Faws4_request&X-Amz-Date=20200626T232419Z&X-Amz-Expires=7200&X-Amz-Signature=67e0c9ef01807d04p76w0460f
可以包括其他参数来代替或补充上面所示和下面所述的一个或更多个参数。为了表达清楚,下面显示了上面的预签名URL的示例,每个参数从它自己的行开始,而例如这样的预签名URL的操作版本,将是如上所示的一个连续的字符串。
https://example_bucket.s3.amazonaws.com/my_images_stage/landscapes/image27.jpg?
X-Amz-Algorithm=AWS4-HMAC-SHA256&
X-Amz-Credential=E98AWK[%2F]20200626[%2F]us-west-2[%2F]s3[%2F]aws4_request&
X-Amz-Date=20200626T232419Z&
X-Amz-Expires=7200&
X-Amz-Signature=67e0c9ef01807d04p76w0460f
第一行(包含绝对路径)以“?”字符结尾,该字符通常将绝对路径与URL中的一个或更多个参数分开。此外,每个参数行都以“&”字符结束,该字符通常将URL参数彼此分开。“?”和每一个“&”前面都有一个空格,以使视觉清晰,尽管这个空格在操作性的预签名URL中是不存在的。此外,“X-Amz-Credential”参数中的多个值由3个字符的字符串“%2F”分隔,这是正斜杠(/)字符的URL编码版本。即使在一个有效的预签名URL中没有空格,每个“%2F”都包含在方括号中,在上面的示例中,每个方括号前后都有一个空格,只是为了更清晰的视觉呈现。这些空格和方括号都不会出现在本示例预签名URL的操作版本中。此外,要注意的是,“X-Amz-Credential”参数和“X-Amz-Signature”参数中的伪随机字符串在真实的、完全可操作的预签名URL中可能会更长:这些参数被缩短以方便该示例的呈现。
被设置为“AWS4-HMAC-SHA256”的“X-Amz-Algorithm”参数表明,被称为“SHA-256”的安全散列算法(SHA)是用于生成下面描述的该示例预签名URL的数字签名的散列算法。如本领域技术人员所知,AWS4-HMAC-SHA256(也称为“签名版本4”、“sigv4”、“v4”等)是由AWSS3TM支持的认证方案。
“X-Amz-Credential”参数以字符串“E98AWK”开始,该字符串表示嵌入在该示例预签名URL中用于访问文件“image27.jpg”的安全凭证(也称为访问密钥、访问令牌等)。凭证参数接下来包括(i)“20200626”,其指示2020年6月26日作为该示例预签名URL的生成日期;(ii)“us-west-2”,其被称为示例预签名URL的“aws-region string”;(iii)“S3”,其被称为示例预签名URL的“aws-service string”;和(iv)“AWS 4_request”,其被称为示例预签名URL的“termination string”。
“X-Amz-Date”参数被设置为“20200626T232419Z”,这表示创建此示例预签名URL的示例日期和时间(即时间戳)是2020年6月26日23:24:19(即晚上11:23(和百分之十九秒))。该时间戳以国际标准化组织(ISO)8601格式表示,其中“T”是日期和时间之间的分隔符,“Z”表示所谓的“零时区”,因为它与协调世界时(UTC)(也称为“祖鲁时间(Zulu time)”)没有偏移(即偏移零小时)。在至少一个实施例中,“X-Amz-Date”参数是上述散列算法的输入。
将“X-Amz-Expires”设置为“7200”表明该示例预签名URL被设置为在上述时间戳之后7200秒(即2小时)到期。在许多实现中,可以从预签名URL中省略到期时间字段,在这种情况下,施加默认值(例如,3600秒(即,1小时))。当然也可以设置其他默认值。此外,还可能实现无限期预签名URL,尽管从安全角度来看这可能不太理想。
最后,“X-Amz-Signature”参数设置为“67e0c9ef01807d04c76a0460f”表示该字母数字字符的伪随机字符串是(例如,十六进制编码的)数字签名,这是本示例预签名URL的安全参数。该值通常由上述“X-Amz-Algorithm”参数中指定的散列算法计算。在某些情况下,被称为“security policy”的数据项连同上述时间戳一起是该散列算法的输入。在各种不同的实施例中,可以使用其他散列算法(或其他类型的算法)和/或其他输入来生成数字签名。
返回到函数get_presigned_URL()的定义,在至少一个实施例中,该函数采用两个或三个参数,这取决于是否指定了可选的到期时间参数。如果是,函数接受三个参数。如果不是,函数接受两个参数。因此,在至少一个实施例中,函数get_presigned_URL()的参数是(1)内部暂存区114或外部暂存区120的名称,(2)存储在该内部暂存区114或外部暂存区120上的文件的相对路径,以及可选地,(3)到期时间(在至少一个实施例中表示为整数秒)。函数get_presigned_URL()的调用可以采用以下形式:
Figure BDA0003139348040000201
其中“expiration_time”参数及其前面的逗号显示在单个方括号中,表示该参数是可选的。在至少一个实施例中,get_presigned_URL()以字符串形式返回位于指定相对路径上的指定暂存区中的文件的预签名URL。在一些实现中,特定的数据类型可以被定义为包含预签名URL。继续上述示例场景,其中my_images_stage是外部暂存区120,用户可以进行以下示例函数调用:
Figure BDA0003139348040000202
该示例函数调用可能导致函数get_presigned_URL()返回该文件的上述示例预签名URL。函数get_presigned_URL()可以至少部分地通过使用传递给函数get_presigned_URL()的前两个参数来执行函数get_absolute_path()的功能,或者简单地调用函数get_absolute_path(),然后将预签名的URL组装成具有与上述参数类似的参数。例如,作为执行其操作的一部分,函数get_presigned_URL()可以将安全策略或其他值与当前或未来时间戳一起散列,以导出要包括在预签名URL中的数字签名。还要注意,预签名URL可以是HTTP或HTTPS URL,并且诸如get_presigned_URL()的函数可以以任何方式实现。在一些实施例中,可以实现函数get_presigned_URL(),使得给定文件的绝对路径(而不是暂存区名称和相对路径)被传递到函数中。其他排列也是可能的。在至少一个实施例中,数据平台100允许在相关暂存区具有使用特权的任何用户调用函数get_presigned_URL()。
此外,函数get_presigned_URL()可以在视图中使用。在至少一个实施例中,在这种情况下,数据平台100施加限制,即视图的所有者角色在相关联的暂存区上具有使用特权,以便其他角色能够查询视图并获得一个或更多个文件的预签名URL。例如,在给定的实现中可能存在以下两种角色:
·data_engineer角色,它创建了一个给定的视图,因此拥有该视图,并对相关的暂存区具有使用特权;和
·data_analyst角色,它对视图具有选择特权,但对暂存区没有使用特权。
在至少一个实施例中,在这种情况下,数据平台100允许具有data_analyst角色的用户查询视图并获得相关文件的预签名URL。当使用服务器侧加密但客户端侧不加密的内部暂存区114时,在至少一个实施例中,用户能够使用函数get_presigned_URL()来获得供人类用户使用,以及用于驱动器、应用、服务和/或任何其他合适的数据处理代码的文件的预签名URL。
表函数:list_files()
在至少一个实施例中,可以由数据平台100提供的另一个函数是在此被称为list_files()的函数,其使得数据平台100的用户(例如,客户)能够以数据库表的形式获得给定内部暂存区114或外部暂存区120中的所有文件的列表。在至少一个实施例中,list_files()函数是所谓的“表函数”,因为它是返回表对象的函数。
此示例描述中的list_files()函数采用单个参数:一个暂存区对象,它可以对应于内部暂存区114或外部暂存区120。也可以使用其他实现,例如函数list_files()采用暂存区名称、暂存区URL或其他暂存区标识符的实现。在本公开中使用的示例语法中,暂存区对象由前面带有“@”符号的暂存区名称表示,例如@my_images_stage。如上所述,在至少一个实施例中,表函数list_files()返回列出相关暂存区中所有文件的表。在至少一个实施例中,数据平台100允许在相关暂存区具有使用特权的任何用户调用函数list_files()。
作为至少一个实施例中的表函数,函数list_files()使用户能够利用由数据平台100提供的表相关特征。因此,作为示例,一旦通过list_files()函数将文件目录信息汇集到表中,用户就可以选择该表、过滤该表、在该表上创建定制视图、将谓词应用于该表等。函数list_files()的调用可以采用以下形式:
Figure BDA0003139348040000221
其中“table()”语法作为示例用于向数据平台100指示“table()”括号内的是表格对象。继续上面的示例场景,用户可以进行下面的示例函数调用:
Figure BDA0003139348040000222
该函数调用的示例结果描述如下。
文件目录表:第一个示例-面向外的属性
list_files()的上述函数调用可以返回诸如图2的示例文件目录表200的表。在该示例场景中,如上所述,云存储平台118上名为“my_images_stage”的外部暂存区120包含两个文件夹:名为“landscapes”的文件夹,其包含分别名为“image01.jpg”至“image50.jpg”的50个文件,以及名为“skylines”的文件夹,其包含分别名为“image51.jpg”至“image80.jpg”的30个文件。
包括该示例外部暂存区120的云存储平台118的操作者可以使能够访问其存储位置的用户(和数据平台)能够获得关于存储在该云存储平台118上的各种文件的某些元数据属性。这种性质的文件元数据属性在本公开中被称为文件的“面向外的属性(outward-facing property)”,因为它们大多独立于文件的内容。文件大小当然取决于(但相当不确定)给定文件的内容,尤其是非结构化文件,如图像文件。函数list_files()可以检索这些属性,并将它们组织成表,以供数据平台100的相关客户使用。下面结合图2的示例文件目录表200描述一些这样的面向外的元数据属性。文件目录表200是这里称为面向外的属性文件目录表的一个示例。
文件目录表200可以是客户设计和使用list_files()函数填充的表,或者,如下面更全面描述的,它可以是,例如,在暂存区创建期间设置某个暂存区属性时,由数据平台100自动创建、填充并保持最新的表。在后一种情况下,诸如文件目录表200的表在本公开中有时被称为“内置于”数据平台100,是相对于数据平台100的“内置表”,等等。
如图2所示,文件目录表200包括标题栏202、行204、行206、行208、行210、行212、文件路径列214、相对路径列216、最后修改列218、MD5列220、文件大小列222、文件所有者列224和其他属性列226。在该示例场景中,文件目录表200中的每一行对应于名为my_images_stage的外部暂存区120中的文件。在这里主要描述的实施例中,文件路径列214包含(作为字符串)暂存区上相关文件的绝对路径;在其他实施例中,文件路径列214包含(作为字符串)暂存区的暂存区URL。在至少一个实施例中,相对路径列216包含(作为字符串)对应于该行的文件在暂存区上的相对文件路径。
最后修改的列218可以包含反映对应于该行的文件最近被修改的日期和时间的时间戳。MD5列220可以包含(作为字符串)例如与对应于该行的文件相关联的128位散列值,其中该散列值是MD5消息摘要算法的输出。文件大小列222可以包含(作为数字)对应于该行的文件的文件大小(例如,兆字节(MB)(如图所示)、千字节(kb)等)。文件所有者列224可以包含(作为字符串)作为对应于该行的文件的所有者的用户的标识符。最后,其他属性列226可以包含反映对应于该行的文件的一个或更多个其他属性的变体(例如,复杂)数据类型。当然,一个或更多个不同的元数据属性(例如,文件创建时间戳)可以被包括在诸如文件目录表200的表中,以代替或补充图2中作为示例示出的一个或更多个元数据属性。
使用两组垂直定向的省略符号来表示未描绘的行的相应组,可以看出文件目录表200包括用于集中存储在示例my_images_stage中的80个示例文件中的每一个的行。在行204、行206、行208、行210和行212中,可以看到实际的示例值显示在文件大小列222(例如,1.3MB、1.7MB等)和文件所有者列224(其中“USER_32”被显示为每个明确列出的文件的示例所有者)中,而其他列中的值被描绘为占位符,这些占位符以它们相关联的列命名,并且根据对应于它们的行的文件进行编号。例如,行204意味着对应于名为“image01.jpg”的文件,并且可以看到,行204包括诸如在相对路径列216中的“相对_路径_01”、在最后修改的列218中的“时间戳_01”等的值。这些占位符存在于示例演示中,在实际实现中会被实际的元数据参数值替换。
行210意味着对应于在函数get_relative_path()、get_absolute_path()和get_presigned_URL()的上述描述中使用的文件“image27.jpg”。因此,与上述示例场景保持一致,行210和文件路径列214中的单元将包含字符串:
S3://example_bucket/my_images_stage/landscapes/image27.jpg
行210和相对路径列216中的单元将包含字符串:
/landscapes/image27.jpg
最后,行212意味着对应于示例文件“image80.jpg”,并且表示文件目录表200的最后一行。当以图2所示的方式排序时,文件目录表200的前50行中的绝对路径和相对路径将包括对“landscapes”文件夹的引用,文件目录表200的最后30行中的绝对路径和相对路径将包括对“skylines”文件夹的引用。
在一个示例中,用户可以使用如下语法创建文件目录表200(并将其命名为“file_catalog_table”):
Figure BDA0003139348040000251
用户可以在数据平台100上的相关客户账户的数据库中创建文件目录表200。特别地,用户可以创建文件目录表200作为同一数据库中的对象,其中相关联的暂存区也是对象,或者可以创建文件目录表200作为在另一个数据库中的对象。此外,用户然后可以通过使用诸如以下的语法将文件目录表200填充到图2所示的基本状态:
Figure BDA0003139348040000252
Figure BDA0003139348040000261
其他语法当然也是可能的,因为这里提供的那些语法是示例性的而非限制性的。
文件目录表:第二个示例—内容相关属性
继续示例场景,用户可能希望创建具有不同于面向外的属性文件目录表200的列的列(例如,文件元数据属性)的表。在一个示例中,用户可能希望这些列反映与各种文件的内容相关的属性。按照本公开的说法,这种类型的文件元数据属性被称为相关文件的“内容相关属性”。例如,用户可能对图像文件的以下属性列表(其中一些(例如文件名和相对路径)实际上是面向外的属性)感兴趣:
·文件名;
·图像格式(如JPG、PNG等);
·图像宽度(即x维度);
·图像高度(即y维度);
·图像是否是绘图(与例如照片相反);
·图像是否是黑白图像(与例如彩色图像相反);
·一个或更多个图像标签是否(以及哪个)适用于图像;
·图像的主色;和
·文件在暂存区上的相对路径。
要创建包含这些属性的内容相关文件目录表(并命名为“image_file_catalog_table’”),用户可以使用以下语法:
Figure BDA0003139348040000271
注意,该表不仅包括上面列出的每个图像属性的列,还包括相关文件的相对路径存储为字符串的列(“file_URL”)。在本例中,名称“file_URL”用于名为image_file_catalog_table的表的模式中,尽管该表中的该列将被填充文件的相对路径(与绝对路径相反),如下所示。做出这种命名选择是因为示例图像处理函数(下面解释为用于准备JSON文件以用于填充表)将绝对路径存储在同一标签下,即“file_URL”。
为了填充表image_file_catalog_table,用户可以首先在my_images_stage上的文件上使用图像处理功能(例如,AWSTMLAMBDATM功能、
Figure BDA0003139348040000273
AUTOMATIONTM功能等),以创建存储在my_images_stage中的JSON文档的列表,例如,每个图像文件一个JSON文档(或者包含多个相应记录的一个JSON文档,每个图像文件一个记录,以及其他可能的实现),其中图像文件的元数据属性以半结构化格式记录。对于文件“image27.jpg”,相应的JSON文档可能包括以下文本:
Figure BDA0003139348040000272
Figure BDA0003139348040000281
然后,用户可以通过使用如下命令来填充image_file_catalog_table:
Figure BDA0003139348040000282
Figure BDA0003139348040000291
其中“$1”是可用于表示给定暂存区中每个文件中的第一列(例如,数据集)的语法示例。此命令将应用于my_images_stage上的所有JSON文档。
在至少一个实施例中,上述“copy into”命令的结果是名为image_file_catalog_table的表被填充,如图3所示的示例文件目录表300所示。注意,图2和图3描绘了平行的行,即,这两幅图中的每一幅描绘了对应于样本文件“image01.jpg”、“image02.jpg”、“image03.jpg”、“image27.jpg”和“image80.jpg”的行。此外,图3中编号为300系列的行对应于与图2中编号类似的200系列的行相同的示例图像文件。例如,图2中的行210和图3中的行310都对应于示例文件“image27.jpg”。并且类似于文件目录表200,在文件目录表300中,一些单元格包含实际的示例值(例如,1024、绿色等),而有些单元格包含占位符(例如,“array03”、“URL02”等)。
文件目录表300包括标题栏302、行304、行306、行308、行310、行312、文件名列314、文件格式列316、x维度列318、y维度列320、is-drawing(为绘图)列322、is-black-and-white(为黑白)列324、文件标签列326、主色列328和文件URL列330。在至少一个实施例中,在给定的行中,文件名列314包含相应文件的名称(作为字符串,如图3所示,没有“.jpg”扩展),文件格式列316包含相应文件的图像格式(作为字符串),x维度列318包含相应文件的x维度(作为整数个像素),y维度列320包含相应文件的y维度(作为整数个像素),is-drawing列322包含指示相应文件是否是绘图的布尔值,is-black-and-white列324包含指示相应文件是否是黑白图像的布尔值,文件标签列326包含指示相应文件中的内容(例如,所描绘的对象)的一个或更多个标签的阵列,主色列328包含相应文件中的主色(作为字符串),文件URL列330包含相应文件的相对路径(作为字符串)。由于在上述“copy into”语句中包含函数get_relative_path(),文件URL列330包含相对路径。
例如,如果用户随后想要在暂存区my_images_stage中为每个黑白非绘图(例如,黑白照片)获得预签名URL,则用户可以运行命令,例如:
Figure BDA0003139348040000301
该命令将返回一列关系,其中该列被命名为“presigned_URL”,包含对应于image_file_catalog_table(即,在文件-目录表300中)中的行的每个文件的预签名URL,其中对应的图像文件被确定为黑白图像且不是绘图。然后,用户可以点击这些预签名URL中的任何一个或更多个来访问(例如,下载)实际的图像文件,因为预签名URL将包括访问令牌来准许对相应文件的临时访问。当然,这里也可以列出许多其他示例命令。在创建其加密属性被设置为“SSE”的my_images_stage的实施例中,那些下载的文件将是未加密的(在某些情况下,一旦它们从HTTPS/TLS或传输中使用的类似连接出现则是未加密的)。使用这样的命令,客户可以生成表、视图等来存储预签名的URL和其他文件元数据。然后,客户可以对这样的表、视图等运行查询,解锁应用于存储在(内部或外部)暂存区上的他们的文件的数据平台100的能力。
文件元数据摄取管道(pipeline)
此外,根据本公开的各种实施例,数据平台100的用户(例如,客户)可以容易地开发管道,用于将与存储在平台上的文件相关的元数据自动摄取到他们在数据平台100上的账户中。下面描述了有助于构造这种管道的各种实施例的一些特征。如上所述,以下描述的示例涉及外部暂存区120。
API集成
数据平台100的一个这样的特征有助于使客户能够构建文件-元数据-摄取管道,该特征被称为API集成。如此处所使用的,在至少一个实施例中,API集成是账户级对象,其定义了具有给定角色(其本身具有足够的特权)的用户将与由给定云存储平台118(例如AWSTM
Figure BDA0003139348040000312
等)提供的HTTPS代理服务进行交互的方式。如上所述,此处给出的AWSTM示例用于说明。
在至少一个实施例中,API集成是一种机制,通过该机制,给定的外部API/函数可用作数据平台100中的表函数。创建这种API集成的示例语法可以采用以下形式:
Figure BDA0003139348040000311
Figure BDA0003139348040000321
其中“example_server”可以是相关云存储平台118上的服务器。
这个示例API集成被命名为“get_metadata_api_integration”,并且如所允许的URL的两个示例中所示,可以结合检索与图像文件相关的元数据和与PDF文件相关的元数据来使用。当然,也可以包括其他类型的文件,或者代替这些示例类型。对给定API集成的一个或更多个允许的URL的指定是一种示例方式,以控制当将对应的API集成用于外部函数时,可以导航到哪一个或更多个URL,如下文更全面描述的。因此,在给定的API集成中,“允许的URL”是在该API集成下允许的一个或更多个URL的允许的URL列表。给定的允许URL可以对应于在例如AWSTM中开发的外部函数。API集成通常可以是形式化和有效管理数据平台100与一个或更多个外部函数之间的交互的方式。在至少一个实施例中,一旦创建了上述示例API集成,数据平台100就能够向相关联的云存储平台118的表示状态转移(REST)API进行认证。此后,用户可以创建和/或访问外部函数来获取图像元数据。
外部函数
示例客户可以在创建上述示例API集成之前或之后,创建与API集成相关联的外部函数。虽然上面在用于创建get_metadata_api_integration示例的语法中引用了两个示例函数(“get-image-metadata”和“get-pdf-metadata”),但这是这里重点关注的两个函数中的第一个。客户可以创建一个“externalfunction”对象来引用该外部函数,使用的语法如下:
Figure BDA0003139348040000322
Figure BDA0003139348040000331
如本例所示,正在创建的外部函数对象将“get_metadata_api_integration”设置为其API集成,并从API集成中两个允许的URL中选择显示的URL作为该特定示例外部函数对象的URL,该对象名为“get_image_metadata_ext_function”。此外,这个外部函数对象接受一个(字符串)参数:关联的暂存区上的文件的预签名URL。在云存储平台118上实现的实际外部函数可以以类似于上面讨论的“图像处理函数”的方式操作(在这种情况下,在产生JSON文件的上下文中)。实际上,该示例外部函数可以产生并随后返回包括类似于上面所示的示例JSON文件的半结构化内容的变体,使得下面描述的任务可以从该返回的变体中读取各个字段。
图4示出了示例消息流400,其中数据平台100处的客户账户402用于调用API来调用外部函数。客户账户402中的用户进行API调用404,这导致外部函数调用406。外部函数调用406导致云存储平台118执行外部函数执行408,这又导致从云存储平台118到客户账户402的文件元数据和/或内容返回410。在文件元数据和/或内容返回410之后,客户账户402执行文件元数据和/或内容存储412。外部函数调用406和文件元数据和/或内容返回410可以使用一个或更多个HTTP/TLS连接来完成。下面讨论关于这些步骤中的一个或更多个可以被执行的方式的进一步的细节。例如,引用表或暂存区上的流的任务的执行可能涉及API调用404和外部函数调用406,这又导致外部函数执行408、文件元数据和/或内容返回410以及文件元数据和/或内容存储412。
一旦创建了上述API集成和外部函数对象,客户就可以通过创建所谓的流来继续构建文件元数据摄取管道,在这种情况下,在名为image_file_catalog_table(即,图3的文件目录表300所示的表)的表上创建流,使用如下语法:
create stream image_file_catalog_stream
on
table image_file_catalog_table;
该示例流可以被称为“表流”,因为它是在特定的表上创建的流,在这种情况下,该特定的表为image_file_catalog_table,被称为所创建流的“源表”,如上所示,该流被命名为image_file_catalog_stream。一般来说,流记录对表进行的数据操作语言(DML)更改,包括关于插入、更新和删除的信息。该信息在本领域中也被称为变化数据捕获(CDC)信息。下面将进一步描述在示例实施例中使用该创建的流的方式。
任务
示例客户可以通过使用以下语法创建名为“image_file_metadata_task’”的任务对象,来继续构建上述文件-元数据-摄取管道:
Figure BDA0003139348040000341
/>
Figure BDA0003139348040000351
在至少一个实施例中,在上述任务创建命令中,可以使用语法“merge into”来代替“insert into”。此外,注意到条件“where metadata$action=‘insert’”是“metadata$”前缀在数据平台100的一些实施例中如何可用于引用由数据平台100识别、控制并使其可用的元数据的示例。在至少一个实施例中,客户可以使用这样的语法,但是不能改变或删除相关联的元数据项(例如,元数据列)。
在至少一个实施例中,数据平台100提供至少两个“metadata$”列:“metadata$action”和“metadata$is_update”。此外,在一个实施例中支持至少两个“metadata$action”值:“insert”和“delete”。其他也可以得到支持。metadata$is_update列可以存储布尔值,该布尔值指示表流中相应行的metadata$action(‘insert’或‘delete’)是否是对源表(即,image_file_catalog_table)中一行或更多行的更新的一部分。这种更新可以对应于云存储上文件被替换,在至少一个实现中,这触发删除通知和插入通知。
在至少一个实施例中,每当任务被执行时,它将检索该暂存区中每个新插入的图像文件的元数据,并将检索到的元数据插入到名为image_file_catalog_table的表中,同时将上述get_relative_path()函数的结果插入到文件-URL列330中。在至少一个实施例中,上述任务将只对上面定义的名为“get_image_metadata_ext_function”的外部函数进行单次调用。注意,由给定外部函数处理的文件可以是内部文件,也可以是外部文件。在内部文件的情况下,在一些实施例中,这样的文件可以由JavaScript过程和/或Java函数来处理。
暂存区增强
本公开的这一部分描述了根据至少一个实施例在外部暂存区创建期间可用的若干增强。
内置文件目录表
在至少一个实施例中,当创建内部暂存区114或外部暂存区120时,用户可以选择指示数据平台100创建内置文件目录表,该文件目录表可以具有类似于这里结合图2的文件目录表200所描绘和描述的模式(和示例内容),但是将由数据平台100管理和控制,同时仍然对用户(例如,客户)可用。因此,在至少一个实施例中,客户将不具有改变内置文件目录表、丢弃(即,删除)内置文件目录表等的许可,并且表的模式由数据平台100定义。在一些实施例中,可以为包括内置文件目录表的暂存区实现特殊类型的暂存区(除了简单的“内部”和“外部”),尽管这不是下面描述的实施例的类型。
此外,在一些实施例中,文件目录表(例如,内置文件目录表)不仅包括对一个暂存区(例如,外部暂存区)中的文件的引用,还包括对可能是内部和/或外部的多个不同暂存区中的文件的引用。在一些实施例中,文件目录表包括跨多个云存储平台的暂存区中的文件列表。在一些这样的实例中,与多个云存储平台中的至少一个其他平台相比,多个云存储平台中的至少一个可以针对存储在其上的文件实现不同的语法和/或不同的面向外的元数据属性。数据平台100可以标准化这种差异,以向其用户产生统一的呈现。多云文件目录表的实现在用例中是有用的,例如跨云暂存区的重复数据删除、跨云暂存区的元数据搜索、跨云暂存区的数据资产盘点等。
回到本示例,在至少一个实施例中,当创建暂存区时,用户可以选择让数据平台100在内部暂存区114中使用如下语法创建内置文件目录表的选项:
create stage<my_images_stage>
encryption=(type=SSE)
store_file_catalog=true
因此,用户可以通过将诸如store_file_catalog的标志设置为真来选择该选项。如果用户不想选择此选项,用户可以将store_file_catalog设置为伪。在一些实施例中,如果用户没有为诸如store_file_catalog的标志指定值,则为用户选择默认值(在各种不同的实现中可以是真或伪)。对于外部暂存区120,用户可以选择让数据平台100使用如下语法创建内置文件目录表的选项:
create stage<my_images_stage>
stage_URL=‘s3://example_bucket/my_images_stage’
store_file_catalog=true
在至少一个实施例中,当内部暂存区114或外部暂存区120的store_file_catalog被设置为真时,数据平台100响应性地为该暂存区创建内置文件目录表,并将文件目录存储在该表中。数据平台100可以在关联暂存区也是对象的同一数据库内或者在另一数据库中创建内置文件目录表作为对象。如上所述,内置文件目录表可以具有与文件目录表200(在本公开中被命名为“file_catalog_table”)相同的模式,这也是这里针对list_files()函数呈现的示例模式。在至少一个实施例中,一旦store_file_catalog标志被设置为真(在一些实施例中,在暂存区创建期间或之后),数据平台100不允许用户改变该值;在其他实施例中,数据平台100确实允许用户改变该值,在这种情况下,数据平台100可以从相关联的暂存区删除内置文件目录表。在至少一个实施例中,在具有内置文件目录表的暂存区,用户可以从该表中进行选择、在该表上创建视图等。
因此,在至少一个实施例中,与上述文件目录表200和文件目录表300一样,内置文件目录表的结构包括对应于相关暂存区中的每个文件的行。至少一个实施例中的结构还包括多个列,这些列包括关于文件的元数据。例如,这些可以是文件目录表200中所示的相同的列,并且在至少一个实施例中,如果用户从内置文件目录表中进行“select*”,则这些列将被返回。
在至少一个实施例中,数据平台100(i)维护与内置文件目录表中引用的文件相关联的一个或更多个平台控制的元数据列,以及(ii)使用诸如上述“metadata$”语法的语法来授予对一个或更多个平台控制的元数据列的访问权。在一些实施例中,在一些情况下,除了一个或更多个其他列之外,数据平台100至少维护与内置文件目录表中引用的文件相关联的以下平台控制的元数据列:
metadata$filename
metadata$relative_path
metadata$presigned_URL
“metadata$filename”列可以包含对应于该行的文件名,“metadata$relative_path”列可以包含与函数get_relative_path()在调用时返回的字符串相同的字符串,函数get_relative_path()的参数设置为(i)相关暂存区的名称和(ii)对应于内置文件目录表中该行的文件的绝对路径,并且“metadata$presigned_URL”列可以包含与get_presigned_URL()在调用时返回的字符串相同的字符串(即相同的presigned_URL),函数get_presigned_URL()的参数设置为(i)相关暂存区的名称和(ii))对应于内置文件目录表中该行的文件在暂存区上的相对路径。
除了实现这些列之外,数据平台100还可以在使用list_files()函数填充的表的上下文中实现这样的“metadata$”列。为了说明这种可能性,图5示出了与图3的文件目录表300相同的示例文件目录表500,除了(i)参考数字是500系列而不是300系列,以及(ii)文件目录表500包括(a)对应于语法“metadata$relative_path”的相对路径元数据列532和(b)对应于语法“metadata$presigned_URL”的预签名URL元数据列534。
相对路径元数据列532和预签名URL元数据列534在图5中被示为通过水平连接线从文件目录表500的主体偏移,以示出它们与文件目录表500的其余部分的“元”关系。在至少一个实施例中,诸如“select*from[the file-catalog table 500]”的语句不会导致来自相对路径元数据列532或预签名URL元数据列534的值被返回,因为在至少一个实施例中那些列需要被明确请求才能被返回。一般而言,在至少一个实施例中,“metadata$”列仅在明确包括在语句(例如,“select metadata$presigned_URL from…”)中的情况下才显示在语句结果中。此外,文件目录表200的类似版本(可以是内置文件目录表)可以被显示为包括那些“metadata$”列。
关于metadata$presigned_URL列(例如,预签名-URL元数据列534),由于大多数预签名URL的时间敏感性质(即,到期时间),数据平台100可以周期性地刷新该列,或者可以被配置为每当执行包括“metadata$presigned_URL”的语句时生成新的预签名URL(例如,通过调用函数get_presigned_URL())。其他实现也是可能的。在大多数实现中,不能简单地将新的时间戳替换到给定的预签名URL中,因为该时间戳值通常是用于在预签名URL中生成访问令牌的散列算法的输入。
命令:刷新
在至少一个实施例中,数据平台100提供可结合例如内置文件目录表使用的“refresh”命令。该命令在各种实施例中可用于实现内置文件目录表的“自动同步”功能。在至少一个实施例中,使用刷新命令来填充内置文件目录表,刷新命令可以具有如下语法:
alter stage stage_name refresh[sub_path];
如图所示,刷新命令使用了“alter”命令,并有一个可选的子路径参数。在一个实施例中,如果提供了子路径参数,则它指定到暂存区位置的相对路径,并且刷新命令将只刷新指定子路径下的所有文件的内置文件目录表。因此,使用上述示例场景,用户可以发出命令,例如:
alter stage my_images_stage refresh;
或者
alter stage my_images_stage refresh‘/landscapes’;
刷新命令可用于引导内置文件目录表、内置文件目录表的初始填充等。此外,在刷新命令的不同实现中,可以使用除暂存区名称之外的暂存区的唯一标识符。该命令用于刷新内置文件目录表的所有指定行。
刷新命令可以第一次用于捕获已经在一个暂存区中的所有文件,并且可以被使用一次或更多次(例如,周期性地和/或响应于一个或更多个定义的触发(例如,客户的系统或相关联的存储平台经历中断、关于相关联的外部暂存区120的认证问题等),以使内置文件目录表从源中还原。在典型的实现中,内置文件目录表中的信息于是是冗余的,因为它反映了实际上处于给定暂存区的文件集合。举个例子,如果一本电话簿丢失了,不同的居民仍然在他们的房子里,尽管重新创建电话簿可能是一项相当昂贵和耗时的工作。类似地,刷新命令可能是计算量大且耗时的操作,这取决于暂存区上或指定子路径中的文件数量。
通知集成
在至少一个实施例中,数据平台100在暂存区创建期间提供选项,以指定正在创建的暂存区包括被称为通知集成的内容,在至少一个实施例中,通知集成是提供数据平台100和第三方通知服务(例如,第三方云消息队列服务)之间的接口的账户级对象;因此,给定的通知集成可以定义数据平台100如何与给定的第三方通知服务对接和交互。通知集成暂存区属性可以在内部暂存区114的创建期间使用如下语法来启用:
create stage my_images_stage
encryption=(type=SSE)
store_file_catalog=true
notification_integration=‘image_file_catalog_notification_integration’
在至少一个实施例中,通知集成暂存区属性是可选的,并且如果在暂存区创建期间被包括,则启用该属性并创建具有指定名称的通知集成。用户可以使用如下语法来启用外部暂存区120的通知集成暂存区属性:
create stage<my_images_stage>
stage_URL=‘s3://example_bucket/my_images_stage’
store_file_catalog=true
notification_integration=‘image_file_catalog_notification_integration’
在至少一个实施例中,数据平台100通过创建管道并从数据平台100的自动摄取基础设施读取通知来响应为给定暂存区启用的通知集成暂存区属性。在至少一个实施例中,对于每个文件放置通知,数据平台100在内置文件目录表中插入关于新文件的记录。此外,在至少一个实施例中,对于每个文件删除通知,数据平台100从内置文件目录表中删除相应的记录。在至少一个实施例中,数据平台100对通知集成暂存区属性施加约束,即所创建的通知集成对于云存储平台118与对于该暂存区是相同的。
暂存区上的流和流上的任务的创建
此外,在至少一个实施例中,数据平台100通过在内置文件目录表上创建流来促进内置文件目录表的上述自动同步能力。在至少一些这样的实施例中,当新文件出现在暂存区中时,数据平台100识别该文件并将其编目,促进内置文件目录表的内容和相关暂存区上存在的实际文件之间正在进行的同步关系。该功能使得能够使用由数据平台100在至少一些实施例中提供的流对象的CDC能力。因此,利用该功能的实施例利用了由数据平台100提供的表流,并且在许多情况下将处理限于新插入的文件和/或更新的文件。客户可以使用以下语法:
create stream stream_name
on
stage stage_name;
例如,假设创建my_images_stage时store_file_catalog被设置为真,客户可以使用如下语法:
create stream image_file_catalog_stream
on
stage my_images_stage;
在至少一个实施例中,所创建的流的模式连同如上所述的两个额外的列metadata$action和metadata$is_update与内置文件目录表相同。
然后,客户可以在这个流上创建一个类似于上面给出的示例的任务。通过这种方式,客户可以自动保持文件目录表与该暂存区中文件的实际当前清单同步。在至少一个实施例中,该流使用其CDC能力来识别哪个或哪些文件被添加到相关联的暂存区、在相关联的暂存区中被更新和/或从相关联的暂存区中被移除,从而能够对为该暂存区存储的文件目录(即,内置文件目录表)进行改变跟踪。
此外,在一些实施例中,客户可以基于对内置文件目录表的改变来实现代码以保持诸如文件目录表300(或文件目录表500)的表是最新的。因此,客户可以使用在内置文件目录表或该表上的流中反映的一个或更多个文件的添加或更新作为触发器来调用外部函数来重新处理添加/更新的文件,以保持文件目录表300(或文件目录表500)最新。类似地,对文件目录表200的删除可以用作从文件目录表300(或文件目录表500)进行并行删除的触发器。这样的实现在处理许多文件彼此不同并且许多客户对关于他们的文件的不同元数据参数集感兴趣的事实时可能是有用的,并且同样地,客户可以设计许多不同的表,如文件目录表300(或文件目录表500)。为list_files()函数和/或内置的文件目录表提供了一个标准springboard,客户可以从中实现定制。附加地或替代地,数据平台100可以提供一个或更多个表,这些表是内置文件目录表的衍生物。其他实现也是可能的。
示例用例:文件共享
本公开的系统和方法提供了许多可以实现的定制。在本节中,术语“文件目录表”用于表示类似于文件目录表200(无论是内置的还是使用list_files()函数或另一类似函数生成的)、文件目录表300、文件目录表500等的任何表。如本文所述,利用在数据库表结构(即,文件目录表)中形式化的暂存区的文件目录信息,客户能够如所讨论的那样,对他们的一个或更多个文件目录表执行强大的数据库操作。这种数据库操作包括运行查询、生成视图等。下面讨论一个示例用例。
此用例涉及让客户能够以安全的方式共享文件。根据至少一个实施例,客户可以在给定的一个文件目录表上创建定制视图。在本例中,文件不是图像文件,而是PDF文件形式的多个不同患者的病历。在该示例中,客户(例如,医疗记录公司)创建类似于文件目录表500的衍生文件目录表,其中有用于患者编号的字段(例如,给定患者的唯一标识符,因为多个患者可以具有相同的姓名)。在本例中,还有一个字段指示患者所在(或曾经所在)的医院。此外,在本例中,上述衍生文件目录表包含多家医院的患者记录。客户可以创建一个视图,该视图(i)限于(或曾经)在一个特定医院的患者,并且(ii)包括(或曾经)在该特定医院的相关患者的每个PDF文件的预签名URL(通过使用函数get_presigned_URL()或元数据列metadata$presigned_URL)。然后,客户可以简单地与特定医院共享该视图,从而适当地向该特定医院提供对他们的记录的访问权,通过将在(或曾经在)一个或更多个其他医院中的患者的那些文件保持在该示例中与该视图共享的特定医院之外来保护在(或曾经在)一个或更多个其他医院中的患者的隐私,并且由于预先设计的URL的高安全性和时间限制性质,保护与该特定医院相关联的患者的隐私。
这种类型的实现相对于当前的实现是有意义的进步,在当前的实现中,例如,文件以日期前缀存储,并且只能使用那些命名约定日期前缀上的表达式来共享,这没有考虑到这样的事实,例如,与给定医院相关联的患者可能具有来自多个日期的记录,而与多个不同医院相关联的患者可能具有来自同一日期的记录。这里描述的在文件目录表上创建安全视图非常有效地解决了这个用例。这是一种在文件目录表上实现授权系统的方法。此外,可以设想,数据平台100可以为不同的客户提供不同的list_files()函数和不同的内置文件目录表,因此这样的用例可以针对如上所述的派生表、list_files()-生成的表、内置文件目录表和/或另一种类型的文件目录表。
图6示出了根据至少一个实施例的示例方法600。在各种不同的实施例中,方法600可以由任何计算和通信设备或这种设备的系统来执行,该计算和通信设备或系统被适当地编程或以其他方式安排来执行这里描述的操作。在一些实施例中,方法600的全部或部分由数据库管理器102执行,这可以涉及方法600的一个或更多个方面由资源管理器104执行,方法600的一个或更多个方面由执行平台106执行,和/或方法600的一个或更多个方面由数据库管理器102的一个或更多个其他功能组件执行。作为示例而非限制,方法600在下面被描述为由数据平台100的数据库管理器102执行。
在操作602,数据库管理器102从客户端116接收暂存区创建指令。暂存区创建指令请求数据平台100为数据平台100上的用户(例如,客户)账户创建文件暂存区,其中用户账户与客户端116相关联。相对于数据平台,文件暂存区可以是内部暂存区或外部暂存区。在文件暂存区是内部暂存区的情况下,该内部暂存区可以是服务器侧加密的,但不是客户端侧加密的。
在操作604,数据库管理器102从客户端116接收文件目录表创建指令。文件目录表创建指令请求数据平台为文件暂存区创建文件目录表。在某些情况下,暂存区创建指令包括文件目录表创建指令——例如,像“store_file_catalog”这样的标志可以被设置为真,作为“create stage”命令的一部分,如上所述;在这种情况下,文件目录表可以是由数据平台100管理的内置文件目录表。
在其他情况下,文件目录表创建指令可以在接收暂存区创建指令和相应的暂存区创建之后接收。例如,用户可以使用“create table”命令来创建与暂存区相关的文件目录表。在一些这样的实施例中,数据平台100可以接收对诸如list_files()之类的表函数的调用,并且可以响应性地执行相关联的表函数以用例如该文件暂存区中的文件的一个或更多个面向外的属性来填充文件目录表。在这种类型的实施例中,文件目录表可以是用户设计的文件目录表。在其他情况下,在数据平台100允许的实施例中,文件目录表可以是内置文件目录表,例如,在相关暂存区的创建之后启用诸如“store-file-catalog”的标志。
在操作606,响应于在操作604接收到文件目录表创建指令,数据库管理器102为文件暂存区创建所请求的文件目录表,其中文件目录表包含对应于在操作602请求创建的文件暂存区中的一个或更多个文件的一个或更多个元数据项。数据库管理器102可以在数据平台100上的用户账户的数据库中创建文件目录表。文件目录表和文件暂存区都可以是代表用户账户中数据库的数据库对象中的对象。在创建了文件目录表之后,数据库管理器102可以接收并执行文件目录表上的一个或更多个数据库表命令。这些命令可以包括从文件目录表中进行选择、在文件目录表上创建一个或更多个视图、向文件目录表应用一个或更多个谓词等。
在至少一个实施例中,数据库管理器102可以接收关于文件暂存区的外部函数调用,并且可以响应性地执行相关联的外部函数来检索关于文件暂存区中的一个或更多个文件的元数据和/或内容。检索的元数据和/或内容可以包括文件暂存区中的一个或更多个文件的一个或更多个面向外的属性和/或一个或更多个内容相关的属性。
数据库管理器102可以对文件目录表执行一次或更多次刷新命令。例如,数据库管理器102可以相对于文件目录表周期性地执行刷新命令。
此外,数据库管理器102可以接收和执行命令,以在文件目录表上创建和共享视图(例如,安全视图)。视图可以包括预签名URL,用于提供对视图中引用的文件的访问,并且视图中引用的文件可能少于文件暂存区中的所有文件。
数据库管理器102可以在文件暂存区上实现流,并且可以基于文件暂存区上的流来更新文件目录表,在某些情况下,使用关于流的任务来更新文件目录表。数据库管理器102可以实现文件目录表上的流,并且可以基于文件目录表上的流更新第二(例如,派生)表。在一些实施例中,数据库管理器102利用通知服务(经由例如通知集成)来接收关于文件暂存区的改变的通知,并且基于从通知服务接收的通知来更新文件目录表。
在至少一个实施例中,文件目录表创建指令(其在操作604被接收)请求数据平台100为多个文件暂存区(包括上面结合方法600讨论的示例文件暂存区)创建(统一的)文件目录表。在这样的实施例中,文件目录表可以包含对应于跨多个文件暂存区的一个或更多个文件的一个或更多个元数据项。多个文件暂存区可以包括相对于数据平台100的至少一个内部暂存区和相对于数据平台100的至少一个外部暂存区。替代地或附加地,多个文件暂存区可以跨越多个云存储平台(例如,云存储平台118中的一个或更多个,并且在某些情况下,数据平台100利用云存储平台来实现其存储平台110)。
如上所述,在方法600的一个或更多个实施例中,文件暂存区可以是内部的或外部的。请求的文件目录表可以是用户定义的,也可以是内置的文件目录表。在操作604接收的文件目录表创建指令可以是在操作602接收的暂存区创建指令的一部分;也就是说,文件暂存区可以作为创建暂存区的指令的一部分被请求。在其他实施例中,在操作604接收的文件目录表创建指令是在暂存区创建之后接收的,例如,使用“create table”语法,然后使用诸如list_files()的函数来填充所创建的表。可以在一个或更多个表上创建一个或更多个流,并且可以针对一个或更多个流创建一个或更多个任务。外部函数可以通过API集成来使用。此外,在方法600的一个或更多个实施例中可以存在这里描述的众多选项中的任何一个或更多个。此外,还可以定义许多其他方法。
图7示出了根据至少一个实施例的示例计算设备700。在一些实施例中,计算设备700用于实现本文所讨论的一个或更多个系统和组件。此外,计算设备700可以与本文描述的任何系统和组件进行交互。因此,计算设备700可以用于执行各种程序和任务,诸如本文所讨论的那些程序和任务。计算设备700可以用作服务器、客户端或任何其他计算实体。计算设备700可以是多种计算设备中的任何一种,例如台式计算机、笔记本计算机、服务器计算机、手持计算机、移动设备、平板电脑等。
在所描绘的实施例中,计算设备700包括一个或更多个处理器702、一个或更多个存储设备704、一个或更多个接口706、一个或更多个大容量存储设备708以及一个或更多个输入/输出设备710,所有这些都耦合到总线714。一个或更多个处理器702包括执行存储在一个或更多个存储设备704和/或一个或更多个大容量存储设备708中的指令的一个或更多个处理器或控制器。
存储设备704可以包括各种计算机存储介质,例如易失性存储器(例如,随机存取存储器(RAM))和/或非易失性存储器(例如,只读存储器(ROM))。一个或更多个存储设备704还可以包括可重写ROM,诸如闪存。处理器702还可以包括各种类型的计算机存储介质,例如高速缓冲存储器。
接口706可以包括允许计算设备700与其他系统、设备、计算环境等交互的各种接口。示例接口706包括任意数量的不同网络接口,例如到局域网(LAN)、广域网(WAN)、无线网络、互联网等的接口。
大容量存储设备708可以包括各种计算机存储介质,例如磁带、磁盘、光盘、固态存储器(例如闪存)等。大容量存储设备708中还可以包括各种驱动器,以能够从各种计算机存储介质读取和/或向其写入。大容量存储设备708可以包括可移动介质和/或不可移动介质。
输入/输出设备710可以包括允许向计算设备700输入数据和/或从计算设备700检索数据和/或其他信息的各种设备。示例输入/输出设备710包括光标控制设备、键盘、小键盘、麦克风、监视器或其他显示设备、扬声器、打印机、网络接口卡、调制解调器、透镜、CCD或其他图像捕捉设备等。
总线714允许处理器702、存储设备704、接口706、大容量存储设备708和输入/输出设备710彼此通信,以及与可以耦合到总线714的其他设备或组件通信。总线714代表几种类型的总线结构中的一种或多种,例如系统总线、PCI总线、IEEE 1394总线、USB总线等。在一些示例中,总线714包括一个或更多个网络连接。
为了说明的目的,程序和其他可执行程序组件在本文中被示为离散块,尽管应当理解,这样的程序和组件可以在不同时间驻留在计算设备700的不同存储组件中并且由一个或更多个处理器702执行。可选地,这里描述的系统和过程可以在硬件中实现,或者使用硬件和软件和/或固件的组合来实现。例如,可以对一个或更多个专用集成电路(ASIC)进行编程,以执行本文所述的系统和过程中的一个或更多个系统和过程。
可执行指令和计算机存储介质/媒介
各种存储器可以存储一组或多组指令712和数据结构(例如,软件),这些指令712和数据结构体现或被这里描述的任何一种或多种方法或功能所利用。当由处理器702执行时,这些指令712促使各种操作来实现所公开的实施例。
如这里所使用的,术语“计算机存储介质(和媒介)”、“机器存储介质(和媒介)”和“设备存储介质(和媒介)”意思相同,并且可以在本公开中互换使用。这些术语指的是存储可执行指令和/或数据的单个存储设备或多个存储设备和/或介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。相应地,这些术语应当被认为包括但不限于包括处理器内部或外部的存储器的固态存储器以及光和磁介质。计算机存储介质、机器存储介质和/或设备存储介质的具体示例包括非易失性存储器,非易失性存储器包括例如半导体存储器设备,诸如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、现场可编程门阵列(FPGA)和闪存设备;磁盘,如内部硬盘和可移除磁盘;磁光盘;以及CD-ROM和DVD-ROM光盘。术语“计算机存储介质(和媒介)”、“机器存储介质(和媒介)”和“设备存储介质(和媒介)”具体排除载波、调制数据信号和其他这样的介质,其中至少一些包含在下面讨论的术语“传输介质(和媒介)”中。
传输介质/媒介
在各种示例实施例中,这里描述的任意网络或网络的部分可以是自组织网络(adhoc network)、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网络(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、
Figure BDA0003139348040000481
网络、另一种类型的网络、或两种或更多种这样的网络的组合。例如,这里描述的任何网络或网络的一部分可以包括无线或蜂窝网络,并且一个或更多个利用的耦合可以是码分多址(CDMA)连接、全球移动通信系统连接(GSM)或另一种类型的蜂窝或无线耦合。在该示例中,耦合可以实现多种类型的数据传输技术中的任何一种,如单载波无线电传输技术(1xRTT)、演进数据优化(EVDO)技术、通用分组无线电服务(GPRS)技术、增强型数据速率GSM演进(EDGE)技术、包括3G、第四代无线(4G)网络、通用移动电信系统(UMTS)、高速分组接入(HSPA)、微波接入全球互操作性(WiMAX)、长期演进(LTE)标准的第三代合作伙伴计划(3GPP)、由各种标准设置组织定义的其他技术、其他长程协议、或其他数据传输技术。
指令712可以使用传输介质经由网络接口设备(例如,网络接口组件)并利用多种众所周知的传输协议(例如,超文本传输协议(HTTP))中的任何一种在网络上传输或接收。类似地,指令712可以使用传输介质经由到一个或更多个设备的耦合(例如,对等耦合)来传输或接收。术语“传输介质(和媒介)”和“信号介质(和媒介)”意思相同,在本公开中可以互换使用。术语“传输介质(和媒介)”和“信号介质(和媒介)”应被理解为包括能够存储、编码或携带由计算设备700执行的指令712的任何无形介质,并且包括数字或模拟通信信号或其他无形介质以促进这种软件的通信。因此,术语“传输介质(和媒介)”和“信号介质(和媒介)”应被理解为包括任何形式的调制数据信号、载波等。术语“调制数据信号”意指这样的信号:其具有以对信号中的信息进行编码的这样的方式设置或更改的其特性中的一个或更多个特性。
计算机可读介质/媒介
术语“计算机可读介质(和媒介)”、“机器可读介质(和媒介)”和“设备可读介质(和媒介)”意思相同,并且可以在本公开中互换使用。这些术语被定义为包括计算机存储介质和传输介质。因此,这些术语既包括存储设备和存储介质,也包括载波和调制数据信号。
实施例的示例
以下是实施例的一些示例的列表。
示例1是一种方法,该方法包括在包括至少一个硬件处理器的数据平台处接收来自客户端的暂存区创建指令,该暂存区创建指令请求由数据平台为数据平台上的用户账户创建文件暂存区,该用户账户与客户端相关联;在数据平台处,从客户端接收文件目录表创建指令,该文件目录表创建指令请求由数据平台为文件暂存区创建文件目录表;以及响应于接收到文件目录表创建指令,由数据平台创建用于文件暂存区的文件目录表,该文件目录表包含对应于文件暂存区中的一个或更多个文件的一个或更多个元数据项。
示例2是示例1的方法,其中文件暂存区包括相对于数据平台的内部暂存区。
示例3是示例1的方法,其中文件暂存区包括相对于数据平台的外部暂存区。
示例4是示例1-3中任一示例的方法,其中暂存区创建指令包括文件目录表创建指令;并且为文件暂存区创建文件目录表包括响应于接收暂存区创建指令为文件暂存区创建内置文件目录表,该内置文件目录表由数据平台管理。
示例5是示例1-3中任一示例的方法,其中文件目录表创建指令的接收发生在暂存区创建指令的接收之后。
示例6是示例5的方法,还包括从客户端接收关于文件暂存区的列表文件表函数调用;以及响应于接收到列表文件函数调用,执行列表文件表函数以填充文件目录表。
示例7是示例1-6中任一示例的方法,还包括接收和执行命令以在文件目录表上创建和共享视图,该视图包括预签名URL,用于提供对视图中引用的文件的访问,该视图中引用的文件少于文件暂存区中的所有文件。
示例8是示例1-7中任一示例的方法,还包括在文件暂存区上实现流;以及基于文件暂存区上的流更新文件目录表。
示例9是示例1-8中任一示例的方法,还包括在文件目录表上实现流;以及基于文件目录表上的流更新第二表。
示例10是示例1-9中任一示例的方法,其中文件目录表创建指令请求数据平台为多个文件暂存区创建文件目录表,多个文件暂存区包括文件暂存区;并且文件目录表包含对应于跨越多个文件暂存区的一个或更多个文件的一个或更多个元数据项。
示例11是一种数据平台,其包括:至少一个硬件处理器;以及一个或更多个计算机存储介质,该计算机存储介质包含能够由该至少一个硬件处理器执行的指令,用于使该至少一个硬件处理器执行包括以下项的操作:从客户端接收暂存区创建指令,该暂存区创建指令请求由数据平台为该数据平台上的用户账户创建文件暂存区,该用户账户与客户端相关联;从客户端接收文件目录表创建指令,该文件目录表创建指令请求由数据平台为文件暂存区创建文件目录表;以及响应于接收到文件目录表创建指令,创建用于文件暂存区的文件目录表,该文件目录表包含对应于文件暂存区中的一个或更多个文件的一个或更多个元数据项。
示例12是示例11的数据平台,其中文件暂存区包括相对于数据平台的内部暂存区。
示例13是示例11的数据平台,其中文件暂存区包括相对于数据平台的外部暂存区。
示例14是示例11-13中任一示例的数据平台,其中暂存区创建指令包括文件目录表创建指令;并且为文件暂存区创建文件目录表包括响应于接收暂存区创建指令为文件暂存区创建内置文件目录表,内置文件目录表由数据平台管理。
示例15是示例11-13中任一示例的数据平台,其中文件目录表创建指令的接收发生在暂存区创建指令的接收之后。
示例16是示例15的数据平台,操作还包括从客户端接收关于文件暂存区的列表文件表函数调用;以及响应于接收到列表文件函数调用,执行列表文件表函数以填充文件目录表。
示例17是示例11-16中任一示例的数据平台,操作还包括接收和执行命令以创建和共享文件目录表上的视图,该视图包括预签名URL,用于提供对视图中引用的文件的访问,视图中引用的文件少于文件暂存区中的所有文件。
示例18是示例11-17中任一示例的数据平台,操作还包括在文件暂存区上实现流;以及基于文件暂存区上的流更新文件目录表。
示例19是示例11-18中任一示例的数据平台,操作还包括在文件目录表上实现流;以及基于文件目录表上的流更新第二表。
示例20是示例11-19中任一示例的数据平台,其中文件目录表创建指令请求数据平台为多个文件暂存区创建文件目录表,多个文件暂存区包括文件暂存区;并且文件目录表包含对应于跨越多个文件暂存区的一个或更多个文件的一个或更多个元数据项。
示例21是一个或更多个计算机存储介质,其包含能够由数据平台的至少一个硬件处理器执行的指令,用于使至少一个硬件处理器执行包括以下项的操作:从客户端接收暂存区创建指令,该暂存区创建指令请求由数据平台为数据平台上的用户账户创建文件暂存区,该用户账户与客户端相关联;从客户端接收文件目录表创建指令,该文件目录表创建指令请求由数据平台为文件暂存区创建文件目录表;以及响应于接收到文件目录表创建指令,创建用于文件暂存区的文件目录表,该文件目录表包含对应于文件暂存区中的一个或更多个文件的一个或更多个元数据项。
示例22是示例21的一个或更多个计算机存储介质,其中文件暂存区包括相对于数据平台的内部暂存区。
示例23是示例21的一个或更多个计算机存储介质,其中文件暂存区包括相对于数据平台的外部暂存区。
示例24是示例21-23中任一示例的一个或更多个计算机存储介质,其中暂存区创建指令包括文件目录表创建指令;并且为文件暂存区创建文件目录表包括响应于接收暂存区创建指令为文件暂存区创建内置文件目录表,该内置文件目录表由数据平台管理。
示例25是示例21-23中任一示例的一个或更多个计算机存储介质,其中文件目录表创建指令的接收发生在暂存区创建指令的接收之后。
示例26是示例25的一个或更多个计算机存储介质,操作还包括从客户端接收关于文件暂存区的列表文件表函数调用;以及响应于接收到列表文件函数调用,执行列表文件表函数以填充文件目录表。
示例27是示例21-26中任一示例的一个或更多个计算机存储介质,操作还包括接收和执行命令以创建和共享文件目录表上的视图,该视图包括用于提供对视图中引用的文件的访问的预签名URL,视图中引用的文件少于文件暂存区中的所有文件。
示例28是示例21-27中任一示例的一个或更多个计算机存储介质,操作还包括在文件暂存区上实现流;以及基于文件暂存区上的流更新文件目录表。
示例29是示例21-28中任一示例的一个或更多个计算机存储介质,操作还包括在文件目录表上实现流;以及基于文件目录表上的流更新第二表。
示例30是示例21-29中任一示例的一个或更多个计算机存储介质,其中文件目录表创建指令请求数据平台为多个文件暂存区创建文件目录表,多个文件暂存区包括文件暂存区;并且文件目录表包含对应于跨越多个文件暂存区的一个或更多个文件的一个或更多个元数据项。
为了促进对本公开的原理的理解,在附图中示出了各种实施例。本文公开的实施例并不旨在穷举或将本公开限制于以上详细描述中公开的精确形式。相反,已经选择了所描述的实施例,使得本领域的其他技术人员可以利用它们的教导。因此,不打算由此限制本公开的范围。
在本公开的任何实例中,包括在权利要求中,其中诸如第一、第二和第三的数字修饰语用于指代组件、数据(例如,值、标识符、参数等)和/或任何其他元素,这种修饰语的使用不旨在表示或规定以这种方式引用的元素的任何特定或所需顺序。相反,这种修饰语的任何这种使用旨在帮助读者将元素彼此区分开来,并且不应被解释为坚持任何特定的顺序或具有任何其他意义,除非这种顺序或其他意义在本文中被清楚和肯定地解释。
此外,与此处所描述的实体和布置,包括结合附图描述和描绘的实体和布置,是作为示例而不是作为限制来呈现的事实相一致,关于特定附图“描绘了什么”、“特定附图中的特定元素或实体是什么”或“具有什么”的任何和所有陈述或其他指示,以及没有通过诸如“在至少一个实施例中”的条款明确地自我限定的任何和所有类似陈述,因此可以孤立地和脱离上下文地理解为绝对的,因此作为对所有实施例的限制,只能被正确地理解为由这样的条款建设性地限定。正是出于类似于陈述的简洁和清晰的原因,该隐含的限定性条款在本公开中不会反复地重复。
在本公开中,根据提供的定义使用各种术语。此外,应注意的是,结合本文阐述的定义,本文使用的定义术语和短语包括所提供的定义以及对相应术语和短语的含义的任何一般和常规理解。
还应注意,如在本说明书和所附权利要求中所使用的,单数形式“一个(a)”、“一个(an)”和“该”包括复数指代物,除非上下文另有明确规定。
如本文所用,术语“包括(comprising)”、“包含(including)”、“包含(containing)”、“特征在于”及其语法等价物是包含性的、开放式的术语,不排除附加的、未引用的元素、方法步骤等。
本说明书中描述的许多功能单元可以实现为一个或更多个组件,这是一个用来更具体地强调它们的实现独立性的术语。例如,组件可以实现为硬件电路,包括定制的超大规模集成(VLSI)电路或门阵列、诸如逻辑芯片、晶体管和/或其他分立组件的现成半导体。组件也可以在可编程硬件设备中实现,例如现场可编程门阵列(FPGA)、可编程阵列逻辑、可编程逻辑设备等。
组件也可以在软件中实现,用于在各种类型的硬件上执行(例如,通过各种类型的处理器)。可执行代码的所标识组件可以例如包括计算机指令的一个或更多个物理或逻辑块,其可以例如被组织为对象、程序或函数。然而,所识别的组件的可执行指令不需要在物理上位于一起,而是可以包括存储在不同位置的不同指令,当这些指令在逻辑上结合在一起时,组成该组件并实现该组件的所述目的。
实际上,可执行代码的组件可以是单个指令或许多指令,可以分布在几个不同的代码段上、不同的程序中以及几个存储设备上。类似地,操作数据可以在本文中在组件内被识别和说明,并且可以以任何合适的形式体现并且被组织在任何合适类型的数据结构内。操作数据可以作为单个数据集收集,或者可以分布在包括不同存储设备的不同位置上,并且可以至少部分地仅作为系统或网络上的电子信号存在。组件可以为无源的或有源的,包括可操作以执行所需功能的代理。
整个本说明书对“示例”的引用意味着结合该示例描述的特征、结构或特性包括在本公开的至少一个实施例中。因此,整个本说明书在各个地方出现的短语“在示例中”不一定都指代相同的实施例。
如本文所用,为方便起见,可以在共同列表中呈现多个项、结构元素、组成元素和/或材料。然而,这些列表应该被解释为好像列表中的每个成员都被单独识别为一个独立且独特的成员。因此,仅基于其在共同组中的表述而没有相反的指示,此类列表中的任何个别成员都不应被解释为事实上等同于同一列表中的任何其他成员。另外,本文中可以参考本公开的各种实施例和示例以及其各种组件的替代方案。应当理解,这些实施例、示例和替代方案不应被解释为彼此的事实上的等同物,而是应被视为本公开的单独和自主的表示。
尽管为了清楚起见已经详细描述了前述内容,但是将明显的是,可以在不脱离其原理的情况下进行某些改变和修改。需指出,存在实现本文所述的过程和装置的许多替代方式。因此,本实施例应被认为是说明性的而不是限制性的。
本领域技术人员将理解,可以在不脱离本公开的基本原理的情况下对上述实施例的细节进行许多改变。因此,本公开的范围应仅由权利要求确定。

Claims (58)

1.一种方法,包括:
在包括至少一个硬件处理器的数据平台处,从客户端接收暂存区创建指令,所述暂存区创建指令请求由所述数据平台为所述数据平台上的用户账户创建文件暂存区,所述用户账户与所述客户端相关联;
响应于从所述客户端接收到所述暂存区创建指令,由所述数据平台为所述用户账户创建所述文件暂存区,所述文件暂存区包括具有特定存储位置的数据存储部,为所述用户账户创建所述文件暂存区包括在所述用户账户中创建文件暂存区对象,所述文件暂存区对象表示所述用户账户中的所述文件暂存区,所述文件暂存区对象包括所述文件暂存区的所述特定存储位置的指示;
在所述数据平台处,从所述客户端接收文件目录表创建指令,所述文件目录表创建指令请求由所述数据平台创建用于所述文件暂存区的文件目录表;和
响应于接收到所述文件目录表创建指令,由所述数据平台创建用于所述文件暂存区的所述文件目录表,所述文件暂存区包含一个或更多个文件,所述文件目录表列出了所述文件暂存区中的所述一个或更多个文件,所述文件目录表中列出的每个文件对应于所述文件目录表中的一行,所述文件目录表包括至少两列,所述至少两列中的每一列对应于所述文件目录表中列出的每个文件的不同元数据属性。
2.根据权利要求1所述的方法,其中所述文件暂存区包括相对于所述数据平台的内部暂存区。
3.根据权利要求1所述的方法,其中所述文件暂存区包括相对于所述数据平台的外部暂存区。
4.根据权利要求1所述的方法,其中:
所述暂存区创建指令包括所述文件目录表创建指令;和
所述文件目录表包括由所述数据平台管理的内置文件目录表。
5.根据权利要求1所述的方法,其中所述文件目录表创建指令的接收发生在所述暂存区创建指令的接收之后。
6.根据权利要求5所述的方法,还包括:
从所述客户端接收关于所述文件暂存区的列表文件表函数调用;和
响应于接收到所述列表文件函数调用,执行列表文件表函数以填充所述文件目录表。
7.根据权利要求1所述的方法,还包括接收和执行命令以在所述文件目录表上创建和共享视图,所述视图包括预签名的统一资源定位符(URL),用于提供对所述视图中引用的文件的访问,所述视图中引用的文件少于所述文件暂存区中的所有文件。
8.根据权利要求1所述的方法,还包括:
在所述文件暂存区上实现流;和
基于所述文件暂存区上的流更新所述文件目录表。
9.根据权利要求1所述的方法,还包括:
在所述文件目录表上实现流;和
基于所述文件目录表上的流更新第二表。
10.根据权利要求1所述的方法,其中:
所述文件目录表创建指令请求由所述数据平台为多个文件暂存区创建文件目录表,所述多个文件暂存区包括所述文件暂存区,所述多个文件暂存区包含一个或更多个文件的多暂存区集,所述一个或更多个文件的多暂存区集包括所述文件暂存区中的所述一个或更多个文件;和
所述文件目录表列出了在所述一个或更多个文件的多暂存区集中的所述一个或更多个文件。
11.一种数据平台,包括:
至少一个硬件处理器;和
一个或更多个计算机存储介质,其包含指令,所述指令在由所述至少一个硬件处理器执行时使所述至少一个硬件处理器执行包括以下项的操作:
从客户端接收暂存区创建指令,所述暂存区创建指令请求由所述数据平台为所述数据平台上的用户账户创建文件暂存区,所述用户账户与所述客户端相关联;
响应于从所述客户端接收到所述暂存区创建指令,为所述用户账户创建所述文件暂存区,所述文件暂存区包括具有特定存储位置的数据存储部,为所述用户账户创建所述文件暂存区包括在所述用户账户中创建文件暂存区对象,所述文件暂存区对象表示所述用户账户中的所述文件暂存区,所述文件暂存区对象包括所述文件暂存区的所述特定存储位置的指示;
从所述客户端接收文件目录表创建指令,所述文件目录表创建指令请求由所述数据平台创建用于所述文件暂存区的文件目录表;和
响应于接收到所述文件目录表创建指令,创建用于所述文件暂存区的所述文件目录表,所述文件暂存区包含一个或更多个文件,所述文件目录表列出了所述文件暂存区中的所述一个或更多个文件,所述文件目录表中列出的每个文件对应于所述文件目录表中的一行,所述文件目录表包括至少两列,所述至少两列中的每一列对应于所述文件目录表中列出的每个文件的不同元数据属性。
12.根据权利要求11所述的数据平台,其中所述文件暂存区包括相对于所述数据平台的内部暂存区。
13.根据权利要求11所述的数据平台,其中所述文件暂存区包括相对于所述数据平台的外部暂存区。
14.根据权利要求11所述的数据平台,其中:
所述暂存区创建指令包括所述文件目录表创建指令;和
所述文件目录表包括由所述数据平台管理的内置文件目录表。
15.根据权利要求11所述的数据平台,其中所述文件目录表创建指令的接收发生在所述暂存区创建指令的接收之后。
16.根据权利要求15所述的数据平台,所述操作还包括:
从所述客户端接收关于所述文件暂存区的列表文件表函数调用;和
响应于接收到所述列表文件函数调用,执行列表文件表函数以填充所述文件目录表。
17.根据权利要求11所述的数据平台,所述操作还包括接收和执行命令以在所述文件目录表上创建和共享视图,所述视图包括预签名的统一资源定位符(URL),用于提供对所述视图中引用的文件的访问,所述视图中引用的文件少于所述文件暂存区中的所有文件。
18.根据权利要求11所述的数据平台,所述操作还包括:
在所述文件暂存区上实现流;和
基于所述文件暂存区上的流更新所述文件目录表。
19.根据权利要求11所述的数据平台,所述操作还包括:
在所述文件目录表上实现流;和
基于所述文件目录表上的流更新第二表。
20.根据权利要求11所述的数据平台,其中:
所述文件目录表创建指令请求由所述数据平台为多个文件暂存区创建文件目录表,所述多个文件暂存区包括所述文件暂存区,所述多个文件暂存区包含一个或更多个文件的多暂存区集,所述一个或更多个文件的多暂存区集包括所述文件暂存区中的所述一个或更多个文件;和
所述文件目录表列出了在所述一个或更多个文件的多暂存区集中的所述一个或更多个文件。
21.一个或更多个计算机存储介质,其包含指令,所述指令在由数据平台的至少一个硬件处理器执行时使所述至少一个硬件处理器执行包括以下项的操作:
从客户端接收暂存区创建指令,所述暂存区创建指令请求由所述数据平台为所述数据平台上的用户账户创建文件暂存区,所述用户账户与所述客户端相关联;
响应于从所述客户端接收到所述暂存区创建指令,为所述用户账户创建所述文件暂存区,所述文件暂存区包括具有特定存储位置的数据存储部,为所述用户账户创建所述文件暂存区包括在所述用户账户中创建文件暂存区对象,所述文件暂存区对象表示所述用户账户中的所述文件暂存区,所述文件暂存区对象包括所述文件暂存区的所述特定存储位置的指示;
从所述客户端接收文件目录表创建指令,所述文件目录表创建指令请求由所述数据平台创建用于所述文件暂存区的文件目录表;和
响应于接收到所述文件目录表创建指令,创建用于所述文件暂存区的所述文件目录表,所述文件暂存区包含一个或更多个文件,所述文件目录表列出了所述文件暂存区中的所述一个或更多个文件,所述文件目录表中列出的每个文件对应于所述文件目录表中的一行,所述文件目录表包括至少两列,所述至少两列中的每一列对应于所述文件目录表中列出的每个文件的不同元数据属性。
22.根据权利要求21所述的一个或更多个计算机存储介质,其中所述文件暂存区包括相对于所述数据平台的内部暂存区。
23.根据权利要求21所述的一个或更多个计算机存储介质,其中所述文件暂存区包括相对于所述数据平台的外部暂存区。
24.根据权利要求21所述的一个或更多个计算机存储介质,其中:
所述暂存区创建指令包括所述文件目录表创建指令;和
所述文件目录表包括由所述数据平台管理的内置文件目录表。
25.根据权利要求21所述的一个或更多个计算机存储介质,其中,所述文件目录表创建指令的接收发生在所述暂存区创建指令的接收之后。
26.根据权利要求25所述的一个或更多个计算机存储介质,所述操作还包括:
从所述客户端接收关于所述文件暂存区的列表文件表函数调用;和
响应于接收到所述列表文件函数调用,执行列表文件表函数以填充所述文件目录表。
27.根据权利要求21所述的一个或更多个计算机存储介质,所述操作还包括接收和执行命令以在所述文件目录表上创建和共享视图,所述视图包括预签名的统一资源定位符(URL),用于提供对所述视图中引用的文件的访问,所述视图中引用的文件少于所述文件暂存区中的所有文件。
28.根据权利要求21所述的一个或更多个计算机存储介质,所述操作还包括:
在所述文件暂存区上实现流;和
基于所述文件暂存区上的流更新所述文件目录表。
29.根据权利要求21所述的一个或更多个计算机存储介质,所述操作还包括:
在所述文件目录表上实现流;和
基于所述文件目录表上的流更新第二表。
30.根据权利要求21所述的一个或更多个计算机存储介质,其中:
所述文件目录表创建指令请求由所述数据平台为多个文件暂存区创建文件目录表,所述多个文件暂存区包括所述文件暂存区,所述多个文件暂存区包含一个或更多个文件的多暂存区集,所述一个或更多个文件的多暂存区集包括所述文件暂存区中的所述一个或更多个文件,和
所述文件目录表列出了在所述一个或更多个文件的多暂存区集中的所述一个或更多个文件。
31.一种由在至少一个硬件处理器上执行指令的数据平台执行的方法,所述方法包括:
从客户端接收所述数据平台创建用于与所述客户端相关联的用户账户的文件暂存区的文件目录表的请求,所述用户账户与一个或更多个表相关联,所述文件暂存区包括具有特定存储位置的数据存储部,所述文件暂存区包含在所述特定存储位置的一个或更多个文件,所述用户账户包括文件暂存区对象,所述文件暂存区对象对应于所述文件暂存区并且包括所述特定存储位置的指示;和
响应于接收到所述请求,创建用于所述文件暂存区的所述文件目录表,所述文件目录表是对与所述用户账户相关联的所述一个或更多个表的补充,所述文件目录表包括用于所述文件暂存区中的所述一个或更多个文件中的每一个文件的行,所述文件目录表包括用于所述文件暂存区中的所述一个或更多个文件的至少两个不同的元数据属性中的每一个元数据属性的列。
32.根据权利要求31所述的方法,其中所述文件暂存区包括相对于所述数据平台的内部暂存区。
33.根据权利要求31所述的方法,其中所述文件暂存区包括相对于所述数据平台的外部暂存区。
34.根据权利要求31所述的方法,还包括:
从所述客户端接收暂存区创建指令,所述暂存区创建指令请求由所述数据平台为所述用户账户创建所述文件暂存区;和
响应于接收到所述暂存区创建指令,为所述用户账户创建所述文件暂存区,为所述用户账户创建所述文件暂存区包括在所述用户账户中创建所述文件暂存区对象。
35.根据权利要求34所述的方法,其中接收所述数据平台创建所述文件目录表的所述请求发生在接收所述暂存区创建指令之后。
36.根据权利要求35所述的方法,还包括:
从所述客户端接收关于所述文件暂存区的列表文件表函数调用;和
响应于接收到所述列表文件函数调用,执行列表文件表函数以填充所述文件目录表。
37.根据权利要求34所述的方法,其中:
所述数据平台创建所述文件目录表的所述请求请求由所述数据平台为多个文件暂存区创建所述文件目录表,所述多个文件暂存区包括所述文件暂存区,所述多个文件暂存区包含一个或更多个文件的多暂存区集,所述一个或更多个文件的多暂存区集包括所述文件暂存区中的所述一个或更多个文件;和
所述文件目录表包括用于在所述一个或更多个文件的多暂存区集中的所述一个或更多个文件中的每一个文件的行。
38.根据权利要求31所述的方法,还包括接收和执行命令以在所述文件目录表上创建和共享视图,所述视图包括预签名的统一资源定位符(URL),用于提供对所述视图中引用的文件的访问,所述视图中引用的文件少于所述文件暂存区中的所有文件。
39.根据权利要求31所述的方法,还包括:
在所述文件暂存区上实现流;和
基于所述文件暂存区上的流更新所述文件目录表。
40.根据权利要求31所述的方法,还包括:
在所述文件目录表上实现流;和
基于所述文件目录表上的流更新第二表。
41.根据权利要求34所述的方法,其中:
所述暂存区创建指令包括所述数据平台创建所述文件目录表的所述请求;和
所述文件目录表包括由所述数据平台管理的内置文件目录表。
42.一种数据平台,包括:
至少一个硬件处理器;和
一个或更多个计算机存储介质,其包含指令,所述指令在由所述至少一个硬件处理器执行时使所述数据平台执行包括以下项的操作:
从客户端接收所述数据平台创建用于与所述客户端相关联的用户账户的文件暂存区的文件目录表的请求,所述用户账户与一个或更多个表相关联,所述文件暂存区包括具有特定存储位置的数据存储部,所述文件暂存区包含在所述特定存储位置的一个或更多个文件,所述用户账户包括文件暂存区对象,所述文件暂存区对象对应于所述文件暂存区并且包括所述特定存储位置的指示;和
响应于接收到所述请求,创建用于所述文件暂存区的所述文件目录表,所述文件目录表是对与所述用户账户相关联的所述一个或更多个表的补充,所述文件目录表包括用于所述文件暂存区中的所述一个或更多个文件中的每一个文件的行,所述文件目录表包括用于所述文件暂存区中的所述一个或更多个文件的至少两个不同的元数据属性中的每一个元数据属性的列。
43.根据权利要求42所述的数据平台,其中所述文件暂存区包括相对于所述数据平台的内部暂存区。
44.根据权利要求42所述的数据平台,其中所述文件暂存区包括相对于所述数据平台的外部暂存区。
45.根据权利要求42所述的数据平台,所述操作还包括:
从所述客户端接收暂存区创建指令,所述暂存区创建指令请求由所述数据平台为所述用户账户创建所述文件暂存区;和
响应于接收到所述暂存区创建指令,为所述用户账户创建所述文件暂存区,为所述用户账户创建所述文件暂存区包括在所述用户账户中创建所述文件暂存区对象。
46.根据权利要求45所述的数据平台,其中接收所述数据平台创建所述文件目录表的所述请求发生在接收所述暂存区创建指令之后。
47.根据权利要求46所述的数据平台,所述操作还包括:
从所述客户端接收关于所述文件暂存区的列表文件表函数调用;和
响应于接收到所述列表文件函数调用,执行列表文件表函数以填充所述文件目录表。
48.根据权利要求45所述的数据平台,其中:
所述数据平台创建所述文件目录表的所述请求请求由所述数据平台为多个文件暂存区创建所述文件目录表,所述多个文件暂存区包括所述文件暂存区,所述多个文件暂存区包含一个或更多个文件的多暂存区集,所述一个或更多个文件的多暂存区集包括所述文件暂存区中的所述一个或更多个文件;和
所述文件目录表包括用于在所述一个或更多个文件的多暂存区集中的所述一个或更多个文件中的每一个文件的行。
49.根据权利要求42所述的数据平台,所述操作还包括接收和执行命令以在所述文件目录表上创建和共享视图,所述视图包括预签名的统一资源定位符(URL),用于提供对所述视图中引用的文件的访问,所述视图中引用的文件少于所述文件暂存区中的所有文件。
50.根据权利要求42所述的数据平台,所述操作还包括:
在所述文件暂存区上实现流;和
基于所述文件暂存区上的流更新所述文件目录表。
51.根据权利要求42所述的数据平台,所述操作还包括:
在所述文件目录表上实现流;和
基于所述文件目录表上的流更新第二表。
52.根据权利要求45所述的数据平台,其中:
所述暂存区创建指令包括所述数据平台创建所述文件目录表的所述请求;和
所述文件目录表包括由所述数据平台管理的内置文件目录表。
53.一个或更多个计算机存储介质,其包含指令,所述指令在由数据平台的至少一个硬件处理器执行时使所述至少一个硬件处理器执行包括以下项的操作:
从客户端接收所述数据平台创建用于与所述客户端相关联的用户账户的文件暂存区的文件目录表的请求,所述用户账户与一个或更多个表相关联,所述文件暂存区包括具有特定存储位置的数据存储部,所述文件暂存区包含在所述特定存储位置的一个或更多个文件,所述用户账户包括文件暂存区对象,所述文件暂存区对象对应于所述文件暂存区并且包括所述特定存储位置的指示;和
响应于接收到所述请求,创建用于所述文件暂存区的所述文件目录表,所述文件目录表是对与所述用户账户相关联的所述一个或更多个表的补充,所述文件目录表包括用于所述文件暂存区中的所述一个或更多个文件中的每一个文件的行,所述文件目录表包括用于所述文件暂存区中的所述一个或更多个文件的至少两个不同的元数据属性中的每一个元数据属性的列。
54.根据权利要求53所述的一个或更多个计算机存储介质,其中所述文件暂存区包括相对于所述数据平台的内部暂存区。
55.根据权利要求53所述的一个或更多个计算机存储介质,其中所述文件暂存区包括相对于所述数据平台的外部暂存区。
56.根据权利要求53所述的一个或更多个计算机存储介质,所述操作还包括:
从所述客户端接收暂存区创建指令,所述暂存区创建指令请求由所述数据平台为所述用户账户创建所述文件暂存区;和
响应于接收到所述暂存区创建指令,为所述用户账户创建所述文件暂存区,为所述用户账户创建所述文件暂存区包括在所述用户账户中创建所述文件暂存区对象。
57.根据权利要求56所述的一个或更多个计算机存储介质,其中:
其中接收所述数据平台创建所述文件目录表的所述请求发生在接收所述暂存区创建指令之后;和
所述操作还包括:
从所述客户端接收关于所述文件暂存区的列表文件表函数调用;和
响应于接收到所述列表文件函数调用,执行列表文件表函数以填充所述文件目录表。
58.根据权利要求57所述的一个或更多个计算机存储介质,其中:
所述暂存区创建指令包括所述数据平台创建所述文件目录表的所述请求;和
所述文件目录表包括由所述数据平台管理的内置文件目录表。
CN202180001774.4A 2020-06-30 2021-05-27 支持非结构化、半结构化和结构化文件 Active CN114207607B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US202063046229P 2020-06-30 2020-06-30
US63/046,229 2020-06-30
PCT/US2021/034530 WO2022005656A1 (en) 2020-06-30 2021-05-27 Supporting unstructured, semi-structured, and structured files

Publications (2)

Publication Number Publication Date
CN114207607A CN114207607A (zh) 2022-03-18
CN114207607B true CN114207607B (zh) 2023-03-31

Family

ID=75689261

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202180001774.4A Active CN114207607B (zh) 2020-06-30 2021-05-27 支持非结构化、半结构化和结构化文件

Country Status (4)

Country Link
US (5) US10997243B1 (zh)
EP (1) EP4172809A4 (zh)
CN (1) CN114207607B (zh)
WO (1) WO2022005656A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9948655B1 (en) * 2016-04-15 2018-04-17 AtScale, Inc. Data access authorization for dynamically generated database structures
US10956136B2 (en) * 2018-10-16 2021-03-23 Ebay, Inc. User interface resource file optimization
US10997243B1 (en) 2020-06-30 2021-05-04 Snowflake Inc. Supporting unstructured, semi-structured, and structured files
US11361026B2 (en) 2020-06-30 2022-06-14 Snowflake Inc. Accessing files in a database stage using a user defined function
US11423081B1 (en) 2020-06-30 2022-08-23 Snowflake Inc. Accessing files in a database stage using a user defined function
US11928136B2 (en) * 2021-04-09 2024-03-12 Veeva Systems Inc. Computing networks and systems for tracking data
US11216581B1 (en) * 2021-04-30 2022-01-04 Snowflake Inc. Secure document sharing in a database system
US11645243B2 (en) 2021-06-07 2023-05-09 Snowflake Inc. Accessing files in a database stage using a user defined function
US20230396496A1 (en) * 2022-06-02 2023-12-07 At&T Intellectual Property I, L.P. Automated rule generation for network functions
US20230403279A1 (en) * 2022-06-10 2023-12-14 Capital One Services, Llc Internet protocol (ip) whitelisting for signed uniform resource locators (urls)
US11748338B1 (en) * 2022-06-10 2023-09-05 Snowflake Inc. Auto refresh of directory tables for stages
US11983165B1 (en) * 2023-03-29 2024-05-14 Snowflake Inc. Load history calculation in internal stage replication

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101449268A (zh) * 2006-05-09 2009-06-03 惠普开发有限公司 在硬盘驱动器仿真中维持共同命名的客户端专用文件内容
WO2019231689A1 (en) * 2018-05-31 2019-12-05 Microsoft Technology Licensing, Llc Multi-protocol cloud storage for big data and analytics

Family Cites Families (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6810400B2 (en) 2000-11-17 2004-10-26 Microsoft Corporation Representing database permissions as associations in computer schema
US8214799B2 (en) * 2004-07-08 2012-07-03 Microsoft Corporation Providing information to an isolated hosted object via system-created variable objects
US9020992B1 (en) * 2010-12-09 2015-04-28 Symantec Corporation Systems and methods for facilitating file archiving
US8863082B2 (en) * 2011-09-07 2014-10-14 Microsoft Corporation Transformational context-aware data source management
US9361473B2 (en) * 2012-09-14 2016-06-07 Google Inc. Correcting access rights of files in electronic communications
SG11201502887WA (en) 2012-10-11 2015-05-28 Daiichi Sankyo Co Ltd Antibody-drug conjugate
US9317522B2 (en) * 2013-01-07 2016-04-19 Google Inc. Saving files from third-party systems directly to a cloud storage system
US20140330875A1 (en) * 2013-05-02 2014-11-06 Pinkquo Technologies Inc. Method and system for processing data files using distributed services
US10261942B2 (en) * 2014-05-01 2019-04-16 Longsand Limited Embedded processing of structured and unstructured data using a single application protocol interface (API)
US11080295B2 (en) * 2014-11-11 2021-08-03 Adobe Inc. Collecting, organizing, and searching knowledge about a dataset
CN107015996A (zh) * 2016-01-28 2017-08-04 阿里巴巴集团控股有限公司 一种资源访问方法、装置及系统
US10193975B2 (en) * 2016-03-10 2019-01-29 Microsoft Technology Licensing, Llc Managing multiple cloud stores through a web service
US9781602B1 (en) * 2016-03-31 2017-10-03 Ca, Inc. Geographically based access management for internet of things device data
US10540322B2 (en) * 2016-07-26 2020-01-21 International Business Machines Corporation Integrated file catalog
US11138220B2 (en) * 2016-11-27 2021-10-05 Amazon Technologies, Inc. Generating data transformation workflows
US10972474B2 (en) * 2017-04-18 2021-04-06 International Business Machines Corporation Logical zones for IoT devices
US10574520B2 (en) 2017-07-12 2020-02-25 Verizon Digital Media Services Inc. Dynamic runtime reconfiguration of servers
US10866963B2 (en) * 2017-12-28 2020-12-15 Dropbox, Inc. File system authentication
US10970534B2 (en) 2018-01-29 2021-04-06 Open Text Corporation Document processing system capture flow compiler
US10587675B2 (en) 2018-02-09 2020-03-10 InterPro Solutions, LLC Offline mobile data storage system and method
US11586614B2 (en) 2019-07-30 2023-02-21 Oracle International Corporation Native persistent store support for blockchains
US11531652B2 (en) 2019-08-30 2022-12-20 Oracle International Corporation Database modularization of pluggable guest languages
US11423001B2 (en) 2019-09-13 2022-08-23 Oracle International Corporation Technique of efficiently, comprehensively and autonomously support native JSON datatype in RDBMS for both OLTP and OLAP
US11507566B2 (en) 2020-01-31 2022-11-22 Salesforce.Com, Inc. Managing objects in shared caches using multiple chains
US11361026B2 (en) 2020-06-30 2022-06-14 Snowflake Inc. Accessing files in a database stage using a user defined function
US11423081B1 (en) 2020-06-30 2022-08-23 Snowflake Inc. Accessing files in a database stage using a user defined function
US10997243B1 (en) 2020-06-30 2021-05-04 Snowflake Inc. Supporting unstructured, semi-structured, and structured files

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101449268A (zh) * 2006-05-09 2009-06-03 惠普开发有限公司 在硬盘驱动器仿真中维持共同命名的客户端专用文件内容
WO2019231689A1 (en) * 2018-05-31 2019-12-05 Microsoft Technology Licensing, Llc Multi-protocol cloud storage for big data and analytics

Also Published As

Publication number Publication date
WO2022005656A1 (en) 2022-01-06
EP4172809A1 (en) 2023-05-03
EP4172809A4 (en) 2024-07-03
US10997243B1 (en) 2021-05-04
US20220114217A1 (en) 2022-04-14
US20230070255A1 (en) 2023-03-09
CN114207607A (zh) 2022-03-18
US11222071B1 (en) 2022-01-11
US11494438B2 (en) 2022-11-08
US20210406310A1 (en) 2021-12-30
US11797608B2 (en) 2023-10-24
US20230409636A1 (en) 2023-12-21

Similar Documents

Publication Publication Date Title
CN114207607B (zh) 支持非结构化、半结构化和结构化文件
US9053165B2 (en) Structured content item synchronization
US20190384750A1 (en) Systems and methods for indexing source code in a search engine
KR101312850B1 (ko) 콘텐트 신디케이션 플랫폼
US10749953B2 (en) Synchronization server process
US11507556B2 (en) Method and system for encapsulating and storing information from multiple disparate data sources
US20040148308A1 (en) Filestream data storage attribute
US11971876B2 (en) Object resolution among account-level namespaces for database platforms
US9875273B2 (en) Methods and systems for managing configuration settings
CN113704247A (zh) 通过数据库平台执行的方法、数据库平台以及介质
US11593354B2 (en) Namespace-based system-user access of database platforms
US10853316B1 (en) File versioning for content stored in a cloud computing environment
US20230401197A1 (en) Auto refresh of directory tables for stages
US8732141B2 (en) Passing information between server and client using a data package
US20220046110A1 (en) Virtual dataset management database system
US20220043797A1 (en) Virtual dataset management database system
Tsyganov et al. The Research Data Management System at the University of Groningen (RUG RDMS): architecture, solution engines and challenges
Ferle Data Loading and Unloading
Hahn et al. Recommendations for preservation-aware digital object model
Kumar et al. Windows 8 Modern App Data Access Options
Malhotra Privacy preserving data stores for mobile platforms

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
GR01 Patent grant
GR01 Patent grant
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: Montana

Patentee after: Snowflake Co.

Country or region after: U.S.A.

Address before: Montana

Patentee before: SNOWFLAKE COMPUTING Inc.

Country or region before: U.S.A.