开发者社区> 德哥> 正文

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

简介:
+关注继续查看

标签

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
OLAP on TableStore:基于Data Lake Analytics的Serverless SQL大数据分析
TableStore(简称OTS)是阿里云的一款分布式表格系统,为用户提供schema-free的分布式表格服务。随着越来越多用户对OLAP有强烈的需求,我们提供在表格存储上接入Data Lake Analytics(简称DLA)服务的方式,提供一种快速的OLAP解决方案。
6800 0
【译】Databricks使用Spark Streaming和Delta Lake对流式数据进行数据质量监控介绍
本文主要对Databricks如何使用Spark Streaming和Delta Lake对流式数据进行数据质量监控的方法和架构进行了介绍,本文探讨了一种数据管理架构,该架构可以在数据到达时,通过主动监控和分析来检测流式数据中损坏或不良的数据,并且不会造成瓶颈。
1452 0
.NET数据库编程求索之路--4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(1)
4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(1)   4.1 解决方案框架 解决方案(.sln)包含以下几个项目: (1)类库项目HomeShop.DbUtility,数据访问实用工具; (2)类库项目HomeShop.Model,实体层; (3)类库项目HomeShop.DAL,数据访问层; (4)类库项目HomeShop.BLL,业务逻辑层; (5)WinForm项目HomeShop.WinForm,界面层。
812 0
Apache ShardingSphere:由开源驱动的分布式数据库中间件生态
2021 年 7 月 21 日 2021 亚马逊云科技中国峰会现场,SphereEx 联合创始人、Apache ShardingSphere PMC 潘娟受邀参与此次峰会,以《Apache ShardingSphere 分布式数据库中间件开源生态构建》为主题,围绕开源理念扩散、社区建设、ShardingSphere 如何践行 Apache Way 等方面展开了介绍,本文总结自潘娟内容分享。
118 0
.NET数据库编程求索之路--4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(5)
4.使用ADO.NET实现(三层架构篇-使用Table传递数据)(5)     作者:夏春涛 xchunta@163.com 转载请注明来源:http://www.cnblogs.com/SummerRain/archive/2012/07/25/2609166.
767 0
阿里云开源PolarDB数据库,与社区共建云原生分布式数据库生态
5月29日,阿里云开发者大会上,阿里巴巴宣布开源云原生数据库能力,对外开放关系型数据库PolarDB for PostgreSQL 源代码,服务百万开发者,与社区开发者一起共建云原生分布式数据库生态。“我们希望将阿里云在云原生分布式数据库技术上积累的丰富经验,通过标准技术组件和系统的方式开放出来,共建开源数据库生态。”阿里云智能数据库产品事业部负责人李飞飞表示。
19030 0
redis介绍,redis安装,redis持久化,redis数据类型
Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。
1552 0
+关注
德哥
公益是一辈子的事, I'm digoal, just do it.
2153
文章
245
问答
来源圈子
更多
阿里云数据库:帮用户承担一切数据库风险,给您何止是安心!支持关系型数据库:MySQL、SQL Server、PostgreSQL、PPAS(完美兼容Oracle)、自研PB级数据存储的分布式数据库Petadata、自研金融级云数据库OceanBase支持NoSQL数据库:MongoDB、Redis、Memcache更有褚霸、丁奇、德哥、彭立勋、玄惭、叶翔等顶尖数据库专家服务。
+ 订阅
相关文档: 云数据库 OceanBase 版 可信账本数据库 云原生关系型数据库 PolarDB PostgreSQL引擎
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载