随着数据量不断增大,传统的架构模式难以解决业务量不断增长所带来的问题,特别是在业务成线性、甚至指数级上升的情况。此时我们不得不通过水平扩展,把数据库放到不同服务器上来解决问题,也就是我们说的数据库中间件。

作为数据库中间件,分布式数据库中间件DDM将底层数据库存储引擎以集群方式管理起来,用户使用非常方便。应用程序不需要关心具体有多少分片。类似操作单机数据库,用户通过DDM管理控制台进行数据库运维,使用JDBC等驱动服务或SQL客户端连接数据库,进行数据读写。

DDM服务的业务架构图示

分片是解决数据库存储容量限制的直接途径。分片包括垂直分片与水平分片两种方式。

垂直分片

垂直分片又叫纵向分割,即以逻辑表为单位,把原有数据库切分成多个数据库。切分后不同的表存储在不同的数据库上。

垂直分片与业务架构设计有密切的联系。比如从业务领域对系统进行架构优化,分成多个子业务系统,各个子业务系统耦合度较低。子业务系统间以接口方式进行数据通信和数据交换。垂直拆分后业务清晰,拆分规则明确,系统之间容易整合与扩展。一般用于数据库上层架构设计。

垂直分片示意图

水平分片

水平分片又叫横向分割,即以逻辑表中的数据行记录为单位,把原有逻辑数据库切分成多个物理数据库分片,表数据记录分布存储在各个分片上。

水平分片主要用业务架构无法继续细分,而数据库中单张表数据量太大,查询性能下降的场景。通过水平分片,即解决单库容量问题,同时提高并发查询性能。

水平分片示意图

DDM实现了自动水平分片,应用无需关心某个数据该存储在哪一块分片上。对逻辑表水平分片需要依据一定的分片规则,例如一个订单跟踪系统(见上图),我们选取订单号(OrderId)作为拆分键,分别对“订单流水表”、“订单详情表”以及“物流跟踪表”进行水平拆分,拆分规则为对键值Hash后求模,则分片计算规则如下:

H(Key(OrderId)) = Hash(Key(OrderId))%N

其中,N表示一共有N个数据分片,H(Key(OrderId))表示该订单经过订单号Hash并求模后存储的分片编号。

分片后数据存储示意图

路由分发

路由分发与水平分片同为DDM的基础功能。在分布式数据库中,路由的作用即将SQL语句进行解析,并转发到正确的分片上,保证SQL执行后得到正确的结果,并且节约QPS资源。例如:订单支付系统包含了shard0、shard1、shard2三个分片,订单号2017010112345678的订单数据存储在shard0分片上,则应该将以下语句路由分发到shard0分片上执行。

select Customer, OrderStatus, CreateDate from Order

where OrderId = '2017010112345678';

如果同时路由到shard0、shard1、shard2三个分片,会造成多余的查询,浪费资源;如果路由到shard1、shard2分片,则得不到正确的返回结果。

DDM对单张表的路由解析流程如下:

单张表的路由解析流程

读写分离

数据库中对计算和缓存资源消耗较多的往往是密集或复杂的SQL查询。当系统资源被查询语句消耗,反过来会影响数据写入操作,进而导致数据库整体性能下降,响应缓慢。因此,当数据库CPU和内存资源占用居高不下,且读写比例较高时,可以为数据库添加只读实例。

添加只读实例的作用有以下:

1、将查询非事务性查询SQL路由到只读实例中执行,主实例上执行事务性SQL,在很大程度上缓解主实例上的S锁与X锁的竞争。

2、对只读实例上的表可配置不提供事务支持的数据库引擎,进而提升查询效率。

3、增加只读实例,也相当于数据库横向扩展,直接增加负载能力,同时增加数据冗余,确保数据库高可用。

DDM服务实现了自动读写分离,用户购买了RDS只读实例后,将只读实例信息同步到DDM中即可,无需再做其他配置。同时,DDM支持用户在SQL中自定义读写分离策略,具体用法请参考如何实现读写分离。

读写分离示意图

平滑扩容

随着业务增长,逻辑库存储空间不足,并发压力较大,此时可对DDM实例逻辑库进行平滑扩容,通过增加RDS实例来提高数据存储能力与并发支持能力。

平滑扩容是一种水平扩容方式,通过增加RDS实例的数量来提升总体数据存储容量,把分库平滑扩容到新增加的RDS实例上,保证所有的数据都是均衡分布在每个分库上,降单个RDS实例的处理压力。平滑扩容原理如下图所示。

平滑扩容原理

以上就是对分布式数据库中间件DDM实现原理的浅析,目前华为云DDM推出了免费体验活动,想要了解更多,欢迎前往分布式数据库中间件查看。

java数据库中间件实现,分布式数据库中间件DDM的实现原理相关推荐

  1. 从中间件到分布式数据库生态,ShardingSphere 5.x革新变旧

    距离最后一个 4.x 版本的发布时间已半年有余,在此期间, Apache ShardingSphere 社区对产品不断的打磨和优化,并在刚刚过去的双十一前夕发布了其 5.x 的首个版本-- 5.0.0 ...

  2. 腾讯T9纯手写基于Mycat中间件的分布式数据库架构笔记

    随着移动互联网的兴起和大数据的蓬勃发展,系统的数据量正呈几何倍数增长,系统的压力也越来越大,这时最容易出现的问题就是服务器繁忙,我们可以通过增加服务器及改造系统来缓解压力,然后采用负载均衡.动静分离. ...

  3. 数据库架构设计——分布式数据库设计

    摘要 现在互联网应用已经普及,数据量不断增大.对淘宝.美团.百度等互联网业务来说,传统单实例数据库很难支撑其性能和存储的要求,所以分布式架构得到了很大发展.一定要认识到数据库技术正在经历一场较大的变革 ...

  4. Zabbix+分布式数据库TiDB实现分布式数据库监控

    Zabbix+分布式数据库TiDB实现分布式数据库监控 一.Tidb的简介 1.什么是TiDB 2.TiDB 整体架构 2.主要模块简介 1) TiDB Server 2) PD Server 3) ...

  5. 腾讯云数据库TDSQL:分布式数据库,你真的了解吗?

    分布式数据库进入人们的视野已经很久了.相对于传统的集中式数据库,分布式数据库在高性能.高可用.平滑拓展.高可靠.低成本等许多方面具有优势. 但时至今日,关于分布式数据库,似乎一直缺少足够权威和客观的解 ...

  6. java 分布式数据库架构_分布式数据库的模式结构介绍

    分布式数据库的模式结构可以划分为全局视图.全局概念层.局部概念层.局部内层.各层之间有相应的层间映射.具体介绍如下: 1.全局外层 分布式数据库是一组分布的局部物理数据库的逻辑集合.分布式数据库的全局 ...

  7. 巨杉数据库TechDay回顾 | 分布式数据库@民生、Sharding Sphere@京东、ClickHouse@微博

    大数据时代,数据早已成为全球战略资源级的存在,数据库也成为了所有应用成功运行的核心.同时,随着创新业务的不断增加,业务的复杂及庞大的体量必然会产生错综复杂且规模巨大的结构化数据,这些都迫使企业对数据库 ...

  8. mysql分布式数据库架构_MySQL分布式数据库架构:分库、分表、排序、分页、分组、实现教程...

    MySQL分库分表总结: 单库单表 : 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到. 单库多表 : 随着用户数量的增加, ...

  9. oracle数据库中间件mycat,分布式数据库中间件part1-Mycat的入门与搭建

    一.前言 Mycat主要是针对方便架构师进行系统架构架构和DBA管理数据库的一个中间件,提供了多种数据库常见问题的解决方案,但某些技术点与开发工程师也息息相关,这里主要是针对开发工程师相关的技术点-- ...

最新文章

  1. php的运算符实践输入年份,[php第四课]运算符
  2. 天翼云从业认证课后习题(第一章和第二章)
  3. ajaxfileupload踩过的坑
  4. 破解百度翻译页面api参数加密
  5. MATLAB2016添加工具箱toolbox方法,有截图
  6. Spring框架的xml出错Cannot resolve reference to bean txPointcut while setting bean property pointcut
  7. 软件源码破解工具De4Dot用法,net破解、反混淆
  8. 开源直播推流sdk_携程移动直播探索
  9. 应运而生的教学工具——《爱上micro:bit》读书笔记
  10. linux yum安装scp,CentOS安装scp命令的软件包openssh-clients
  11. 奇思妙想,动手 DIY 你的浏览器主页
  12. 电脑黑屏显示重新连接服务器,电脑黑屏怎么处理(电脑上显示器黑屏的处理方法)...
  13. Sqlmap 22.05.23.05
  14. C语言与Java的异同
  15. [XCTF] [NJUPT CTF 2017] maze
  16. Matlab常用清除命令:clc、clear、clear all、clf、close、close all
  17. 把0到9的数字转换成电话按钮上的字母
  18. 嵌入式系统开发笔记80:应用Qt Designer进行主界面设计
  19. Flask教程(五)GET和POST
  20. 大数据分析工具作业task01:np.random总结及几种常见概率分布图形的绘制

热门文章

  1. 读吴军老师的《智能时代》有感
  2. 站在时代的风口:人工智能时代的思维方式
  3. meb备份mysql,MySQL企业版备份工具MEB
  4. 前京东AI掌门人周伯文入局ChatGPT,亲手创立的衔远科技获天使轮融资数亿元!
  5. 基于jQuery的富文本编辑器summernote插件的使用教程
  6. 202- K7 +C6678学习资料:基于TI DSP TMS320C6678、Xilinx K7 FPGA XC7K325T的高速数据处理核心板
  7. python架构师是做什么的_【图片】架构师速成-一个10多年架构师的总结_架构师吧_百度贴吧...
  8. 【源码】基于lévy飞行的随机蛙跳算法及其在连续优化问题中的应用
  9. uni-app中使用rich-text如何添加样式控制富文本里面的内容
  10. 速联2.0 实现SCADA软件远程无线监控环保设备