在我的 google app 应用程序中,每当用户购买许多合同时,都会执行这些事件(为清楚起见进行了简化):
- user.cash 减少
- user.contracts 增加了数字
- contract.current_price 已更新。
- market.no_of_transactions 增加 1。
在 rdms 中,这些将被放置在同一个事务中。我认为谷歌数据存储不允许多个模型的实体在同一个事务中。
解决这个问题的正确方法是什么?如何确保如果写入失败,则所有先前的写入都回滚?
编辑:我显然错过了实体组。现在,我将不胜感激有关如何使用它们的更多信息。需要澄清的另一点是谷歌说“仅在交易需要时使用实体组。对于实体之间的其他关系,请使用 ReferenceProperty 属性和键值,它们可以在查询中使用”。这是否意味着我必须同时定义参考属性(因为我需要查询它们)和父子关系(用于事务)?
编辑 2:最后,如果创建实体以在两个父级之间建立 n 对 n 关系,我如何为一个实体定义两个父级?