POLARDB IMCI 白皮书 云原生HTAP 数据库系统 一 与其他的商业数据库在HTAP的异同点(译)...

news2024/11/16 17:45:08

9fcd429421c3876358336818c363c207.png

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

摘要

在当前的数据库环境中,需要高可用性、资源弹性和成本效益,云原生数据库已成为云上关键应用程序的大多数选择的数据库产品。同时,由于数据与分析之间的连接不断增加,用户更喜欢使用单个数据库高效地处理OLTP和OLAP工作负载,这增强了数据及时性并降低了数据同步和整体业务成本的复杂性。在本文中,我们总结了基于我们的经验和客户反馈的云原生HTAP数据库的五个关键设计目标,即透明度、竞争性的OLAP性能、对OLTP工作负载的最小干扰、高数据鲜度和出色的资源弹性。为了实现这些目标,我们提出了一种解决方案:PolarDB-IMCI,这是一种在阿里云上设计和部署的云原生HTAP数据库系统。我们的评估结果表明,PolarDB-IMCI能够有效地处理HTAP实验和生产工作负载;值得注意的是,它在TPC-H(100GB)上的分析查询速度提高了多达149倍。PolarDB-IMCI在OLTP工作负载上引入了低可见度延迟和较小的性能干扰(<5%),并且通过几十秒的扩展来实现资源弹性。

最近几年,云原生数据库在数据库行业成为了不可避免的趋势[8,20,25,52]。不同于本地数据库,云原生数据库将其架构分解成两层:计算层和存储层,允许资源独立扩展。配备磁盘的节点(在存储层)构成了一个共享存储池,作为计算层节点的统一数据接口。这种分解架构使数据库系统能够为客户提供极端的弹性、灵活的按需计费模型和低操作成本。因此,云原生数据库市场迅速蓬勃发展[36]。

同时,我们也注意到经典 OLTP 和 OLAP 数据库之间的界限开始模糊:在商业智能、社交媒体、欺诈检测和营销等领域,数据库需要提供足够的支持,既支持事务处理,也能支持分析处理。为了提供这样的功能,传统的解决方案通常将数据和应用逻辑部署到两个数据库中,一个专门用于 OLTP,另一个专门用于 OLAP (例如,MySQL  用于 OLTP,ClickHouse 用于 OLAP),并依赖数据同步技术(例如,抽取-转化-加载 (ETL) 工作流程) 来确保它们之间的一致性,如图1所示。根据我们的数据,近30%的 PolarDB(一个 OLTP 数据库) 的客户需要将数据同步到独立的数据仓库系统中进行数据分析。

这种解决方案是昂贵的,因为它会对 OLTP 性能产生负面影响,并引入耗时的数据同步过程,进而导致 TP/AP 数据库中维护的数据之间出现延迟甚至不一致。在实践中,这些问题导致了次优的用户体验和大量的用户咨询。为了解决这些问题,需要设计一种云原生混合事务分析处理(HTAP) 数据库。在本文中,我们介绍了阿里云部署的云原生 HTAP 数据库 PolarDB-IMCI。我们总结了 PolarDB-IMCI 的关键设计目标,这些目标也适用于一般的云原生 HTAP 数据库设计:

• G#1: 透明查询执行。为了在单个数据库中服务于混合负载,数据库用户无需知道他们的查询在哪个层或节点上执行。一个云原生 HTAP 数据库应该为用户提供统一的 SQL 接口,并自动分发和优化查询,透明地跨计算和存储层分布。

• G#2: 一致性和并发控制。云原生 HTAP 数据库必须保证事务一致性,并为 OLTP 和 OLAP 工作负载提供高效的并发控制。它应该支持多种隔离级别,并为分析查询提供强一致性,同时保持 OLTP 操作的高事务吞吐量。

• G#3: 弹性扩展。为了提供灵活性和成本效益,云原生 HTAP 数据库应该能够根据工作负载需求动态扩展其计算和存储资源。它应该允许用户轻松地扩展或缩小资源,而不会影响服务。

• G#4: 高可用性和灾备恢复。云原生 HTAP 数据库必须在各种故障情况下保证高可用性和灾备恢复,包括节点故障、网络中断和自然灾害。它应该提供自动切换和恢复机制,并允许用户将数据库部署在多个地区进行数据冗余。

• G#5: 管理和运维简便。云原生 HTAP 数据库应提供简单直观的管理界面,并从用户方面尽量减少维护工作。它应该自动化例行管理任务,如备份、恢复和软件升级,并提供全面的监控和警报功能,以确保系统的健康和性能。

e487a4ff7d02cd095dffe77ecf76b5e5.png

PolarDB-IMCI满足所有期望的目标(即G#1-5),采用以下创新。首先,为了满足G#1和G#2,我们实现了内存列索引(IMCI作为补充存储。PolarDB-IMCI吸收了OLAP社区的各种先进优化,并推导出一个新的SQL引擎来匹配列的执行模式。此外,PolarDB-IMCI提出了一种新的查询路由机制,可以透明地分发查询。

其次,为了满足G#3,PolarDB-IMCI将列索引放置在独立的只读(RO)节点上,具有共享存储架构,以在OLTP和OLAP请求之间提供有效的资源隔离。通过重用REDO日志(即行存储的差分日志记录)将更新传播到RO节点,而不是运输其他逻辑日志(即MySQL Binlogs)。

第三,为了满足G#4,我们使用日志前提交集装箱(CALS)和2阶段无冲突日志重演(2P-COFFER,§5.2)增强了我们的更新传播框架。CALS在提交之前运输事务日志。2P-COFFER有效地解析和应用REDO日志到RO节点。此外,我们将列索引实现为追加式存储:记录按照插入顺序而不是主键顺序组织。因此,对列索引的更新是在原地和快速执行的。

最后,为了满足G#5,列索引的检查点机制无缝地构建在PolarDB的原始存储引擎中。因此,快速拉起RO节点使用共享存储上的检查点可以实现快速的扩展能力。

2 背景和相关工作

2.1 混合事务/分析处理长达几十年的时间里,OLTP 和 OLAP 数据库分别专为它们的工作负载设计。例如,OLTP 引擎(例如 MySQL)偏好基于行的数据格式、逐行操作符,以支持数据修改和随机查询。相反,OLAP 引擎(例如 ClickHouse)使用基于列的数据格式、批量操作符和延迟化策略,以支持扫描密集的分析查询。因此,现代数据库管理员常常需要部署 OLTP 和 OLAP 数据库,并在两种数据库之间进行数据传输。HTAP 数据库的出现消除了维护多个数据库的负担,并简化了数据传输。我们将现有的 HTAP 解决方案分为两类(即单实例和多实例),并分别讨论每个类别。单实例的 HTAP。SAP HANA [47] 通过引入三层合并树来支持混合工作负载,这是一个分层的内存存储,支持行和列格式。Oracle Dual  允许将关系表构建为内存列单元(IMCU),以提供快速的列扫描。IMCU 的新更新由元数据临时记录,当累积了更多的更新时,IMCU 可以从内存缓冲区中重新填充。与 Oracle Dual 不同,SQL Server CSI  支持列存储和列存储索引(CSI),并定期将新的更新合并到 CSI 中,从而消除了重建的需要。PolarDB-IMCI 遵循类似的原则,但通过解决后面章节详细介绍的一些关键挑战,将此设计引领到云本地架构中。多实例的 HTAP。另一种 HTAP 数据库利用复制技术维护多个实例。因此,事务和分析查询可以路由到不同的实例,以实现高效的性能隔离。此外,每个实例都可以根据工作负载来定制其架构。SAP HANA 的较近作品提出异步表复制(ATR),用于主要实例和副本之间的数据同步。复制日志异步地提供给副本,以会话粒度并行回放。与 ATR 不同,Google F1 Lightning[54] 使用 Change Data Capture(CDC),一种更松散的机制,通过 BigTable 调换数据。TiDB 使用 Raft 连接行存储引擎(TiKV)和列式引擎(TiFlash)。TiFlash 表现为Raft 学习器,异步地从领导者接收日志,并不参与领导人选举。IBM DB2 Analytics Accelerator(IDAA) 通过集成同步来维护基于行的表数据副本,以支持增量更新。Oracle Dual 的新版本[43] 支持将只读工作负载卸载到同构实例(备用),并通过 REDO 日志同步数据。ByteHTAP 使用分离存储,通过 Binlog 同步异构引擎(ByteNDB 用于 OLTP 和 Apache Flink[18] 用于 OLAP)。Wildfire [2] 是一个兼容 Spark 的数据库,也利用分离存储进行数据同步。与这些工作不同,PolarDB-IMCI直接重用 REDO 日志进行异构数据复制。据我们所知,PolarDBIMCI 是第一个使用物理日志有效地同步异构存储的工业数据库。

2.2 云本地数据库云原生数据库的关键技术是将计算和存储解耦。一个典型的云原生数据库经常在其存储引擎下采用云存储,利用另一层虚拟化提供弹性存储服务。云原生架构使客户获得高弹性资源和按需计费模式的好处,也减少了服务提供商的维护和开发成本。云原生的 OLTP/OLAP。Aurora  是一种云原生 OLTP数据库,部署在定制的云存储层上。Taurus  使用基于分离的持久化机制的不对称复制,数据库日志和页面分别被复制。除了 OLTP 系统,OLAP 数据库的存储分离也受益。一些传统的数据仓库系统适应了云计算环境 (例如 Vertica 、Eon ),还有一些 OLAP 数据库是专为云环境本地开发的(例如 Snowflake 、Redshift 、AnalyticDB )。云本地 HTAP。SingleStore 是第一个走向云本地 HTAP数据库的产品。它将计算和存储解耦,并支持在计算节点的本地磁盘上提交事务,并将数据异步推送到其 blob 存储器。与 SingleStore 不同,PolarDB-IMCI 将所有持久化数据卸载到共享存储层中,因此,计算节点的所有状态都可以直接从共享存储中重建,有利于恢复和弹性。

ff4691e602c31bbb6044ab94730bfe14.png

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

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

相关文章

​关于 O2OA (翱途) 软件商用许可证授权形式的调整​

尊敬的小伙伴们&#xff1a; 非常感谢您对 O2OA 开发平台的关注与支持&#xff01; 兰德网络 O2OA 平台软件商用许证授权形式正式由 “按年授权” 改为 “按版本买断” 的永久许可形式。 这意味着&#xff0c;合作伙伴在持有特定版本的软件商用许可后&#xff0c;将能够永久…

《Python精选300题》

专栏简介 Python 是一门功能强大的编程语言&#xff0c;已经成为了数据科学、机器学习、Web 开发等领域的首选语言之一。因此&#xff0c;掌握 Python 的相关知识点对于学习和使用这门语言至关重要。 本专栏中&#xff0c;精选了 300 道题目&#xff0c;囊括了 Python 入门阶段…

什么是链表?

链表 什么是链表&#xff1f; 链表是有序的数据结构&#xff0c;链表中的每个部分称为节点。可以首、尾、中间进行数据存取&#xff0c;链表的元素在内存中不必是连续的空间&#xff0c;每个节点通过 next 指针指向下一个节点。 优点 链表的添加和删除不会导致其余元素位移。…

java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗?如果能,如何实现?

java中synchronized和ReentrantLock的加锁和解锁能在不同线程吗&#xff1f;如果能&#xff0c;如何实现&#xff1f; 答案2023-06-21&#xff1a; java的&#xff1a; 这个问题&#xff0c;我问了一些人&#xff0c;部分人是回答得有问题的。synchronized这是个关键字&…

23---WPF数据库ORM框架

一、仓库--存放货物---数据库--存放数据--关系型数据/非关系型数据库 1.关系型数据:保存数据保存关系--SqlServer&#xff0c;MySql&#xff0c;Oracle 2.非关系型数据&#xff1a;保存数据---Redis,Mongo,Memecahe 二、关系型数据和非关系型数据的区别&#xff1a; 1.关系…

高效底座模型LLaMA

论文标题&#xff1a;LLaMA: Open and Efficient Foundation Language Models 论文链接&#xff1a;https://arxiv.org/abs/2302.13971 论文来源&#xff1a;Meta AI 一、概述 大型语言模型&#xff08;Large Languages Models&#xff0c;LLMs&#xff09;通过大规模文本数据的…

Selenium 环境配置

如果你做过 Web 测试的工作&#xff0c;那么你应该明白 Web 测试中最重要的一部分工作就是自动化测试。自动化测试&#xff0c;顾名思义就是让浏览器自动运行&#xff0c;而无需手动操作。这和我们爬虫工作原理有些相似&#xff0c;我们爬虫也需要让浏览器运行网址来获取我们需…

HTTPS加密

目录 HTTPS加密1.加密和解密2.对称加密3.非对称加密4.中间人攻击5.证书 HTTPS加密 1.加密和解密 1.明文: 要传递的原始信息。 2.密文: 经过加密后的信息。 3.加密就是指将明文&#xff08;要传输的信息&#xff09;按照指定的方式进行变换&#xff0c;生成密文。 4.解密…

Pytest+selenium+allure+Jenkins自动化测试框架搭建及使用

一、 环境搭建 1. Python下载及安装 Python可应用于多平台包括windows, Linux 和 Mac OS X, 本文主要介绍windows环境下。你可以通过终端窗口输入 "python" 命令来查看本地是否已经安装Python以及Python的安装版本。 如未安装python, 推荐下载python 3.8.3以…

Android——事务处理(续)(十三)

1. 长按事件 1.1 知识点 &#xff08;1&#xff09;掌握长按事件的操作形式&#xff1b; &#xff08;2&#xff09;可以设置手机的桌面背景&#xff1b; 1.2 具体内容 范例&#xff1a;长按一张图片之后&#xff0c;此图片设置为手机桌面背景。 <LinearLayout xmlns:a…

LocalDateTime 和 LocalDate 与 date 有什么区别;LocalDateTime 示例,LocalDate 示例

目录 1 LocalDateTime 和 LocalDate 与 date 有什么区别2 LocalDateTime 示例&#xff1a;2 LocalDate 示例&#xff1a; 1 LocalDateTime 和 LocalDate 与 date 有什么区别 LocalDateTime、LocalDate和Date是 Java中不同的类库中用于表示日期和时间的类&#xff0c; 它们在功…

「Java核心技术大会 2023」6月重磅启动,邀你共同探讨Java生态

前言 &#x1f4d5;作者简介&#xff1a;热爱跑步的恒川&#xff0c;致力于C/C、Java、Python等多编程语言&#xff0c;热爱跑步&#xff0c;喜爱音乐的一位博主。 &#x1f4d7;本文收录于恒川的日常汇报系列&#xff0c;大家有兴趣的可以看一看 &#x1f4d8;相关专栏C语言初…

《机器学习公式推导与代码实现》chapter13-LightGBM

《机器学习公式推导与代码实现》学习笔记&#xff0c;记录一下自己的学习过程&#xff0c;详细的内容请大家购买作者的书籍查阅。 LightGBM 就GBDT系列算法的性能而言&#xff0c;XGBoost已经非常高效了&#xff0c;但并非没有缺陷。LightGBM就是一种针对XGBoost缺陷的改进版…

【C++11】 列表初始化 auto 范围for 新增关键字 新增容器

文章目录 1 列表初始化2 auto && 范围for3 新增关键字3.1 decltype3.2 default3.3 delete3.4 final与override 4 总结 1 列表初始化 由c语言的规则我们知道&#xff1a;一般只有数组才会支持用{}初始化&#xff0c;但是C11新语法规定我们不仅可以用{}初始化各种对象(内…

企业微信 创建应用后如何构造网页授权 获取token 获取用户信息

第一次对接企业微信&#xff0c;上网找了各种方案。 目的是在企业微信中&#xff0c;公司发给员工一个地址&#xff0c;员工点开后打开画面&#xff0c;在这个画面上可以获取到这个员工的userid&#xff08;后续功能操作就是各自不同的功能了哈&#xff0c;就不详细说了&#…

STM32F4_触摸屏

目录 1. 触摸屏原理 2. 电阻式触摸屏检测原理 3. 电容式触摸屏检测原理 4. 硬件配置 4.1 XPT2046驱动芯片 4.2 硬件设计 5. 代码详解 5.1 main.c 5.2 AT24C02.c 5.3 AT24C02.h 5.4 C_Touch_I2C.c 5.5 C_Touch_I2C.h 5.6 Touch.c 5.7 Touch.h 5.8 FT5206.c 5.9 …

ADAudit Plus:保护企业内部IT安全的强大解决方案

随着企业数字化的推进&#xff0c;IT系统和数据安全变得比以往任何时候都更加重要。为了保护企业的机密信息和敏感数据&#xff0c;企业需要一种可靠的IT安全解决方案。在众多选项中&#xff0c;ADAudit Plus是一款备受赞誉的软件&#xff0c;为企业内部的IT安全提供了强大的支…

Python入门自学进阶-Web框架——36、Web微信类实现初步

打开页面&#xff0c;会出现一个二维码&#xff0c;要使用手机微信扫一扫&#xff0c;才能登录。它的实现原理是什么&#xff1f; 下图为打开网页版微信登录的调试工具网络信息&#xff0c;定时发送请求&#xff0c;状态待处理&#xff08;pending&#xff09; 上图的挂起是pe…

网络安全|渗透测试入门案例分析,从零基础入门到精通—登录框页面的快速渗透常用检测手段

目录 引言 1、弱口令 2、万能密码绕过 ​编辑 3、登录认证绕过 3.1.令牌刷新端的错误配置 3.2. 错误的sso配置 3.3.CMS个例的访问问题 3.4.JWT Token的错误解析 3.5.暴力修改Authentication 4、图形验证码不失效 5、短信验证码不失效 6、短信攻击 7、反射型跨站脚…

【MySQL数据库】MySQL 高级SQL 语句二

MySQL 高级 SQL 语句二 一、连接查询1.1 inner join&#xff08;内连接&#xff09;1.2 left join &#xff08;左连接&#xff09;1.3 right join(右连接) 二、CREATE VIEW ---- 视图三、 UNION - - 连集3.1 UNION3.2 UNION ALL 四、交集值&#xff08;取两个SQL语句结果的交集…