目录

2.4.1.1 数据库中间件设计理论

1、为什么需要数据库中间件?

1.1、数据库存储的数据量不是很大,但并发的读写操作超过数据库服务器的处理能力

1.2、应用的业务模块很多,总的数据量很大,并发读写操作均超过单个数据库服务器的处理能力

1.3、如果单个表的数据量很大,超出单表的上限

2、高并发、海量数据的情况下

2.4.1.2 数据库中间件设计要点

1、数据库中间件设计要点

2、数据库的拆分

2.1、垂直拆分

2.2、水平拆分

2.3、水平拆分---分片规则

2.4、分库分表的技术难点

3、数据库中间件的两种实现模式

3.1、客户端模式

3.2、服务端(代理)模式

4、常用的数据库中间件


2.4.1.1 数据库中间件设计理论

1、为什么需要数据库中间件?

普通的应用程序---数据库访问

1.1、数据库存储的数据量不是很大,但并发的读写操作超过数据库服务器的处理能力

解决办法:加缓存、读写分离、增加数据库访问模块(数据库中间件)

1.2、应用的业务模块很多,总的数据量很大,并发读写操作均超过单个数据库服务器的处理能力

解决办法:缓存、分库、读写分离、数据库中间件

对数据库中间件的能力要求很高

1.3、如果单个表的数据量很大,超出单表的上限

eg:商品、订单......
        解决办法:分区表、分表
        由“数据库中间件”来做

2、高并发、海量数据的情况下

为了解决数据存储、访问性能问题我们需要数据库中间件
    数据库中间件:让我们可以在应用程序中快速应用读写分离、分库分表

2.4.1.2 数据库中间件设计要点

1、数据库中间件设计要点

1、能解析SQL
    2、支持读写分离
    3、支持从(slave)库读的负载均衡
    4、支持分库操作
    5、支持分表操作
    6、支持跨库关联查询
    7、对事务处理的支持
    8、主键ID生成
    9、数据源管理

2、数据库的拆分

拆分方式:垂直拆分、水平拆分

2.1、垂直拆分

按业务模块垂直拆分

优点
    1、拆分后业务清晰,拆分规则明确
    2、系统之间整合或扩展容易
    3、数据维护简单
缺点
    1、部分业务表无法join,只能通过接口方式解决,提高了系统复杂度
    2、受每种业务不同的限制存在单库性能瓶颈,不易数据扩展跟性能提高
    3、事务处理复杂

2.2、水平拆分

对海量数据的表进行分表分库存储

优点:
    1、如果拆分规则抽象得好的话,join操作基本可以数据库做
    2、不存在单库大数据,高并发的性能瓶颈
    3、应用端改造较少
    4、提高了系统的稳定性跟负载能力
缺点:
    1、拆分规则难以抽象
    2、分片事务一致性难以解决
    3、数据多次扩展难度跟维护量极大
    4、跨库join性能较差

2.3、水平拆分---分片规则

水平对数据进行拆分最重要的是分片规则---拆分规则
    可以如何来拆分?
        1、范围:时间、数值
        2、列表:按地域、按组织、分类
        3、散列:hash(某个字段) % 分片数、一致性hash
        4、复合多种方式

2.4、分库分表的技术难点

无论垂直拆分、水平拆分,都有共同的技术难点
        1、引入分布式事务的问题
        2、跨节点join的问题
        3、跨节点合并排序分页问题
        4、多数据源管理问题

3、数据库中间件的两种实现模式

3.1、客户端模式

在应用程序中集成数据库中间件模块,通过该模块来配置管理应用需要的一个(或者多个)数据源,
        以及访问各个数据源,在模块内完成数据的整合。

3.2、服务端(代理)模式

通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明,同时易于数据库扩展。
        独立的服务,能提供更强的处理能力。适用于大型复杂系统。

4、常用的数据库中间件

2.4.1 数据库中间件设计篇相关推荐

  1. 数据库中间件设计理论

    为什么需要消息中间件 高并发.海量数据的情况下: 1 .数据库存储的数据量不是很大,但并发的读写操作都很大,超过数据库服务器的处理能力. 2.应用的业务模块很多,总得数据量很大,并发读写操作均超过单个 ...

  2. 4.1.2 数据库中间件设计要点

    文章目录 数据库中间件设计要点 数据库拆分 数据库拆分 - 垂直拆分 数据库拆分 - 水平拆分 水平拆分 - 分片规则 分库分表的技术难点 数据库中间件的两种实现模式 常用数据库中间件简介 数据库中间 ...

  3. 假如让你来设计数据库中间件

    最近在网上逛的时候看到一篇关于数据库中间件设计的文章,嗯,讲的还比较详细,转载之,再附上自己的一点点感想,原文出自<假如让你来设计数据库中间件>,原文如下: 13年底负责数据库中间件设计时 ...

  4. 基于RMI技术的数据库操作中间件设计 综合实践报告

    前言 1.1  实践目的和要求 为了将理论用于实践,巩固所学知识,提高自己发现问题并用所学知识分析问题和解决问题的能力,锻炼自己的工作能力,适应社会能力,自我管理能力,了解目前软件的应用情况,需求情况 ...

  5. 入门篇-华为云分布式数据库中间件(DDM)创建逻辑库和逻辑表

    本文介绍华为云DDM管理控制台创建逻辑库和逻辑表. 前提条件: 已经购买华为云DDM实例. 已经导入RDS实例. 创建逻辑库 一个DDM实例下最多能新增100个逻辑库. 非拆分模式下,逻辑库只能关联一 ...

  6. 入门篇-连接华为云分布式数据库中间件(DDM)

    在成功配置DDM实例后,即可连接访问DDM实例以及实例下的逻辑库. 华为云分布式数据库中间件(DDM)服务目前管理的关系型数据库,是基于MySQL作为存储引擎,因此DDM服务兼容MySQL大部分语法以 ...

  7. 通用权限管理设计篇(二)——数据库设计

    让我们接着来进行数据库的设计.在数据库建模时,对于N对N的关系,一般需要加入一个关联表来表示关联的两者的关系.初步估计一下,本系统至少需要十张表,分别为:权限表.用户表.角色表.组表.用户权限关联表. ...

  8. 数据库课程设计心得【6】----总结篇

    一.      实现的功能 1.              系统管理员 Ø         用户管理模块: 用户管理模块主要是对用户的属性和权限进行管理,是系统的基础模块,功能由图3可见.由管理员添加 ...

  9. 数据库表设计、 数据库分层、myslq水平拆分、oracle表分区

    数据库表设计 数据库表结构设计方法及原则(li)数据库设计的三大范式:为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的 ...

最新文章

  1. Mybatis获取插入记录的自增长ID
  2. iis7设置html支持asp,Win7下启用IIS7配置ASP运行环境的详细方法
  3. Editor扩展之查看Prefab用在那儿
  4. 一图看懂华为云DevCloud如何应对敏捷开发的测试挑战
  5. spark学习-73-源代码:Endpoint模型介绍(5)-Netty通讯小例子
  6. Prometheus 原理和实践,含docker部署Prometheus、node Exporters、Alertmanager、Push Gateway、grafana
  7. JVM学习总结四——内存分配策略
  8. IDEA 创建类注释模板
  9. 3.3 CMMI3级——技术解决方案(Technical Solution)
  10. Bill Gates推荐,人工智能必读的三本书 -《终极算法》,《超级智能》和《终极发明》zz
  11. 破解“冲动消费”难题,“李佳琦们”掀起618“反效率”之风
  12. 浏览器无法加载本地文件
  13. 创建阻止windows自动锁屏的脚本
  14. 干货丨让你更容易影响别人的 52 个小技巧
  15. 戴尔服务器安装Debian11过程
  16. (Node+Vue+微信公众号开发)企业级产品全栈开发速成周末班
  17. 未来智安XDR荣膺ISC 2022创新能力百强
  18. [WebGL入门]二十六,纹理绘图
  19. 带有滚动效果的ViewPager
  20. CAD文件版本怎么转换?怎么将高版本文件转换成低版本

热门文章

  1. 二叉树 | 20 周总结
  2. 【数据库与事务系列】分库分表中间件
  3. matlab 半高斯拟合,高斯曲线拟合求半宽高
  4. 在Qt中添加菜单图标
  5. 为什么我放弃了有道云笔记,选择了 Obsidian
  6. 键盘上的整蛊专家,如何防止短信轰炸机
  7. web网页设计实例作业 ——茶叶文化-适应响应(12页) 学生HTML个人网页作业作品下载
  8. python 求1000以内的完数
  9. windows11下vone客户端无法启动问题
  10. python基础—图形开发