您当前的位置:首页 > 电脑百科 > 数据库 > 百科

这些开源的分库分表中间件,你们都知道吗?

时间:2023-03-10 15:15:07  来源:今日头条  作者:自学编程之道

 

当我们的数据达到一定的量级之后,单表甚至单库都无法支撑之时,那么,便会涉及到分库分表。分库分表的方式有多种,开源的解决方案也很多,都是围绕客户端和代理两种模式来处理的。

客户端的组件比较多,很多人也在用,这里就分享一些代理模式的开源中间件

Apache ShardingSphere

Apache ShardingSphere 是一款分布式的数据库生态系统, 可以将任意数据库转换为分布式数据库,并通过数据分片、弹性伸缩、加密等能力对原有数据库进行增强。由 ShardingSphere-JDBC 和 ShardingSphere-Proxy 这 2 款既能够独立部署,又支持混合部署配合使用的产品组成。 它们均提供标准化的基于数据库作为存储节点的增量功能,可适用于如 JAVA 同构、异构语言、云原生等各种多样化的应用场景。

ShardingSphere-JDBC 定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额外服务。 它使用客户端直连数据库,以 jar 包形式提供服务,无需额外部署和依赖。
ShardingSphere-Proxy 定位为透明化的数据库代理端,通过实现数据库二进制协议,对异构语言提供支持。 目前提供 MySQL 和 PostgreSQL 协议,透明化数据库操作,对 DBA 更加友好。

 

 

 

 

开源地址:https://github.com/apache/shardingsphere.git。

Vitess

Vitess是一个用于部署、扩展和管理大型MySQL实例集群的数据库解决方案。Vitess集Mysql数据库的很多重要特性和NoSQL数据库的可扩展性于一体。它的架构设计使得您可以像在物理机上一样在公共云或私有云架构中有效运行。它结合并扩展了许多重要的MySQL功能,同时兼具NoSQL数据库的可扩展性。

 

 

 

 

代码地址:https://github.com/vitessio/vitess.git。

Gaea

Gaea是小米中国区电商研发部研发的基于mysql协议的数据库中间件,目前在小米商城大陆和海外得到广泛使用,包括订单、社区、活动等多个业务。

具备的功能:

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

 

 

多集群
多租户
SQL透明转发
慢SQL指纹
错误SQL指纹
注解路由
慢日志
读写分离,从库负载均衡
自定义SQL拦截与过滤
连接池
配置热加载
IP/IP段白名单
全局序列号
分库: 支持mycat分库方式
分表: 支持kingshard分表方式
聚合函数: 支持max、min、sum、count、group by、order by等
join: 支持分片表和全局表的join、支持多个分片表但是路由规则相同的join
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

 

 

 

 

 

 

 

开源地址:https://github.com/XiaoMi/Gaea.git。

MaxScale

MaxScale是MariDB开发的一个数据中间件,能够实现读写分离,并且可以根据主从状态实现写库的自动切换。

 

 

开源地址:https://github.com/mariadb-corporation/MaxScale.git。

Mycat

Mycat是基于开源cobar演变而来,支持SQL92标准,遵守Mysql原生协议,跨语言,跨平台,跨数据库的通用中间件代理。

 

 

源码地址:https://github.com/MyCATApache/Mycat-Server.git。

除了上面几个目前还是维护的几个项目外,也还有一些其他公司开源的解决方案:

阿里巴巴Cobar:https://github.com/alibaba/cobar.git。

360Atlas::https://github.com/Qihoo360/Atlas.git。

另外,也还有很多开源的客户端的解决方案。当然,在分库分表之后,又会衍生出其它问题,现在如今,也有很多厂家提供了强大的分布式数据库,来帮我处理了分库分表的麻烦。



Tags:分库分表   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
当我们的数据达到一定的量级之后,单表甚至单库都无法支撑之时,那么,便会涉及到分库分表。分库分表的方式有多种,开源的解决方案也很多,都是围绕客户端和代理两种模式来处理的。...【详细内容】
2023-03-10  Tags: 分库分表  点击:(0)  评论:(0)  加入收藏
在大型的数据应用场景下,MySQL作为一个关系型数据库管理系统(RDBMS)是非常受欢迎的。然而,MySQL在处理大量数据时会遇到瓶颈,为了解决这个问题,分库分表是一种有效的解决方案。分...【详细内容】
2023-02-24  Tags: 分库分表  点击:(4)  评论:(0)  加入收藏
在互联网大厂,分库分表是标配,作为跳槽季,分库分表肯定也是面试的热点,今天我们就来聊聊如何分库分表。本文大纲 什么是分库分表? 如何切分库和表? 为什么要分库分表? 切分策略 分...【详细内容】
2023-02-21  Tags: 分库分表  点击:(20)  评论:(0)  加入收藏
对于toC的业务来说,需要选择用户属性如 user_id 作为分片键。那问题来了,对于订单表来说,选择了user_id作为分片键以后如何查看订单详情呢?比如下面这样一条SQL:SELECT * FROM T_...【详细内容】
2022-12-09  Tags: 分库分表  点击:(69)  评论:(0)  加入收藏
基于数据库的实现方案 UUID 获取系统当前时间 snowflake 算法问: 分库分表之后,id 主键如何处理?面试官心理分析其实这是分库分表之后你必然要面对的一个问题,就是 id 咋生成?因...【详细内容】
2022-09-23  Tags: 分库分表  点击:(58)  评论:(0)  加入收藏
概述随着数据库中数据量日益增多,不得进行分库分表,在分库后将数据分布到不同的数据库实例(甚至物理机器)上,以达到降低数据量,提高系统的处理能力,但是这种架构也带来其他问题,比如...【详细内容】
2022-09-10  Tags: 分库分表  点击:(277)  评论:(0)  加入收藏
一个挺着啤酒肚,身穿格子衫,发际线严重后移的中年男子,手拿着保温杯,胳膊夹着MacBook向你走来,看样子是架构师级别。面试开始,直入正题。面试官:小伙子,看到你的简历上面写了项目中...【详细内容】
2022-01-12  Tags: 分库分表  点击:(353)  评论:(0)  加入收藏
分库分表介绍:分库分表的目的是为了系统高并发、高可用。分库和年发表是两回事,两个概念,都是为了防止数据库服务因为同一时间内访问量过大导致宕机而设计的一种应对策略。一、...【详细内容】
2021-06-28  Tags: 分库分表  点击:(305)  评论:(0)  加入收藏
Sharding-JDBC背景:出于工作的需要,非常需要详细了解数据库分表分库的内容,这样便于选择版本,了解原理及性能,做出更好的选择。Sharding-JDBC是ShardingSphere的第一个产品,也是Sh...【详细内容】
2021-05-14  Tags: 分库分表  点击:(378)  评论:(0)  加入收藏
在文章开头先抛几个问题: 什么时候才需要分库分表呢?我们的评判标准是什么? 一张表存储了多少数据的时候,才需要考虑分库分表? 数据增长速度很快,每天产生多少数据,才需要考虑做分...【详细内容】
2021-04-07  Tags: 分库分表  点击:(275)  评论:(0)  加入收藏
▌简易百科推荐
我们使用了Druid、MyBatis Plus和Sharding JDBC来实现分表功能。其中,Druid是一个高性能的数据库连接池,MyBatis Plus是一个基于MyBatis的ORM框架,Sharding JDBC是一个分库分表...【详细内容】
2023-03-13  摆脱格子衫  今日头条  Tags:分表   点击:(1)  评论:(0)  加入收藏
如果是 app 端的查询,不建议设计多字段排序,因为在多字段排序的环境下,服务端在进行多条件的过滤查询时,可能会把有效的数据给过滤掉,如果无法避开,尽量将多个排序字段合并到一个...【详细内容】
2023-03-13  鸭血粉丝Tang  微信公众号  Tags:数据重复   点击:(1)  评论:(0)  加入收藏
当我们的数据达到一定的量级之后,单表甚至单库都无法支撑之时,那么,便会涉及到分库分表。分库分表的方式有多种,开源的解决方案也很多,都是围绕客户端和代理两种模式来处理的。...【详细内容】
2023-03-10  自学编程之道  今日头条  Tags:分库分表   点击:(0)  评论:(0)  加入收藏
上篇文章介绍了Mongo读取数据的策略(​​MongoDB读数据策略​​),主要是readconcern、readpreference两参数,其中readconcern作用于服务端,决定了什么时候能读取到数据;readprefer...【详细内容】
2023-03-09  云数据库技术  微信公众号  Tags:MongoDB   点击:(6)  评论:(0)  加入收藏
数据库在每个企业都占据的非常重要的位置,它存储着一个公司的命脉。对于数据库的管理也非常的复杂多变,很多公司都有专业的DBA团队在管理。但是,不论有无DBA,对数据库的操作都...【详细内容】
2023-03-07  运维开发故事  微信公众号  Tags:SQL   点击:(8)  评论:(0)  加入收藏
01引言数据库管理员(DBA)承担着保障生产数据库稳定运行的职责,在完成生产变更、事件处置等工作的同时,还应该在哪些方面持续提升自身能力呢?本文从银行DBA的视角,谈一谈“DBA的...【详细内容】
2023-03-07  匠心独运维妙维效  微信公众号  Tags:DBA   点击:(8)  评论:(0)  加入收藏
一、背景在《​​# 分布式锁上-初探​​》中有提到一个分布式锁应具备的功能特点中有避免死锁这一条:如果某个客户端获得锁之后处理时间超过最大约定时间,或者持锁期间内发生...【详细内容】
2023-03-07  架构染色  微信公众号  Tags:分布式锁   点击:(7)  评论:(0)  加入收藏
你是否因为写出死锁导致半夜加班,扣绩效?你是否为小白程序员,还没有接触过并发编程不知道什么死锁,你是否希望通过并发编程这块突破自己的瓶颈,在新的一年挑战高薪?那么Java并发编...【详细内容】
2023-03-07    今日头条  Tags:死锁   点击:(10)  评论:(0)  加入收藏
数据库的发展阶段划分数据库(Database)是指长期保存在计算机的存储设备上并按照某种模型组织起来的,可以被各种用户或应用共享的数据的集合。数据库管理系统(Database Managemen...【详细内容】
2023-03-07  架构师技术联盟  微信公众号  Tags:数据库   点击:(8)  评论:(0)  加入收藏
当系统空间使用量过大需要清理空间或者清理某个文件时,有时会出现执行了删除命令之后磁盘空间并没有释放的情况。很多人首次遇到该情况时会比较困惑,在考虑是不是像windows系...【详细内容】
2023-03-06  数据库干货铺  今日头条  Tags:磁盘空间   点击:(11)  评论:(0)  加入收藏
站内最新
站内热门
站内头条