谢邀~
关于数据库中间件,我谈谈自己的见解,并介绍一下常见的数据库中间件。
中间件是什么首先看看中间件的定义:和业务无关的的技术类组件。这种解释还是稍微有些抽象,下面我举个例子:
我辞职去卖羊肉串(业务端),联系了很多养殖场(底层),为了羊肉的质量和降低成本,我得一家一家地去考察、谈判、比价,然后选一个羊肉供货商合作。经营了一段时间,这个卖羊肉的涨价了,或者提供的羊肉质量没原来好了,那么我就重新考察、谈判、比价,如此反复,我会浪费大量的时间和经历。
于是我找了个信得过的代理公司(中间件),约定好羊肉的质量规格,谈好价钱,以后我只找代理拿货,具体代理找哪个养殖场合作,挣多少差价,我不管。
所以中间件的作用是:让业务端和底层解耦,屏蔽底层困难的逻辑,提供更简单的服务,让业务端的开发更简单。
数据库中间件再来看看什么是数据库中间件。
在这里,数据库就是底层,我们写的程序就是业务端,数据库中间件就是(和业务无关)的可以实现数据库一些功能的组件。还是有些抽象,那么看看常见的数据库组件有哪些吧。
分库分表(分布式):当数据量大的时候,单台数据库已经不足以支撑我们的业务量,所以会采用分库分表的策略。现在支持分库分表的组件有很多,例如MyCat、MySQL-Proxy、Atlas(360)、Cobar(阿里)、TDDL(淘宝,新名字DRDS)。
数据库同步:顾名思义,是对数据库进行同步的;Otter(阿里),基于数据库增量日志解析,准实时同步数据,支持两个库都可以写入,写入的数据同步到另外的库。
数据库迁移:这个主要用于不同类型数据库的迁移;yugong(阿里),支持Oracle到Mysql的迁移。
数据增量订阅与消费:这个是对数据库增量日志解析,提供增量数据订阅和消费;canal(阿里)。
听过了这些数据库中间件的介绍,是不是理解起来更深刻了。
比如分库分表的中间件,如果自己实现的话,就需要连接多个数据源(或多个表),执行一次查询,每个数据源都需要调用一次,查询回来的数据还需要自己处理;
如果有了中间件做这些工作,我们的开发会更加的简单。
我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。Copyright © 广州京杭网络科技有限公司 2005-2024 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有