多笔记本离线 PostgreSQL 数据库同步问题: UUID vs 自增主键

139 天前
 Gabrielle70

各位数据库专家好, 我目前在开发一个系统,其中有一个特殊的数据同步场景需要寻求建议。 系统架构如下:

1 个中央主数据库( PostgreSQL ) N 台笔记本电脑,每台都安装了本地 PostgreSQL 数据库 笔记本电脑可能会离线工作,每天都会产生新记录 笔记本需要定期与主数据库进行双向同步

我现在面临一个主键设计的选择问题:是使用 UUID 作为主键,还是继续使用自增 ID ? 我的初步想法是使用 UUID 可能更合适,因为:

每台笔记本可以独立生成全局唯一 ID ,不会与其他设备产生冲突 同步时不需要处理主键冲突问题 不需要复杂的主键映射或转换机制

而如果使用自增 ID ,我担心会遇到以下问题:

每台笔记本生成的自增 ID 会重复 同步时需要解决 ID 冲突 可能需要额外的 ID 映射表

请问各位有没有处理过类似的分布式数据库同步场景? UUID 是否确实是更好的选择?或者有其他更优方案?在性能、存储空间和同步复杂度之间,如何做出权衡? 感谢分享您的经验和建议!

2354 次点击
所在节点    PostgreSQL
17 条回复
concernedz
139 天前
我记得可以生成顺序的 uuid 吧
dbskcnc
139 天前
uuidv7 不折腾
laikick
139 天前
雪花不是更好吗?
viking602
139 天前
uuid 或者 snowid
fffq
139 天前
各笔记本是全量同步?
viking602
139 天前
mark2025
139 天前
新的 uuidv7
sardina
139 天前
uuid v7 是基于时间戳顺序的,再加个 byte 标记设备 id ,这样就不会重复了
conn457567
139 天前
mongfb 的 objectID ,hutool 里面有一个实现也非常不错
NoKey
139 天前
看一下设备量,去看看雪花算法,可以考虑考虑
ho121
139 天前
数据量不大的话,自增主键也不是不可以,每个数据库主键范围不重叠就行
shiny
139 天前
uuidv7 ,冲突概率极低
mightybruce
139 天前
用笔记本电脑来做 postgresql 的存储 真是有脑洞的想法
SGL
139 天前
@mightybruce 这个场景听上去很封闭很涉密的样子
yangg
139 天前
bxb100
139 天前
为啥不用 crdt
gainsurier
139 天前
我怎么在 d 版也刷到了哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1126245

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX