MongoDB 并发更新的疑惑
最近因为接到爬虫的项目而使用到了MongoDB
(之前没用过)
这次项目是把 Websocket
传输过来的数据而更新 MongoDB
里的数据
单一的 Websocket
传输是没有什么大碍,毕竟 update
就行,
问题是现在有两个 Websocket
传输导致有两次的数据被传输了。
比如:
刚开始 A进程
连接 Websocket
地址并监听数据并更新MongoDB
过一段时间(因为 A进程
只能维持 20分钟左右,官方会强制踢下线)
所以 我这里弄了计时器 等到 A进程
到 19分钟左右的时候B进程
会准备连接 Websocket
并监听数据并更新MongoDB
这里用计时器是因为 连接
Websocket
的步骤大概花 20秒左右,
想避免这20秒内的数据丢失而做了计时器,达到无缝连接的效果。
这时候A进程
和B进程
都会连接 Websocket
所以导致两个进程会同时发送同样的数据到 MongoDB
里,更新了两次。
这种同时更新的情况会不会出问题呢?大家是怎么解决的呢?
因为数据传输太快太频,我这里都不知道怎么测试了。
之前用upsert
来测试的时候 并发的数据是不管用,直接insert
两个记录。
mongodb里有version的,能通过判断version来避免insert吗?
当然了,前提是你要得到version。