rut*_*ord 7 python google-app-engine schemaless
所以我有一个应用程序,如果我诚实并不真正需要事务完整性(许多更新,其中没有一个是关键的).因此,我计划暂时将实体组留在路边.但我仍然希望了解它(来自关系背景).
我看到它的方式,我的应用程序的所有查询将基于用户的用户.因此,根据文档建议,我不需要将任何高于用户实体的组分组.但我并没有计划拥有一个特定的用户实体,而是依赖于实体本身的UserProperty.
我看待它的方式,如果我想要事务(基于每个用户),我将需要某种root用户实体作为其数据层次结构的所有实体的父级,无论这个实体有多么薄实际上就是基本上没有属性.
它是否正确?
对于冗长的道歉,我只是真正地指出今晚在实践中实际上意味着什么模式......
Dan*_*eny 12
我看待它的方式,如果我想要事务(基于每个用户),我将需要某种root用户实体作为其数据层次结构的所有实体的父级,无论这个实体有多么薄实际上就是基本上没有属性.
我不会只创建一个root用户实体并将所有内容都抛在其实体组中.想想你需要什么交易.如果您的用户实体上没有属性,那么您在交易中使用它会是什么?
我不知道您的数据,但我们假设它是一个博客系统,您有用户,帖子和评论.Post模型包含number_of_comments,因此您无需计算它们.您可能希望事务确保在创建注释时,可以安全地更新number_of_comments属性.
在这种情况下,在单个实体组中拥有所有用户帖子和评论将是不必要的开销.相反,您可以将评论发布在与其所属的帖子相同的实体组中.没有必要将帖子放在与用户相同的组中,事实上这是一个坏主意,因为在任何用户帖子中发布的评论都会争用写同一个实体组.
我今天在博客上写了一篇关于实体组的简短文章.你可能会发现它很有用.
你基本上是正确的。如果您想要事务功能,则需要将它们分组。但是,您可以将多个实体分组在一起,而无需创建实际的根实体(就数据存储中的实体而言)。相反,您创建一种虚拟根实体。此功能的一个重要用例是能够在创建父对象之前创建子对象。
您可以创建具有祖先路径的实体,而无需先创建父实体。为此,您可以使用种类和键名称为祖先创建一个键,然后将其用作新实体的父实体。具有相同根祖先的所有实体都属于同一实体组,无论路径的根是否代表实际实体。
该引用来自您链接到的同一个文档。
| 归档时间: |
|
| 查看次数: |
2777 次 |
| 最近记录: |