一种分表的想法

说道数据存储,就不得不提到mysql,但是当要存储的数据达到一定的数量级,比如说千万,mysql的性能就能明显的感觉到下降,针对这个情况,公认的方法一般都是归档啊分表啊这种,或者直接把数据库进行做分布式?

想把数据存储好,方便使用,比如,直接存取,插入,更新,搜索各种,可以使用这个方法:把key做hash,然后用hash获取到实际使用的表名,再对着这个表进行具体的操作。

当然这也有影响,比如我现在要统计全部数据中,具有某种属性的所有数据的某些信息,就要把所有的表都遍历一次。

不过相对来说,还是觉得这样操作会比较好,可以让控制住表的规模。


相关的,还有一个名词,叫一致性hash。

感觉增加节点的流程应该是这样的:

1.增加节点,并把数据复制进来

2.打开节点

3.把旧节点的数据做清理



最近又想了想,觉得这样会涉及一个数据迁移的问题,或者说,多次hash以后,如果不主动进行数据迁移的话,那么重新获得之前的数据在哪个节点是很难的。

这里我想到了分代的思想,既第一步用key算出这个key所属的代,然后在到这个代上进行hash获得这一代具体是哪个节点,然后再到对应的节点上取数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值