分库分表的拆分的那点事

目录

如何分?

第一种方式

解决方案

缺陷

第二种方式

解决方案

总结

复杂查询

结语


如何分好库分好表很重要,关系到以后的查询效率

如何分?

一般会有个分片键,sharding column。在之前的文章中已经有介绍类似的做法:取模,以及按照范围去分类。

第一种方式

取模:数据会均匀,但是不方便查询

按范围去分:容易查询,却存在数据热点。

解决方案

先按范围去分,然后分库,(方便查询)再取模,分表(数据均匀)

缺陷

比如按商家这个范围去分,我们可以根据商家id再hash取模,找到某个库,但是你还要在很多张表进行查找哦。相当慢,omg

而且只适用只有一个范围条件,多个基本就处理不了。

第二种方式

看了飞哥的文章,真的是,omg,我的天,大神级人物,写的文章就是牛

文章地址点这里

看到里面提到了两个方法,总结起来就是冗余。

解决方案

No.1

我的天,基本就是冗余了你所有想查询的字段,比如冗余商家id,订单id等等,如果你要查询的话可以到不同的表进行查询。

确实很方便,就是感觉冗余的有点high多,哈哈

 

No.2

有没有设曾相识的感觉,就是索引和数据分开。也有那种es倒排索引的feel。

 

总结

基本都是冗余索引,方便查询对应的id进行特定的查询,而不是全表查询。维护冗余的代价也是高的,比如修改,删除等等,这些都得跟着改。

 

复杂查询

像飞哥文章中提到的,像淘宝那种n多个条件查询的。这时需要借助es强大搜索能力,那么储存呢?可以用到hase数据库。

 

结语

任何技术脱离业务来谈都是扯淡,所以大家要找到合适的方案来搞,而不是觉得它很牛逼所以用了这个技术。像我们刚刚说的es+sc+hbase,其开发到维护成本都是very high

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值