原生分布式数据库与子数据库子表中间件的区别

helloworld_79565979
• 阅读 411

无论是分库分表中间件还是原生分布式数据库,目的都是为了解决数据容量问题,但实际上两种方式有本质区别。那么,具体来说,原生分布式数据库有什么区别,它们的优缺点是什么?下面我们具体谈一谈。 区别一:是否依赖中间件 数据库和表分离的中间件大多采用中间件来补充分布式能力,也就是说在每个数据库节点上构建一个事务处理和查询优化的中间层。在这个系统中,所有的数据库可以是相同的配置,也可以是异构的。把所有数据库组合在一起是一种松耦合的方式,会暴露出很多问题,比如事务处理能力,高可用性限制等等。 原生分布式数据库,它由所有配置相同的数据库组成,每个数据库节点天然具有分布的能力,它是一个紧密耦合的系统,不需要额外中间件的帮助和用户对集群实现细节的关注。可见原生分布式数据库的能力有很大的发展空间,但其发展也有难度。 区别二:是否依赖子分库分表 弹性扩容是检验分布式数据库在面对流量高峰或极端场景下能否持续稳定运行的重要因素。比如一个交易场景,高峰时段每秒可以产生一百万笔订单,每笔订单对于数据库来说都是一笔业务,需要数据库进行扩展。关键在于是否采用分库分表的方法,这极大地制约了容量的扩展。 数据库和分表中间件的分片规则是基于算法提供的,下层计算节点之间没有数据交互,下层计算节点无法按需扩展。原机器按子数据库、子表分成100份,每台机器处理一笔业务。但是,如果你想把它们进一步拆分成1000份和10000份,就很难做到了。这个过程还是需要关闭,开发者手动反汇编库,效率低,灵活性有限,但好在对数据库的依赖也低。 原生分布式数据库有分区表的功能,可以拆分一百份中间件,然后再各拆分一百份,总共一万份,每份至少可以在一台机器上处理。在这个过程中,系统自动按需扩展,不受数量和规模限制,不需要人工干预。 数据库和分表中间件的核心思想是让多个服务器协同工作,完成单个服务器无法处理的任务,尤其是高并发或数据量大的任务。而原生的分布式高可用性设计,可以在普通服务器上实现无限的横向扩展,通过添加低成本的服务器来扩展计算能力,从而提高数据库集群的整体性能。 区别三:是否实现强数据一致性 数据库分离和表分离的中间件由于其架构特点,本质上会对单个数据库进行两次处理,在数据一致性、全局事务能力、全局MVCC、副本控制和高可用性等方面存在不足,需要有针对性的增强。 大多数原生分布式数据库在分布式KV的基础上开发了SQL计算引擎,将分布式存储、事务和计算有机地结合在一起。数据被系统自动分散,并存储了多个副本。一致性协议保证了多个副本和事务日志的一致性,为分布式事务和全局MVCC提供了更全面的支持。 区别四:能否实现平滑的业务迁移 众所周知,数据库是企事业单位的心脏,尤其是在金融、能源、社保、政务等行业。当数据库已经达到容量上限或者不足以满足企业需求的时候,企业也会考虑“换心”来保持活力。这个时候,数据能否顺利迁移到新的数据库,保证数据的正确性不丢失,保证业务不受影响,是一个重要的考虑因素。 由于数据库部门和表部门的中间件不具备分布式能力,在迁移数据时需要进行业务转换。以便数据库可以正常运行。而且由于每个表只能有一个分片规则,业务建模需要重新规划,业务代码需要相应修改,成本很高。 原生分布式数据库由于其高度的兼容性和透明性,可以在不改变业务代码的情况下支持数据迁移,在不损害性能的情况下保证数据库的正常运行。因为整个分布式结构被包装在集群中,所以应用程序无法感知它。相应的,和使用集中式数据库没什么区别,不需要进行分布式改造。此外,由于原生分布式数据库对硬件的依赖性较小,在云时代,可以灵活进行混合云和多云部署以及跨云数据管理,为企业提供更多更便捷的服务选择。 一般来说,数据库分区和表分区的中间件通常在单机数据库上构建数据分区的特性,并支持扩展能力。由于传统单机数据库相对稳定,用户更容易上手。但是,缺点也很明显。其底层不具备分布式能力,仅在宏观架构上打补丁,不断增加机器冗余和系统复杂度,能力天花板较低。原生分布式数据库虽然整体性能更好,但也支持底层模型的调整和各种能力的优化。但由于技术发展时间相对较短,部分产品解决方案的成熟度有待提高。从目前的行业发展趋势来看,随着技术的不断成熟,原生分布式数据库正在成为主流,大量的企业和组织已经开始对传统数据库进行升级。

点赞
收藏
评论区
推荐文章
赵亦华 赵亦华
1年前
你必须知道的国产数据库-阿里数据库oceanbase
众所周知,虽然原生分布式数据库有着各种先天优势,但是在落地的过程中也面临着两方面的挑战:一方面,在大家的印象中,原生分布式数据库主要适用于大型企业或者大型应用场景,而小型企业使用单机更具性价比。但是一旦部署了单机,如果后续业务量巨大,再进行架构调整,会进一步增加部署的难度。
Wesley13 Wesley13
2年前
1、ShardingSphere基本概念
1基本概念什么是ShardingSphere1)一套开源的分布式数据库中间件解决方案2)有三个产品:ShardingSphereJDBC、ShardingSphereProxy、ShardingSphereSidecar3)定位为关系型数据库中间件,合理在分布式环境下使用关系型数据库
Stella981 Stella981
2年前
Asp.NetCore 3.1 EFCore处理Mysql的分库分表
一、什么情况下需要分库分表?Mysql单表数据量超过500万条。二、Asp.netCore技术栈,分库分表的解决方案有哪些?1、阿里云的DRDS2、Mycat 数据库分库分表中间件;3、TiDB;三、以上3种解决方案各自的特点:1、阿里云DRDS是收费的商业版,价格稍贵,但是比S
Stella981 Stella981
2年前
Redis(1.7)Redis高可用架构(理论篇)
【0】常用架构种类  (0.1)单机Redis  (0.2)单纯的Redis主从复制  (0.3)哨兵SentinelRedis主从复制集群(实现高可用自动故障转移)  (0.4)RedisCluster分布式数据库集群  (0.5)第三方中间件Redis主从复制【1】Redis主从复制
Stella981 Stella981
2年前
Apache Ignite基线拓扑释疑
Ignite项目刚开源时,它被定义为一种纯粹的内存解决方案:一种分布式缓存,可将数据放入内存以加快访问速度。但随后在2017年推出了Apache®Ignite™2.1版本,它首次发布了Ignite的原生持久化模块,让Ignite可以作为一个完整的分布式数据库。从那以后Ignite就不再依赖于外部持久性存储机制,以及随之而来的数据库配置和管理问题。Igni
Stella981 Stella981
2年前
ShardingSphere x Seata,一致性更强的分布式数据库中间件
日前,分布式数据库中间件 ShardingSphere 将Seata分布式事务能力进行整合,旨在打造一致性更强的分布式数据库中间件。背景数据库领域,分布式事务的实现主要包含:两阶段的XA和BASE柔性事务。XA事务底层,依赖于具体的数据库厂商对XA两阶段提交协议的支持。通常,XA协议通过在Prepare和Co
Wesley13 Wesley13
2年前
MySQL 分库分表方案
数据库分库分表前言今天有朋友问到了数据库分库分表,他们都说数据库达到了瓶颈,需要重构,但是毫无头绪,现在做个概念总结(期待后期的实操吗?)会从以下几个方面说起:第一部分:实际网站发展过程中面临的问题。第二部分:有哪几种切分方式,垂直和水平的区别和适用面。第三部分:目前市面有的一些开源产品,技术,它们的优缺点是
Stella981 Stella981
2年前
Mycat 分布式事务的实现
Mycat分布式事务的实现博客分类:java数据库引言:Mycat已经成为了一个强大的开源分布式数据库中间件产品。面对企业应用的海量数据事务处理,是目前最好的开源解决方案。但是如果想让多台机器中的数据保存一致,比较常规的解决方法是引入“协调者”来统一调度所有节点的执行。 本文选自《分布式数据库架构及企业实践——基于Mycat中间件》
分布式数据库概念详解
自互联网进入web2.0时代以来,数据库作为核心底层基础设施软件,也经历了蓬勃发展期。从早期的单机关系数据库到NoSQL再到今天的NewSQL,分布式数据库(https://www.oceanbase.com/)领域无论是技术还是场景都发生了巨大的
京东云开发者 京东云开发者
7个月前
Vitess全局唯一ID生成的实现方案 | 京东云技术团队
为了标识一段数据,通常我们会为其指定一个唯一id,比如利用MySQL数据库中的自增主键。但是当数据量非常大时,仅靠数据库的自增主键是远远不够的,并且对于分布式数据库只依赖MySQL的自增id无法满足全局唯一的需求。因此,产生了多种解决方案,如UUID,Sn