写点什么

DDM 的前世今生——浅析分布式数据库中间件

  • 2019-10-22
  • 本文字数:1204 字

    阅读完需:约 4 分钟

DDM的前世今生——浅析分布式数据库中间件

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 之争

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


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

关系型数据库性能瓶颈

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


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



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



拆分规则优化:可以根据拆分字段,进行取模的方式来做到数据大致平均分布到多个分片上。可以保证整体系统的 QPS 得到提升,但又衍生出来一些问题:分片数量不够需要扩容的问题,跨分片事务一致性无法保证的问题。

数据库中间件

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


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


本文转载自公众号中间件小哥(ID:huawei_kevin)。


原文链接:


https://mp.weixin.qq.com/s/VWp6kdtupva90sTxi9FX8Q


2019-10-22 23:251325

评论

发布
暂无评论
发现更多内容

每日算法刷题Day11-最大公约数、数组去重

timerring

算法题 9月月更

Java 学习 --SpringBoot 常用注解详解(二)

六月的雨在InfoQ

springboot 注解 Spring Bean @Component 9月月更

第四章 C语言之牛客网刷题📖笔记

Dream-Y.ocean

c 算法 9月月更

云办公时代SaaS行业如何保证用户使用体验,提高用户留存率?

Baklib

SaaS 帮助文档

测试左移-快速玩转Debug

转转技术团队

问题排查 测试debug

【C语言】自定义类型(结构体类型+枚举类型+联合体类型)[进阶篇_ 复习专用]

Dream-Y.ocean

c 结构体 9月月更

[SpringBoot]SpringBoot整合第三方技术

十八岁讨厌编程

Java 后端 9月月更

【指针内功修炼】函数指针 + 函数指针数组 + 回调函数(二)

Albert Edison

数组 指针 C语言 9月月更 指针数组

【MySQL进阶】事务一

Aion

MySQL 事务 9月月更 InnoDB存储引擎

【精通内核】Linux内核rcu(顺序)锁实现原理与源码解析

小明Java问道之路

RCU Linux内核 9月月更 CopyOnWrite rcu锁

社招前端一面经典手写面试题集锦

helloworld1024fd

JavaScript 前端

阿里、字节、美团我都面了,offer也拿到了,全靠这份Java面试题!

收到请回复

Java 云计算 开源 架构 编程语言

华为云快成长直播间云会议专场,华为员工都在用的高效办公神器

科技云未来

工赋开发者社区 | 大“火”的扩散模型综述又一弹!UCF等《视觉扩散模型》综述,20页pdf详述三种通用的扩散建模框架

工赋开发者社区

加速 Amazon RDS for MySQL 只读副本提升

亚马逊云科技 (Amazon Web Services)

MySQL RDS

大数据ELK(三):Lucene全文检索库介绍

Lansonli

9月月更 EKL

《Java面试考点大全》全网首发,带你摸熟20+互联网公司的面试考点!

收到请回复

Java 云计算 开源 架构 编程语言

Java进阶(二十三)java中long类型转换为int类型

No Silver Bullet

Java 类型转换 9月月更

实时云渲染 VS 本地渲染,全面横向对比

3DCAT实时渲染

2022-09-16:以下go语言代码输出什么?A:101;B:100;C:1;D:2。 package main import ( “fmt“ ) type MS struct {

福大大架构师每日一题

golang 福大大 选择题

Java学习--SpringBoot 常用注解详解(一)

六月的雨在InfoQ

Spring Boot Spring MVC Spring注解 9月月更

链游版羊了个羊-SeedX,17号上线欢迎挑战

BlockChain先知

边缘计算技术及其安全

阿泽🧸

边缘计算 9月月更

【MySQL 进阶】事务二

Aion

MySQL 事务 9月月更 InnoDB存储引擎

无限道具教程最新版9.17——大熊G

大熊G

羊了个羊

全新 Amazon RDS for MySQL 和 PostgreSQL 多可用区部署选项

亚马逊云科技 (Amazon Web Services)

PC市场如何再起波澜?荣耀的创新或是答案

脑极体

【精通内核】Linux内核rcu锁深度解析

小明Java问道之路

RCU 内核 Linux内核 9月月更 rcu锁

高级前端手写面试题

helloworld1024fd

JavaScript 前端

[SSM]异常处理

十八岁讨厌编程

Java 后端 9月月更

DDM的前世今生——浅析分布式数据库中间件_文化 & 方法_张译文_InfoQ精选文章