分布式数据库的主键应该怎么设计?

[数据库技术] 季雨林 2020/2/16 11:37:05

今日看到一则关于分布式数据库的设计讨论。主要纠结点在于分布式数据库的主键如何设计:


1,有人喜欢用int作为主键,但是这个方案被一部分人因为分布式需求而否决了

2,有人喜欢用uuid(),很显然uuid存在乱序插入的缺陷,虽然可用,但是大家都知道缺点

3,有人想用有序uuid,兼顾有序特点和分布式特点,看起来不错的方案。

4,还有人想用uuid_short,兼顾一下压缩索引空间大小


总的来说,我的建议是:根据实际情况,按需设计就好!

int 自增并不是不能用于支持分布式设计,而是需要预留自增跨度。比如第一节点从 1 自增,自增步长为 32 (这里就意味着预留了 32 个数据库扩容节点的空间)

uuid 是否需要有序,重点在于写入性能。采用有序是为了保证落盘顺序为“尾部追加”,这时候如果使用了时间戳列作为聚集索引,那么 id 列是否就不需要使用有序了(优缺点:浪费一个索引的空间损失,但是 id 规则会简化)。

uuid_short 相对于uuid会有所提升。我没有实际没用过,所以暂时可以推断一个结论:大致感觉就是省了一部分索引占用的硬盘空间,查询时候也省了一点内存,会有一定的提升。


原文地址: https://www.opengps.cn/Blog/View.aspx?id=623 文章的更新编辑依此链接为准。欢迎关注源站原创文章!

评论

暂无评论!

发表评论:

用于接收作者回复信息
点击更换验证码 - openGPS提示