我能理解以下事情。
但这些与使用嵌入式实体相同。
所以我很困惑如何恰当地使用嵌入式实体和祖先路径。
现在我正在为Google Form等形式开发模型。
它可以自由添加项目,所以我正在考虑使用名为Item的嵌入式实体或创建名为Item的种类,并为Form类使用Ancestor路径。
答案 0 :(得分:1)
嵌入的“实体”不是真实的实体,它只是嵌入它的“容器”实体内的一个属性。来自Embedded entities(强调我的):
有时您可能会发现将一个实体嵌入后很方便 另一个实体的财产。
您仍然拥有该“容器”实体的1个写入/秒限制。并且您无法仅更新嵌入的“实体”,您必须更新整个“容器”实体。
嵌入式实体可能出现强烈一致,但只是在与“容器”实体中的其他数据一致的意义上(这里没什么特别的,对于任何内部属性都是如此)实体)。在使用其值进行查询时,它最终仍然是一致的。而且您无法在交易中进行此类查询。
另一方面,由祖先捆绑的实体是真实的,不同的实体,都被放置在同一个实体组中。整个实体组受1个写入/秒限制的约束。祖先查询的范围仅限于相应的实体组,在事务内部可以完全一致。
如果您追求的是强一致性,那么您必须使用数据存储区祖先将各个实体绑定在一起。
否则,您可以使用嵌入的实体或仅使用不同类型的普通实体,并使用Key属性建立实体之间的关系。另请参阅E-commerce Product Categories in Google App Engine (Python)