HTAP数据库(OLTP+OLAP) - 数据库典型架构 优缺点剖析(shard VS shared)

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云原生数据库 PolarDB 分布式版,标准版 2核8GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介:

标签

PostgreSQL , 共享分布式存储 , 存储计算能力。


背景

随着互联网的发展,数据爆炸性的增长,数据库逐渐成为了很多业务的绊脚石,很多业务也哭着喊着要上分布式数据库(个人认为大部分是高估了自己的业务)。

分布式数据库又分很多流派,比如重点要说的sharding和共享分布式存储的架构,它们有着什么样的优缺点呢?

sharding vs 共享分布式存储 数据库架构

pic

pic

如果要在单机并行能力的前提下,再实现多机器并行,可以有两种玩法:

第一种玩法,可以带其他产品一起玩,用PostgreSQL 10+的fdw+append parallel+继承+pushdown(join,agg,where,sort,...)+merge sort,可以实现对任意产品的多机并行(比如后端可以是MySQL)。

pic

第二种玩法,更加的先进,节点间不仅共享数据,而且能直接通讯,每个节点运算数据的一部分(至少需要改进优化器实现这个功能),多机并行,任意表任意字段JOIN,多阶段聚合等都能上阵,简单来说就是具备MPP的能力。

pic

citus有这样的潜质,当然需要适配共享存储架构进行改造。

点评

1、作为OLTP业务,使用sharding带来的问题较多,有点得不偿失。

1、1. 扩容不方便(数据重分布)

1、2. 分布键变更很麻烦

1、3. 分布键选择(架构设计)谨慎

1、4. 跨库JOIN性能差,甚至只能按分布键JOIN,其他字段不支持JOIN。(因为这种产品架构数据节点之间是孤岛,数据需要在孤岛之间交互,需要通过上层的中间件节点,而这样的话,如果有跨库JOIN,就需要将数据收到中间件节点再JOIN,性能差是可想而知的。)

1、5. 分布式事务性能差,甚至不支持分布式事务。

1、6. SQL限制多、功能缺失多

1、7. 应用改造成本巨大

1、8. 全局一致性时间点恢复几乎不可实现

2、作为OLAP业务,如果使用sharding(MPP)架构,是值得的,可以充分利用多机的计算能力、IO能力,提高处理吞吐,例如阿里云的HybridDB for PG。

而如果使用中间件的sharding形态,则不适合OLAP业务。(原因是节点间不支持互通,在AP中有大量的JOIN需求,节点间不同带来一个问题,JOIN需要将数据汇聚到中间件节点执行,导致非常慢,几乎不可用)

HDB PG是MPP形态的产品,计算节点之间可以相互通讯,任意列的JOIN都不存在问题,同时还支持行列混合,多阶聚合的功能,是专门为OLAP场景打造的一款PB级分布式分析数据库。

pic

《阿里云HybridDB for PostgreSQL实践 - 多阶聚合》

阿里云的HybridDB for PG

HDB PG支撑了很多海量分析的业务场景。

pic

3、作为HTAP(oltp+olap)业务,使用共享分布式存储,一写多读的架构,是目前最先进的架构。

3、1. 实例扩容方便(秒级新增只读节点)

3、2. 存储扩容方便(几乎无限扩展IO、带宽)

3、3. 不存在分布键问题

3、4. 不存在跨库JOIN问题

3、5. 不存在分布式事务问题

3、6. SQL没有任何限制

3、7. 应用无需改造

3、8. 支持全局一致性时间点恢复

3、9. 只读节点延迟毫秒内

3、10. 所有节点都支持并行计算

3、11. 分布式存储:存储和引擎分离后,存储可以专心支持多副本,支持跨域容灾,支持高带宽,支持几乎无限的扩容能力。同时与数据库引擎深度结合,支持硬件级计算、加解密、加解压、数据过滤、类型预处理等能力。大幅度降低数据传输和上层处理的压力。

目前阿里云推出的PolarDB正是这种架构,已支持MySQL协议,正在支持PostgreSQL协议(PostgreSQL具备了先天的优势(向量计算、并行计算、JIT、哈希聚合、扩展列存、继承、等一系列特性),势必成为HTAP的顶尖产品)。

相关实践学习
数据库实验室挑战任务-初级任务
本场景介绍如何开通属于你的免费云数据库,在RDS-MySQL中完成对学生成绩的详情查询,执行指定类型SQL。
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
相关文章
|
28天前
|
Cloud Native OLAP OLTP
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
在业务处理分析一体化的背景下,开发者如何平衡OLTP和OLAP数据库的技术需求与选型?
126 4
|
1月前
|
SQL NoSQL 前端开发
基于BS架构的饰品购物平台设计与实现(程序+文档+数据库)
基于BS架构的饰品购物平台设计与实现(程序+文档+数据库)
|
2月前
|
存储 监控 安全
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
为了提供更好的日志数据服务,360 企业安全浏览器设计了统一运维管理平台,并引入 Apache Doris 替代了 Elasticsearch,实现日志检索与报表分析架构的统一,同时依赖 Doris 优异性能,聚合分析效率呈数量级提升、存储成本下降 60%....为日志数据的可视化和价值发挥提供了坚实的基础。
360 企业安全浏览器基于阿里云数据库 SelectDB 版内核 Apache Doris 的数据架构升级实践
|
3月前
|
存储 缓存 关系型数据库
鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级
阿里云RDS率先推出新型存储类型通用云盘,提供低延迟、低成本、高持久性的用户体验。
鱼和熊掌如何兼得?一文解析RDS数据库存储架构升级
|
1月前
|
存储 SQL 数据管理
阿里云数据库 SelectDB 内核 Apache Doris 如何基于自增列满足高效字典编码等典型场景需求|Deep Dive 系列
自增列的实现,使得 Apache Doris 可以在处理大规模时展示出更高的稳定性和可靠性。通过自增列,用户能够高效进行字典编码,显著提升了字符串精确去重以及查询的性能。使用自增列作为主键来存储明细数据,可以完美的解决明细数据更新的问题。同时,基于自增列,用户可以实现高效的分页机制,轻松应对深分页场景,有效过滤掉大量非必需数据,从而减轻数据库的负载压力,为用户带来了更加流畅和高效的数据处理体验。
|
1月前
|
存储 SQL 分布式计算
TiDB整体架构概览:构建高效分布式数据库的关键设计
【2月更文挑战第26天】本文旨在全面概述TiDB的整体架构,深入剖析其关键组件和功能,从而帮助读者理解TiDB如何构建高效、稳定的分布式数据库。我们将探讨TiDB的计算层、存储层以及其他核心组件,并解释这些组件是如何协同工作以实现卓越的性能和扩展性的。通过本文,读者将能够深入了解TiDB的整体架构,为后续的学习和实践奠定坚实基础。
|
1月前
|
SQL 存储 数据管理
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
数据库系统架构与DBMS功能探微:现代信息时代数据管理的关键
36 1
|
1月前
|
SQL NoSQL 数据库
深入浅出:微服务架构下的数据库事务管理
【2月更文挑战第12天】 在当今微服务架构日益流行的背景下,如何有效地管理跨服务的数据库事务成为了开发与维护中的一大挑战。本文旨在探讨微服务环境下数据库事务管理的关键技术和策略,包括但不限于分布式事务的基本概念、常见的解决方案(如两阶段提交、补偿事务等),以及这些方案在实际应用中的优缺点比较。通过深入浅出的方式,本文希望能够帮助读者更好地理解并应对微服务架构下的数据库事务管理问题,进而提升系统的稳定性和可靠性。
|
2月前
|
NoSQL 数据管理 数据库
浅谈微服务架构下的数据库设计策略
在当今快速发展的软件工程领域,微服务架构以其灵活性和可扩展性成为了众多企业和开发者的首选。然而,随着服务的细分,数据管理和存储面临着前所未有的挑战。本文将探讨微服务架构下的数据库设计策略,包括服务间数据的独立性、事务一致性问题的处理、以及数据迁移和备份的最佳实践。我们将通过对比传统单体架构与微服务架构下的数据库设计差异,提出几种有效的数据库设计方案,旨在为开发者提供在微服务环境下处理复杂数据问题的思路和方法。
51 0
|
2月前
|
敏捷开发 弹性计算 架构师
浅谈微服务架构下的数据库设计与实践
在当今快速发展的软件工程领域,微服务架构因其高度的模块化和灵活性而受到广泛欢迎。然而,随之而来的是对数据库设计和管理提出了新的挑战。本文将探讨在微服务架构下,如何有效地设计和实践数据库以支持服务的独立性、数据的一致性和系统的扩展性。我们将从微服务的数据库隔离策略谈起,深入分析数据库的分库分表、事务管理、数据一致性解决方案等关键技术,并通过实例说明如何在实际项目中应用这些原则和技术。本文旨在为软件开发者和架构师提供一份指南,帮助他们在微服务架构的环境下,更好地进行数据库设计和管理。
207 1