首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GAE Datastore同时更新记录的字段

问GAE Datastore同时更新记录的字段
EN

Stack Overflow用户
提问于 2016-10-12 16:07:29
回答 1查看 66关注 0票数 2

理论场景:我有一个电子商务网站,保存在GAE数据仓库的库存。每个记录都包含项目的名称和计数。这个商店的流量很小,库存也很大,所以多个客户不太可能同时购买同一项;这样我们就不会关注数据存储限制--每秒更新同一条记录几次--持续一段时间。

在两个客户同时购买同一商品的情况下,我如何正确地更新项目的记录?至关重要的是,我们必须对每个项目保持正确的计数。

在mongo世界里,我会使用类似于$inc操作的东西。您将如何为GAE Datastore处理此场景?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-10-13 13:41:35

云数据存储事务使用乐观并发,因此可以同时尝试两个事务。如果实体发生变化,就会失败--此时您只需重新尝试失败的事务。

例如,在Python中,您可以在事务装饰器中指定重试次数。

示例代码:

代码语言:javascript
复制
from google.appengine.ext import ndb

...

@ndb.transactional(retries=5)
def inc_item_count(item_key, count_purchased):
       item = item_key.get()
       item.count_purchased += count_purchased
       item.put()

       return True

网络规模?

如果超出了此解决方案的工作范围,您将希望探索基于任务队列的系统,或者转向切分计数器每项计数器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40003295

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档