1
1
使用祖先密钥来获得强一致性有一个限制:每个实体组每秒只能更新一次。解决这个问题的一种方法是分割实体组。 Sharding Counters 描述了该技术。这是一篇旧文章,但据我所知,建议仍然很合理。 |
2
1
再加上Dave的答案,这是要检查的第一件事。 有一件事没有很好的文档记录并且可能有点令人惊讶,那就是争用也可能是由读取操作引起的,而不仅仅是由写入操作引起的。
每当事务开始时,被访问的实体组(通过读或写操作,无关紧要)都被标记为这样。这个
注: 这一论点是 不是
增加混乱的是事务的自动重试,这可能发生在实际写入冲突或纯访问争用之后。在最终用户看来,这些重试可能是某些代码路径的可疑重复执行,我怀疑这可以解释您的报告
|
3
0
示例中没有任何内容可以确保代码只被调用一次。
请记住,即使您确实使用了事务,在事务成功完成之前,您也不知道其他人是否尝试执行写操作。如果您试图在数据存储外部执行某些操作(例如,向外部系统发出http请求),这一点很重要,因为您可能会看到来自事务的http请求最终会因并发修改异常而失败。 |
TrickiDicki · 如何将数据加载到本地测试环境数据存储中? 7 年前 |
subcoder · Ndb强一致性和频繁写入 7 年前 |
Cheok Yan Cheng · 没有物理实体作为父密钥是否有副作用 9 年前 |
Uri · 如何从Google App Engine NDB更新查询? 9 年前 |
Randy Tang · 谷歌应用引擎:ndb排序属性 11 年前 |
Oscar Parra · 日期时间字段出现ndb查询错误-谷歌应用程序引擎 11 年前 |