文档章节

数据库中间件

爱宝贝丶
 爱宝贝丶
发布于 07/17 10:59
字数 712
阅读 28
收藏 1
  • 数据库中间件设计要点
    • 要能解析SQL
    • 能支持读写分离
    • 能支持从库读的负载均衡
    • 支持分库操作
    • 支持分表操作
    • 支持跨库关联查询
    • 对事务处理的支持
    • 主键ID生成
    • 数据源管理
  • 数据库拆分
    • 垂直拆分:比如按照订单表和用户表,将其分别放到不同的数据库中
      • 优点:
        • 拆分后业务清晰,拆分规则明确;
        • 系统之间整合或扩展容易;
        • 数据维护简单;
      • 缺点
        • 部分业务表无法join,只能通过接口方式解决,提高了系统复杂度;
        • 受每种业务不同的限制存在单库性能瓶颈,不易数据扩展和性能提高;
        • 事务处理复杂;
    • 水平拆分:对海量数据的表进行分库拆分,比如将用户数据拆分到不同的库中进行存储
      • 优点
        • 拆分规则抽象好,join操作基本可以数据库做;
        • 不存在单库大数据,高并发的性能瓶颈;
        • 应用端改造较少;
        • 提高了系统的稳定性和负载能力;
      • 缺点
        • 拆分规则难以抽象;
        • 分片事务一致性难以解决;
        • 数据多次扩展难度和维护量极大;
        • 跨库join性能较差;
      • 分片规则:水平拆分最重要的点
        • 范围:时间、数值;
        • 列表:按地域、按组织、分类;
        • 散列:hash(某个字段)%分片数、一致性hash;
        • 复合多种方式;
  • 分库分表的技术难点:无论是垂直拆分还是水平拆分,都会引入以下难点:
    • 引入分布式事务的问题;
    • 跨节点join的问题;
    • 跨节点合并排序分页问题;
    • 多数据源管理问题;
  • 数据库中间件的实现模式
    • 客户端模式:在应用程序中集成数据库中间件模块,通过该模块来配置管理应用需要的一个或多个数据源,以及访问各个数据源,在模块内完成数据的整合,适用于小型系统,典型的是sharding-jdbc;
    • 服务端代理模式:通过中间代理层来统一管理所有的数据源,后端数据库集群对前端应用程序透明,同时易于数据库扩展。独立的服务能提供更强的处理能力,适用于大型复杂系统,典型的是Mycat;

© 著作权归作者所有

爱宝贝丶

爱宝贝丶

粉丝 340
博文 136
码字总数 456051
作品 0
武汉
程序员
私信 提问
中间件主动携手数据库

在尝试与国产数据库厂商合作过程中,作为国产中间件的代表之一,中创软件商用中间件股份有限公司的战略合作总监田立国指出:“我们更关注数据库产品技术实力、产品应用情况及产品的长远发展,...

founder
2011/02/16
205
0
活动回顾丨阿里云业务中台最佳实践沙龙圆满落幕

2019年7月26日,阿里云业务中台最佳实践沙龙于浦东国际人才港圆满落幕。此次沙龙活动由阿里云中间件主办主办,浦东国际人才发展中心、阿里云创新中心(上海张江、上海松江、上海临港)基地共...

中间件小哥
09/05
0
0
什么是中间件,中间件是什么意思?

经常听人提起“中间件”这个名词,什么是中间件,中间件是什么意思呢?中间件是指的架构吗? 中间件(Middleware)通常是指在一个大型分布式的系统中,负责各个不同组件(Component)/服务(...

优惠码发放
2018/06/24
0
0
14 | 高性能数据库集群:读写分离

高性能数据库集群的第一种方式是“读写分离”,其本质是将访问压力分散到集群中的多个节点,但是没有分散存储压力;第二种方式是“分库分表”,既可以分散访问压力,又可以分散存储压力。先来...

天赋异禀的柠柠
2018/07/26
0
0
android手机终端与数据库中间的前置服务器的开发

是这样的,我是搞手机软件开发的,手机终端和客户提供的数据库访问,但是数据库后台是不许外网接入的以及一些其他问题的原因,要求在手机终端和数据库之间写一个前置服务器,也叫做中间件吧,...

whuarui2010
2011/07/25
400
1

没有更多内容

加载失败,请刷新页面

加载更多

会用python把linux命令写一遍的人,进大厂有多容易?

看过这篇《2000字谏言,给那些想学Python的人,建议收藏后细看!》的读者应该都对一个命令有点印象吧?没错,就是 linux 中经常会用到的 ls 命令。 文章中我就提到如何提升自己的 python 能力...

上海小胖
16分钟前
4
0
HashMap的特性

一、hashmap数据结构:哈希表结构:数组+链表 hashmap调用默认构造方法会产生一个默认底层是长度为16的Entry数组,首先调用key的hasCode()方法来得到一个整数, int hash = hash(key.hashCode...

GGbird
17分钟前
15
0
第五章 spring-connet之Imports注解来龙去脉

前言 imports是一个在spring体系里非常重要的注解,基本每个Enable开头的注解必然有一个import注解。接下来我们深入研究下import的作用。看小节的同学建议先取看PostProcessorRegistrationDe...

鸟菜啊
20分钟前
3
0
CentOS部署Harbor镜像仓库

关于Harbor Harbor是用于存储和分发Docker镜像的镜像仓库服务,相比Docker Registry,Harbor在安全、标识、管理等方面做了增强,更适合企业使用; 官方网站:https://goharbor.io/ 官方开源:...

程序员欣宸
25分钟前
4
0
JavaScript调试必会的8个console方法

每个JavaScript开发者都用过console.log()来调试程序,但实际上Console对象还提供了很多其他方法可以提高调试效率。本文将介绍8个有趣的Console方法,即使JavaScript老手也不一定知道! 1、c...

汇智网教程
46分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部