【发布时间】:2013-08-06 16:31:38
【问题描述】:
我正在使用 Google App Engine 和 Datastore 开发我的第一个网络应用程序。发展中的 过程非常简单,但我有一个巨大的困境。我想为 用户状态(如 Facebook 的“点赞”)。
所以我创建了一个具有“likeIndex”属性的“状态”实体(我只想总结总喜欢)。现在我想确保当多个用户同时给状态点赞时,我不会遇到并发问题。
我是否从我对 Datastore 的短暂体验中了解到流程是这样的:
- (更新函数调用时)userA 和 userB 将采用相同版本的 statusA 对象,其中 likeIndex = 0 - 调用同时发生。
- userA 将生成 likeIndex++;
- userA 将使用 likeIndex=1 更新 statusA。
- userB 将生成 likeIndex++;
- userB 将更新 statusA likeIndex=1。
我没有在 Datastore statusA 中拥有 likeIndes=2 的对象,而是拥有 likeIndex=1 的对象。 如何处理更新过程以避免并发问题。这听起来简单而常见的问题,所以我很惊讶我很难在网上找到解决方案。 (我正在与 JPA 合作)
谢谢!
【问题讨论】:
标签: google-app-engine jpa google-cloud-datastore