Python-基于UUID的分片

标签 python python-2.7 uuid sharding

我正在开发数据库分片,我必须在 Python 代码中决定数据库存储桶(应用程序分片)。我有 3 个不同的数据库存储桶和使用的用户 ID,我必须对其进行分片。用户id由uuid.uuid4()生成。我如何使用这些输入进行分片? 我尝试将第一个 UUID 转换为 int,然后取模。但模数运算符失败了。

最佳答案

模数运算符应该没问题:

>>> int(uuid.uuid4()) % 3
2L
>>> int(uuid.uuid4()) % 3
1L
>>> int(uuid.uuid4()) % 3
2L
>>> int(uuid.uuid4()) % 3
1L
>>> int(uuid.uuid4()) % 3
1L
>>> int(uuid.uuid4()) % 3
0L
>>> int(uuid.uuid4()) % 3
1L

但是为了让您的设计面向 future ,我建议您实际编写至少 16 个分片的代码,例如使用 16 个不同的主机名指向 3 个不同的后端主机:

myhostname00 IN CNAME backend01
myhostname01 IN CNAME backend01
myhostname02 IN CNAME backend01
myhostname03 IN CNAME backend01
myhostname04 IN CNAME backend01
myhostname05 IN CNAME backend01
myhostname06 IN CNAME backend02
myhostname07 IN CNAME backend02
myhostname08 IN CNAME backend02
myhostname09 IN CNAME backend02
myhostname10 IN CNAME backend02
myhostname11 IN CNAME backend03
myhostname12 IN CNAME backend03
myhostname13 IN CNAME backend03
myhostname14 IN CNAME backend03
myhostname15 IN CNAME backend03

这样您将来就能够创建更多后端服务器并将用户移至那里,而无需更改代码。如果您的后端服务器性能比其他服务器低或低,您的用户分布甚至可能不均匀。

关于Python-基于UUID的分片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50091548/

相关文章:

python - 使用 win32com 模块的 Python 2.7 中的 Qualcomm QPST 自动化服务器

python - 在枚举中搜索值

php - 替代 MySQL 的 UUID Version 1 函数?

Cassandra:生成唯一 ID?

python - Keras 中预测数据的逆比例

python - 使用 Flask 上传文件夹和文件

python - 使用正则表达式 python 删除德语中的女性结尾

python - 获取与 Voronoi 区域关联的点 (scipy.spatial.Voronoi)

python - 在脚本中规避Python错误

c++ - 如何使用 boost::uuids::uuid 转换为 128/64 位数字?