_id是主键,不就已经是唯一了,为什么还要有uuid ?

来源:9-4 消息模块数据模型设计

weixin_慕斯4428306

2021-07-10

_id是主键,不就已经是唯一了,为什么还要有uuid ?

写回答

1回答

神思者

2021-07-10

确实uuid暂时没用上,可以去掉

1
1
weixin_慕数据3524288
老师我是否可以这样理解,如果message_ref中主键的值是message中的uuid值,那uuid就有用了。但是您设计的message_ref中主键的值是message中的id值,那uuid值就多余了。 像您说的那种特殊情况,假设消息队列是work模式(排他): (1)用户A消费了消息a,还没来得及将响应写入message_ref集合,也没有给消息队列响应ack应答,消息队列中不会删除消息a,消息a可以继续让其他用户消费; (2)所以用户B也可以从消息队列中消费消息a。 (3)此时用户AB消费的消息是一样的,所以这条消息文档的id(或者uuid)是一样的,谁先将自己的响应消息写入message_ref集合,谁就成功消费了这条信息。 (4)假设用户A先将响应消息写入了message_ref集合,此时这条响应消息的id(或者uuid)就是消息a的id(或者uuid); (5)当用户B再尝试将响应写入message_ref集合时,会出现主键冲突,所以无法将响应消息写入message_ref集合。 (6)最后结果是用户A成功消费消息a,用户B失败。 而uuid有没有用取决于message_ref集合的主键用的是message集合中的id还是uuid。 请问老师我的理解是否正确?
2024-01-12
共1条回复

SpringBoot 在线协同办公小程序开发 全栈式项目实战

未来趋势型业务 + 前后端综合技术栈 + 惊艳的细节打磨

1798 学习 · 1915 问题

查看课程