【问题标题】:GAE datastore transaction with multiple ancestors entity groups具有多个祖先实体组的 GAE 数据存储事务
【发布时间】:2013-05-09 15:58:35
【问题描述】:

我不清楚,从文档中,哪个祖先是事务的边界。最接近的还是根的?

我有一个根实体 (A),它有几个后代 (B1, B2 ... Bn),这些后代可以有很多祖先 (C1, C2...)。我将在 C 实体 (Cs) 上进行交易,我将使用基于 B 实体的祖先查询来获得这些交易。问题是,如果另一笔交易同时改变了 B2 下的一些 Cs,B1 下的 Cs 的变化会抛出 ConcurrentModificationException 吗?

是否所有 C 都属于其祖父 A 下的同一个实体组,或者这些实体组是否也划分为更小的“子实体组”,即 B 下的每个 C 组都有自己的实体组?

【问题讨论】:

    标签: google-app-engine google-cloud-datastore entity-group-transactions


    【解决方案1】:

    边界是根。

    来自https://developers.google.com/appengine/docs/python/datastore/transactions

    事务中的所有 Datastore 操作必须对同一实体组中的实体进行操作

    每个根实体都属于一个单独的实体组,因此单个事务不能创建或操作多个根实体

    所以A下的所有东西都是一个实体组。

    【讨论】:

    • 文档还说An entity's parent, parent's parent, and so on recursively, are its ancestors; its children, children's children, and so on, are its descendants. An entity and its descendants are said to belong to the same entity group.最后一句话可以表示,所有B都可以形成自己的实体组,属于A设置的实体组。我理解整个实体组是“A”,但是否支持嵌套实体组之类的东西?嗯,可能没有,只有一个实体组,“A”...
    猜你喜欢
    • 2013-04-07
    • 1970-01-01
    • 2018-01-29
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多