在我的谷歌应用程序中,每当用户购买大量契约(Contract)时,就会执行这些事件(为清楚起见进行了简化):
- user.cash 减少
- user.contracts增加数量
- contracts.current_price 已更新。
- market.no_of_transactions 增加 1。
在 rdms 中,这些将被放置在同一个事务中。我认为 google datastore 不允许多个模型的实体处于同一事务中。
解决这个问题的正确方法是什么?我如何确保如果写入失败,所有先前的写入都会回滚?
编辑:我显然错过了实体组。现在,我希望获得有关如何使用它们的更多信息。另一点需要澄清的是谷歌说“只有在交易需要时才使用实体组。对于实体之间的其他关系,使用 ReferenceProperty 属性和键值,它们可以在查询中使用”。这是否意味着我必须同时定义引用属性(因为我需要查询它们)和父子关系(用于交易)?
编辑 2:最后,如果创建实体是为了在 2 个父级之间建立 n 对 n 关系,我该如何为该实体定义两个父级?
最佳答案
经过一番研究,我发现在一些google人的帮助下,userland已经开发了一个分布式事务层,它提供了一个解决单一实体组限制的方法。但到目前为止,它还没有发布,只有 java 可用。
关于python - 数据存储事务限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/836992/