POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 主体架构与接口

news2024/11/15 7:46:06

36bbe9d33a519bab6d2bbd3e76eaeb9b.png

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共880人左右 1 + 2 + 3)新人会进入3群

3ad7f64b53d2a7192bea00167f2ce8a0.png

55a6da64901413e24335ce2ec016f1a1.png

3 概述
在本节中,我们首先概述PolarDB-IMCI的体系结构,接着总结驱动前面设计目标的设计理念,并简要描述用户界面。
3.1 PolarDB-IMCI的体系结构
图2显示了PolarDB-IMCI的体系结构,遵循将计算和存储架构分离的关键设计原则。存储层是一个具有高可用性和可靠性的用户空间分布式文件系统PolarFS [8]。计算层包含多个计算节点,包括用于读写请求的主节点(RW节点)、用于只读请求的多个节点(RO节点)以及多个无状态代理节点用于负载均衡。有了这些,PolarDB-IMCI可以提供高资源弹性性(§7)。此外,存储和计算层中的所有节点都通过高速RDMA网络连接以实现数据访问的低延迟。
为加快分析查询速度,PolarDB-IMCI支持在RO节点的行存储上建立内存列索引(§4)。列索引按插入顺序存储数据,并执行位于原位置之外的写操作以实现高效更新。插入顺序意味着列索引中的行可以通过其行ID(RID)而不是主键(PK)快速定位。为支持基于PK的点查找,PolarDB-IMCI实现了一个RID定位器(即两层LSM树)用于PK-RID映射。
PolarDB-IMCI使用一个异步复制框架(§5)进行RO和RW之间的同步。即,RO节点的更新不包含在RW的事务提交路径中,以避免对RW节点的影响。为增强RO节点上的数据新鲜度,PolarDB-IMCI在日志应用方面使用了两个优化,预提交式日志传送和无冲突并行日志重播算法。RO节点通过行存储的REDO日志进行同步,这比其他稻草人方法(例如使用Binlog)对OLTP造成的干扰要小很多。需要注意的是,将物理日志应用到列索引中并不是微不足道的,因为行存储和列索引的数据格式是异构的。
每个RO节点中都使用两个相互共生的执行引擎(§6):PolarDB的常规基于行的执行引擎来处理OLTP查询,以及一个新的基于列的批处理模式执行引擎用于高效运行分析查询。批处理模式执行引擎借鉴了列式数据库处理分析查询的技术,包括管道执行模型、并行运算符和矢量化表达式评估框架。常规基于行的执行引擎通过增强优化可进行列引擎不兼容或点查询。PolarDB-IMCI的优化器自动为两个执行引擎生成和协调计划,此过程对使用者透明。
3.2 设计理念
我们以下面突出PolarDB-IMCI的设计理念,这也适用于其他云本地HTAP数据库。
存储计算分离。同时作为云本地数据库的关键设计原则,存储计算分离架构在没有数据移动的情况下实现了适应性计算资源配置,这已经成为主流架构的替代方案。PolarDB-IMCI采取此决策以自然地达成我们的设计目标G#5(高资源弹性)。
单个RW节点和多个RO节点。实践中,单写架构已经通过[52] 确认拥有卓越的写性能并显着降低系统复杂性。我们观察到单个RW节点足以为95%的客户提供服务。此外,所有RO节点都具有与RW节点同步的一致数据视图。大型OLAP查询被路由到RO节点上以实现有效的资源隔离,RO节点可以快速扩展以处理激增的OLAP查询,这符合设计目标G#3(对OLTP的最小干扰)和G#5(资源弹性)。
RO节点内的混合执行和存储引擎。从OLAP社区的经验中得出,列式数据布局和矢量化的批处理执行对于OLAP查询来说是显著的优化。然而,对我们而言,直接使用现有的列式系统(例如ClickHouse)作为RO节点是不明智的决定。有两个原因支持这个论点。首先,在创建表方面,实现RW节点和RO节点之间的全兼容是耗时的。在云服务环境中,即使存在微小的不兼容性,也会在巨大的客户量下被显著放大并压垮开发人员。其次,纯基于列的RO节点对于被归类为OLTP工作量的点查找查询仍然效率低下。因此,我们开始设计一个扩展PolarDB原始执行引擎的新基于列的执行引擎,以满足目标G#1(透明度)。列式执行引擎的设计旨在满足G#2(先进的OLAP性能)。而基于行的执行引擎处理不兼容和点查询,前者无法处理。RO节点具有基于行和基于列的执行和存储引擎。
双格式RO节点通过物理REDO日志进行同步。在共享存储架构上,新RO节点可以快速启动以处理激增的只读查询,以满足设计目标G#5,并可以保持数据新鲜度(即G#4)通过不断应用RW节点的REDO日志。然而,将异构存储与原始物理日志(即REDO日志)同步是具有挑战性的,因为日志与底层数据结构(例如页面)密切相关。因此,稻草人方法是使RW节点记录用于列存储的附加逻辑日志(例如Binlog)。缺点是,当提交事务时触发额外的fsyncs,从而对OLTP造成非常大的性能干扰。因此,我们专门设计了一种新的同步方法,通过重用REDO并使RO节点上的逻辑操作由物理日志组成。之所以可行是因为PolarDB-IMCI在RO节点上维护基于行的缓冲池和列索引。逻辑操作可以通过在行缓冲池上的应用进程中获得。我们的评估显示,重用REDO日志的开销明显低于使用Binlog。

3.3 用户界面
PolarDB-IMCI中的列存储作为一种新的索引类型公开,即列索引。应用程序可以根据需要为表创建列索引。由于PolarDB-IMCI完全兼容MySQL,因此应用程序可以使用带有MySQL语法的SQL语句来创建列索引。示例如图3所示。它创建了一个具有五个列的表,主键索引在列C1上创建,次要索引在列C2上创建,并在列C3、C4和C5上创建了列索引。
此外,在创建表时指定包含在列索引中的列时,应用程序还可以使用ALTER状态将列索引添加到后来。当应用程序在具有大量行的表上执行数据定义语言(DDL)来添加列索引时,RO节点将在PolarDB-IMCI的行存储上发出一致性读取,扫描检查点,并在并行转换为列索引。请注意,向PolarDB-IMCI添加列索引是一项在线操作:在DDL操作进行时,表上的查询和DML操作可以同时处理。并发DML操作所做的更改将记录在缓冲区中,并在过程结束时应用于新的列索引。

6487e9edbd77e500947f0e6e3612682b.png

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python dict keys方法:获取字典中键的序列【将keys转为list】

描述 dict.keys()方法是Python的字典方法,它将字典中的所有键组成一个可迭代序列并返回。 使用示例 >>> list({Chinasoft:China, Microsoft:USA}.keys()) [Chinasoft, Microsoft] >>> test_dict {Chinasoft:China, Microsoft:USA, Sony:Japan,…

JetBrains goland、pycharm、webstorm、phpstorm 对比两文件内容是否一致

对比文件 JetBrains goland、pycharm、webstorm、phpstorm 对比两文件内容是否一致 第一种 打开文件,按住键盘上的CTRL键,然后鼠标右键,点击菜单中的”Compare with Clipboard”,左侧就可以粘贴文件内容对比 第二种 在编辑器窗口中…

MyBatis使用PageHelper插件实现分页查询

1.引入依赖 <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper</artifactId><version>5.3.1</version> </dependency>2.在mybatis-config.xml⽂件中配置插件 <plugins><plugin interce…

搭建Home Assistant智能家居系统 - 随时随地控制你的家庭设备「内网穿透」

文章目录 前言1. 安装Home Assistant2. 配置Home Assistant3. 安装cpolar内网穿透3.1 windows系统3.2 Linux系统3.3 macOS系统 4. 映射Home Assistant端口5. 公网访问Home Assistant6. 固定公网地址6.1 保留一个固定二级子域名6.2 配置固定二级子域名 转载自远程穿透的文章&…

用于保护虚拟机数据安全的VMware备份方案!

​什么是有效的VMware备份方案&#xff1f; ​由于操作风险、自然灾害、恶意软件攻击、停电等意外状况的影响&#xff0c;备份VMware虚拟机是很重要的&#xff0c;它可以有效防止出现数据丢失和业务中断的情况。 一般来说&#xff0c;有效的VMware备份方案通常应该具…

pikache靶场通关——SSRF攻击

文章目录 前言环境第一关、SSRF&#xff08;curl&#xff09;Step.1、http协议链接本地文件Step.2、file协议读取C盘下的配置文件Step.3、dict协议扫描内网其他主机的端口开放情况Step.4、使用burp扫描内网其他主机的端口开放情况Step.5、后端源码分析 第二关、SSRF(file_get_c…

09-C++学习笔记-文件操作

&#x1f4da; 输入输出流的概念 在C中&#xff0c;输入输出流是用于在程序和外部设备&#xff08;如键盘、显示器、文件等&#xff09;之间进行数据传输的机制。输入流用于从外部设备读取数据到程序中&#xff0c;输出流用于将程序中的数据输出到外部设备。 C中的输入输出流…

实现自定义exporter

1、实现自定义exporter 1.1 四种常用Metrics 1.1.1 Counter 连续增加不会减少的计数器&#xff0c;可以用于记录只增不减的类型&#xff0c;例如&#xff1a;网站访问人数&#xff0c;系统运行时间等。 对于 Counter 类型的指标&#xff0c;只包含一个increment()的方法&…

Eclipse中的实用工具之JUnit

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于JUnit的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 是什么 为什么要用 怎么用 是什么 JUnit…

奇舞周刊第497期:解锁 PDF 文件:使用 JavaScript 和 Canvas 渲染 PDF 内容

记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~ 奇舞推荐 ■ ■ ■ 解锁 PDF 文件&#xff1a;使用 JavaScript 和 Canvas 渲染 PDF 内容 最近研究了 Web 的 FileSystemAccess Api&#xff0c;它弥补了 Web 长期以来缺少的能力&#xff1a;操作用户…

《PyTorch深度学习实践》第九讲 多分类问题

b站刘二大人《PyTorch深度学习实践》课程第九讲多分类问题笔记与代码&#xff1a;https://www.bilibili.com/video/BV1Y7411d7Ys?p9&vd_sourceb17f113d28933824d753a0915d5e3a90 二分类问题中计算出 P ( y 1 ) P(y1) P(y1)即可直接得到 P ( y 0 ) P(y0) P(y0)&#xff0…

LeetCode 打卡day46-- 单词拆分和多重背包问题

一个人的朝圣 — LeetCode打卡第46天 知识总结 Leetcode 139. 单词拆分题目说明代码说明 知识总结 今天写了一道题目, 但是还挺难的, 而且是面试高频题目 还过了一遍多重背包问题. 多重背包与01背包的区别在于多重背包限制了物品的个数, 某些物品的个数可能不为1, 可以使用两…

Opencascade源码学习之模型算法_建模算法介绍

Opencascade源码学习之模型算法_建模算法介绍 介绍几何工具相交两曲线相交曲线曲面相交两曲面相交 插值Geom2dAPI_InterpolateGeomAPI_Interpolate 约束的直线和圆约束类型可用的线和圆的类型外部/内部直线的方向两个圆相切给定半径的圆与两个圆相切算法的类型 约束的曲线和曲面…

初识React/JSX

JSX ​​​​​​​推荐使用小括号包裹jsx

【Linux】硬链接 和 软链接

为了方便用户访问文件&#xff0c;Linux提供了一种称为连接&#xff08;link&#xff09;的机制&#xff0c;可以将一个文件或目录与另一个文件或目录建立关联&#xff0c;从而实现多个路径指向同一个文件或目录的效果。 一、概述二、硬链接和软链接详解2.1 硬链接2.11 硬链接的…

ASIC 数字设计:概述和开发流程

概述 集成电路是由硅晶圆&#xff08;wafer&#xff09;切割出来的芯片&#xff08;die&#xff09;组成的。每个晶圆可以切割出数百个芯片。 ASIC是指针对特定应用而设计的集成电路&#xff08;Application Specific Integrated Circuit&#xff09;&#xff0c;与通用的存储器…

ctfhub靶场练习——SSRF攻击

文章目录 前言关卡、内网访问关卡、伪协议读取文件关卡、端口扫描关卡、POST1、使用http协议查看本地的flag.php文件2、使用burp抓包&#xff0c;并发送到Repeater模块进行操作3、构造一个简单的POST请求&#xff1a;4、对构造的post请求进行url编码第一次编码&#xff1a;对第…

【裸机开发】GPT 定时器(一) —— GPT的功能、寄存器解析

后续需要使用 GPT 计数器实现中断以及延时&#xff0c;这里我们需要先了解一下GPT的功能以及相关寄存器。 目录 一、GPT 定时器的功能 1、计数器 2、输入捕获 3、输出比较&#xff08;GPT的两种工作模式&#xff09; 二、寄存器解析 1、GPTx_CR 2、GPTx_PR 3、GPTx_SR …

Jetson Nano烧写系统镜像

Jetson Nano是一款形状和接口类似于树莓派的嵌入式主板&#xff0c;搭载了四核Cortex-A57处理器&#xff0c;GPU则是拥有128个NVIDIA CUDA核心的NVIDIA Maxwell架构显卡&#xff0c;内存为4GB的LPDDR4&#xff0c;60Hz视频解码。 1.烧录前准备 电源线&#xff08;必备&#xf…

游戏陪玩语音聊天系统3.0商业升级独立版本源码

首发价值29800元的最新商业版游戏陪玩语音聊天系统3.0商业升级独立版本源码 1、增加人气店员轮播 2、优化ui界面丨优化游戏图标展示丨优化分类展示 3、增加动态礼物打赏功能 4、增加礼物墙功能 增加店员满足业绩&#xff0c;才能升级功能 5、增加店员等级不同&#xff0c;可接…