我在谷歌的应用程序的应用程序,每当一个用户购买的合同数量,这些活动的执行(简化为清楚起见):

  • 用户。现金下降
  • 用户。合同数增加
  • 合同。current_price是更新。
  • 市场。no_of_transactions是增加1。

在一个关系数据库管理系统,这些将被放置在同一交易。我怀孕的那个谷歌数据存储库不允许实体的多个模型可以在相同的交易。

什么是正确的方法这个问题?怎么我可以保证,如果一个写信出现故障时,所有上述写滚回来吗?

编辑:我显然错过的实体集团。现在我更好一些进一步的信息,关于如何使用它们。还有一点要澄清的是谷歌说,"只有使用实体团体的时候他们都需要对交易。对于其他实体之间的关系,使用ReferenceProperty属性和关键的价值观,它可用于查询".这是否意味着我必须定义的两个参考性的(因为我需要queriying他们)和父母-孩子关系(交易)?

编辑2:最后,我如何界定父母双方的实体,如果该实体正在创造了建立一个n-n之间的关系2的父母吗?

有帮助吗?

解决方案

后通过研究,我们发现,分布式交易层,提供一个解决方案的单个实体组限制已经开发了用户态的帮助的一些谷歌的人。但迄今为止,它不是获释,是唯一提供。

其他提示

让我补充一句的 数据存储库的文档:

一个很好的经验法则的实体组是,他们应约 大小的一个单一的用户是值得的 数据或更小。

你可以创建一个伪根源的实体,并把一切都放下面这一点。然后,您执行的一切交易。

shanyu,你提到的布事务层,让你经营的跨任意许多实体组在一个单一的交易。它实际上 已经被释放, 它只是没有被告的很大声。它的设计和书面由丹尼尔*威尔克森和埃里克*armbrust,有些咨询我的一部分。丹介绍了它在 这次谈话.

尼克*约翰逊也说明 如何做"转让"的类型的运营实体集团, 类似什么你描述。这是不是作为一般目的,如木薯-奥姆,但它是更简单和更轻重。

有一个相关的内在特征, 事务的任务, 那可以让你增加任务的队列内数据储存交易,这样,它只会增加如果该事务提交的成功。这项任务,然后可以做更多数据存储库行动,包括一个交易对不同的实体集团。这是不是作为强大,因为丹和埃里克的解决方案,但是它不会给你的保证最终的一致性实体集团,这是不够好使用的许多情况下,没有额外的开销。

在回答您的问题:1)你不需要使用两个参考性和父子关系(即实体组)。这一准则仅意味着实体的团体的极限的数据存储写的吞吐量,因为写入化每个实体组。你应该知道如果你考虑的结构化数据纳入实体的组只是为祖先查询。

2)一个实体不可能有多于一个父母。如果你想的模式有许多对多关系,通常应使用ListProperty的参考性的(即键)。看看 这篇文章这次谈话 对于细节。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top