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