gpt4 book ai didi

google-app-engine - Google App Engine 中的事务隔离有多广泛?

转载 作者:太空宇宙 更新时间:2023-11-03 15:35:44 27 4
gpt4 key购买 nike

在同一实体组的事务操作中,锁定和冲突发生在什么位置?在什么级别?在根?在一些常见的、足够广泛的父级?

我不清楚什么是交易的“实体组”。它始终是一个起源于根实体(没有父实体)的组,还是有一种机制可以选择一个足够广泛的组来进行交易。

例如,当我有这样的模型结构时:

- School
- Teacher
- Class
- Course
- Lesson
- Evaluation
- Student
- Guardian
- Grade
- PresenceMarker
- TextBook

我的事务性操作是否总是将“实体组”称为源自学校级别的组(无论实际操作发生在哪个级别),或者当我更新同一个类(class)的学生实体时,我只能与发生在同一类实体下的其他交易操作。

换句话说,是否只有一个实体组从学校开始,或者是否有子实体组起源于层次结构中的每个其他级别?如果有子实体组,它们是否用于事务隔离?

更新:

服用 Sharding counters作为另一个例子。如果所有分片都有共同的父代,分片会起作用吗?更新单个计数器分片会导致其他分片上的事务冲突更新吗?

最佳答案

App Engine 中的事务发生在实体组级别。 (参见文档 herehere)

are there sub entity groups originating at every other level in the hierarchy?

没有“子实体组”。每个实体都属于一个实体组,因为它有一个最终祖先。在您的示例中,您所有的模型最终都属于学校的组。

Will the sharding work if all the shards have common parent?

为了按预期进行分片,每个分片都必须在其自己的实体组中。如果查看示例代码,您会发现每个分片都在自己的组中。您还可以看到,虽然 increment() 方法使用事务,但 get_count() 不使用。 increment只影响一个组,而get_count是从多个组抓取数据。

注意:最新版本的 App Engine 允许跨组交易,但这是一种特殊情况,组的定义没有改变。

关于google-app-engine - Google App Engine 中的事务隔离有多广泛?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7765853/

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