【发布时间】:2017-12-22 11:32:47
【问题描述】:
我已经对此进行了足够的搜索,但还没有找到答案。所以我问。
写入吞吐量限制约为每秒一个事务 在单个实体组内。
现在假设我有一个实体用户和另一个实体汽车。他们有共同的父母。所以 User+Car+Their_Parent 是一个实体组。对吧?
假设在数据存储区中,用户和汽车各有一百万个实例/行。
如果我触发事务查询以更新数据存储中的实例/行。
我的困惑是有多少实体组实例因应用 Google DataStore 的写入限制而被锁定?
A.用户 + 汽车(总共有 2000 万个实例)
B.只有 1 个用户 + 汽车实例? (1 个用户行和 1 个汽车行)
在数据库用语中,用户是一个实体种类/表。整个也是如此 表/种类因 1 个写入操作或仅一个实例/行而被锁定 1 次写操作被锁定?
如果 A 是这种情况,这是否意味着对于 1 次写入,所有 2000 万行 User+Car 实体都将被锁定?太疯狂了。如果我必须更新所有 2000 万行怎么办。如果写入操作仅更新 1 行,那么 2000 万行是否需要 2000 万秒才能避免任何争用?
【问题讨论】:
-
好吧,由您来选择对您的应用有意义的实体祖先结构。此外 - 一些批处理是可能的,请参阅stackoverflow.com/questions/38277246/…
-
@DanCornilescu 我了解丹。我只想知道有多少实例被锁定。我已经编辑了我的问题。所有 2000 万个实体实例都被锁定以进行 1 次写入操作,或者只有一个实例被锁定以进行更新。
-
整个组被“锁定”。你必须问自己的问题——这样的血统真的,真的需要吗?还是只是非常方便?一开始我也有点惊讶,但在稍微调整了我的祖先结构并与数据争用作斗争后,我意识到这些“限制”(还有其他限制)确实是高度可扩展设计的驱动力......
标签: java google-app-engine google-cloud-datastore google-cloud-platform