我正在使用 Google App Engine 和 Datastore 开发我的第一个 Web 应用程序。开发过程非常简单,但我有一个巨大的困境。我想为用户的状态创建一个“喜欢”机制(如 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 合作)
谢谢!