【论文阅读 VLDB22】On-Demand State Separation for Cloud Data Warehousing

On-Demand State Separation for Cloud Data Warehousing

问题背景

首先是问题背景,目前除了大规模PB级别的AP会使用云数据库,越来越多的百G大小的中小规模的负载也开始进行上云分析和处理,而这些ap任务不需要消耗整个集群的资源,往往只需要单个节点运行。
那么这个过程中,如何选择合适的工作机就是一个问题,考虑到负载变化以及降低成本或者需要提高算力等等场景,往往就会涉及到在节点之间进行查询迁移。
此外,传统的云数据仓库架构在性能、灵活性和成本之间存在平衡的挑战,对于无共享架构提供高性能但扩展性有限,而存储分离架构虽然可以独立扩展计算和存储,但对单个查询的弹性和容错能力有限。而完全状态分离会导致较低的性能。
本文提出按需状态分离兼顾了性能和灵活性,在本地查询中充分利用存储分离架构的全部性能,同时在必要时仍支持查询迁移和弹性,且开销最小。

整体思路

整体思路:

  1. 定义整体目标、查询状态和进度
  2. 实验分析workload的状态大小、进度分析
  3. 状态选择
  4. 状态提取
  5. 查询计划修改和传输
  6. 延续查询

整个按需状态分离的思路是首先定义了状态分离的目标,给出了查询状态和进度的定义,然后实验分析了在TPC-DS负载下的状态大小和进度的特点
然后讨论选择哪些状态进行分离,怎么样把需要分离的状态提取出来以及怎么样对查询计划进行修改以方便后续延续查询,以及最后迁移到的服务器怎么样延续之前的查询

定义与目标

State Separation:将查询的工作状态和进度与执行它的机器解耦的过程

目标:在最小化进度损失和查询状态的同时,实现状态分离,而不影响本地执行的性能。

Query State:物化的tuples,还在被其他管道使用的物化tuples。(所有在连接到尚未完成的管道的已完成管道的阻塞操作符中物化的元组。)

Query Progress:(# of finished pipelines)/(# of total pipelines)

Untitled

在Umbra上实现的方法,Umbra使用基于管道的执行模型,将查询分割成管道,然后将其转换为代码并编译执行。Umbra还支持将查询计划导出和导入到JSON格式,我们使用它在实例之间共享查询。
系统必须能够提供运行查询的进度信息,以管道为粒度跟踪查询进度。
中间结果通常在阻塞操作符中物化,即在管道的末端。,向量化系统如MonetDB在每个操作符中都会物化结果。
结果例如在管道1之后的连接哈希表中物化,在管道3之后的聚合中物化。

状态大小分析

左图是分析了所有查询中出现的状态大小的分布,测量了每个管道后存储的元组的大小和物化这些元组的阻塞操作符的数量
绝大多数状态包括少量的操作符,数据量不到十兆字节。但有几个状态的大小超过了五个吉字节
总体而言,30%的状态包含一个数据量不到1MB的单一阻塞操作符,86%的状态大小不超过100MB。尽管中位数状态大小只有133KB,但平均状态大小为265MB
图4显示了每个查询的平均状态大小和总状态大小的分布。所有状态的平均大小为2.6GB,因此大约大了10倍。因为它可能包含同一个管道结果多次。管道2的结果是从管道3开始的所有状态的一部分完全排除这些重复项也是不准确的,因为它们必须多次传输给工作节点。例如,管道2的结果是管道3和6的工作节点所需的

Untitled

状态进度分析

根据先前对查询进度的定义,实验分析了查询的状态大小沿查询进度的分布。在查询开始和结束的时候大的状态较少,但是变化不明显

于是分析了相对状态大小,状态大小增长到大约40%的管道完成后趋于平稳,直到大约70%。从那时起,状态持续缩小

例如在图2中,前两个状态只包括单个管道的结果。在管道5之后,状态达到最大,包含了三个物化的管道结果(2,4和5)。10Gbit/s的网络连接

Untitled

按需状态分离

**查询迁移:**将查询处理从执行服务器A移动到服务器B而不丢失在A上为查询取得的进度的过程

查询迁移是状态分离的一种应用场景,其他如延迟执行快照

按需状态分离过程的大致步骤

1.系统需要检测到迁移的需求,并向服务器报告。迁移可以由多个事件触发,例如云提供商指出即将回收临时计算资源,或者出现了更快或更便宜的现货实例。

2.然后,在服务器A上,需要根据定义2识别查询的当前状态,并从如哈希表等结构中提取出来。服务器A随后将提取出的状态传输到外部缓存。

3.服务器A上,查询计划随后被修改以便从当前状态继续执行,并传输到接收服务器B。

4.服务器B编译接收到的查询计划并继续执行。当需要首次扫描状态中的部分结果时,它会从缓存中获取并本地保存。

推迟执行:为了优先处理其他查询,可以暂时挂起某个查询的执行。这意味着当前查询的状态被保存下来,查询执行被暂停,从而为更紧急或优先级更高的查询腾出资源。一旦条件允许,可以恢复推迟的查询,继续其执行而无需重新开始。

2.快照:可以定期创建查询的状态快照,以便在必要时能够从特定点恢复查询。这对于长时间运行的查询非常有用,因为它减少了在发生故障时需要重做的工作量。快照还可以用于分析和调试目的,例如,开发者可以检查某个时刻查询的中间状态,以了解其执行过程。

Untitled

状态选择

Untitled

那么需要选择什么样的状态进行分离从而能保证续作呢?

文中是给出了算法的伪代码,其实主要还是用管道之间的依赖进行丁旭,首先是给出了直接以来的定义

如果一个管道A的执行直接需要另一个管道B的结果,那么管道A直接依赖于管道B。例如,在图2中,管道3依赖于管道2的结果,但并不依赖于管道1。

在这个过程中,⨝ 0.9 * max <= revenue这部分的连接操作,实际上是在做以下两个步骤:

  • 计算customer_revenue中的最大收入值(即子查询select max(revenue) from customer_revenue)。
  • 将得到的最大收入值乘以0.9,得到新的阈值。
  • 然后,比较每个客户在customer_revenue中的收入是否达到或超过这个阈值。

因此,这个连接操作是customer_revenue这个临时视图自身的内连接,用来过滤出收入高于某个阈值的客户记录。在这个例子中,并不是两个不同表之间的连接,而是基于从同一个临时视图中提取的数据的比较。这是一个常见的OLAP查询模式,用于识别出收入最高的一群客户,例如用于市场营销活动或者客户忠诚度分析。

状态提取

Untitled

根据之前选择的包含状态的操作符来提取元组,这里他是分了两类操作符,一类是扫描优化操作符,只作为阻塞操作符出现在查询中的操作符,比如聚合、排序、集合操作,这些操作符提供了扫描所有元组的功能

索引优化操作符:具有更复杂访问模式的操作符,如连接操作,例如,哈希连接优化了基于连接谓词的点访问,通常不提供全扫描的功能。这里是实现专门的

最后是把复用数据库内部的现有逻辑和访问路径,以查询的形式实现提取,生成一个提取的查询计划,所有提取查询都被安排为立即执行,并且为了防止在提取完成之前修改状态,与常规查询不同,状态提取查询不向用户报告结果

Build-side(构建侧)通常是指在某些数据库连接操作中用于存储连接键值的一侧,例如,在哈希连接中,构建侧是预先填充的哈希表,用于快速查找。Build-side scan(构建侧扫描)则是指对这个构建侧的哈希表进行的扫描操作,以便从中提取数据。

修改查询计划且延续查询

Untitled

实验

实验主要包括两部分

  1. 按需状态分离对查询处理的开销和来源:网络开销和执行开销
  2. 该方法的可行性

Untitled

执行:对于较小状态大小的异常值主要来自于执行时间以毫秒计的小型快速查询,对于小于50MB的状态(占所有状态的83%),平均开销不超过1.9%

网络:但对于小于50MB的状态,平均开销不超过查询运行时间的11%。

Untitled

图12 按需迁移基本恒定,对于使用八个线程的情况,全迁移会导致超过100%的开销,而按需分离的开销从未超过10%
下图的延迟是触发迁移到每个查询的状态和计划分别发送到缓存和目标服务器的时间

Untitled

图12 按需迁移基本恒定,对于使用八个线程的情况,全迁移会导致超过100%的开销,而按需分离的开销从未超过10%
下图的延迟是触发迁移到每个查询的状态和计划分别发送到缓存和目标服务器的时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/431203.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

DHCP自动获取IP地址实验(思科)

华为设备参考&#xff1a;DHCP自动获取IP地址实验&#xff08;华为&#xff09; 一&#xff0c;实验目的 路由器搭载DHCP&#xff0c;让PC通过DHCP自动获取IP地址 二&#xff0c;不划分vlan 实验拓扑 配置命令 Switch Switch>enable Switch#configure terminal Switch(c…

C#不可识别的数据库格式解决方法

1.检查数据库文件路径和文件名&#xff1a; 确保指定的路径和文件名拼写正确&#xff0c;而且文件确实存在于指定的位置。使用绝对路径或相对路径都是可行的&#xff0c;但要确保路径的正确性 string connectionString "ProviderMicrosoft.ACE.OLEDB.12.0;Data SourceE:…

go 程序被意外kill后出现僵尸进程解决方案

go 管理自身子进程(防止僵尸进程出现) 写这篇文章是因为最近有同事竟然会知道异步启动子进程&#xff0c;不会关闭&#xff0c;最后导致导致僵尸进程出现&#xff0c;而且由于子进程会随着业务的使用越开越多&#xff0c;主进程一旦被kill掉就会不得不手动一个一个kill。 大概…

【车辆安全管理】强制降速系统

在很久之前&#xff0c;我们就讨论过车辆强制降速系统的重要性&#xff0c;即使驾驶人故意撞人&#xff0c;也难以做到&#xff0c;因为强制降速系统会控制车辆的速度。强降速系统可以通过多种传感器进行智能分析&#xff0c;即使降速。 汽车的Robot化概念-CSDN博客 最近发生…

LiveGBS流媒体平台GB/T28181功能-集中录像存储前端设备录像回看解决方案设备录像|云端录像|实时录像说明

LiveGBS集中录像存储前端设备录像回看解决方案设备录像|云端录像|实时录像说明 1、平台概述2、视频录像2.1、设备录像2.1.1、存储位置2.1.1.1、下级硬件设备2.1.1.2、下级国标平台 2.1.2、页面操作2.1.2.1、国标设备2.1.2.1.1、查看通道2.1.2.1.1.1、设备录像 2.1.2.1.2、配置中…

城市平均高温、平均低温数据爬取与可视化

爬取历史天气网站数据 从天气网站爬取指定城市、指定时间范围内的天气数据&#xff0c;并将数据保存为CSV文件。具体而言&#xff0c;它使用了Selenium库来模拟浏览器行为&#xff0c;以便获取动态加载的页面内容。 主要步骤如下&#xff1a; 读取城市信息和代理IP信息&…

Nodejs 第四十九章(lua)

lua Lua是一种轻量级、高效、可嵌入的脚本语言&#xff0c;最初由巴西里约热内卢天主教大学&#xff08;Pontifical Catholic University of Rio de Janeiro&#xff09;的一个小团队开发而成。它的名字"Lua"在葡萄牙语中意为"月亮"&#xff0c;寓意着Lua…

【QT】 QTreeView/QTreeWidget插入文件目录列表

目录 1 QTreeView插入文件目录列表 1.1 自定义默认展开指定路径及文件 1.2 展开指定路径的所有目录及文件 2 QTreeWidget插入文件目录列表 1 QTreeView插入文件目录列表 显示指定磁盘下的目录&#xff0c;简单的方式就是利用QTreeViewQDirModel就可以显示了。 1.1 自定义默认…

05_Mongooes

Mongooes Mongoose是通过Node来操作MongoDB的一个模块。是基于Node.js的第三方模块。 一、Node.js安装 1.解压 2.创建文件夹 解压路径下&#xff0c;创建两个文件夹 node_global&#xff1a;全局安装位置 node_cache&#xff1a;缓存 3.配置 配置环境变量 在path路径…

Open3D(C++) 指定点数的体素滤波

目录 一、算法原理1、算法过程2、参考文献二、代码实现三、结果展示本文由CSDN点云侠原创,原文链接。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT。 一、算法原理 1、算法过程 对于数据量较大的点云,在后期进行配准时会影响计算效率。而体素格网…

03. Nginx入门-Nginx虚拟主机

Nginx虚拟主机简介 yum安装与源码安装一样&#xff0c;只是Nginx配置文件路径不一致&#xff0c;这里用的yum安装的配置文件路径。 利用虚拟主机的功能&#xff0c;可以在一台Nginx服务器上部署一个或多个虚拟主机。 虚拟主机主配置文件 注意&#xff1a;配置完成Nginx主配置…

【如何在Docker中,修改已经挂载的卷(Volume)】

曾梦想执剑走天涯&#xff0c;我是程序猿【AK】 提示&#xff1a;添加投票&#xff01;&#xff01;&#xff01; 目录 简述概要知识图谱 简述概要 如何在Docker中&#xff0c;修改已经挂载的卷&#xff08;Volume&#xff09; 知识图谱 在Docker中&#xff0c;修改已经挂载…

基于SSM SpringBoot vue个人博客网站

基于SSM SpringBoot vue个人博客网站 系统功能 首页 图片轮播 博客文章 搜索 登录注册 论坛 留言板 个人中心 我的收藏 后台管理 登录 个人中心 博客分类管理 博客文章管理 论坛管理 系统管理 管理员管理 注册用户管理 开发环境和技术 开发语言&#xff1a;Java 使用框架:…

API 测试- Postman Vs Rest Assured

【软件测试面试突击班】2024吃透软件测试面试最全八股文攻略教程&#xff0c;一周学完让你面试通过率提高90%&#xff01;&#xff08;自动化测试&#xff09; 介绍&#xff1a; 创新和现代化的目标已经从简单的市场差异化转变为更有道德地追求整个社会的进步。提出了新的要求…

03按键控制LED

上回讲到点亮一个LED     这次我们来实现用按键控制led 不带中断的方式 当然实例来源网络 加上自己整合 先熟悉流程 0.添加一个自己写的驱动库文件 为什么添加 笔者想的是一个项目工程希望能适应很多个应用场景需要什么直接在里面调用分装好的函数就行 1.如何添加文件以及…

AI改变游戏规则:内容创作的新时代!

AI技术&#xff0c;尤其是人工智能&#xff08;AI&#xff09;在内容创作领域的应用&#xff0c;正开启了一个全新的时代。这一时代的核心在于利用AI的能力&#xff0c;不仅提高内容创作的效率&#xff0c;还能引入前所未有的创新元素&#xff0c;从而彻底改变游戏规则。 AI在…

【北京迅为】《iTOP-3588开发板网络环境配置手册》第1章 网络基础知识学习

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

Stable Diffusion 模型分享:CG texture light and shadow(CG纹理光影)

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里。 文章目录 模型介绍生成案例案例一案例二案例三案例四案例五案例六案例七案例八 下载地址 模型介绍 一个拥有cg质感和光影的融合模型&#xff0c;偏2.5D 条目内容类型大模型基础模型SD 1.5来…

python--产品篇--游戏-坦克

文章目录 准备代码main.pycfg.py 效果 准备 下载 代码 main.py import os import cfg import pygame from modules import *主函数 def main(cfg):# 游戏初始化pygame.init()pygame.mixer.init()screen pygame.display.set_mode((cfg.WIDTH, cfg.HEIGHT))pygame.display.…

2024-03-05

作业要求&#xff1a; 使用write 和 read 实现 文件夹拷贝功能&#xff0c;不考虑递归拷贝使用循环fork的形式。创建一条进程链&#xff0c;链条上总共有100个进程 要求&#xff1a;程序不崩溃 作业1&#xff1a;使用write 和 read 实现 文件夹拷贝功能&#xff0c;不考虑递归拷…