分布式 | DBLE 分区算法系列总结

作者:管长龙

我们已经通过之前的六篇文章,介绍了 DBLE 和 MyCat 常见的六种分片算法,那么我们来做个总结吧!


  • DBLE 分片算法 MyCat分片算法 DBLE MyCat
    hash 固定分片 hash 取模 分片数最大支持 2880 count 和 length 两个向量的点乘积恒等于 1024
    stringhash 截取数字 hash 解析 分片数最大支持 2880 count 和 length 两个向量的点乘积恒等于 1024
    enum 分片枚举
    numberrange 范围约定 写具体的数值 可用 K 或 M 等数量替换符
    patternrange 取模范围约束
    date 按日期(天)分片

第七种 DBLE 分片算法 — jumpStringHash

除了以上六种常见的分片算法之外,DBLE 还独有一种分片算法:跳跃字符串算法

具体配置如下:

#rule.xml

        2
        0:2

partitionCont:分片数量

hashSlice:分片截取长度

该算法来自于 Google 的一篇文章《A Fast, Minimal Memory, Consistent Hash Algorithm》其核心思想是通过概率分布的方法将一个 hash 值在每个节点分布的概率变成 1/n,并且可以通过更简便的方法可以计算得出,而且分布也更加均匀。

注意事项:分片字段值为NULL时,数据恒落在0号节点之上;当真实存在于mysql的字段值为not null的时候,报错 “Sharding column can’t be null when the table in MySQL column is not null”

至此我们 DBLE 中支持的七种分片算法就介绍完了,相信读者朋友对 DBLE 的使用增加的熟悉,

系列文章的最后

完整分区实例




    
        
            id
            enum
        
    

    
        
            id
            rangeLong
        
    

    
        
            id
            hashLong
        
    

    
        
            id
            hashLong2
        
    

    
        
            id
            hashLong3
        
    

    
        
            id
            hashmod
        
    

    
        
            id
            hashString
        
    

    
        
            calldate
            partbydate
        
    

    
        
            id
            pattern
        
    


    
    
        partition-hash-int.txt
        0
        0
    

    
    
        autopartition-long.txt
        0
    

    
    
    
        8
        128
        
    

    
    
    
        2
        512
        
    

    
    
    
        2,1
        256,512
        
    

    
    
        4
        1
    

    
    
        8
        128
        0:2
        
    

    
    
    
        yyyy-MM-dd
        2015-01-01
        2015-01-31
         
        10
        0
    

    
    
    
        partition-pattern.txt
        1024
        0
    

你可能感兴趣的:(DBLE,Mycat,DBLE,分布式,开源,中间件)