zoukankan      html  css  js  c++  java
  • 一种分库分表的方法:哈希分库分表

    这是以前做的笔记,前东家的数据库分库分表策略,感觉挺有借鉴价值。


    假设数据库数量为10

    分库分表键为某个ID:
    hash = Md5(key).subString(0,4);
    bucket_index = hash.subString(0,3);
    table_index = hash.subString(3,4);

    解释
    bucket_index,取3位16进制,取值范围是0 - 4095,对应某个数据库
    table_index,取1位十六进制,取值范围是0 - 15,对应哪个分表

    这样做的好处
    1、当数据移植的时候只要锁定1/4096的记录即可,如果想继续减少影响的数据规模,可以增加bucket_index的取值范围;
    2、通过hash,数据分布均匀。

    这样做的缺点
    1、无法区分出冷热数据;适应不区分冷热数据的服务场景;
    2、线下定位某一条记录在哪里会比较麻烦,需要自己写工具对应;不过这个倒没太大关系。

  • 相关阅读:
    Linux基础命令(一)
    You've made choice
    protege推理
    字符编码
    第二次作业
    数据类型-集合set
    数据类型-元组&字典
    数据类型-列表
    数据类型-数值&字符串
    流程控制之for循环
  • 原文地址:https://www.cnblogs.com/liushijie/p/5481253.html
Copyright © 2011-2022 走看看