前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >分库分表技术简述

分库分表技术简述

作者头像
林老师带你学编程
发布2019-05-26 19:24:07
9350
发布2019-05-26 19:24:07
举报
文章被收录于专栏:强仔仔强仔仔

今天和大家聊聊分库分表技术,大家面试的时候肯定都有这样的经历,面试官动不动就问分库分表、高并发、虚拟机、分布式事务等等这些高大上的技术。所以我们还是有必要要了解一下的。

分表:

分表的意思是在一个库里面进行表拆分,很常见的就是日志表了,分表的规则有按天的、也有按月的。

这种分表技术是早期的技术了,现在基本没这样做了,在某些特殊的场景下面可能会出现。而且这样的分表技术一般都是通过代码来进行的,需要自己开发,很少有第三方集成好的。

分库:

分库和分表就不一样了,分表是所有数据都在一个库里面,分库则不同,不同的库存放的表都是一样的。

这种方式有点类似Mysql的主从数据库,主库和从库的数据都是一样的。在数据量大的情况下,查询速度还是会特别慢,因为每一个库表的数据量是一样的。

分库分表:

整合上面两种方式的特点,就出现了第三种方式:分库分表,分库的同时进行分表。

分库分表的特点就是如上图所示,每一个库中表都存一部分的数据,这样表不管有多大,我们都可以通过增加库来负载这个数据量。这边需要注意的是,数据添加和获取都需要遵守一定的规则,常见的有散列、取模、范围区间等等。我们可以通过一个第三方的框架来实现这个功能,比如mycat。

分库分表缺点:

采用分库分表方式有一个缺点,如果我们仅仅是查询某一个数据,可以很快速的确定某一个库,然后查询返回数据。但是如果做数据统计,这个时候效率就会慢的惊人。因为统计的话,需要一个一个库里面去遍历,在数据量大的情况下,还不如一个表里面数据查询好。这边的解决方案是将数据汇总到一个仓库中,在这个仓库中进行统计,仓库如果不是海量数据的情况下,可以用es来做,是海量数据可以升级为大数据。

高可用:

统计的问题解决了,后期要做的就是如何实现高可用,这边的高可用指的是,尽可能保证数据库可用。这边我们首先要做的就是每一个库都做一个从库,如果主库出现问题,从库可以马上接替主库,还可以做读写分离,增加数据库的负载量。

到这一步之后,我们这个体系的瓶颈就跑到mycat这边了,如果mycat挂了,那所有的库都无法访问了,这显然是无法忍受的,所以我们mycat也是需要高可用的,启动多个mycat,通过框架进行负载均衡即可。

总结:

架构升级都是一步一步来的,在用户量小的情况下,没必要一下子就部署高可用版本的方案,资源利用不到本身就是一种浪费。一般前期分库分表,统计和高可用的方案在数据量小的情况下可以不采用,后期升级的时候加上去就可以了。好了今天的内容就介绍到这边了,谢谢大家的阅读~

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年09月20日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档