2.4.1 数据库中间件设计篇
目录
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 .数据库存储的数据量不是很大,但并发的读写操作都很大,超过数据库服务器的处理能力. 2.应用的业务模块很多,总得数据量很大,并发读写操作均超过单个 ...
- 4.1.2 数据库中间件设计要点
文章目录 数据库中间件设计要点 数据库拆分 数据库拆分 - 垂直拆分 数据库拆分 - 水平拆分 水平拆分 - 分片规则 分库分表的技术难点 数据库中间件的两种实现模式 常用数据库中间件简介 数据库中间 ...
- 假如让你来设计数据库中间件
最近在网上逛的时候看到一篇关于数据库中间件设计的文章,嗯,讲的还比较详细,转载之,再附上自己的一点点感想,原文出自<假如让你来设计数据库中间件>,原文如下: 13年底负责数据库中间件设计时 ...
- 基于RMI技术的数据库操作中间件设计 综合实践报告
前言 1.1 实践目的和要求 为了将理论用于实践,巩固所学知识,提高自己发现问题并用所学知识分析问题和解决问题的能力,锻炼自己的工作能力,适应社会能力,自我管理能力,了解目前软件的应用情况,需求情况 ...
- 入门篇-华为云分布式数据库中间件(DDM)创建逻辑库和逻辑表
本文介绍华为云DDM管理控制台创建逻辑库和逻辑表. 前提条件: 已经购买华为云DDM实例. 已经导入RDS实例. 创建逻辑库 一个DDM实例下最多能新增100个逻辑库. 非拆分模式下,逻辑库只能关联一 ...
- 入门篇-连接华为云分布式数据库中间件(DDM)
在成功配置DDM实例后,即可连接访问DDM实例以及实例下的逻辑库. 华为云分布式数据库中间件(DDM)服务目前管理的关系型数据库,是基于MySQL作为存储引擎,因此DDM服务兼容MySQL大部分语法以 ...
- 通用权限管理设计篇(二)——数据库设计
让我们接着来进行数据库的设计.在数据库建模时,对于N对N的关系,一般需要加入一个关联表来表示关联的两者的关系.初步估计一下,本系统至少需要十张表,分别为:权限表.用户表.角色表.组表.用户权限关联表. ...
- 数据库课程设计心得【6】----总结篇
一. 实现的功能 1. 系统管理员 Ø 用户管理模块: 用户管理模块主要是对用户的属性和权限进行管理,是系统的基础模块,功能由图3可见.由管理员添加 ...
- 数据库表设计、 数据库分层、myslq水平拆分、oracle表分区
数据库表设计 数据库表结构设计方法及原则(li)数据库设计的三大范式:为了建立冗余较小.结构合理的数据库,设计数据库时必须遵循一定的规则.在关系型数据库中这种规则就称为范式.范式是符合某一种设计要求的 ...
最新文章
- Mybatis获取插入记录的自增长ID
- iis7设置html支持asp,Win7下启用IIS7配置ASP运行环境的详细方法
- Editor扩展之查看Prefab用在那儿
- 一图看懂华为云DevCloud如何应对敏捷开发的测试挑战
- spark学习-73-源代码:Endpoint模型介绍(5)-Netty通讯小例子
- Prometheus 原理和实践,含docker部署Prometheus、node Exporters、Alertmanager、Push Gateway、grafana
- JVM学习总结四——内存分配策略
- IDEA 创建类注释模板
- 3.3 CMMI3级——技术解决方案(Technical Solution)
- Bill Gates推荐,人工智能必读的三本书 -《终极算法》,《超级智能》和《终极发明》zz
- 破解“冲动消费”难题,“李佳琦们”掀起618“反效率”之风
- 浏览器无法加载本地文件
- 创建阻止windows自动锁屏的脚本
- 干货丨让你更容易影响别人的 52 个小技巧
- 戴尔服务器安装Debian11过程
- (Node+Vue+微信公众号开发)企业级产品全栈开发速成周末班
- 未来智安XDR荣膺ISC 2022创新能力百强
- [WebGL入门]二十六,纹理绘图
- 带有滚动效果的ViewPager
- CAD文件版本怎么转换?怎么将高版本文件转换成低版本