说明
辅助在mongo中的分片操作。根据某些规则,从某个字段计算出对应的存储分片。
内容
1 规则
- 规则1:Range规则。要求分片计算的字段是一个非空数值型,根据起点和步长自动计算分片。可以考虑以百万作为步长。
- 规则2:Hash规则。要求字段非空,然后根据分片数量进行取模。
2 函数
def range_shard(x, start_id =0, step = 1000000):
return int( (x - start_id)//step)
range_shard(3999999)
---
3
import pandas as pd
# 哈希分片
def hash_shard(x, shard_num = 100):
if not isinstance(x,str):
res = x % shard_num
else:
s_sum = pd.Series(list(x)).apply(ord).sum()
res = s_sum % shard_num
return res
hash_shard(3)
3
hash_shard('ssd11dsafd32')
43