Tencent,数据库中间件

数据库中间件是什么?

Tencent,数据库中间件


我从早期的amoeba读写分离,druid,tddl分库分表,现在在使用公司自己的数据库组件!也来交流下数据库中间件!数据库中间件可以说是分布式,高并发系统架构中一定会用的!一般来说,一个复杂系统里面会有消息中间件(生产者和消费者之间通信的),数据库中间件(服务与数据库之间通信的),服务中间件(连接多个服务的)等等!何为中间件?就是连接两个系统并做特殊处理的组件!何为数据库中间件?业务应用系统通过数据库中间件对数据库进行操作(增删改查,分库分表,读写分离,性能监控等)的组件!中间件特点:就是对解耦的两个系统进行通信,互相解耦,中间件具备扩展性,可替换性!同时集中式的管理,监控!提供高可用性,大容量,高并发的解决方式!数据库中间件的分类:没有严格分类,根据功能可以分为:1,读写分离,分库分表这种跟业务息息相关的中间件!2,数据库之间进行同步和迁移的中间件3,增量消费数据的中间件!数据库中间件有哪些产品呢?分库分表组件:Cobar,mycat,tddl,DDB,Sharding-jdbc!增量消费组件:canal,Erosa!同步和迁移数据组件:Otter,DRC,DataX!伴随着大容量,高并发的分布式系统的变迁,中间件技术也日益发展,但是不同的中间件都是开发公司为了满足自身业务需要进行开发的组件,所以选择中间件的时候一定要酌情处理,必要时需要自己定向开发中间件!我们公司就用了自己开发的dmds数据库中间件!满足自己的业务需要!有需要了解数据库中间件怎么玩的朋友,可以私聊我,咱们一块交流,我知无不答! 。
分库分表中,数据库中间件扮演了一个怎样的角色?
Tencent,数据库中间件


【Tencent,数据库中间件】在数据库分库分表中,中间件就相当于一个adapter(适配器),开发中你不需要去关心分库分表是怎么实现,你只需要正常操作就行 。像常见的分库分表中间件sharding-jdbc, Mycat, DBproxy,atlas,它们做的其实就是适配器的活 。我上层业务不需要关心你怎么去分库分表,我只要配置好规则就行,在写CRUD的时候不用去指明具体的表明,就好像你操作的就是一个数据库表一样 。
分库分表是是能解决表数据太大的问题,但是它也存在很多问题,其中很多问题是中间很难去解决的 。就拿简单的分页来说,光是为了知道页数就需要查询很多张表,然后在进行分页 。更复杂的有join操作,统计操作这类的,现在很多中间件都不支持多表关联 。从上面可以看出,分库分表的中间件起到了适配的作用,还不能支持太复杂的操作,简而言之就是“一个功能待完善的适配器” 。
为什么几乎所有的开源数据库中间件都是国内公司开源的?并且几乎都停止了更新?
Tencent,数据库中间件


国外一般喜欢将分布式能力作为enterprise功能,即付费部分 。国外的所有公司主导的开源都是有套路的,分为社区版和企业版,基础功能是社区版,高级功能是企业版,这样靠程序员个人使用开源来扩大用户群,然后大企业跟进,但是大企业的高级需求就需要付费,这样公司才有生意做 。中国的开源,这两年开始爆发,但是,这种开源更多的是大企业提高名声,或者某些个人发扬互联网精神,不走国外的(高级功能enterprise)套路,所以分布式能力,也直接开源出去,比如mycat算是个人项目社区化;腾讯tbase直接开源了(但是基本不会有人自建tbase,都是在腾讯云上用现成的);sharding-sphere是京东开源的这个和mycat类似;还有TiDB这个是目前国产的最好最彻底的分布式库之一盈利思路大概像redhat,我的产品都开源,如果你感觉自己弄麻烦,那么可以买我的人力服务支持,我靠这个赚钱 。

推荐阅读