python - 数据存储事务限制

标签 python google-app-engine transactions google-cloud-datastore

在我的谷歌应用程序中,每当用户购买大量契约(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/

相关文章:

mysql - 事务不适用于我的 MySQL 数据库

python - 错误 "Requested action failed to validate. Please review the Boto exceptions below for more details."该怎么办?

python - 将 XGBoost 模型转换为 CoreML

python - 如何解决 cron 中的权限被拒绝错误?

java - 用 Java 编写的 Google Appengine 应用程序可以访问 Python+Numpy+Scipy?

python - Google App Engine 上的 python 2.7 SNI 错误上的 urllib3

python - 张量的最小 K 值?

google-app-engine - 可以将 adSense 添加到 App Engine 吗?

transactions - Paypal IPN 返回空字符串而不是 "VERIFIED"或 "INVALID"

spring - "Propagation.REQUIRES_NEW"究竟是什么意思使用 Spring 事务管理?