首页 > 我的文章 > PHP开发 > MYSQL操作 > 数据库中间件是什么?(2)

数据库中间件是什么?(2)

浏览:703 编辑:绿萝 来源:绿萝
中间件 首先得知道中间件是什么。 中间件的定义:将具体业务和底层逻辑解耦的软件。 之前看过一个很生动的例子: 我要开一家炸鸡店(业务

中间件

首先得知道中间件是什么。

中间件的定义:将具体业务和底层逻辑解耦的软件。


之前看过一个很生动的例子

我要开一家炸鸡店(业务端),需要鸡肉,有很多养鸡场(底层),我需要一个一个比较价钱,然后找一家性价比高的养鸡场合作(适配不同底层逻辑)。可能一段时间后,我需要重新选一家养鸡场合作,进货方式、交易方式等要重新制定(重新适配)。

这一套事情太复杂了,于是我找到了一个专门整合养鸡场的第三方代理(中间件),跟他谈好价格和质量后(统一接口),以后我就只需要给代理钱,然后拿肉就行。具体这个第三方代理怎么操作,我不用管。


数据库中间件

理解了什么是中间件,什么是数据库中间件就好理解了吧,尝试着按照大白话描述:“数据库中间件是一个软件,他可以让上层的软件对数据库做一些操作,而不用去知道是怎么实现的”。


那么【对数据库做一些操作】会是哪些操作呢?


数据库中间件分类

  • 分布式数据库读写分离、分表分库

这个是我们最常见也是最常用的数据库中间件了,它做的功能就是读写分离、分表分库。

读写分离:


分库分表:

最简单的例子,全国14亿人口的信息,放到数据库里面,输入一个身份证,然后查询这个身份证对应人的姓名。

需求很简单吧,但是开发不简单,因为有14亿数据。

那么可以按照省份进行分表,每个省是一个表,这样每张表的数据会少很多。

如果有了分布式数据库分表分库中间件,前台程序:

select * from user where idcard = ?

中间件会帮你定位到需要查询那个表,比如根据身份证的某几位,定位到哪个省,这个省的表名是啥,最后可能会是:

select * from user_beijing(查北京的人员表) where idcard = ?


比较有名的:Cobar、MyCAT。


  • 其他

一些开发不常用的,我都写到其他里面了(不一一解释了,很多看名字就能猜出来是做什么用的)

  1. 数据增量订阅与消费

  2. 数据库同步

  3. 跨数据库


面向数据库的中间件是促进与数据库通信的中间件,无论是来自应用程序还是数据库之间。 开发人员通常使用面向数据库的中间件作为从本地或远程数据库提取信息的机制。 例如,为了从Oracle数据库提取信息,开发人员可以调用面向数据库的中间件来登录到数据库,请求信息并处理从数据库中提取的信息。

尽管CLI是跨越多种数据库的通用API,通过定义良好的通用接口提供对任意数量的数据库的访问,但它们通常被发现可用于关系数据库。 Microsoft ODBC就是这种情况。 ODBC公开一个接口以便于访问数据库。 然后使用驱动程序来适应数据库之间的差异。 ODBC还提供对同一接口的同时多个数据库访问 - 在ODBC体系结构中,驱动程序管理器可以加载和卸载驱动程序以促进不同数据库(例如Oracle,Informix和DB2)之间的通信。

JavaSoft的Java数据库连接(JDBC)是CLI的另一个例子。 JDBC是一种接口标准,它使用一组Java方法来方便访问多个数据库。 JDBC非常像ODBC,可以从任何Java应用程序访问任意数量的数据库:applet,servlet,JSP,EJB或独立应用程序。 Microsoft数据库中间件的未来由其OLE DB表示。 OLE DB提供了一种标准机制来访问任意数量的资源(包括数据库,Excel电子表格和平面文件)作为标准对象(例如COM对象)。 OLE DB提供了一个对象框架来检索结果集,然后在内存中导航和操作结果集。 OLE DB依靠OLE Transactions事务管理框架来确保ACID属性(原子性,一致性,隔离性和持久性)

本地数据库中间件不是使用单个多数据库API,而是仅使用本机机制来访问特定数据库的功能。 这种限制 - 仅与一种类型的数据库进行通信 - 是本地数据库中间件的主要缺点。 其优点包括提高了性能并可以访问特定类型数据库的所有功能。