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

本文涉及的产品
RDSClaw,2核4GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS MySQL DuckDB 分析主实例,基础系列 4核8GB
简介:

标签

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的顶尖产品)。

相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
存储 缓存 数据库
数据库数据删除策略:硬删除vs软删除的最佳实践指南
在项目开发中,“删除”操作常见但方式多样,主要分为硬删除与软删除。硬删除直接从数据库移除数据,操作简单、高效,但不可恢复;适用于临时或敏感数据。软删除通过标记字段保留数据,支持恢复和审计,但增加查询复杂度与数据量;适合需追踪历史或可恢复的场景。两者各有优劣,实际开发中常结合使用以满足不同需求。
1168 4
|
存储 数据采集 数据挖掘
CSV vs 数据库:数据存储的最佳选择是什么
本文介绍了爬虫数据存储中CSV和数据库的优缺点,分析了两者在不同场景下的适用性。CSV简单易用、资源消耗低,适合小量数据;数据库则在处理大量数据和复杂查询时表现出色,支持并发操作。通过Python代码示例,展示了如何使用多线程和爬虫代理IP技术将百度搜索数据存储到MySQL数据库中,适用于大型项目和复杂数据分析需求。
873 2
|
缓存 物联网 数据库
InfluxDB vs TDengine :2025 年了,谁家用的数据库还不能高效读缓存?
在工业互联网和物联网的大数据应用场景中,实时数据的写入和查询性能至关重要。如何快速获取最新设备状态并实时处理数据,直接影响到业务的高效运转。本文将深入分析 TDengine 和 InfluxDB 在缓存机制上的差异,帮助读者更好地理解这两款主流时序数据库在性能优化方面的优劣。
1185 1
|
运维 NoSQL Java
后端架构演进:微服务架构的优缺点与实战案例分析
【10月更文挑战第28天】本文探讨了微服务架构与单体架构的优缺点,并通过实战案例分析了微服务架构在实际应用中的表现。微服务架构具有高内聚、低耦合、独立部署等优势,但也面临分布式系统的复杂性和较高的运维成本。通过某电商平台的实际案例,展示了微服务架构在提升系统性能和团队协作效率方面的显著效果,同时也指出了其带来的挑战。
687 4
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
753 4
|
运维 监控 负载均衡
介绍一下微服务架构的优缺点
介绍一下微服务架构的优缺点
747 0
|
数据挖掘 OLAP OLTP
深入解析:OLTP与OLAP的区别与联系
【8月更文挑战第31天】
3281 0
|
关系型数据库 OLAP 分布式数据库
揭秘Polardb与OceanBase:从OLTP到OLAP,你的业务选对数据库了吗?热点技术对比,激发你的选择好奇心!
【8月更文挑战第22天】在数据库领域,阿里巴巴的Polardb与OceanBase各具特色。Polardb采用共享存储架构,分离计算与存储,适配高并发OLTP场景,如电商交易;OceanBase利用灵活的分布式架构,优化数据分布与处理,擅长OLAP分析及大规模数据管理。选择时需考量业务特性——Polardb适合事务密集型应用,而OceanBase则为数据分析提供强大支持。
5062 2
|
消息中间件 分布式计算 Kafka
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
362 0
|
SQL 数据库 Java
HQL vs SQL:谁将统治数据库查询的未来?揭秘Hibernate的神秘力量!
【8月更文挑战第31天】Hibernate查询语言(HQL)是一种面向对象的查询语言,它模仿了SQL的语法,但操作对象为持久化类及其属性,而非数据库表和列。HQL具有类型安全、易于维护等优点,支持面向对象的高级特性,内置大量函数,可灵活处理查询结果。下面通过示例对比HQL与SQL,展示HQL在实际应用中的优势。例如,HQL查询“从员工表中筛选年龄大于30岁的员工”只需简单地表示为 `FROM Employee e WHERE e.age > 30`,而在SQL中则需明确指定表名和列名。此外,HQL在处理关联查询时也更为直观易懂。然而,对于某些复杂的数据库操作,SQL仍有其独特优势。
453 0
下一篇
开通oss服务