常用数据库中间件汇总

【1】360 Atlas

网址:https://github.com/Qihoo360/Atlas

较为活跃,Atlas 是由 360 Web平台部基础架构团队开发维护的一个基于 MySQL 协议的数据中间层项目。它是在mysql-proxy 0.8.2版本的基础上,对其进行了优化,增加了一些新的功能特性。360内部使用 Atlas 运行的 MySQL 务,每天承载的读写请求数达几十亿条。

主要功能:
        1. 读写分离
        2. 从库负载均衡
        3. IP过滤
        4. SQL语句黑白名单
        5. 自动分表

【2】Mycat

官网:http://www.mycat.io/

前身 Cobar,开源,较为活跃。

特点:
遵守Mysql原生协议,跨语言,跨数据库的通用中间件代理。
基于心跳的自动故障切换,支持读写分离,支持 MySQL 一双主多从,以及一主多从
有效管理数据源连接,基于数据分库,而不是分表的模式。
基于 NIO 实现,有效管理线程,高并发问题。
支持数据的多片自动路由与聚合,支持 sum , count , max 等常用的聚合函数。
支持2表 join,甚至基于 caltlet 的多表 join。
支持通过全局表,ER 关系的分片策略,实现了高效的多表 join 查询。
支持多租户方案。
支持分布式事务(弱xa)
支持全局序列号,解决分布式下的主键生成问题。
分片规则丰富,插件化开发,易于扩展。
强大的 web,命令行监控。
支持前端作为 MySQL 通用代理,后端 JDBC 方式支持 Oracle、DB2、SQL Server 、 mongodb 、巨杉。
集群基于 ZooKeeper 管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

【3】Cobar (不维护了)

Cobar是阿里巴巴(B2B)部门开发的一种关系型数据的分布式处理系统,它可以在分布式的环境下看上去像传统数据库一样为您提供海量数据服务。

Cobar的分布式主要是通过将表放入不同的库来实现:
        1. 支持将一张表水平拆分成多份分别放入不同的库来实现表的水平拆分
        2. 支持将不同的表放入不同的库
        3. 多数情况下,用户会将以上两种方式混合使用。

这里需要强调的是,Cobar 不支持将一张表,例如test表拆分成test_1, test_2, test_3.....放在同一个库中,必须将拆分后的表分别放入不同的库来实现分布式。

在用户配置了 MySQL 心跳的情况下,Cobar 可以自动向后端连接的 MySQL 发送心跳,判断 MySQL 运行状况,一旦运行出现异常,Cobar 可以自动切换到备机工作。

但需要强调的是:
        1. Cobar 的主备切换有两种触发方式,一种是用户手动触发,一种是 Cobar 的心跳语句检测到异常后自动触发。那么,当心跳检测到主机异常,切换到备机,如果主机恢复了,需要用户手动切回主机工作,Cobar不会在主机恢复时自动切换回主机,除非备机的心跳也返回异常。
        
        2. Cobar 只检查 MySQL 主备异常,不关心主备之间的数据同步,因此用户需要在使用 Cobar 之前在 MySQL 主备上配置双向同步,详情可以参阅MySQL参考手册。

其次,我们也需要注意Cobar的功能约束:
        1. 不支持跨库情况下的join、分页、排序、子查询操作。
        2. SELECT 语句执行会被忽略,事务和字符集设置除外。
        3. 分库情况下,insert 语句必须包含拆分字段列名。
        4. 分库情况下,update 语句不能更新拆分字段的值。
        5. 不支持 SAVEPOINT 操作。
        6. 暂时只支持 MySQL数据节点。

【4】TDDL

已经不再使用,下一代是 DDRS。
        
        淘宝根据自己的业务特点开发了 TDDL (Taobao Distributed Data Layer 外号:头都大了 )框架,主要解决了分库分表对应用的透明化以及异构数据库之间的数据复制,它是一个基于集中式配置的 jdbc datasource 实现,具有主备,读写分离,动态数据库配置等功能。

TDDL 通过部署在客户端的 jar 包,将用户的 SQL 路由到指定的数据库中。

功能:
数据库主备和动态切换
带权重的读写分离
单线程读重试
集中式数据源信息管理和动态变更
剥离的稳定 jboss 数据源
支持 MySQL 和 Oracle 数据库
基于 JDBC 规范,很容易扩展支持实现 JDBC 规范的数据源
无 Server,Client,Jar 形式存在,应用直连数据库
读写次数,并发度流程控制,动态变更
可分析的日志打印,日志流控,动态变更

【5】Heisenberg

整合 Cobar、TDDL,目前并不活跃,由百度员工个人编写。

功能:
分库分表与应用脱离,分库表如同使用单库表一样
减少 DB 连接数压力
热重启配置
可水平扩容
遵守 MySQL 原生协议
无语言限制,MySQLClient,C,Java等都可以使用
        Heisenberg服务器通过管理命令可以查看,如连接数,线程池,结点等,并可以调整

【6】其他较为小众

Oceanus

用得较少,58 Oceanus 致力于打造一个功能简单、可依赖、易于上手、易于扩展、易于集成的解决方案,甚至是平台化系统。拥抱开源,提供各类插件机制集成其他开源项目,新手可以在几分钟内上手编程,分库分表逻辑不再与业务紧密耦合,扩容有标准模式,减少意外错误的发生 datanode:数据源节点。为一个数据源命名,配置链接属性、报警实现。

主要概念:
namenode:数据源的簇。为一组数据源命名,指定这组数据源的负载方式、访问模式、权重
table:映射表。匹配解析sql中的table名称,命中table标签的name属性值后,会执行约定的路由逻辑
bean:实体。由其他标签引用,实体类必须有无参的构造函数
tracker:监控埋点。涉及到计算和IO的功能点都有监控点,自定义一个埋点实现类,当功能耗时超出预期时会执行其中的回调函数,便于监控和优化系统

Vitess

较全 高大上,和开发中的 Mycat2.0 类似。谷歌开发的数据库中间件,集群基于 ZooKeeper 管理,通过 RPC 方式进行数据处理,总体分为,server,command line,gui监控 3部分。

OneProxy

商业、收费。

OneProxy 分布式中间件,是平民软件完全自主开发的分布式数据访问层,帮助用户在 MySQL/PostgreSQL 集群上快速搭建支持分库分表的分布式数据库中间件,也是一款具有 SQ L白名单(防 SQL 注入)及 IP 白名单功能的 SQL 防火墙软件。采用与 MySQL Proxy 一致的反向协议输出模式,对应用非常简单和透明易用,让用户畏惧的分库分表(Horizontal Partitioning)工作变得极其简单可控。基于 Libevent 机制实现,单个实例可以实现25万的 SQL 转发能力,用一个 OneProxy 节点可以带动整个 MySQL 集群。

DRDS(推荐)

整合云服务,收费、Cobar、TDDL整合,商用,首选。

阿里分布式关系型数据库服务(Distribute Relational Database Service,简称DRDS)是一种水平拆分、可平滑扩缩容、读写分离的在线分布式数据库服务。

  前身为淘宝 TDDL,是近千个应用首选组件,已稳定服务了七年以上。

DBLE(爱可生,推荐)

官网:https://opensource.actionsky.com/

文档:https://actiontech.github.io/dble-docs-cn/0.overview/0.0_overview.html

原文地址:https://www.cnblogs.com/gered/p/12101414.html

时间: 2024-08-21 23:17:50

常用数据库中间件汇总的相关文章

数据库中间件汇总对比

1. 什么要用数据库中间件 传统的架构模式就是 应用连接数据库直接对数据进行访问,这种架构特点就是简单方便. 但是随着目前数据量不断的增大我们就遇到了问题: 单个表数据量太大 单个库数据量太大 单台数据量服务器压力很大 读写速度遇到瓶颈 当面临以上问题时,我们会想到的第一种解决方式就是 向上扩展(SCALE UP) ,不断增加硬件性能.这种方式只能暂时解决问题,当业务量不断增长时还是解决不了问题.特别是淘宝,facebook,youtube这种业务成线性,甚至指数级上升的情况 此时我们不得不依赖

Vertica数据库常用管理命令汇总

1.查询数据库是否有等待 select * from resource_queues where node_name=(select node_name from nodes order by node_name limit 1) order by queue_entry_timestamp desc; 2.查当前数据库执行的sql(包含在队列里等待的) select substr(current_statement, 1, 200), count(1) from sessions where

Mysql中常用的函数汇总

Mysql中常用的函数汇总: 一.数学函数abs(x) 返回x的绝对值bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制)ceiling(x) 返回大于x的最小整数值exp(x) 返回值e(自然对数的底)的x次方floor(x) 返回小于x的最大整数值greatest(x1,x2,...,xn)返回集合中最大的值least(x1,x2,...,xn) 返回集合中最小的值ln(x) 返回x的自然对数log(x,y)返回x的以y为底的对数mod(x,y) 返回x/y的模(余数)pi(

数据库中间件__mycat

摘要:MyCat截至到2015年4月,保守估计已经有超过60个项目在使用,主要应用在电信领域.互联网项目,大部分是交易和管理系统,少量是信息系统.比较大的系统中,数据规模单表单月30亿.本文带你全面了解MyCat. 为什么需要MyCat? 虽然云计算时代,传统数据库存在着先天性的弊端,但是NoSQL数据库又无法将其替代.如果传统数据易于扩展,可切分,就可以避免单机(单库)的性能缺陷. MyCat的目标就是:低成本地将现有的单机数据库和应用平滑迁移到"云"端,解决数据存储和业务规模迅速增

现代Java服务端开发核心技术之分布式数据库中间件MyCAT入门

现代Java服务端开发核心技术之分布式数据库中间件MyCAT入门 现代Java服务端开发核心技术 MyCAT系统环境搭建 如下列表展示了搭建MyCAT运行时环境所需要的软件及其版本说明. 软件名称 软件版本 os centos7.5 JDK JDK1.8u191 MySQL MySQL5.7 Mycat Mycat1.6.5 Navicat Navicat12.08 在非集群的环境下,MyCAT仅仅依赖JDK就可以良好的运行在Windows,Linux,macOS等操作系统之上. CentOS7

现代Java服务端开发核心技术之数据库中间件MyCAT入门

现代Java服务端开发核心技术之数据库中间件MyCAT入门 现代Java服务端开发核心技术 MyCAT系统环境搭建 如下列表展示了搭建MyCAT运行时环境所需要的软件及其版本说明. 软件名称 软件版本 os centos7.5 JDK JDK1.8u191 MySQL MySQL5.7 Mycat Mycat1.6.5 Navicat Navicat12.08 SecureCRT Linux客户端 在非集群的环境下,MyCAT仅仅依赖JDK就可以良好的运行在Windows,Linux,macOS

转:开源数据库中间件MyCat实现数据库读写分离、分表分库指南

系统开发中,数据库是非常重要的一个点.除了程序的本身的优化,如:SQL语句优化.代码优化,数据库的处理本身优化也是非常重要的.主从.热备.分表分库等都是系统发展迟早会遇到的技术问题问题.Mycat是一个广受好评的数据库中间件,已经在很多产品上进行使用了.希望通过这篇文章的介绍,能学会Mycat的使用. 安装 Mycat官网:http://www.mycat.io/可以了解下Mycat的背景和应用情况,这样使用起来比较有信心. Mycat下载地址:http://dl.mycat.io/官网有个文档

数据库中间件详解 | 珍藏版

1 数据库拆分过程及挑战 互联网当下的数据库拆分过程基本遵循的顺序是:垂直拆分.读写分离.分库分表(水平拆分).每个拆分过程都能解决业务上的一些问题,但同时也面临了一些挑战. 1.1 垂直拆分 对于一个刚上线的互联网项目来说,由于前期活跃用户数量并不多,并发量也相对较小,所以此时企业一般都会选择将所有数据存放在一个数据库 中进行访问操作.举例来说,对于一个电商系统,其用户模块和产品模块的表刚开始都是位于一个库中. 其中:user.user_account表属于用户模块,product_categ

Mycat数据库中间件上手实践及分布式事务和读写分离实现

前言 现在微服务真是火得不行不行的, 最近开始找工作, 打开Boss直聘一看, 乖乖, 整页整页全是要求会整微服务的, 其中不乏很多小微企业, 搞得好像微服务就是万能的似的, 真不知道是中了谁的毒. 微服务肯定是个好东西, 优点很多, 百度一下一大把, 这里我们就不说了, 先讨论讨论微服务必然会带来几个问题. 通信问题, 微服务间是肯定需要通信的, 不能像以前一样调个方法搞定了. 分布式事务问题暨数据一致性问题, 微服务之间DB操作无法放在一个数据库事务中了. 维护问题, 微服务的维护难度必然是