CN117194560A - 模式演化 - Google Patents

模式演化 Download PDF

Info

Publication number
CN117194560A
CN117194560A CN202310678554.6A CN202310678554A CN117194560A CN 117194560 A CN117194560 A CN 117194560A CN 202310678554 A CN202310678554 A CN 202310678554A CN 117194560 A CN117194560 A CN 117194560A
Authority
CN
China
Prior art keywords
file
source table
data
pattern
command
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202310678554.6A
Other languages
English (en)
Inventor
伊斯特凡·切里
本诺特·戴奇维勒
甘尼香·拉马钱德兰·耶尔
刘玉灿
闫家奇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Snowflake Inc
Original Assignee
Snowflake Computing Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Snowflake Computing Inc filed Critical Snowflake Computing Inc
Publication of CN117194560A publication Critical patent/CN117194560A/zh
Pending legal-status Critical Current

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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • 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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

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

Abstract

本申请涉及模式演化。描述了用于模式不匹配检测和演化的技术。当数据被上传到源表中时,可以将待上传的数据的模式与源表的模式进行比较。如果检测到模式不匹配,可以修改源表的模式,并且可以继续上传而不会丢失数据。

Description

模式演化
技术领域
本公开总体上涉及数据系统,例如数据仓库,并且更具体地涉及对于不同模式(schema)的数据摄取和复制技术。
背景
数据系统(例如数据库系统)可以通过云平台提供,云平台允许组织和用户存储、管理和从云中检索数据。可以采用多种技术在云平台的数据库或表中上传和存储数据。上传技术通常无法说明不同的模式。很多时候,模式不匹配会导致数据传输过程中的数据丢失。
附图简述
各种附图仅示出了本公开的示例实施例,不应被视为限制其范围。
图1示出了根据一些示例实施例的示例计算环境,其中云数据库系统可以实现关于共享的数据库对象的流(stream)。
图2是示出根据一些示例实施例的计算服务管理器的部件的框图。
图3是示出根据一些示例实施例的执行平台的部件的框图。
图4是根据一些示例实施例的用于自动数据摄取(data ingestion)的系统的简化框图。
图5是根据一些示例实施例的将数据摄取到数据库中的过程的示意性框图。
图6是根据一些示例实施例的用于在自动摄取期间进行模式演化(schemaevolution)的方法的流程图。
图7是根据一些示例实施例的用于检测模式不匹配的方法的流程图。
图8是根据一些示例实施例的用于在执行复制命令期间进行模式演化的方法的流程图。
图9示出了根据本公开的一些实施例的计算机系统形式的机器的图解表示,在该计算机系统形式的机器内可以执行指令集,以用于使机器执行本文所讨论方法中的任何一种或更多种方法。
详细描述
以下描述包括体现本公开的说明性实施例的系统、方法、技术、指令序列和计算机器程序产品。在下面的描述中,出于解释的目的,阐述了许多具体的细节以提供对本发明主题的各种实施例的理解。然而,对于本领域技术人员将明显的是,可以在没有这些具体细节的情况下实施本发明主题的实施例。一般来说,众所周知的指令实例、协议、结构和技术没有必要详细示出。
图1示出了示例共享数据处理平台100。为了避免用不必要的细节模糊本发明主题,图中已经省略了与传达对本发明主题的理解不密切相关的各种功能部件。然而,本领域技术人员将容易认识到,各种附加功能部件可以被包括作为共享数据处理平台100的一部分,以有助于本文没有具体描述的附加功能。
如图所示,共享数据处理平台100包括基于网络的数据库系统102、云计算存储平台104(例如,存储平台、服务、Microsoft/>或Google Cloud/>)和远程计算设备106。基于网络的数据库系统102是云数据库系统,其用于以集成方式存储和访问数据(例如,在内部存储数据,访问外部远程定位的数据),以及报告和分析来自一个或更多个不同源(例如,云计算存储平台104)的集成数据。云计算存储平台104包括多个计算机器,并向基于网络的数据库系统102按需提供计算机系统资源,例如数据存储和计算能力。虽然在图1所示的实施例中描绘了数据仓库,但是其他实施例可以包括其他类型的数据库或其他数据处理系统。
远程计算设备106(例如,诸如膝上型计算机的用户设备)包括一个或更多个计算机器(例如,诸如膝上型计算机的用户设备),这些计算机器执行远程软件部件108(例如,浏览器访问的云服务)以向基于网络的数据库系统102的用户提供附加功能。远程软件部件108包括机器可读指令(例如,代码)的集合,所述机器可读指令在被远程计算设备106执行时使远程计算设备106提供某些功能。远程软件部件108可以对输入数据进行操作,并基于处理、分析或以其他方式变换输入数据来生成结果数据。作为示例,如下面进一步详细讨论的,远程软件部件108可以是启用数据库跟踪过程(例如在共享表和视图上的流)的数据提供者或数据消费者。
基于网络的数据库系统102包括访问管理系统110、计算服务管理器112、执行平台114和数据库116。访问管理系统110使管理用户能够管理对由基于网络的数据库系统102提供的资源和服务的访问。管理用户可以创建和管理用户、角色和群组,并使用许可来允许或拒绝对资源和服务的访问。如下文进一步详细讨论的,访问管理系统110可以存储共享数据,该共享数据安全地管理基于网络的数据库系统102的不同用户之间对云计算存储平台104的存储资源的共享访问。
计算服务管理器112协调和管理基于网络的数据库系统102的操作。计算服务管理器112还执行查询优化和编译,以及管理提供计算资源的计算服务的集群(例如虚拟仓库、虚拟机、EC2集群)。计算服务管理器112可以支持任意数量的客户端账户,例如提供数据存储和检索请求的终端用户、管理本文描述的系统和方法的系统管理员、以及与计算服务管理器112交互的其他部件/设备。
计算服务管理器112还耦合到数据库116,该数据库116与存储在共享数据处理平台100上的全部数据相关联。数据库116存储涉及与基于网络的数据库系统102及其用户相关联的各种功能和方面的数据。
在一些实施例中,数据库116包括存储在远程数据存储系统中的数据以及可从一个或更多个本地高速缓存获得的数据的汇总。另外,数据库116可以包括有关在远程数据存储系统和本地高速缓存中如何组织数据的信息。数据库116允许系统和服务在不从存储设备加载或访问实际数据的情况下确定一段数据是否需要被访问。计算服务管理器112还耦合到执行平台114,执行平台114提供执行各种数据存储和数据检索任务的多个计算资源(例如,虚拟仓库),如下面更详细地讨论的。
执行平台114耦合到作为云计算存储平台104的一部分的多个数据存储设备124-1至124-N。在一些实施例中,数据存储设备124-1至124-N是位于一个或更多个地理位置的基于云的存储设备。例如,数据存储设备124-1至124-N可以是公共云基础设施或私有云基础设施的一部分。数据存储设备124-1至124-N可以是硬盘驱动器(HDD)、固态驱动器(SSD)、存储装置集群、Amazon S3存储系统或任何其它数据存储技术。另外,云计算存储平台104可以包括分布式文件系统(例如Hadoop分布式文件系统(HDFS))、对象存储系统等。
执行平台114包括多个计算节点(例如,虚拟仓库)。计算节点上的进程集合执行由计算服务管理器112编译的查询计划。该进程集合可以包括:第一进程,该第一进程用于执行查询计划;第二进程,该第二进程用于使用最近最少使用(least recently used,LRU)策略来监视和删除微分区文件,并实现内存不足(OOM)错误缓解进程;第三进程,该第三进程从进程日志和状态信息提取健康信息以发送回计算服务管理器112;第四进程,该第四进程用于在系统引导(boot)之后建立与计算服务管理器112的通信;以及第五进程,该第五进程用于为由计算服务管理器112提供的给定作业处理与计算集群的所有通信,并将信息传送回计算服务管理器112和执行平台114的其他计算节点。
云计算存储平台104还包括访问管理系统118和web代理120。如同访问管理系统110一样,访问管理系统118允许用户创建和管理用户、角色和群组,并使用许可来允许或拒绝对云服务和资源的访问。基于网络的数据库系统102的访问管理系统110和云计算存储平台104的访问管理系统118可以通信和共享信息,以便能够访问和管理由基于网络的数据库系统102和云计算存储平台104二者的用户共享的资源和服务。web代理120处理在接受和处理并发API调用中所涉及的任务,包括流量管理、授权和访问控制、监视和API版本管理。web代理120为创建、发布、维护、保护和监视API(例如REST API)提供HTTP代理服务。
在一些实施例中,共享数据处理平台100的要素之间的通信链路经由一个或更多个数据通信网络来实现。这些数据通信网络可以利用任何通信协议和任何类型的通信介质。在一些实施例中,数据通信网络是彼此耦合的两个或更多个数据通信网络(或子网络)的组合。在可替代的实施例中,这些通信链路使用任何类型的通信介质和任何通信协议来实现。
如图1所示,数据存储设备124-1至124-N和与执行平台114相关联的计算资源解耦。也就是说,可以在执行平台114中创建和终止新的虚拟仓库,并且可以以独立的方式在云计算存储平台104上创建和终止另外的数据存储设备。该架构支持基于网络的数据库系统102的动态改变,该动态改变基于不断变化的数据存储/检索需求以及用户和系统访问共享数据处理平台100的不断变化的需求。对动态改变的支持允许基于网络的数据库系统102响应于对基于网络的数据库系统102内的系统和部件的不断变化的需求而快速按比例缩放(scale)。计算资源与数据存储设备124-1至124-N的解耦支持大量数据的存储,而不要求相对应的大量计算资源。类似地,资源的这种解耦支持在特定时间使用的计算资源的显著增加,而不要求相应地增加可用的数据存储资源。此外,资源的解耦使不同的账户能够处理创建额外的计算资源来处理由其他用户共享的数据,而不会影响其他用户的系统。例如,数据提供者可以具有三个计算资源,并且与数据消费者共享数据,并且数据消费者可以生成新的计算资源来执行对共享数据的查询,其中该新的计算资源由数据消费者管理,而不会影响数据提供者的计算资源或不与数据提供者的计算资源交互。
计算服务管理器112、数据库116、执行平台114、云计算存储平台104和远程计算设备106在图1中被示为单独的部件。然而,计算服务管理器112、数据库116、执行平台114、云计算存储平台104和远程计算环境中的每一个都可以被实现为通过API和访问信息(例如,令牌(token)、登录数据)连接的分布式系统(例如,跨多个地理位置处的多个系统/平台分布)。另外,计算服务管理器112、数据库116、执行平台114和云计算存储平台104中的每一个可以根据所接收请求的变化和共享数据处理平台100的不断变化的需求而(彼此独立地)按比例扩大或缩小。因此,在所描述的实施例中,基于网络的数据库系统102是动态的,并且支持定期改变以满足当前的数据处理需求。
在典型操作期间,基于网络的数据库系统102处理由计算服务管理器112确定的多个作业(例如,查询)。这些作业由计算服务管理器112调度和管理,以确定何时以及如何执行作业。例如,计算服务管理器112可以将作业划分为多个离散任务,并且可以确定执行多个离散任务中的每个离散任务需要什么数据。计算服务管理器112可以将多个离散任务中的每个离散任务分配给执行平台114的一个或更多个节点以处理任务。计算服务管理器112可以确定处理任务需要什么数据,并且进一步确定执行平台114内的哪些节点最适合于处理该任务。一些节点可能已经缓存了处理任务所需的数据(由于这些节点最近已经从云计算存储平台104下载了数据用于先前的作业),因此他们是用于处理任务的良好候选。存储在数据库116中的元数据帮助计算服务管理器112确定执行平台114中的哪些节点已经缓存了处理任务所需的数据的至少一部分。执行平台114中的一个或更多个节点使用由这些节点缓存的数据以及必要时使用从云计算存储平台104检索到的数据来处理任务。期望从执行平台114内的高速缓存中检索尽可能多的数据,因为检索速度通常比从云计算存储平台104中检索数据快得多。
如图1所示,共享数据处理平台100将执行平台114与云计算存储平台104分开。在这种布置中,执行平台114中的处理资源和高速缓存资源独立于云计算存储平台104中的数据存储设备124-1至124-N进行操作。因此,计算资源和高速缓存资源不限于具体的数据存储设备124-1至124-N。相反,所有计算资源和所有高速缓存资源可以从云计算存储平台104中的任何数据存储资源检索数据,以及将数据存储到云计算存储平台104中的任何数据存储资源。
图2是示出根据本公开的一些实施例的计算服务管理器112的部件的框图。如图2所示,请求处理服务202管理接收到的数据存储请求和数据检索请求(例如,要对数据库数据执行的作业)。例如,请求处理服务202可以确定处理接收到的查询(例如,数据存储请求或数据检索请求)所需的数据。该数据可能被存储在执行平台114内的高速缓存中,或者被存储在云计算存储平台104中的数据存储设备中。管理控制台服务204支持管理员和其他系统管理者对各种系统和进程的访问。另外,管理控制台服务204可以接收执行作业并监视系统上的工作负荷的请求。根据一些示例实施例,流共享引擎225管理对数据库对象(诸如,数据共享(例如,共享表)或共享视图)的变化跟踪。
计算服务管理器112还包括作业编译器206、作业优化器208和作业执行器210。作业编译器206将作业解析为多个离散任务,并为多个离散任务中的每个离散任务生成执行代码。作业优化器208基于需要处理的数据来确定执行多个离散任务的最佳方法。作业优化器208还处理各种数据修剪操作和其他数据优化技术,以提高执行作业的速度和效率。作业执行器210执行从队列接收的或由计算服务管理器112确定的作业的执行代码。
作业调度程序和协调器(job scheduler and coordinator)212将接收到的作业发送到适当的服务或系统,以进行编译、优化、并分派到执行平台114。例如,可以将作业优先化并按该优先顺序对作业进行处理。在实施例中,作业调度程序和协调器212为由计算服务管理器112调度的内部作业和可以由数据库中的其他系统调度但可以利用执行平台114中的相同处理资源的其他“外部”作业(例如用户查询)确定优先级。在一些实施例中,作业调度程序和协调器212识别或分配执行平台114中的特定节点来处理特定任务。虚拟仓库管理器214管理在执行平台114中实现的多个虚拟仓库的操作。如下面所讨论的,每个虚拟仓库包括多个执行节点,每个执行节点包括高速缓存和处理器(例如,虚拟机、操作系统级容器执行环境)。
另外,计算服务管理器112包括配置和元数据管理器216,其管理与存储在远程数据存储设备中和本地高速缓存(即,执行平台114中的高速缓存)中的数据有关的信息。配置和元数据管理器216使用元数据来确定需要访问哪些数据微分区来检索用于处理特定任务或作业的数据。监视器和工作负荷分析器218监督由计算服务管理器112执行的进程,并管理跨执行平台114中的虚拟仓库和执行节点的任务(例如,工作负荷)分配。监视器和工作负荷分析器218还根据需要,基于整个基于网络的数据库系统102中不断变化的工作负荷来重新分配任务,并且还可以基于也可以由执行平台114处理的用户(例如,“外部”)查询工作负荷来重新分配任务。配置和元数据管理器216以及监视器和工作负荷分析器218耦合到数据存储设备220。图2中的数据存储设备220表示基于网络的数据库系统102内的任何数据存储设备。例如,数据存储设备220可以表示执行平台114中的高速缓存、云计算存储平台104中的存储设备或任何其他存储设备。
图3是示出根据本公开的一些实施例的执行平台114的部件的框图。如图3所示,执行平台114包括多个虚拟仓库,这些虚拟仓库是诸如虚拟机的计算实例的弹性集群。在所示的示例中,虚拟仓库包括虚拟仓库1、虚拟仓库2和虚拟仓库N。每个虚拟仓库(例如,EC2集群)包括多个执行节点(例如,虚拟机),每个执行节点包括数据高速缓存和处理器。虚拟仓库可以通过使用多个执行节点来并行执行多个任务。如本文中所讨论的,执行平台114可以基于系统和用户的当前处理需求,实时地添加新的虚拟仓库和丢弃现有的虚拟仓库。这种灵活性允许执行平台114在需要时快速部署大量计算资源,而不必在不再需要这些计算资源时被迫继续为它们付费。所有虚拟仓库都可以从任何数据存储设备(例如,云计算存储平台104中的任何存储设备)访问数据。
尽管图3中所示的每个虚拟仓库包括三个执行节点,但是特定的虚拟仓库可以包括任意数量的执行节点。此外,虚拟仓库中执行节点的数量是动态的,使得当存在额外需求时创建新的执行节点,并且当不再需要现有的执行节点时(例如,在查询或作业完成后)将其删除。
每个虚拟仓库能够访问图1中所示的数据存储设备124-1至124-N中的任何一个。因此,虚拟仓库没有必要被分配到特定的数据存储设备124-1至124-N,而是虚拟仓库可以从云计算存储平台104内的数据存储设备124-1至124-N中的任何一个访问数据。类似地,图3中所示的每个执行节点可以从数据存储设备124-1至124-N中的任何一个访问数据。例如,第一用户(例如,提供者账户用户)的存储设备124-1可以与另一用户(例如,消费者账户用户)的虚拟仓库中的工作器节点共享,使得该另一用户可以创建数据库(例如,只读数据库)以及直接使用存储设备124-1中的数据,而不需要复制数据(例如,将其复制到由消费者账户用户管理的新磁盘)。在一些实施例中,可以将特定的虚拟仓库或特定的执行节点临时分配到特定的数据存储设备,但是该虚拟仓库或执行节点可以稍后从任何其他数据存储设备访问数据。
在图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中的一个或更多个数据存储设备检索的数据(例如,给定节点最近访问的S3对象)存储在本地执行节点(例如,本地磁盘)中。在一些示例实施例中,当查询仅下载该查询所需的列时,高速缓存存储文件头和文件的各个列。
为了改善高速缓存命中和避免重叠的冗余数据被存储在节点高速缓存中,作业优化器208使用一致的散列(hashing)方案将输入文件集合分配给节点,该散列方案对所访问的数据(例如,数据库116或数据库122中的数据)的表文件名进行散列。根据一些示例实施例,访问相同表文件的后续或并发查询将因此在相同节点上执行。
如所讨论的,节点和虚拟仓库可以响应于环境条件(例如,灾难场景)、硬件/软件问题(例如,故障)或管理改变(例如,从大集群改变到较小的集群以降低成本)而动态改变。在一些示例实施例中,当节点集合改变时,没有数据被立即重新安排(reshuffle)。相反,实现最近最少使用替换策略,以最终替换多个作业中丢失的高速缓存内容。因此,高速缓存减小或消除了在从远程存储系统中不断检索数据的平台中出现的瓶颈问题。本文描述的系统和方法不是从远程存储设备重复访问数据,而是从执行节点中的高速缓存访问数据,这明显更快并且避免了上面讨论的瓶颈问题。在一些实施例中,使用提供对缓存的数据的快速访问的高速存储器设备来实现高速缓存。每个高速缓存可以存储来自云计算存储平台104中的任何存储设备的数据。
此外,高速缓存资源和计算资源可以在不同的执行节点之间变化。例如,一个执行节点可以包含大量的计算资源和最少的高速缓存资源,从而使该执行节点对于需要大量计算资源的任务很有用。另一个执行节点可以包含大量的高速缓存资源和最少的计算资源,从而使该执行节点对于需要缓存大量数据的任务很有用。又一个执行节点可以包含提供更快的输入-输出操作的高速缓存资源,这对于需要快速扫描大量数据的任务很有用。在一些实施例中,执行平台114实现偏斜处理(skew handling),以在与特定执行相关联的高速缓存资源和计算资源之间分配工作,其中该分配可以进一步基于要由执行节点执行的预期任务。例如,如果执行节点执行的任务变得更加的处理器密集,则可以为执行节点分配更多的处理资源。类似地,如果执行节点执行的任务需要更大的高速缓存容量,则可以为执行节点分配更多的高速缓存资源。此外,由于各种问题(例如,虚拟化问题、网络开销),一些节点可能比其他节点执行得慢得多。在一些示例实施例中,使用文件窃取方案在扫描级别解决不平衡。特别地,每当节点进程完成对其输入文件集合的扫描时,它都会从其他节点请求额外的文件。如果其他节点中的一个节点接收到这样的请求,则该节点分析其自己的集合(例如,在接收到请求时输入文件集合中还剩多少文件),然后在当前作业(例如,查询)的持续时间内转移一个或更多个剩余文件的所有权。请求节点(例如,文件窃取节点)然后接收数据(例如,头数据)并从云计算存储平台104(例如,从数据存储设备124-1)下载文件,而不从转移节点下载文件。以这种方式,滞后节点能够以不会恶化滞后节点上的负荷的方式经由文件窃取来转移文件。
尽管虚拟仓库1、2和N与同一执行平台114相关联,但是可以使用在多个地理位置处的多个计算系统来实现虚拟仓库。例如,虚拟仓库1可以由第一地理位置处的计算系统来实现,而虚拟仓库2和虚拟仓库N由第二地理位置处的另一计算系统来实现。在一些实施例中,这些不同的计算系统是由一个或更多个不同实体维护的基于云的计算系统。
另外,每个虚拟仓库在图3中被示为具有多个执行节点。可以使用在多个地理位置处的多个计算系统来实现与每个虚拟仓库相关联的多个执行节点。例如,虚拟仓库1的实例在一个地理位置处的一个计算平台上实现执行节点302-1和302-2,而在另一个地理位置处的不同计算平台处实现执行节点302-N。选择特定计算系统来实现执行节点可以取决于各种因素,例如特定的执行节点所需的资源水平(例如,处理资源要求和高速缓存要求)、特定计算系统处可用的资源、地理位置内或地理位置之间的网络的通信能力、以及哪些计算系统已经实现虚拟仓库中的其他执行节点。
执行平台114也是容错的。例如,如果一个虚拟仓库发生故障,那么该虚拟仓库会快速地被位于不同地理位置处的不同虚拟仓库替换。
特定执行平台114可以包括任意数量的虚拟仓库。另外,特定执行平台中虚拟仓库的数量是动态的,使得当需要附加的处理和/或高速缓存资源时创建新的虚拟仓库。类似地,当与虚拟仓库相关联的资源不再是必要的时,可以删除现有的虚拟仓库。
在一些实施例中,虚拟仓库可以在云计算存储平台104中的相同数据上操作,但是每个虚拟仓库具有其自己的执行节点,其自己的执行节点具有独立的处理和高速缓存资源。这种配置允许不同虚拟仓库上的请求被独立地处理,并且请求之间没有干扰。这种独立处理与动态添加和移除虚拟仓库的能力相结合,支持为新用户添加新的处理容量,而不会影响现有用户观察到的性能。
如上面所提到的,来自客户端存储装置(storage)的数据可以上传到数据仓库。一些技术可以使用“复制”命令来进行这种传输。“复制”命令通常被手动执行或基于设定的时间表(例如,每15分钟)执行。然而,使用这样的“复制”命令可能增加延迟。
因此,可以通过实现自动摄取技术来改善延迟,如下文进一步详细描述的。图4是根据一些示例实施例的用于自动数据摄取的系统400的简化框图。该系统可以包括存储装置402,存储装置402可以作为云存储装置(例如,Amazon S3存储装置、Azure存储装置、GCP存储装置等)被提供。存储装置402可以包括要上传到数据仓库的客户端数据。
存储装置402可以存储待摄取到数据库410中的文件(或数据)。在一些实施例中,存储装置402可以包括存储单元402.1、事件块402.2和队列402.3。该系统还可以包括用于将数据摄取到数据库410中的部署。部署可以包括多个部件,诸如元数据储存器(store)/DB、前端层、负荷平衡层、数据仓库等,如上面关于图1-图3所讨论的。部署可以作为公共或私有部署被提供。公共部署可以被实现为多租户环境,其中每个租户或账户共享处理和/或存储资源。例如,在公共部署中,多个账户可以共享元数据储存器、前端层、负荷平衡层、数据仓库等。另一方面,私有部署可以被实现为专用的、隔离的环境,其中处理和/或存储资源可以是专用的。
部署可以通信地耦合到队列402.3,并且可以包括集成404、管道(pipe)406和接收器408。集成404可以被配置成当新的数据在队列402.3中变得可用时接收通知。例如,队列可以包括简单队列服务TM(SQS)队列池,作为Amazon Web服务TM S3存储桶(bucket)的一部分。SQS队列池可以提供给客户端账户,以将用户文件添加到存储桶。当一个或更多个用户文件被添加到客户端账户数据存储桶时,可以自动生成通知。可以为每个客户端账户提供多个客户数据存储桶。自动生成的通知可以由集成404接收。
例如,集成404可以提供与队列402.3中事件的发生相关的信息。事件可以包括创建新数据、更新旧数据和删除旧数据。集成404还可以提供与事件相关联的资源(例如,已经被创建、更新或删除的用户文件)的标识信息。集成404可以与队列402.3通信,因为可以例如由管理员和/或用户向集成404提供队列402.3的凭证。在实施例中,集成404可以针对通知轮询队列402.3。
集成404可以将通知传递给管道406,管道406可以作为单个管道或多个管道被提供。管道406可以存储关于哪些数据用于与队列402.3相关的自动数据摄取和这些数据的位置的信息。
接收器408可以执行自动数据摄取,然后将摄取到的数据存储在数据库410中。数据摄取可以使用在2018年11月27日提交的标题为“Batch Data Ingestion in DatabaseSystems”的第16/201,854号美国专利申请中描述的技术来执行,该美国专利申请通过引用以其整体并入本文(包括但不限于下文中具体出现的那些部分),通过引用进行并入具有以下例外情况:如果上面引用的申请的任何部分与本申请不一致,则本申请取代上面引用的申请。
图5是根据一些示例实施例的将数据摄取到数据库中的过程500的示意性框图。过程500开始,并且存储装置502发送摄取请求,例如通知。存储装置502可以直接或间接地与数据库系统通信以发送摄取请求。在一些实施例中,摄取请求是由第三方供应商存储装置账户提供的通知,或者摄取请求可以产生于计算服务管理器轮询与客户端账户相关联的数据湖(data lake)以确定是否任何用户文件已经被添加到客户端账户且尚未被摄取到数据库中。通知包括要插入到数据库的表中的文件的列表。这些文件保持在特定于数据库的接收表的队列中。
由计算服务管理器504接收摄取请求。计算服务管理器504在步骤506处识别要摄取的用户文件。在步骤508处,计算服务管理器识别与客户端账户相关联的云提供商类型。在步骤510处,计算服务管理器504可以至少部分地基于检测到的云提供商类型将用户文件分配给一个或更多个执行节点,并且在文件被摄取到数据库表的微分区中之后,在步骤512处注册与数据库表相关联的微分区元数据。计算服务管理器504为执行平台514的一个或更多个执行节点516、520提供所需内容以执行与摄取用户文件相关联的一个或更多个任务。这样的摄取任务518a、518b、522a,522b包括例如将文件切割成一个或更多个部分,基于用户文件生成新的微分区,和/或将新的微分区插入到数据库的表中。
过程500开始由仓库执行的摄取任务。摄取任务可以从用于数据库表的队列中拉取用户文件,直到它被告知停止这样做。摄取任务可以周期性地切割新的用户文件并将其添加到数据库表中。在一个实施例中,摄取过程是“无服务器的(serverless)”,因为它是由数据库或计算服务管理器504提供的集成服务。也就是说,与客户端账户相关联的用户不需要为其自己的仓库或第三方仓库提供所需内容以便执行摄取过程。例如,(例如,经由计算服务管理器504的实例)提供的数据库或更多个数据库可以维护摄取仓库,该摄取仓库然后服务于数据库提供商的一个或更多个或所有账户/客户。
在一些实施例中,可以从用于给定的表的队列中拉取多于一个摄取任务,并且这对于跟上传入数据的速率可能是必要的。在一些实施例中,摄取任务可以决定切割新文件的时间,以增加获得理想大小的文件的机会,并避免在文件大小与一个或更多个用户文件一致的情况下将产生的“不寻常大小的”文件。这可能以添加复杂性为代价,因为必须跟踪所消耗的文件的跟踪行号。
如上面所提到的,如果待摄取的文件与源表之间存在模式不匹配,则可能会发生数据丢失。例如,源表可能具有第一模式,该第一模式具有作为字符串值且列名为“COL_A”的第一列和作为整数值且列名为“COL_B”的第二列。然而,待摄取的文件可能具有作为时间戳值且列名为“COL_C”的附加的第三列。在传统的上传技术中,在待摄取的文件中的第三列中的数据可能会在数据传输中丢失。下面描述了模式演化的技术,以防止当存在模式不匹配时的数据丢失。
如本文所述的自动摄取是一种基于任务的服务,它不同于诸如复制命令的其他查询。为了允许模式演化,可以指定源表(也称为目标表)来启用模式演化。如下面所述,模式演化可以在数据传输期间改变源表的模式。可以允许具有特定权限的用户启用模式演化,例如表所有者。此外,管道所有者应该具有对于源表的模式演化权限。模式演化技术可以比较列名,因此“MATCH_BY_COLUMN_NAME(通过列名匹配)”特征可以在管道的定义中被指定。
图6是根据一些示例实施例的用于在自动摄取期间进行模式演化的方法600的流程图。可以使用上面参考图4和图5描述的自动摄取技术来执行方法600。也就是说,计算服务管理器可能已经接收到待摄取的文件的通知,并创建了用于摄取这些文件的查询计划。计算服务管理器可能已经如上面所述那样将摄取任务分配给一个或更多个执行平台(XP)的执行节点。
在操作602处,可以检测模式不匹配。例如,XP可以检测待摄取的外部文件的模式与源表的模式之间的模式不匹配。如下面进一步详细描述的,可以使用用于检测模式不匹配的不同技术。可以检测不同的模式不匹配。例如,待摄取的文件可能包括不在源表中的一个或更多个附加列。作为另一示例,待摄取的文件可能在源表中的指定的不可空列(non-nullable column)中具有空值。
在操作604处,可以生成指示模式不匹配的特殊事件(例如,错误消息)。例如,XP可以生成错误消息,并且可以通过API将错误消息传输到计算服务管理器。错误消息可以包括关于模式不匹配的信息。例如,错误消息可以包括指示检测到什么类型的模式不匹配的信息,并且可以包括可能需要对源表执行什么模式改变来解决模式不匹配。
在操作606处,可以基于错误消息修改源表的模式。例如,计算服务管理器可以构造数据定义语言(DDL)语句,以基于错误消息中的信息修改源表的模式。为了添加新的列,可以执行“ALTER TABLE ADD COLUMN(更改表添加列)”的DDL语句。添加列会产生扩展表,这可能会降低有效的数据处理。因此,可以为可被添加到源表以进行模式演化的列数设置限制。例如,可以设置每个模式10个附加列的限制。这个限制可以是可调的。例如,所有新的列都是可空的,以说明由于数据已经在源表中而在新的列中缺少数据。
为了改变列的可空性,可以执行另一个相应的更改命令。该命令可以将列从不可空改变为可空。也就是说,该列现在可以包含空值(例如,没有数据)。对源表模式的改变(即,修改或演化后的模式)可以存储在与源表相关联的元数据中。
在操作608处,受影响的摄取任务可以在队列中被隔离。未受模式不匹配影响的其他摄取任务可以继续执行。被隔离的摄取任务可以在被放置在队列中的这一时刻被视为摄取失败,使得其可以被重试。然而,用户可能不知道该摄取失败。
在操作610处,可以使用修改后的模式(或演化后的模式)重试被隔离的任务。也就是说,计算服务管理器可以使用修改后的模式为被隔离的任务重新编译查询计划。然后,所分配的XP可以使用修改后的模式执行摄取任务,以进行其下一次模式不匹配检查。如果没有发现不匹配,则可以将与被隔离的摄取任务相关联的文件摄取到源表中。
在一些实施例中,被隔离的任务可以由维护周期的下一次迭代自动重新触发。对于由于某个初始故障而需要重新执行的任务,可以周期性地(例如,每几秒、每几分钟等)执行维护周期。如上所述,被隔离的任务可以放置在队列中(例如,QueueExecutor(队列执行器))。当修改了模式并编译新的查询计划时,被隔离的任务可以重新启动。例如,可以执行清理队列的命令(例如,QueueExecutor:cleanup())来停止队列,并在下一个维护周期中自动重新启动队列。
在一些实施例中,可能会由于模式演化而发生错误。有些错误是可恢复的。可恢复的错误的一个示例是同时添加具有相同的名称和数据类型的列。考虑两个任务,task_1和task_2,它们试图在同一时刻添加具有相同的字符串(STRING)类型的相同列C3。来自task_2的第二个DDL将失败,因为该列已经被第一个DDL添加。然而,如果task_2重试,它最终将会成功,因为不会存在模式不匹配(C3已经被添加)。
在一些实施例中,模式演化可能是非确定性的。情况可能不是确定性的,因为模式演化可以是先到先服务(first-in first-serve)的行为。考虑用户加载两个文件以进行自动摄取的示例。名为“COL_TO_ADD”的一列在两个文件中都是新的列。然而,该列的类型在一个文件中是“字符串”,而在另一个文件中是“整数(INTEGER)”。在这种情况下,扫描的第一个文件将触发模式演化,而第二个文件将导致错误,因为列“COL_TO_ADD”已经存在并且具有不同的数据类型。因此,表中的演化列可能是“字符串”类型或“整数”类型。
图7是根据一些示例实施例的用于检测模式不匹配的方法700的流程图。方法700可以由执行如上所述的一个或更多个摄取任务的XP来执行。可以在文件被摄取之前执行方法700。
在操作702处,检测待摄取的文件的文件格式。例如,XP可以确定文件格式是属于第一组文件类型还是属于第二组文件类型。在一些实施例中,管道被配置用于特定格式,并且因此可以基于管道配置来检测文件格式。第一组文件类型可以包括关于待摄取的文件的在其元数据信息中的模式信息,或者具有指定的模式信息。第一组文件类型可以包括诸如Parquet、ORC和Avro的文件类型。第二组文件类型可以不包括指定的模式信息,或者不包括在其元数据信息中的模式信息。第二组文件类型可以包括诸如CSV、Json和XML的文件类型。
如果检测到的文件类型属于第一组文件类型,则在操作704处,可以针对文件扫描元数据/模式信息(例如,ScanExternalMetadataRso)。在操作706处,扫描器可以收集或检索用于文件的模式信息。
如果检测到的文件类型属于第二组文件类型,则在操作708处,可以扫描来自待摄取的文件中的选择数量的行(例如,ScanExternalRso)。在操作710处,所扫描的行可以用于推断文件的模式。
在操作712处,源表的模式可以从与源表相关联的元数据中检索到,其可以与待摄取的文件的模式(如上所述,从元数据/模式信息中检索到或被推断出)进行比较。在操作714处,基于该比较,可以检测模式不匹配。可以检测不同的模式不匹配。例如,待摄取的文件可能包括不在源表中的一个或更多个附加列。作为另一示例,待摄取的文件可能在源表中的指定的不可空列中具有空值。
在执行“复制”命令以将文件上传到源表时,也可以使用如本文所述的模式演化。图8是根据一些示例实施例的用于在执行复制命令期间进行模式演化的方法800的流程图。
在操作802处,可以接收复制命令,并且可以生成执行复制命令的查询计划。例如,计算服务管理器可以生成查询计划并分配一个或更多个XP来执行查询计划。
在操作804处,可以检测模式不匹配。例如,执行平台可以检测待复制的文件的模式与源表的模式之间的模式不匹配。如上文进一步详细描述的,可以使用用于检测模式不匹配的不同技术。可以检测不同的模式不匹配。例如,待复制的文件可能包括不在源表中的一个或更多个附加列。作为另一示例,待复制的文件可能在源表中的指定的不可空列中具有空值。
在操作806处,可以生成指示模式不匹配的特殊事件(例如,错误消息)。例如,XP可以生成错误消息,并且可以通过API将错误消息传输到计算服务管理器。错误消息可以包括关于模式不匹配的信息。例如,错误消息可以包括指示检测到什么类型的模式不匹配的信息,并且可以包括可能需要对源表执行什么模式改变来解决模式不匹配。
在操作808处,可以基于错误消息修改源表的模式。例如,计算服务管理器可以基于错误消息中的信息构造DDL语句来修改源表的模式。为了添加新的列,可以执行“ALTERTABLE ADD COLUMN”的DDL语句。添加列会产生扩展表,这可能会降低有效的数据处理。因此,可以为可被添加到源表以进行模式演化的列数设置限制。例如,可以设置每个模式10个附加列的限制。这个限制可以是可调的。例如,所有新的列都是可空的,以说明由于数据已经在源表中而在新的列中缺少数据。
为了改变列的可空性,可以执行另一个相应的更改命令。该命令可以将列从不可空改变为可空。也就是说,该列现在可以包含空值(例如,没有数据)。对源表模式的改变(即,修改或演化后的模式)可以存储在与源表相关联的元数据中。
在操作810处,原始复制命令可以被设置为失败的命令/查询。在操作812处,可以重试失败的复制命令/查询,但这次使用修改后的模式。例如,计算服务管理器可以使用修改后的模式生成新的查询计划。然后,所分配的XP可以执行新的查询计划来进行其下一次模式不匹配检查。如果没有发现不匹配,则可以将与重试的复制命令相关联的文件复制到源表中。在一些实施例中,可以使用不同的计算服务管理器来在模式已经被修改之后重试复制命令。
图9示出了根据示例实施例的计算机系统形式的机器900的图解表示,在该计算机系统形式的机器900内可以执行指令集,以使机器900执行本文所讨论方法中的任何一种或更多种方法。具体地,图9以计算机系统的示例形式示出了机器900的图解表示,用于使机器900执行本文所讨论方法中的任何一种或更多种方法的指令916(例如,软件、程序、应用、小程序、app、或其他可执行代码)可以在该计算机系统内执行。例如,指令916可以使机器900执行本文描述的方法中的任何一种或更多种方法的任何一个或更多个操作。作为另一示例,指令916可以使机器900实现本文描述的数据流的部分。以这种方式,指令916将通用的、未编程的机器转换成特定的机器900(例如,远程计算设备106、访问管理系统110、计算服务管理器112、执行平台114、访问管理系统118、web代理120),该特定的机器900被专门配置成以本文描述的方式执行所描述和示出的功能中的任何一个。
在替代实施例中,机器900作为独立的设备操作或者可以耦合(例如,联网)到其它机器。在联网部署中,机器900可以在服务器-客户端网络环境中以服务器机器或客户端机器的身份来操作,或者作为对等(或分布式)网络环境中的对等机器来操作。机器900可以包括但不限于服务器计算机、客户端计算机、个人计算机(PC)、平板计算机、膝上型计算机、上网本(netbook)、智能电话、移动设备、网络路由器、网络交换机、网络桥接器(networkbridge)或能够顺序地或以其它方式执行指令916的任何机器,指令916指定要由机器900采取的动作。此外,虽然仅示出了单个机器900,但术语“机器”还应被理解为包括单独或联合地执行指令916以执行本文所讨论方法中的任何一种或更多种方法的机器900的集合。
机器900包括处理器910、存储器930和输入/输出(I/O)部件950,它们被配置成例如经由总线902彼此通信。在示例实施例中,处理器910(例如,中央处理单元(CPU)、精简指令集计算(RISC)处理器、复杂指令集计算(CISC)处理器、图形处理单元(GPU)、数字信号处理器(DSP)、专用集成电路(ASIC)、射频集成电路(RFIC)、另一处理器或其任何合适的组合)可以包括例如可以执行指令916的处理器912和处理器914。术语“处理器”旨在包括多核处理器910,多核处理器910可以包括可以同时执行指令916的两个或更多个独立处理器(有时称为“核”)。尽管图9示出了多个处理器910,但是机器900可以包括具有单核的单个处理器、具有多核的单个处理器(例如,多核处理器)、具有单核的多个处理器、具有多核的多个处理器或者它们的任意组合。
存储器930可以包括主存储器932、静态存储器934和存储单元936,它们都可以由处理器910例如经由总线902访问。主存储器932、静态存储器934和存储单元936存储指令916,指令916体现本文描述的方法或功能中的任何一种或更多种。在由机器900执行期间,指令916也可以全部或部分地驻留在主存储器932内、静态存储器934内、存储单元936内、处理器910中的至少一个内(例如,在处理器的高速缓存存储器内)或其任何合适的组合。
I/O部件950包括用于接收输入、提供输出、产生输出、传输信息、交换信息、捕获测量值等的部件。包括在特定机器900中的具体的I/O部件950将取决于机器的类型。例如,诸如移动电话的便携式机器将有可能包括触摸输入设备或其他这样的输入机构,而无头服务器机器将不太可能包括这样的触摸输入设备。将认识到的是,I/O部件950可以包括图9中未示出的许多其他部件。I/O部件950根据功能进行分组仅仅是为了简化下面的讨论,并且该分组决不是限制性的。在各种示例实施例中,I/O部件950可以包括输出部件952和输入部件954。输出部件952可以包括视觉部件(例如,诸如等离子体显示面板(PDP)、发光二极管(LED)显示器、液晶显示器(LCD)、投影仪或阴极射线管(CRT)的显示器)、声学部件(例如,扬声器)、其他信号发生器等。输入部件954可以包括字母数字输入部件(例如,键盘、被配置成接收字母数字输入的触摸屏、光电键盘或其他字母数字输入部件)、基于指向的输入部件(例如,鼠标、触控板、轨迹球、操纵杆、运动传感器或另一指向仪器)、触觉输入部件(例如,物理按钮、提供触摸或触摸手势的位置和/或力的触摸屏或其他触觉输入部件)、音频输入部件(例如,麦克风)等。
可以使用多种技术来实现通信。I/O部件950可以包括通信部件964,通信部件964可操作来分别经由耦合982和耦合972将机器900耦合到网络980或设备970。例如,通信部件964可以包括网络接口部件或与网络980对接的另一合适的设备。在进一步的示例中,通信部件964可以包括有线通信部件、无线通信部件、蜂窝通信部件和经由其他模态提供通信的其他通信部件。设备970可以是另一台机器或多种外围设备中的任一种(例如,经由通用串行总线(USB)耦合的外围设备)。例如,如上所述,机器900可以对应于远程计算设备106、访问管理系统118、计算服务管理器112、执行平台114、web代理120中的任何一个,并且设备970可以包括这些系统和设备中的任何其他系统和设备。
各种存储器(例如,930、932、934和/或处理器910和/或存储单元936的存储器)可以存储指令916和数据结构(例如,软件)的一个或更多个集合,这些指令916和数据结构(例如软件)体现本文所描述的方法或功能中的任何一种或更多种或被本文所描述的方法或功能中的任何一种或更多种所利用。当由处理器910执行时,这些指令916使各种操作实现所公开的实施例。
如本文所使用的,术语“机器存储介质”、“设备存储介质”和“计算机存储介质”意思相同,并且可以在本公开中互换使用。这些术语指的是存储可执行指令和/或数据的单个或多个存储设备和/或介质(例如,集中式或分布式数据库和/或相关联的高速缓存和服务器)。相应地,这些术语应当被认为包括但不限于固态存储器以及光介质和磁介质,包括在处理器内部或外部的存储器。机器存储介质、计算机存储介质和/或设备存储介质的具体示例包括非易失性存储器,非易失性存储器包括例如:半导体存储器设备,诸如可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)、现场可编程门阵列(FPGA)和闪存设备;磁盘,例如内部硬盘和可移除磁盘;磁光盘;以及CD-ROM和DVD-ROM光盘。术语“机器存储介质”、“计算机存储介质”和“设备存储介质”具体排除了载波、经调制的数据信号和其他这样的介质(其中的至少一些包含在下面讨论的术语“信号介质”中)。
在各种示例实施例中,网络980的一个或更多个部分可以是自组织网络(ad hocnetwork)、内联网、外联网、虚拟专用网络(VPN)、局域网(LAN)、无线LAN(WLAN)、广域网(WAN)、无线WAN(WWAN)、城域网(MAN)、互联网、互联网的一部分、公共交换电话网络(PSTN)的一部分、普通老式电话服务(POTS)网络、蜂窝电话网络、无线网络、网络、另一种类型的网络、或两种或更多种这样的网络的组合。例如,网络980或网络980的一部分可以包括无线或蜂窝网络,并且耦合982可以是码分多址(CDMA)连接、全球移动通信系统(GSM)连接或另一种类型的蜂窝或无线耦合。在该示例中,耦合982可以实现多种类型的数据传输技术中的任何一种,例如单载波无线电传输技术(1xRTT)、演进数据优化(Evolution-DataOptimized,EVDO)技术、通用分组无线电服务(GPRS)技术、增强型数据速率GSM演进(EDGE)技术、包括3G、第四代无线(4G)网络、通用移动电信系统(UMTS)、高速分组接入(HSPA)、全球微波接入互操作性(WiMAX)、长期演进(LTE)标准的第三代合作伙伴计划(3GPP)、由各种标准设置组织定义的其他技术、其他长程协议、或其他数据传输技术。
指令916可以使用传输介质经由网络接口设备(例如,包括在通信部件964中的网络接口部件)并利用多种众所周知的传输协议(例如,超文本传输协议(HTTP))中的任何一种在网络980上传输或接收。类似地,指令916可以使用传输介质经由耦合972(例如,对等耦合)被传输或接收到设备970。术语“传输介质”和“信号介质”意思相同,并且在本公开中可以互换使用。术语“传输介质”和“信号介质”应被理解为包括能够存储、编码或携带用于由机器900执行的指令916的任何无形介质,并且包括数字或模拟通信信号或便于这样的软件的通信的其他无形介质。因此,术语“传输介质”和“信号介质”应被理解为包括任何形式的经调制的数据信号、载波等。术语“经调制的数据信号”意指这样的信号:其具有以对信号中的信息进行编码的这样的方式设置或更改的其特性中的一个或更多个特性。
术语“机器可读介质”、“计算机可读介质”和“设备可读介质”意思相同,并且在本公开中可以互换使用。这些术语被定义为包括机器存储介质和传输介质二者。因此,这些术语包括存储设备/介质和载波/经调制的数据信号二者。
本文描述的示例方法的各种操作可以至少部分地由被临时配置(例如,通过软件)或永久配置为执行相关操作的一个或更多个处理器来执行。类似地,本文描述的方法可以至少部分是处理器实现的。例如,本文描述的方法的至少一些操作可以由一个或更多个处理器执行。某些操作的执行可以在一个或更多个处理器之间分配,该一个或更多个处理器不仅驻留在单个机器内,而且跨多个机器部署。在一些示例实施例中,一个或更多个处理器可以位于单个位置中(例如,在家庭环境、办公室环境或服务器场内),而在其他实施例中,处理器可以跨多个位置分布。
尽管参考具体的示例实施例描述了本公开的实施例,但显然地,在不偏离本发明主题的更广泛范围的情况下,可以对这些实施例做出各种修改和改变。因此,说明书和附图被认为是说明性的而不是限制性的。形成本申请的一部分的附图通过说明而非限制的方式显示了其中可以实施主题的具体实施例。所示出的实施例以充分的细节被描述,以使本领域的技术人员能够实施本文公开的教导。可以使用其他实施例和从其中衍生的实施例,使得可以做出结构和逻辑的替换和改变而不偏离本公开的范围。因此,此详细描述不应被理解为限制性意义,并且各种实施例的范围仅由所附权利要求连同这些权利要求所享有的完整范围的等同物一起限定。
本发明主题的这样的实施例可以在本文中单独地和/或共同地由术语“发明”提到,这仅仅是为了便利,并不意图自愿将本申请的范围局限于任何单一发明或发明构思(如果实际上公开了多于一种发明或发明构思的话)。因此,虽然本文中已经说明和描述了特定实施例,但是应当理解,可以用经计算以实现相同目的的任何布置来替换所示出的特定实施例。本公开意图涵盖各种实施例的任何和所有改编或变型。在阅读以上描述后,以上实施例的组合以及本文未具体描述的其他实施例对于本领域的技术人员来说将是明显的。
在本文档中,术语“一个(a)”或“一个(an)”,如专利文档中常见的那样,用于包括一个或多于一个,与“至少一个”或“一个或更多个”的任何其他实例或用法无关。在本文档中,术语“或”用于指非排他性的或,因此除非另有说明,否则“A或B”包括“A但不包括B”、“B但不包括A”和“A和B”。在所附权利要求中,术语“包括(including)”和“其中(in which)”被用作相应术语“包括(comprising)”和“其中(wherein)”的纯英语等效词。此外,在所附权利要求中,术语“包括(including)”和“包括(comprising)”是开放式的;也就是说,包括除了权利要求中在这样的术语之后列出的那些元素之外的元素的系统、设备、物品或过程仍然被认为落入该权利要求的范围内。

Claims (24)

1.一种方法,包括:
由计算服务管理器接收将文件复制到源表中的复制命令;
由所述计算服务管理器生成执行所述复制命令的查询计划;
由所述计算服务管理器分配一个或更多个执行节点以执行所述查询计划;
由所述一个或更多个执行节点检测所述文件与所述源表之间的模式不匹配;
由所述一个或更多个执行节点基于检测到所述模式不匹配来生成消息;
由所述计算服务管理器基于所述消息修改所述源表的模式;
由所述计算服务管理器,基于所述源表的修改后的模式来为所述复制命令编译修改后的查询计划;以及
由所述一个或更多个执行节点,基于所述修改后的查询计划来执行所述复制命令,以将所述文件复制到所述源表中。
2.根据权利要求1所述的方法,还包括:
将所述复制命令设置为失败的命令;以及
重试所述失败的命令,其中,基于重试所述失败的命令来编译所述修改后的查询计划。
3.根据权利要求1所述的方法,其中,基于所述文件包括不在所述源表中的一个或更多个列来检测到所述模式不匹配。
4.根据权利要求1所述的方法,其中,基于所述文件在所述源表中的指定的不可空列中包括空值来检测到所述模式不匹配。
5.根据权利要求1所述的方法,其中,所述消息包括关于模式不匹配的类型的信息。
6.根据权利要求1所述的方法,其中,修改所述源表的模式包括构造数据定义语言语句以基于所述消息中的信息添加或更改列。
7.根据权利要求1所述的方法,其中,检测所述模式不匹配包括扫描保存在所述文件的元数据中的模式信息。
8.根据权利要求1所述的方法,其中,检测所述模式不匹配包括:
扫描来自所述文件中的一组行,并基于所扫描的一组行来确定所述文件的模式。
9.一种机器存储介质,其体现指令,所述指令在由一个或更多个机器执行时使所述一个或更多个机器执行包括以下项的操作:
由计算服务管理器接收将文件复制到源表中的复制命令;
由所述计算服务管理器生成执行所述复制命令的查询计划;
由所述计算服务管理器分配一个或更多个执行节点以执行所述查询计划;
由所述一个或更多个执行节点检测所述文件与所述源表之间的模式不匹配;
由所述一个或更多个执行节点基于检测到所述模式不匹配来生成消息;
由所述计算服务管理器基于所述消息修改所述源表的模式;
由所述计算服务管理器,基于所述源表的修改后的模式来为所述复制命令编译修改后的查询计划;以及
由所述一个或更多个执行节点,基于所述修改后的查询计划来执行所述复制命令,以将所述文件复制到所述源表中。
10.根据权利要求9所述的机器存储介质,还包括:
将所述复制命令设置为失败的命令;以及
重试所述失败的命令,其中,基于重试所述失败的命令来编译所述修改后的查询计划。
11.根据权利要求9所述的机器存储介质,其中,基于所述文件包括不在所述源表中的一个或更多个列来检测到所述模式不匹配。
12.根据权利要求9所述的机器存储介质,其中,基于所述文件在所述源表中的指定的不可空列中包括空值来检测到所述模式不匹配。
13.根据权利要求9所述的机器存储介质,其中,所述消息包括关于模式不匹配的类型的信息。
14.根据权利要求9所述的机器存储介质,其中,修改所述源表的模式包括构造数据定义语言语句以基于所述消息中的信息添加或更改列。
15.根据权利要求9所述的机器存储介质,其中,检测所述模式不匹配包括扫描保存在所述文件的元数据中的模式信息。
16.根据权利要求9所述的机器存储介质,其中,检测所述模式不匹配包括:
扫描来自所述文件中的一组行,以及
基于所扫描的一组行来确定所述文件的模式。
17.一种系统,包括:
至少一个硬件处理器;和
至少一个存储器,其存储指令,所述指令在由所述至少一个硬件处理器执行时使所述至少一个硬件处理器执行包括以下项的操作:
由计算服务管理器接收将文件复制到源表中的复制命令;
由所述计算服务管理器生成执行所述复制命令的查询计划;
由所述计算服务管理器分配一个或更多个执行节点以执行所述查询计划;
由所述一个或更多个执行节点检测所述文件与所述源表之间的模式不匹配;
由所述一个或更多个执行节点基于检测到所述模式不匹配来生成消息;
由所述计算服务管理器基于所述消息修改所述源表的模式;
由所述计算服务管理器,基于所述源表的修改后的模式来为所述复制命令编译修改后的查询计划;以及
由所述一个或更多个执行节点,基于所述修改后的查询计划来执行所述复制命令,以将所述文件复制到所述源表中。
18.根据权利要求17所述的系统,所述操作还包括:
将所述复制命令设置为失败的命令;以及
重试所述失败的命令,其中,基于重试所述失败的命令来编译所述修改后的查询计划。
19.根据权利要求17所述的系统,其中,基于所述文件包括不在所述源表中的一个或更多个列来检测到所述模式不匹配。
20.根据权利要求17所述的系统,其中,基于所述文件在所述源表中的指定的不可空列中包括空值来检测到所述模式不匹配。
21.根据权利要求17所述的系统,其中,所述消息包括关于模式不匹配的类型的信息。
22.根据权利要求17所述的系统,其中,修改所述源表的模式包括构造数据定义语言语句以基于所述消息中的信息添加或更改列。
23.根据权利要求17所述的系统,其中,检测所述模式不匹配包括扫描保存在所述文件的元数据中的模式信息。
24.根据权利要求17所述的系统,其中,检测所述模式不匹配包括:
扫描来自所述文件中的一组行,以及
基于所扫描的一组行来确定用于所述文件的模式。
CN202310678554.6A 2022-06-08 2023-06-08 模式演化 Pending CN117194560A (zh)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US202263366034P 2022-06-08 2022-06-08
US63/366,034 2022-06-08
US17/934,369 2022-09-22
US18/104,253 US11748318B1 (en) 2022-06-08 2023-01-31 Schema evolution
US18/104,253 2023-01-31

Publications (1)

Publication Number Publication Date
CN117194560A true CN117194560A (zh) 2023-12-08

Family

ID=85805107

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310678554.6A Pending CN117194560A (zh) 2022-06-08 2023-06-08 模式演化

Country Status (3)

Country Link
US (3) US11625367B1 (zh)
EP (1) EP4290392A1 (zh)
CN (1) CN117194560A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12007961B2 (en) 2022-06-08 2024-06-11 Snowflake Inc. Schema evolution

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9430114B1 (en) * 2011-11-03 2016-08-30 Pervasive Software Data transformation system, graphical mapping tool, and method for creating a schema map
US10915507B1 (en) * 2014-08-21 2021-02-09 Amazon Technologies, Inc. Data conversion handler for a run-time execution environment
US10684998B2 (en) * 2014-11-21 2020-06-16 Microsoft Technology Licensing, Llc Automatic schema mismatch detection
US11625367B1 (en) 2022-06-08 2023-04-11 Snowflake Inc. Schema evolution

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US12007961B2 (en) 2022-06-08 2024-06-11 Snowflake Inc. Schema evolution

Also Published As

Publication number Publication date
US20230401180A1 (en) 2023-12-14
EP4290392A1 (en) 2023-12-13
US11748318B1 (en) 2023-09-05
US12007961B2 (en) 2024-06-11
US11625367B1 (en) 2023-04-11

Similar Documents

Publication Publication Date Title
US11893029B2 (en) Real-time streaming data ingestion into database tables
US11727013B2 (en) Optimized processing of data in different formats
US11030046B1 (en) Cluster diagnostics data for distributed job execution
US12007961B2 (en) Schema evolution
US20230401235A1 (en) Low latency ingestion into a data system
EP4280077A1 (en) Data ingestion replication and disaster recovery
WO2023244972A1 (en) Unstructured file replication staged between database deployments
US20220100758A1 (en) Autoscaling external function requests
US11921700B1 (en) Error tables to track errors associated with a base table
US20240143548A1 (en) Continuous ingestion of custom file formats
US11403259B1 (en) Catalog query framework on distributed key value store
US11748327B2 (en) Streams using persistent tables
US11734301B1 (en) Selective table replication to enable stream replication
US20240104082A1 (en) Event driven technique for constructing transaction lock wait history
US20240143565A1 (en) Observability loop
US20240232224A1 (en) Cross-organization & cross-cloud automated data pipelines

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
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.

CB02 Change of applicant information