gpt4 book ai didi

python - Google Cloud Datastore - 是否可以为单个根实体使用事务?

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:04 25 4
gpt4 key购买 nike

我是 Google CloudDatastore 的新手,正在阅读文档。
(注意:我们不打算使用 Google AppEngine,只打算使用 DataStore。)

根据document , DataStore支持事务但是

If you want to use queries within a transaction,
your data must be organized into entity groups in such a way
that you can specify ancestor filters that will match the right data.

所以我想只要我想使用事务,我就必须创建一些父键并将其设置为祖先。并且父级下的所有实体都有更新和事务每秒只能执行一次的限制。

但是,我在这里也看到了一个非常简单的插入示例: https://cloud.google.com/datastore/docs/concepts/entities#datastore-insert-python

with client.transaction():
incomplete_key = client.key('Task')

task = datastore.Entity(key=incomplete_key)

task.update({
'category': 'Personal',
'done': False,
'priority': 4,
'description': 'Learn Cloud Datastore'
})

client.put(task)

它没有指定父实体并在事务中使用单个根实体,对吗?甚至关于 Transaction page 中的示例只有“只读事务”的那个显式指定了父级。其他人是否只是简单地省略了实际存在的 parent ?

我想知道如果我可以指定根实体的键,我可以在没有实体组的情况下使用事务(= 没有大的性能下降),但文档中没有这样的描述......

如果有人能澄清这种行为,我将不胜感激。谢谢。

最佳答案

确实允许跨多个实体组的交易(限制为 25 个实体组 per documentation )

If you want to use queries within a transaction,

请注意您引用的文本中的这个关键句子。它是说你想在事务内部发出的任何“查询”都需要是祖先查询。这是因为非祖先查询最终是一致的,所以事务引擎不可能推断出任何状态变化,因此不知道事务何时失败或成功。这不是说您不能跨实体组进行交易。

It doesn't specify a parent and use a single root entity inside a transaction, does it ?

我认为这是混淆的另一个来源。只有子实体有指定的父实体以表示它们在哪个实体组中。如果没有指定父实体,则所讨论的实体根实体(它的父实体是根实体)。换句话说,每个根实体都是它自己的实体组。

关于python - Google Cloud Datastore - 是否可以为单个根实体使用事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45500774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com