你真的懂分库分表吗

Posted 林老师带你学编程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了你真的懂分库分表吗相关的知识,希望对你有一定的参考价值。

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

你真的懂分库分表吗

分表

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

你真的懂分库分表吗

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

你真的懂分库分表吗

分库

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

你真的懂分库分表吗

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

你真的懂分库分表吗

分库分表

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

你真的懂分库分表吗

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

你真的懂分库分表吗
你真的懂分库分表吗

分库分表缺点

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

你真的懂分库分表吗
你真的懂分库分表吗

高可用

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

你真的懂分库分表吗

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

你真的懂分库分表吗

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

推荐阅读

想要更多干货、技术猛料的孩子,快点拿起手机扫码关注我,我在这里等你哦~

林老师带你学编程

长按二维码关注

以上是关于你真的懂分库分表吗的主要内容,如果未能解决你的问题,请参考以下文章

分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择

分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择

分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择

分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择

分库分表

无限扩容真的能通过分库分表实现吗?