CN116490865A - 高效批量加载针对单个目标表的多个行或分区 - Google Patents
高效批量加载针对单个目标表的多个行或分区 Download PDFInfo
- Publication number
- CN116490865A CN116490865A CN202180063253.1A CN202180063253A CN116490865A CN 116490865 A CN116490865 A CN 116490865A CN 202180063253 A CN202180063253 A CN 202180063253A CN 116490865 A CN116490865 A CN 116490865A
- Authority
- CN
- China
- Prior art keywords
- pid
- bod
- target
- source
- rows
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
- G06F16/2386—Bulk updating operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24553—Query execution of query operations
- G06F16/24554—Unary operations; Data partitioning operations
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
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)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种计算机实现的系统和方法处理针对目标数据库系统的目标表的插入。接收与源数据库系统中的源表的源分区有关的单个查询语言INSERT语句,该INSERT语句标识要被插入到目标表中的具有分区标识符(PID)的数据块(BOD)。该INSERT语句不包含字面PID。响应于接收到INSERT语句,处理器经由数据流从源表接收BOD,并且将BOD插入目标表中。这减少了与使用INSERT语句将多个行的数据插入目标表相关联的开销。
Description
背景技术
本文公开了一种用于提高在数据库加速器中批量加载针对单个目标表的多个行或分区的效率的系统和相关方法。
数据库中的分区的使用可以使各种数据库操作更高效,因为某些操作一次在数据库的一部分上执行,而不是在整个数据库上执行。
当执行某些数据库命令,例如INSERT(插入)命令时,减少与这些命令相关联的开销是有益的,特别是在所涉及的有效负载数据量小的情况下。在目标数据库系统的每个逻辑节点上使用单个INSERT语句来处理来自源数据库系统的单个分区。每个INSERT语句在目标数据库系统以及数据库加速器中引入开销:需要在其中执行语句的SQL连接。该语句使用命名管道来将数据从一个进程高效地传送给另一个进程(避免不同格式之间的昂贵的数据变换步骤)。必须开始该语句。导致了额外的开销。
如果要由单个INSERT语句处理的数据量相对较小,则所有这些步骤的开销会造成批量加载数据的总时间的显著量。希望减少执行单个INSERT语句以便将数据的一部分/一个批插入目标数据库系统的表中的开销。每个批的数据源自源表中的特定分区,可能针对目标数据库系统中的个体逻辑节点进一步分解/分离。因此,每个批或批中的每个行具有与之相关联的源表分区的标识符。
发明内容
根据本文公开的一个方面,提供了一种计算机实现的方法,用于处理针对目标数据库系统的目标表的插入。该方法包括使用处理器来接收与源数据库系统中的源表的源分区有关的单个查询语言INSERT语句,该语句标识要插入到目标表中的具有分区标识符(PID)的数据块(BOD)。INSERT语句不包含字面PID。响应于接收到INSERT语句,处理器经由数据流从源表接收BOD,并且将BOD插入目标表中。有利地,这减少了与使用INSERT语句将多行数据插入目标表相关联的开销。
根据本文公开的另一方面,在接收到INSERT语句之后但是在将BOD的每行插入到目标表中之前,将所述每行的PID插入到每行的列中。有利地,这允许使用单个INSERT语句将PID插入到目标表的多个行中。
根据本文公开的另一方面,BOD被组织为多个行,并且每个行被修改以包含分区ID值,使得分区ID值被注入数据流中。有利地,这消除了与包括PID的源相关联的开销。
根据本文公开的另一方面,该方法还包括指定包含当前PID的共享存储器位置,以及将当前PID写入共享存储器位置,其中当前PID由目标数据库系统可读取。有利地,这允许数据库加速器引用包含PID的共享存储器位置。
根据本文公开的另一方面,在数据流本身中指定PID,使得BOD的每个批之前都有批PID和批PID适用的行数。该方法还包括读取和存储批PID和行数,以及从数据流读取与行数相对应的n个行,并利用读取的批PID处理每个读取的行。有利地,这允许数据库加速器精确地确定将PID应用到多少个行。
根据本文公开的另一方面,数据流包括在源数据库系统上被解复用的多个数据流。有利地,这允许数据在多个信道上高效地被传送。
根据本文公开的另一方面,该方法还包括:由源数据库系统利用在源数据库系统上启动的卸载实用程序来执行对BOD中的行的解复用,以便从源表提取BOD并填充多个数据流。有利地,这有助于减少数据库加速器所需的资源量。
根据本文公开的另一方面,该方法还包括针对目标数据库系统中的所有逻辑节点确定标识进入每个相应逻辑节点的所有行的卸载标准,以及利用卸载标准启动卸载实用程序。有利地,这有助于提供对要被传送的数据的更好的组织和更高效的处理。
根据本文公开的另一方面,该方法还包括将多个数据流重新组合为单个数据流,其中,在单个数据流中,粒度为行的块或批而不是单个行,每个批具有标头(header),并且标头指示块或批针对哪个目标节点。有利地,这为加速器提供了将PID插入数据流的行中的容易机制。
根据本文公开的另一方面,该方法还包括将从源数据库系统上的数据的解复用得到的数据流直接发送到目标数据库系统上的目标节点。有利地,这种直接通信可以减少数据传输中的潜在错误点。
根据本文公开的另一方面,提供了一种用于执行数据库传输的方法,包括:利用卸载实用程序打开多个数据流,一个流用于目标数据库系统中的每个节点;扫描源数据库系统中的源表的所有行。对于每一行,从源表中读取相应行,应用卸载标准以确定目标数据库系统中相应行的节点,以及将该行写入目标节点的特定数据流。有利地,这有助于组织被传送到目标系统的数据库行。
根据本文公开的另一方面,提供了一种用于处理针对目标数据库系统的目标表的插入的系统,包括存储器和处理器,该处理器被配置为接收与源数据库系统中的源表的源分区相关的单个查询语言INSERT语句,该INSERT语句标识将被插入到目标表中的具有分区标识符(PID)的数据块(BOD),其中INSERT语句不包含字面PID,响应于INSERT语句的接收,经由数据流从源表接收BOD,并将BOD插入到目标表中。有利地,这减少了与使用INSERT语句将多行数据插入目标表相关联的开销。还提供了与相关方法特征相对应的系统特征。
可以提供计算机程序产品,其可以用于实现如上所述的系统的方法和功能。计算机程序产品包含从计算机可用或计算机可读介质可访问的指令,该计算机可用或计算机可读介质提供由计算机或任何指令执行系统使用或与计算机或任何指令执行系统结合使用的程序代码。为了本说明书的目的,计算机可用或计算机可读介质可以是任何装置,其可以包含用于存储、传送、传播或传输程序的机构,该程序由指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合使用。
附图说明
本文参考不同的主题描述了各种实施例。具体地,一些实施例可以参考方法来描述,而其他实施例可以参考装置和系统来描述。然而,本领域技术人员将从以上和以下描述中了解到,除非另外指出,除了属于一种类型的主题的特征的任何组合之外,与不同主题相关的特征之间的任何组合,特别是方法的特征与装置和系统的特征之间的任何组合,也被认为是在本文档内公开的。
从下文将描述的一个或多个实施例的示例中,以上定义的方面以及本文公开的其它方面是明显的,并且参考一个或多个实施例的示例进行解释,但是本发明不限于此。仅通过示例的方式并参考以下附图描述了各种实施例:
图1A是根据本文公开的一个或多个实施例的数据处理系统(DPS)的框图。
图1B是描绘根据本文公开的实施例的云计算环境的示意图。
图1C是示出根据本文公开的实施例的抽象模型层的示意图。
图2A是根据一些实现的具有带有表格的源数据库和目标数据库的数据库系统的框图。
图2B是根据一些实现的数据流的数据结构图。
图3是根据一些实现的用于执行INSERT操作的处理的流程图。
图4是示出了将数据库行传送到节点的框图。
具体实施方式
单个目标表的多个分区的批量加载的概述
本发明提供了一种用于提高在数据库加速器中批量加载针对单个目标表的多个分区的效率的系统和相关方法,其允许在插入跨越多个分区的数据块(BOD)时使用不包含分区ID的单个INSERT语句。本文公开了有助于减少与发出多个INSERT语句相关联的开销的各种机制,当所涉及的有效负载数据量小时,这样的开销是显著的。
以下缩写可以用于下文:
API 应用程序接口
ARM 高级RISC机器
BOD 数据块
CD-ROM压缩盘ROM
CMS 内容管理系统
CoD 按需容量
CPU 中央处理单元
CUoD按需容量升级
DPS 数据处理系统
DVD 数字通用盘
EPROM 可擦除可编程只读存储器
FPGA 现场可编程门阵列
HA 高可用性
IaaS 基础设施即服务
I/O 输入/输出
IPL 初始程序加载
ISP 互联网服务提供商
ISA 指令集架构
LAN 局域网
LPAR逻辑分区
PaaS 平台即服务
PDA 个人数字助理
PLA 可编程逻辑阵列
RAM 随机存取存储器
RISC 精简指令集计算机
ROM 只读存储器
SaaS软件即服务
SLA服务等级协议
SRAM静态随机存取存储器
SQL结构化查询语言
WAN广域网
数据处理系统
图1A是根据一个或多个实施例的示例DPS的框图。在该说明性示例中,DPS 10可以包括通信总线12,其可以提供处理器单元14、存储器16、持久存储装置18、通信单元20、I/O单元22和显示器24之间的通信。
处理器单元14用于执行可以被加载到存储器16中的软件指令,处理器单元14可以是多个处理器、多核处理器或某个其它类型的处理器,这取决于特定的实现。如本文所用,关于项目的数字是指一个或多个项目。此外,处理器单元14可以使用多个异构处理器系统来实现,其中主处理器与辅助处理器一起存在于单个芯片上。作为另一个说明性示例,处理器单元14可以是包含相同类型的多个处理器的对称多处理器系统。
存储器16和持久存储装置18是存储设备26的示例。存储设备可以是能够临时和/或永久地存储信息的任何硬件,所述信息例如但不限于数据、功能形式的程序代码和/或其他合适的信息。在这些示例中,存储器16可以是例如随机存取存储器或任何其他合适的易失性或非易失性存储设备。取决于特定的实现,持久存储器18可以采取各种形式。
例如,持久存储装置18可以包含一个或多个组件或设备。例如,持久存储装置18可以是硬盘驱动器、闪存、可重写光盘、可重写磁带或上述的某种组合。持久存储装置18所使用的介质也可以是可移除的。例如,可移除硬盘驱动器可以用于持久存储装置18。
这些示例中的通信单元20可以提供与其它DPS或设备的通信。在这些示例中,通信单元20是网络接口卡。通信单元20可以通过使用物理和无线通信链路中的一种或两种来提供通信。
输入/输出单元22可以允许与可以连接到DPS 10的其他设备输入和输出数据,例如,输入/输出单元22可以通过键盘、鼠标和/或某种其它适当的输入设备提供用于用户输入的连接。此外,输入/输出单元22可以将输出发送给打印机。显示器24可以提供向用户显示信息的机构。
用于操作系统、应用和/或程序的指令可以位于存储设备26中,其通过通信总线12与处理器单元14通信,在这些说明性示例中,指令在持久存储装置18上是功能形式的,这些指令可以被加载到存储器16中以便由处理器单元14执行,不同实施例的过程可以由处理器单元14使用计算机实现的指令来执行,这些指令可以位于诸如存储器16的存储器中。这些指令被称为程序代码38(下文描述的)、计算机可用程序代码、或者可以由处理器单元14中的处理器读取和执行的计算机可读程序代码,不同实施例中的程序代码可以被体现在不同的物理或有形的计算机可读介质上,诸如存储器16或持久存储装置18。
DPS 10还可以包括网络29的接口,该接口可以包括硬件、驱动器、软件等,以允许通过有线和无线网络29进行通信,并且可以实现任意数目的通信协议,包括例如处于开放系统互连(OSI)七层模型的各个级别的协议。
图1A还示出了可以包含程序代码38的计算机程序产品30,程序代码38可以功能形式位于可选择性移除的计算机可读介质32上,并且可以被加载到或传送到DPS 10以便由处理器单元14执行,在这些示例中,程序代码38和计算机可读介质32可以形成计算机程序产品30。在一个示例中,计算机可读介质32可以是计算机可读存储介质34或计算机可读信号介质36,计算机可读存储介质34可以包括例如插入或放置到驱动器或作为持久存储装置18的一部分的其他设备中的光盘或磁盘,以便传送到作为持久存储装置18的一部分的存储设备,诸如硬盘驱动器。计算机可读存储介质34还可以采取连接到DPS 10的持久存储装置的形式,诸如硬盘驱动器、拇指驱动器或闪存。在一些实例种,计算机可读存储介质34不可以从DPS 10移除。
备选地,程序代码38可以使用计算机可读信号介质36被传送到DPS 10。计算机可读信号介质36可以是例如包含程序代码38的传播数据信号例如,计算机可读信号介质36可以是电磁信号、光信号和/或任何其它适当类型的信号。这些信号可以通过通信链路传输,例如无线通信链路、光纤电缆、同轴电缆、电线和/或任何其他合适类型的通信链路。换句话说,在说明性示例中,通信链路和/或连接可以是物理的或无线的。
在一些说明性实施例中,程序代码38可以从另一设备或DPS通过计算机可读信号介质36通过网络下载到持久存储器18,以便在DPS 10内使用,例如,存储在服务器DPS中的计算机可读存储介质中的程序代码可以通过网络从服务器下载到DPS 10,提供程序代码38的DPS可以是服务器计算机、客户机计算机或能够存储和传送程序代码38的一些其它设备。
针对DPS 10示出的不同组件不意味着对不同实施例可以被实现的方式提供架构限制。不同的说明性实施例可以在包括除了或代替DPS 10所示的组件的DPS中实现。
一般云计算
应当理解,尽管本公开包括关于云计算的详细描述,但是本文所陈述的教导的实现不限于云计算环境。相反,本发明的实施例能够结合现在已知或以后开发的任何其它类型的计算环境来实现。
云计算是一种服务递送模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储、应用、虚拟机和服务)的共享池的方便的按需网络访问,该可配置计算资源可以以最小的管理努力或与服务的提供方的交互来快速供应和释放。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。
特征如下
按需自助服务:云消费者可以单方面地自动地根据需要配置计算能力,诸如服务器时间和网络存储,而不需要与服务的提供方进行人工交互。
广泛的网络接入:能力通过网络可用,并且通过促进由异构的瘦或厚客户端平台(例如,移动电话、膝上型计算机和PDA)使用的标准机制来访问。
资源池化:提供方的计算资源被集中以使用多租户模型来服务多个消费者,其中不同的物理和虚拟资源根据需求被动态地分配和重新分配。存在位置无关的意义,因为消费者通常不控制或不知道所提供的资源的确切位置,但是能够在较高抽象级别(例如国家、州或数据中心)指定位置。
快速弹性:可以快速且弹性地、在一些情况下自动地提供快速放大和快速释放以缩小的能力。对于消费者,可用于配置的能力通常看起来不受限制,并且可以在任何时间以任何数量购买。
测量的服务:云系统通过利用在适合于服务类型(例如,存储、处理、带宽和活动用户账户)的某一抽象级别的计量能力来自动地控制和优化资源使用。可以监视、控制和报告资源使用,从而为所利用服务的提供方和消费者两者提供透明性。
服务模型如下
软件即服务(SaaS):提供给消费者的能力是使用在云基础设施上运行的提供方的应用。应用通过诸如web浏览器(例如,基于web的电子邮件)的瘦客户端接口从不同客户端设备可访问。消费者不管理或控制包括网络、服务器、操作系统、存储装置或甚至个体应用能力的底层云基础设施,可能的例外是有限的用户特定的应用配置设置。
平台即服务(PaaS):提供给消费者的能力是将消费者创建或获取的应用部署到云基础设施上,该应用是使用提供方所支持的编程语言和工具来创建的。消费者不管理或控制包括网络、服务器、操作系统或存储装置的底层云基础设施,但是具有对所部署的应用以及可能的应用托管环境配置的控制。
基础设施即服务(IaaS):提供给消费者的能力是供应消费者能够部署和运行可以包括操作系统和应用的任意软件的处理、存储、网络和其他基本计算资源。消费者不管理或控制底层云基础设施,但是具有对操作系统、存储装置、所部署的应用的控制,以及可能地对选择联网组件(例如,主机防火墙)的有限的控制。
部署模型如下
私有云:云基础设施仅为组织操作。它可以由组织或第三方管理,并且可以存在于驻地内或驻地外。
社区云:云基础设施由若干组织共享,并且支持具有共享关注(例如,任务、安全要求、策略和合规性考虑)的特定社区。它可以由组织或第三方管理,并且可以存在于驻地内或驻地外。
公有云:云基础设施可用于一般公众或大型工业群体,并且由销售云服务的组织拥有。
混合云:云基础设施是两个或更多云(私有、社区或公共的)的组合,这些云保持独特的实体,但是通过标准化或专有技术被绑定在一起,这些技术实现数据和应用可移植性(例如,用于云之间的负载平衡的云爆发)。
云计算环境是面向服务的,关注于无状态行、低耦合、模块性和语义互操作性。在云计算的核心是包括互连节点的网络的基础设施。
现在参考图1B,描绘了说明性云计算环境52。如图所示,云计算环境52包括云消费者使用的本地计算设备可以与其通信的一个或多个云计算节点50,本地计算设备例如个人数字助理(PDA)或蜂窝电话54A、台式计算机54B、膝上型计算机54C和/或汽车计算机系统54N。节点50可以彼此通信。它们可以被物理地或虚拟地分组(未示出)在一个或多个网络中,诸如如上文描述的私有云、社区云、公共云或混合云或其组合。这允许云计算环境52提供基础设施、平台和/或软件作为服务,云消费者不需要为其维护本地计算设备上的资源。应当理解,图1B中所示的计算设备54A-N的类型仅旨在说明,并且计算节点50和云计算环境52可以通过任何类型的网络和/或网络可寻址连接上(例如,使用web浏览器)与任何类型的计算机化设备通信。
现在参考图1C,示出了由云计算环境52(图1B)提供的一组功能抽象层。应当预先理解,图1C中所示的组件、层和功能仅旨在说明,并且本发明的实施例不限于此。如所描绘的,提供了以下层和对应的功能:
硬件和软件层60包括硬件和软件组件。硬件组件的示例包括:大型机61;基于RISC(精简指令集计算机)架构的服务器62;服务器63;刀片服务器64;存储设备65;以及网络和网络组件66。在一些实施例中,软件组件包括网络应用服务器软件67和数据库软件68。
虚拟化层70提供抽象层,从该抽象层可以提供虚拟实体的以下示例:虚拟服务器71;虚拟存储装置72;虚拟网络73,包括虚拟专用网络;虚拟应用和操作系统74;以及虚拟客户端75。
在一个示例中,管理层80可以提供以下描述的功能。资源供应81提供对被用来在云计算环境内执行任务的计算资源和其他资源的动态采购。计量和定价82供了在云计算环境中利用资源时的成本跟踪,以及针对这些资源的消耗开账单或开发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户82为消费者和系统管理员提供对云计算环境的访问。服务水平管理84提供云计算资源分配和管理,使得满足所需的服务水平。服务水平协议(SLA)规划和履行85提供对云计算资源的预安排和采购,其中根据SLA预期未来需求。
工作负载层90提供了可以利用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:地图绘制和导航91;软件开发和生命周期管理92;虚拟教室教育交付93;数据分析处理94;事务处理95;以及移动桌面96。
计算环境52中的任何节点50以及计算设备54A-N可以是DPS 10。
如本文更详细地讨论的,可以设想,本文描述的方法的一些实施例的一些或所有操作可以以备选顺序执行或者可以根本不执行;此外,多个操作可以同时发生或作为更大过程的内部部分发生。
针对单个目标表的高效批量加载多行或分区
图2A是示出数据库传送系统200的框图。数据库传送系统包括源数据库212,其可以在云计算环境52中在可以包括一个或多个DPS10的一个或多个云计算节点50上运行。用户可能希望对源数据库212或者源数据库的表214执行各种操作,诸如获得满足特定标准集的各种记录的查询。然后,可以将这些满足标准的记录传送到目标表240。查询可以利用标准化查询语言,例如SQL。
如图2A所示,目标数据库系统230的目标表240可以跨多个逻辑节点分布,例如节点0-节点4 222A.0-222A.1、222B.2-222B.4(目标节点可以由附图标记222集体或代表性地引用),并且节点可以跨多个机器分布,例如机器1 220A和机器2 220B(集体或代表性地由附图标记220引用)。可以利用数据库加速器232来执行查询,该数据库加速器在多个数据流215中从源数据库表214检索数据。在一些实施例中,源数据库212在其上运行的系统可以分离或解复用源数据库212的行。
在一些实施例中,如本文所述,由数据库加速器232来执行行的分离/解复用。在一些实施例中(也参考图4,其是示出了将数据库行传送到节点的框图),分离/解复用的全部或部分由源数据库系统210执行,从而引起创建多个数据流215、410.1、410.2、410.3(后者被共同或代表性地称为410)。在这种情况下,可以使用不同的方法来实现行分离。共同的是,在源数据库系统210上启动卸载(UNLOAD)或导出(EXPORT))实用程序405,以便从该系统210中的关系源数据库表214提取数据。这里的卸载实用程序是用于填充多个数据流215、410的组件。
数据库系统通常提供这种实用程序以从表加载(LOAD)和卸载(或导出)数据。实用程序直接访问系统中的数据页面,绕过处理数据的关系处理的数据库引擎中的所有层。因此,这样的实用程序可以对原始数据存储装置进行操作,以便提供最佳的可能性能。卸载实用程序405的单次执行仅提供单个数据流。配置实用程序执行使得仅将数据的子集卸载并写入数据流通常是可能的。这可以如下利用。对于目标数据库系统中的所有逻辑节点:a)确定标识将去往所述节点的所有行的卸载标准;以及b)以该卸载标准启动卸载实用程序。结果是在源数据库系统210上执行的卸载实用程序和目标数据库系统中的逻辑节点222之间的严格1:1映射。编排和相关可以由数据库加速器组件232来处理。尽管该方法需要多个这样的实用程序在运行(消耗资源,并且由于它们都扫描相同的数据(即使它们提取行的不相交子集),所以也可能意味着实用程序之间的同步),但是存在卸载实用程序可以在不改变或小改变实用程序的情况下被置于任务中的优点。
如果实用程序405自身不应用过滤器来提取数据,而是实际上处理将行分离到不同的数据流215、410中,则可以避免执行扫描源数据库系统210中的相同数据的多个卸载实用程序405。新的特征是卸载实用程序405执行以下操作:1)打开“n”个数据流410,针对目标数据库系统230中的每个节点222一个流;以及2)扫描源数据库系统210中的表的所有行。对于每个行,系统:a)读取该行;b)应用该标准来确定目标数据库系统230中的行的节点222;以及c)将该行写入到针对目标节点222的特定数据流。这种方法具有比执行多个卸载实用程序显著更小的占用。每个实用程序确定针对每个行的目标节点222,因此不是使用该目标节点222过滤行并丢弃所有其他行,而是立刻消耗每个行并将其写入不同的数据流215。多个数据流215(经由上述方法创建)可以被传送给数据库加速器232,然后在分离的批420.1、420.2、420.3(集体地或代表性地420)中被传送到目标数据库240系统。而且,它们可以按分区被传送(图2B),分区可以被认为是行的批。分区可以被进一步分解成进一步的批,如分区ID42(255A、255B)所示。因此,可以使用单独的连接,针对每个数据流215、410一个连接。
在一些实施例中,数据流215被组合成单个数据流,但是这里粒度可以为行的块或批420而不是单个行。在这种情况下,进程(例如数据库加速器存储的过程,其启动卸载实用程序405并从各种实用程序和过程正在写入的管道读取)组成批420。在该方法中,每个批420可以具有标头,并且该标头指示批420针对哪个目标节点222。这样,数据库加速器232服务器可以接收单个数据流,并且仅需要单个TCP/IP连接。但是当将行发送到目标节点222时,它可以通过仅仅查看每个批的标头并将完整的批传递到该目标节点222来非常容易地分离行。
在一些实施例(未示出)中,源数据库系统210上的数据的解复用提供了另一优点:数据流215可以被直接发送到目标节点222。因此,可以绕过数据库加速器232服务器运行于其上的物理机器。因此,除了协调从数据库加速器232存储过程到目标节点222的连接的初始建立可能需要的一些较小编排之外,该机器上的计算开销被减少到零。
如图2A所示,数据库加速器232与两个节点在同一机器220A上:节点0222A.0和节点1222A.1。然而,数据库加速器不需要与任何节点222共享机器220A,并且可以在单独的机器220上运行。
源数据库表214可以被划分成单独的分区214,每个分区充当在其上采取数据库动作的单元。分区是一个数据库过程,其中非常大的表被分成多个较小的部分。通过将大的表分割成较小的个体表,仅访问一部分数据的查询可以运行得更快,因为有较少的数据要扫描。分区的主要目标是帮助维护大表,并减少读取和加载特定SQL操作的数据的总响应时间。
在需要查询的某些情况下,用户可以使用SQL INSERT语句将新的数据库表记录插入表中。基本INSERT语句可以是如下形式:
INSERT INTO target_table(column1,column2,column3,...)
VALUES(value1,value2,value3,...);
其包括将被插入到表的指定列(column)中的值(value)。
要求源表(source table)和目标表(target table)中的数据类型匹配的INSERTINTO SELECT(“插入到…选择”)语句可以具有以下形式:
INSERT INTO target_table
SELECT*FROM source_table
(将所有(匹配)列从源表214复制到目标表240中);
或以下形式:
INSERT INTO target_table(column1,column2,column3,...)
SELECT column1,column2,column3,...
FROM source_table
(仅将一些列从源表214复制到目标表240中)。
SQL请求可以被定向或路由到数据库加速器232,其可以用于尝试使SQL请求的执行更快和/或更高效。然而,一个潜在的问题是,单个INSERT语句可以用于目标表240系统的每个逻辑节点222,以处理来自源数据库表214的单个分区216。即使提供了将单个INSERT语句用于目标数据库系统230的每个物理机器220的解决方案,这样的解决方案仍然对源表中的不同分区使用单独的INSERT语句。
每个INSERT语句在目标数据库系统230以及数据库加速器232中引入开销,这种开销包括例如建立执行语句的SQL连接、使用语句的命名管道以高效地将数据从一个进程传送到另一个进程(从而避免不同格式之间的昂贵的数据变换步骤)、启动语句等。如果要由单个INSERT语句处理的数据量相对较小,则所有这些步骤的开销会造成批量加载数据的总时间的显著量。
减少执行单个INSERT语句以便将数据的一部分/一批插入目标表214的表中的开销是有利的。可以基于源表214中源自特定分区216的每个批的数据来实现开销减少,对于目标表240系统中的各个逻辑节点222,可能进一步分解/分离。因此,每个批或批中的每个行可以具有与之相关联的源表分区216的分区标识符。
在数据库加速器232中,该标识符可以存储在目标表240中的专用列中,这意味着它成为被存储的行的组成部分。数据库加速器232的较老版本以如下SQL语句向目标数据库系统提供分区(partition)ID:
INSERT INTO<taget-table>
SELECT<partition-id>,*
FROM EXTERNAL TABLE(...)
这样,INSERT语句中的字面(literal)指定分区ID值。然而,这样的字面在SQL语句的执行期间不能被改变。另外,可以在外部表(external table)自身的定义中指定分区ID列的值。这样,对于INSERT语句执行的持续时间,它也是不可变值。
各种实施例允许注入当前运行的INSERT语句的分区ID列的不同值。在第一实施例中,修改从其读取外部表的数据流215。因此,INSERT语句变为:
INSERT INTO<target-table>
SELECT*
FROM EXTERNAL TABLE(...)
在该实施例中,<partition-id>表达式不存在,并且它也不在外部(源)表的规范中。由于没有定义用于存储分区ID的列的特殊处理,目标数据库系统如同它处理任何其它列那样处理它。数据流215中的行实际上必须提供该列的值。因此,在传输中必须修改每个行以包含分区ID值(例如,作为行的第一个值),随后是如它们在源数据库系统上的那样的行的值。
这种方法的一个问题是数据库加速器232必须为数据流215中的每一行注入分区ID值。虽然这允许调整数值,并且因此允许处理源自不同分区的行,但是它确实给数据库加速器232增加了显著的开销,这降低了吞吐量。
在第二实施例中,代替使用SQL语句中的字面来指定分区ID,可以使用参数标记(或某种其他机制)来指定由数据库加速器232写入并由目标数据库系统230读取的共享存储器位置234。以下查询示出了这样的方法:
INSERT INTO<target-table>
SELECT?,*
FROM EXTERNAL TABLE(...)
类似的技术可用于将参数标记/共享存储器位置234包括在外部(源)表214的规范中。
一旦已经处理了某个分区ID的一个批的行并且下一批开始,则可以修改参数标记的值(或者共享存储器位置234中的值)。因此,目标数据库系统230拾取经修改的值并使用它继续。这种方法的优点是,不必针对每一行和每一行来操纵源自源数据库系统210的数据流215。然而,这种方法需要同步和专用同步机制。以下事件时间线示出了这种同步:
首先,数据库加速器232将一批的行写入命名管道,该命名管道是特定分区ID的最后一批。接下来,数据库加速器232将新的分区ID写入参数标记/共享存储器位置。尽管图2A示出了数据库加速器232直接与节点222通信,但是在一些实施例中,目标数据库服务器236从命名管道读取一些数据,并使用先前已知的分区ID值来处理这些数据。目标数据库服务器236可以检测分区ID的改变,并且存储改变的分区ID以用于从命名管道后续读取的所有数据。当新分区ID将被使用并应用于数据流215中的行时的确切点的同步受益于使用专用同步机制。在这种配置中,数据库加速器232将查询卸载到目标数据库服务器232,以便实现SQL请求,如上所述。该卸载包括从源数据库212接收查询,重写查询语句以使得其匹配目标数据库服务器236上的数据布局(例如,包括分区ID),将查询转发到目标数据库服务器236,接收查询结果,以及将查询结果转发到源数据库212。
在第三实施例中,用于分区ID实施例的游程长度编码利用了正在处理成批的行的事实。在数据流215自身中指定分区ID,但是针对每个批只指定一次。类似于游程长度编码(RLE),每个批之前具有分区ID和该分区ID适用的行数。
图2B是示出根据一些实施例的数据流250的结构的数据结构图。在该实施例中,第一分区ID 255A和行260A的数目在数据流的第一部分的开头,后面是所标识数目的行265A。类似地,第二分区ID 255B和行260B的数目在数据流的第二部分的开头,后面是所标识数目的行265B。如图2B所示,第二分区ID 255B是与第一分区ID 255A相同的值,但是操作BOD是分离的。最后,如图所示,第三分区ID 255C和行260C的数目在数据流的第三部分的开头,后面是所标识数目的行265C。由于源表214中的分区214可以包括比在目标数据库系统230的逻辑节点222上处理的单个批多得多的行,所以多个批(作为BOD)可以使用相同的分区ID。
该实施例的INSERT语句是需要关于外部(源)表214自身的规范中的分区ID的细节的简单语句:
INSERT INTO<target-table>
SELECT*
FROM EXTERNAL TABLE(…)USING(RLE_ENCODED PART ID)
在该说明性示例中,由目标数据库系统230读取的数据流215的处理变为:读取具有分区ID的前四个字节并且存储分区ID;读取分区ID所适用的行数“n”;从数据流读取“n”个行,并且利用所存储的分区ID照常处理它们;以及返回到第一步骤(即,读取下一个分区ID以使用)。在该实施例中,不同线程/进程/应用之间的同步不是必需的—它是固有地同步的。
本文讨论的各种实施例可以组合以下两者:将数据的处理尽可能多地作为不透明字节(数据)流215、同时利用其显式分区编号增强数据流215中的每个行。这可以以经由目标表214上的单个INSERT语句一起处理源表214中的多个不同分区214的行的方式来完成,以便减少开销。
图3是根据一些实现的用于执行INSERT操作的示例过程300的流程图。在操作305中,数据库加速器232接收与源数据库系统210中的源表214的源分区相关的单个查询语言INSERT语句,其标识跨越多个分区的数据块,每个分区具有要被插入到目标表中的分区ID,INSERT语句不包含字面分区ID。数据库加速器232转换目标数据库系统的INSERT语句,以便使用上述三种方法之一来插入分区信息。
在操作310中,数据库加速器232从源数据库212接收分区ID信息,然后,在操作315中,在一些实施例中,数据库加速器232响应于接收到INSERT语句,但是在将行插入到目标表中之前,将分区ID注入到分区数据流中的行的列中。操作315可以利用共享存储器位置234,其保存数据库加速器232当前正在其上操作的行的特定分区ID。在操作320中,数据库加速器232将具有注入的分区ID的分区传输到目标数据库中。
技术应用
本文公开的一个或多个实施例相应地提供了对计算机技术的改进。例如,对数据库系统中的操作的改进允许在数据库操作中更高效和有效地利用计算机资源。
计算机可读介质
本发明可以是任何可能的技术细节集成水平的系统、方法和/或计算机可读介质。计算机程序产品可以包括其上具有计算机可读程序指令的一个或多个计算机可读存储介质,该计算机可读程序指令用于使处理器执行本发明的各方面。
计算机可读存储介质可以是可以保留和存储指令以供指令执行设备使用的有形设备。计算机可读存储介质可以是例如但不限于电子存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或前述各项的任何合适的组合。计算机可读存储介质的更具体示例的非穷举列表包括以下:便携式计算机盘,硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或闪存),静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM),数字通用盘(DVD)、记忆棒、软盘、机械编码的设备(诸如穿孔卡片或者具有记录在其上的指令的凹槽中的凸起结构),以及前述各项的任何合适的组合。如本文中所使用的,计算机可读存储介质不应被解释为暂态信号本身,诸如无线电波或其他自由传播的电磁波、通过波导或其他传输介质传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
本文所述的计算机可读程序指令可以从计算机可读存储介质被下载到相应的计算/处理设备,或者经由网络(例如,互联网、局域网、广域网和/或无线网络)被下载到外部计算机或者外部存储设备。网络可以包括铜传输电缆、光传输光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配器卡或网络接口从网络接收计算机可读程序指令,并且转发计算机可读程序指令以存储在相应计算/处理设备内的计算机可读存储介质中。
用于执行本发明的操作的计算机可读程序指令可以是汇编指令,指令集架构(ISA)指令、机器指令、机器相关指令、微码、固件指令、状态设置数据、集成电路系统的配置数据,或者以一种或多种编程语言的任何组合编写的源代码或目标代码,包括诸如Smalltalk、C++等面向对象的编程语言,以及过程式编程语言,诸如“C”编程语言或类似的编程语言。计算机可读程序指令可以完全在用户的计算机上执行、部分在用户的计算机上执行、作为独立软件包执行、部分在用户的计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在后一种场景中,远程计算机可以通过包括局域网(LAN)或广域网(WAN)的任何类型的网络连接到用户的计算机,或者可以连接到外部计算机(例如,使用互联网服务提供方通过互联网)。在一些实施例中,为了执行本发明的各方面,包括例如可编程逻辑电路装置、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA)的电子电路可以通过利用计算机可读程序指令的状态信息来执行计算机可读程序指令以使电子电路装置个性化。
本文中参考根据本发明的实施例的方法、装置(系统)和计算机程序产品的流程图说明和/或框图描述本发明的方面。应当理解,流程图和/或框图的每个框以及流程图和/或框图中各个框的组合,都可以由计算机可读程序指令来实现。
这些计算机可读程序指令可以被提供给通用计算机的处理器,专用计算机或者其他可编程数据处理装置以产生机器,使得经由计算机的处理器或其他可编程数据处理装置执行的指令创建用于实现在流程图和/或框图的一个或多个框中指定的功能/动作的装置。这些计算机可读程序指令还可以被存储在计算机可读存储介质中,其可以引导计算机、可编程数据处理装置、和/或其他设备以特定方式起作用,使得具有存储在其中的指令的计算机可读存储介质包括制品,该制品包括实现流程图和/或框图中的一个或多个框中指定的功能/动作的各方面的指令。
计算机可读程序指令还可以被加载到计算机、其他可编程数据处理装置、或者其他设备上,以使一系列操作步骤在计算机、其他可编程装置或者其他设备上被执行以产生计算机实现的过程,使得在计算机、其他可编程装置或者其他设备上执行的指令实现流程图和/或框图中的一个或多个框中指定的功能/动作。
图中的流程图和/或框图示出了根据本发明的不同实施例的系统、方法和计算机程序产品的可能的实现的架构、功能和操作。对此,流程图或框图中的每个框可以表示指令的模块、段或部分,其包括用于实现(多个)指定的逻辑功能的一个或多个可执行指令。在一些备选实现中,框中标注的功能可以不按照图中标注的顺序发生。例如,连续示出的两个框实际上可以基本上同时执行,或者这些框有时可以以相反的顺序执行,这取决于所涉及的功能。框图和/或流程图中的每个框、以及框图和/或流程图中的框的组合,可以通过执行指定的功能或动作或执行专用硬件与计算机指令的组合的专用的基于硬件的系统来实现。
Claims (20)
1.一种处理针对目标数据库系统的目标表的插入的方法,包括利用处理器:
接收与源数据库系统中的源表的源分区相关的单个查询语言INSERT语句,所述单个查询语言INSERT语句标识要被插入到所述目标表中的具有分区标识符(PID)的数据块(BOD),其中所述INSERT语句不包含字面PID;
响应于接收到所述INSERT语句,经由数据流从所述源表接收所述BOD;以及
将所述BOD插入所述目标表中。
2.根据权利要求1所述的方法,其中在接收到所述INSERT语句之后但在将所述BOD的每个行插入到所述目标表中之前,所述每个行的PID被插入到所述每个行的列中。
3.根据权利要求2所述的方法,其中所述BOD被组织成多个行,并且每个行被修改为包含分区ID值,使得所述分区ID值被注入所述数据流中。
4.根据权利要求1所述的方法,还包括:
指定包含当前PID的共享存储器位置;以及
将所述当前PID写入所述共享存储器位置,其中所述当前PID是由所述目标数据库系统可读取的。
5.根据权利要求1所述的方法:
其中所述PID在所述数据流自身中被指定,使得所述BOD的每个批之前都具有批PID和所述批PID适用的行数量;
所述方法还包括:
读取和存储所述批PID和所述行数;以及
从数据流中读取与所述行数对应的n个行,并且利用所读取的批PID来处理每个被读取的行。
6.根据权利要求1所述的方法,其中所述数据流包括在所述源数据库系统上被解复用的多个数据流。
7.根据权利要求6所述的方法,还包括:由所述源数据库系统利用在所述源数据库系统上启动的卸载实用程序来执行对所述BOD中的行的所述解复用,以便从所述源表提取所述BOD以及填充所述多个数据流。
8.根据权利要求7所述的方法,还包括:
针对目标数据库系统中的所有逻辑节点确定卸载标准,所述卸载标准标识进入每个相应逻辑节点的所有行;以及
利用所述卸载标准来启动所述卸载实用程序。
9.根据权利要求6所述的方法,还包括:
将所述多个数据流重新组合为单个数据流,其中:
在所述单个数据流中,粒度为行的块或批而不是单个行;以及
每个批具有标头,并且所述标头指示所述块或批是针对哪个目标节点的。
10.根据权利要求6所述的方法,还包括:将从所述源数据库系统上的数据的解复用得到的所述数据流直接发送给所述目标数据库系统上的目标节点。
11.一种用于处理针对目标数据库系统的目标表的插入的系统,包括:
存储器;以及
处理器,被配置为:
接收与源数据库系统中的源表的源分区相关的单个查询语言INSERT语句,所述单个查询语言INSERT语句标识要被插入到所述目标表中的具有分区标识符(PID)的数据块(BOD),其中所述INSERT语句不包含字面PID;
响应于所述INSERT语句的所述接收,经由数据流从所述源表接收所述BOD;以及
将所述BOD插入所述目标表中。
12.根据权利要求11所述的系统,所述处理器还被配置为:在接收到所述INSERT语句之后但在将所述BOD的每个行插入到所述目标表中之前,将所述每个行的PID插入到所述每个行的列中。
13.根据权利要求12所述的系统,其中所述BOD被组织成多个行,并且所述处理器被配置为修改每个行为包含分区ID值,使得所述分区ID值被注入所述数据流中。
14.根据权利要求11所述的系统,其中所述处理器还被配置为:
指定包含当前PID的共享存储器位置;以及
将所述当前PID写入所述共享存储器位置,其中所述当前PID是由所述目标数据库系统可读取的。
15.根据权利要求11所述的系统,其中所述PID在所述数据流自身中被指定,使得所述BOD的每个批之前都具有批PID和所述批PID适用的行数;
其中,所述处理器还被配置为:
读取和存储所述批PID和所述行数;以及
从数据流中读取与所述行数对应的n个行,并且利用所读取的批PID来处理每个被读取的行。
16.根据权利要求11所述的系统,其中所述数据流包括在所述源数据库系统上被解复用的多个数据流。
17.根据权利要求16所述的系统,其中所述源数据库系统的处理器被配置为:利用在所述源数据库系统上启动的卸载实用程序来执行对所述BOD中的行的所述解复用,以便从所述源表提取所述BOD以及填充所述多个数据流。
18.根据权利要求17所述的系统,其中所述处理器还被配置为:
针对目标数据库系统中的所有逻辑节点确定卸载标准,所述卸载标准标识进入每个相应逻辑节点的所有行;以及
利用所述卸载标准来启动所述卸载实用程序。
19.一种用于处理针对目标数据库系统的目标表的插入的计算机程序产品,所述计算机程序产品包括计算机可读存储介质,所述计算机可读存储介质具有随其体现的计算机可读程序代码,所述计算机可读程序代码当在处理器上执行时:
接收与源数据库系统中的源表的源分区相关的单个查询语言INSERT语句,所述单个查询语言INSERT语句标识要被插入到所述目标表中的具有分区标识符(PID)的数据块(BOD),其中所述INSERT语句不包含字面PID;
响应于接收到所述INSERT语句,经由数据流从所述源表接收所述BOD;以及
将所述BOD插入所述目标表中。
20.根据权利要求19所述的计算机程序产品,其中所述指令还使所述处理器在接收到所述INSERT语句之后但在将所述BOD的每个行插入到所述目标表中之前,将所述每个行的PID插入到所述每个行的列中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US17/023,490 US11520781B2 (en) | 2020-09-17 | 2020-09-17 | Efficient bulk loading multiple rows or partitions for a single target table |
US17/023,490 | 2020-09-17 | ||
PCT/CN2021/117144 WO2022057698A1 (en) | 2020-09-17 | 2021-09-08 | Efficient bulk loading multiple rows or partitions for single target table |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116490865A true CN116490865A (zh) | 2023-07-25 |
Family
ID=80627883
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180063253.1A Pending CN116490865A (zh) | 2020-09-17 | 2021-09-08 | 高效批量加载针对单个目标表的多个行或分区 |
Country Status (6)
Country | Link |
---|---|
US (1) | US11520781B2 (zh) |
JP (1) | JP2023541367A (zh) |
CN (1) | CN116490865A (zh) |
DE (1) | DE112021004278T5 (zh) |
GB (1) | GB2614652A (zh) |
WO (1) | WO2022057698A1 (zh) |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6687798B1 (en) | 2001-05-31 | 2004-02-03 | Oracle International Corporation | Methods for intra-partition parallelism for inserts |
US20120239612A1 (en) * | 2011-01-25 | 2012-09-20 | Muthian George | User defined functions for data loading |
GB2520361A (en) | 2013-11-19 | 2015-05-20 | Ibm | Method and system for a safe archiving of data |
US10042910B2 (en) | 2014-02-24 | 2018-08-07 | Sap Se | Database table re-partitioning using two active partition specifications |
US9916373B2 (en) | 2015-03-26 | 2018-03-13 | Red Hat, Inc. | Dynamic data partitioning extension |
US10552453B2 (en) | 2015-11-25 | 2020-02-04 | International Business Machines Corporation | Determining data replication cost for cloud based application |
US10216739B2 (en) | 2015-12-29 | 2019-02-26 | International Business Machines Corporation | Row-based archiving in database accelerators |
US10585876B2 (en) * | 2016-04-07 | 2020-03-10 | International Business Machines Corporation | Providing snapshot isolation to a database management system |
GB201812375D0 (en) | 2018-07-30 | 2018-09-12 | Ibm | Updating a table using incremental and batch updates |
CN110874383B (zh) | 2018-08-30 | 2023-05-05 | 阿里云计算有限公司 | 数据处理方法、装置及电子设备 |
-
2020
- 2020-09-17 US US17/023,490 patent/US11520781B2/en active Active
-
2021
- 2021-09-08 GB GB2305434.9A patent/GB2614652A/en active Pending
- 2021-09-08 CN CN202180063253.1A patent/CN116490865A/zh active Pending
- 2021-09-08 WO PCT/CN2021/117144 patent/WO2022057698A1/en active Application Filing
- 2021-09-08 DE DE112021004278.5T patent/DE112021004278T5/de active Pending
- 2021-09-08 JP JP2023512364A patent/JP2023541367A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
GB2614652A (en) | 2023-07-12 |
JP2023541367A (ja) | 2023-10-02 |
DE112021004278T5 (de) | 2023-06-01 |
US20220083540A1 (en) | 2022-03-17 |
US11520781B2 (en) | 2022-12-06 |
GB202305434D0 (en) | 2023-05-31 |
WO2022057698A1 (en) | 2022-03-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9372880B2 (en) | Reclamation of empty pages in database tables | |
US11132458B2 (en) | Tape processing offload to object storage | |
US9900386B2 (en) | Provisioning data to distributed computing systems | |
US11076020B2 (en) | Dynamically transitioning the file system role of compute nodes for provisioning a storlet | |
US11126503B2 (en) | Pre-filtering of join execution over multi-column range summaries and other synopses | |
US11487727B2 (en) | Resolving versions in an append-only large-scale data store in distributed data management systems | |
US10572421B2 (en) | Topology-aware parallel reduction in an accelerator | |
US11184251B2 (en) | Data center cartography bootstrapping from process table data | |
US11290532B2 (en) | Tape reconstruction from object storage | |
US20210208902A1 (en) | Cascading Data Configuration | |
US11157243B2 (en) | Client-side source code dependency resolution in language server protocol-enabled language server | |
WO2022037566A1 (en) | Secure ingress and egress for data engines | |
US11354312B2 (en) | Access-plan-based querying for federated database-management systems | |
CN116490865A (zh) | 高效批量加载针对单个目标表的多个行或分区 | |
US10585596B2 (en) | Dynamic I/O throttling in a storlet environment | |
US11573960B2 (en) | Application-based query transformations | |
US11526490B1 (en) | Database log performance | |
US20190164066A1 (en) | Dynamic run-time corpus builder | |
Cook et al. | Docker Compose |
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 |