On-Demand State Separation for Cloud Data Warehousing
问题背景
首先是问题背景,目前除了大规模PB级别的AP会使用云数据库,越来越多的百G大小的中小规模的负载也开始进行上云分析和处理,而这些ap任务不需要消耗整个集群的资源,往往只需要单个节点运行。
那么这个过程中,如何选择合适的工作机就是一个问题,考虑到负载变化以及降低成本或者需要提高算力等等场景,往往就会涉及到在节点之间进行查询迁移。
此外,传统的云数据仓库架构在性能、灵活性和成本之间存在平衡的挑战,对于无共享架构提供高性能但扩展性有限,而存储分离架构虽然可以独立扩展计算和存储,但对单个查询的弹性和容错能力有限。而完全状态分离会导致较低的性能。
本文提出按需状态分离兼顾了性能和灵活性,在本地查询中充分利用存储分离架构的全部性能,同时在必要时仍支持查询迁移和弹性,且开销最小。
整体思路
整体思路:
- 定义整体目标、查询状态和进度
- 实验分析workload的状态大小、进度分析
- 状态选择
- 状态提取
- 查询计划修改和传输
- 延续查询
整个按需状态分离的思路是首先定义了状态分离的目标,给出了查询状态和进度的定义,然后实验分析了在TPC-DS负载下的状态大小和进度的特点
然后讨论选择哪些状态进行分离,怎么样把需要分离的状态提取出来以及怎么样对查询计划进行修改以方便后续延续查询,以及最后迁移到的服务器怎么样延续之前的查询
定义与目标
State Separation:将查询的工作状态和进度与执行它的机器解耦的过程
目标:在最小化进度损失和查询状态的同时,实现状态分离,而不影响本地执行的性能。
Query State:物化的tuples,还在被其他管道使用的物化tuples。(所有在连接到尚未