• 生活小妙招免费各类生活中的小问题知识以及音乐简谱等,是你了解世界未知知识的好地方。

数据库中间件是什么?

十万个为什么 空空 2024-3-19 23:19:44 3次浏览

关于问题数据库中间件是什么?一共有 2 位热心网友为你解答:

【1】、来自网友【数据库架构师之路】的最佳回答:

数据库中间件可以简化对读写分离以及分库分表的操作,并隐藏底层实现细节,可以像操作单库单表那样操作多库多表,数据库中间件主要能力:

  • 支持读写分离
  • 支持从库读负载均衡
  • 支持分库操作
  • 支持分表操作
  • 支持跨库关联查询
  • 对事务处理的支持
  • 数据安全审计能力

主流的中间件方案主要有两种:

1、 服务端代理模式:需要独立部署一个代理服务,该代理服务后面管理多个数据库实例,在应用中通过一个数据源与该代理服务器建立连接,由该代理去操作底层数据库,并返回相应结果。优点是支持多语言,对业务透明,缺点是实现复杂,实现难度大,同时代理需要确保自身高可用

2、 客户端代理:在连接池或数据库驱动上进行一层封装,内部与不同的数据库建立连接,并对 SQL 进行必要的操作,比如读写分离选择走主库还是从库,分库分表 select 后如何聚合结果。优点是实现简单,天然去中心化,缺点是支持语言较少,版本升级困难

现在国内比较火的中间件如 sharding-proxy,国外如 proxysql 等,如下为一个 sharding-proxy 示例:

服务端模式

客户端模式

【2】、来自网友【会点代码的大叔】的最佳回答:

谢邀~

关于数据库中间件,我谈谈自己的见解,并介绍一下常见的数据库中间件。

中间件是什么

首先看看中间件的定义:

和业务无关的的技术类组件

。这种解释还是稍微有些抽象,下面我举个例子:

我辞职去卖羊肉串(业务端),联系了很多养殖场(底层),为了羊肉的质量和降低成本,我得一家一家地去考察、谈判、比价,然后选一个羊肉供货商合作。经营了一段时间,这个卖羊肉的涨价了,或者提供的羊肉质量没原来好了,那么我就重新考察、谈判、比价,如此反复,我会浪费大量的时间和经历。

于是我找了个信得过的代理公司(中间件),约定好羊肉的质量规格,谈好价钱,以后我只找代理拿货,具体代理找哪个养殖场合作,挣多少差价,我不管。

所以中间件的作用是:让业务端和底层解耦,屏蔽底层困难的逻辑,提供更简单的服务,让业务端的开发更简单。

数据库中间件

再来看看什么是数据库中间件。

在这里,数据库就是底层,我们写的程序就是业务端,数据库中间件就是(和业务无关)的可以实现数据库一些功能的组件。还是有些抽象,那么看看常见的数据库组件有哪些吧。

  • 分库分表(分布式)

    :当数据量大的时候,单台数据库已经不足以支撑我们的业务量,所以会采用分库分表的策略。现在支持分库分表的组件有很多,例如 MyCat、MySQL-Proxy、Atlas(360)、Cobar(阿里)、TDDL(淘宝,新名字 DRDS)。

  • 数据库同步

    :顾名思义,是对数据库进行同步的;Otter(阿里),基于数据库增量日志解析,准实时同步数据,支持两个库都可以写入,写入的数据同步到另外的库。

  • 数据库迁移

    :这个主要用于不同类型数据库的迁移;yugong(阿里),支持 Oracle 到 Mysql 的迁移。

  • 数据增量订阅与消费

    :这个是对数据库增量日志解析,提供增量数据订阅和消费;canal(阿里)。

听过了这些数据库中间件的介绍,是不是理解起来更深刻了。

比如分库分表的中间件,如果自己实现的话,就需要连接多个数据源(或多个表),执行一次查询,每个数据源都需要调用一次,查询回来的数据还需要自己处理;

如果有了中间件做这些工作,我们的开发会更加的简单。

我将持续分享 Java 开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

喜欢 (0)