跨组 (XG) 交易及其使用进一步说明
最近发布的GAE(谷歌应用引擎)版本提到了一些变化:
数据存储
跨组(XG)事务:对于那些需要在多个实体组中进行事务性写入的人来说(这应该是每个人都需要吧?),跨组事务正是你需要的。这项功能使用两阶段提交来确保跨组写入的原子性,就像单组写入一样。
我觉得我可以在我之前创建的一个项目的代码中使用这个变化,但我想要更多关于这个更新的信息。我找不到额外的资料。所以……
关于这次更新,编码事务的方式有什么变化?用简单的话来说,我该如何实现跨组事务?在数据存储事务方面,还有哪些限制是我需要注意的?
我知道这个问题有点模糊。我的问题是,这听起来非常有用,但我不确定如何正确(和有效)地使用这个变化。
1 个回答
4
你有没有看过相关的文档?听起来你好像没有(因为你说“我找不到更多的信息”)。如果是这样的话,可以看看下面的链接,看看还有没有其他问题。
从概念上讲,跨组事务和普通的GAE事务很相似,只是速度慢一些,而且只能在HRD中使用。需要注意的是,GAE事务,无论是“普通”的还是跨组的,和你可能习惯的SQL数据库的事务隔离特性是不同的。第二个链接在跨组部分之后就讨论了这个问题。
下面是第一个链接的摘录,展示了使用跨组事务是多么简单。
from google.appengine.ext import db
xg_on = db.create_transaction_options(xg=True)
def my_txn():
x = MyModel(a=3)
x.put()
y = MyModel(a=7)
y.put()
db.run_in_transaction_options(xg_on, my_txn)