浅析分布式数据库中间件DDM

前言html

DDM是什么?这是华为云Paas推出的分布式数据库中间件,DDM(Distributed Database Middleware)是一个实现了Mysql协议栈的服务器,前端用户能够把它看作一个数据库代理,用Mysql客户端工具和命令行访问,而DDM后端链接一到多个Mysql Server。所以,DDM自己并不存储数据,数据是在后端链接的Mysql Server上存储的。简单来讲,DDM就是Mysql的最佳伴侣,必定程度上让Mysql拥有了跟Oracle PK的能力。这样听起来DDM好像是Mysql的辅助大神,这里有必要对八卦下DDM发展背景,了解下DDM的前世历程。前端

 

NoSQL与SQL之争redis

目前,互联网常有海量数据高并发和存储的场景,对于数据的存储,目前有基于SQL (Structured Query Language)的关系型数据库和NoSQL(Not Only SQL)的非关系型数据库。SQL数据存在特定结构的表中;而NoSQL则更加灵活和可扩展,存储方式能够是JSON文档、哈希表或者其余方式,好比键值存储(redis,ROMA,Memcached)数据库应用在排行更新,会话保存,面向文档的数据库(mongoDB、couchDB)应用在日志记录,面向列的数据库(Cassandra、HBase)在博客中的应用。并且速度极高。sql

 

虽然在云计算时代,传统数据库存在着先天性的弊端,可是NoSQL数据库只能在特定场景下有奇效,只能做为传统数据的补充而不能将其替代。数据库

 

关系型数据库性能瓶颈后端

目前绝大多数数据库不具有自动扩展,自动迁移的能力,对于单库单表性能瓶颈明显,当单表超过1000W数据量,性能会出现比较明显的降低。为了解决该难题,常见的作法就是进行分库分表来规避。服务器

 

垂直分库:可按照业务模块进行划分,把数据分在不一样的库中。并发

 

水平分库:咱们发现某些表的数据量已经超过1000W,QPS显著降低,这里能够对这种表进行进一步水平拆分,作成多个分片表。大多数电商企业会按照日期分片,但又衍生出来一些问题,在固定时段中对某个分片压力很大,其余分片此时处于空闲状态,在电商企业高并发的场景下,会产生大量数据,此时又产生短期内单库QPS瓶颈的问题。分布式

 

拆分规则优化:能够根据拆分字段,进行取模的方式来作到数据大体平均分布到多个分片上。能够保证总体系统的QPS获得提高,但又衍生出来一些问题:分片数量不够须要扩容的问题,跨分片事务一致性没法保证的问题。高并发

 

数据库中间件

为了减小对应用的侵入性,而且要将压力打在中间件上,该中间件负责和上层应用打交道,对应用可表现为一个独立的数据库,而屏蔽底层复杂的系统细节。分布式数据库中间件除了基本的分表分库功能,还能够丰富一下,好比讲读写分离或者水平扩容功能集成在一块儿,或者好比读写分离自己也能够做为一个独立的中间件。(DDM,Cobar,MyCAT, TDDL等)。

 

上述提到的分片数量不够的扩容以及分布式事务一致性的问题,在华为云的DDM已经获得解决,而且中间件的功能在不断丰富,已经成为高并发应用的绝对利器。

相关文章
相关标签/搜索