嵌入式实体与使用 GCP 数据存储上的祖先路径的实体之间的差异



我无法理解嵌入式实体和使用 GCP 数据存储上的祖先路径的实体之间的区别。

我可以理解以下事情。

  • 通过使用祖先路径,它可以管理不同类型的实体,但写入次数限制为 1 次/秒。
  • 祖道使一致性强

但这些事情与使用嵌入实体相同。

所以我混淆了如何正确使用嵌入式实体和祖先路径。


现在我正在开发一个像Google Form这样的表单模型。

它可以自由添加项目,所以我正在考虑使用名为 Item 的嵌入式实体或创建名为 Item 的种类并使用 Form 类的祖先路径。

嵌入的"实体"不是真正的实体,它只是嵌入它的"容器"实体中的一个属性。从嵌入式实体(强调我的(:

有时您可能会发现将一个实体嵌入为另一个实体的属性。

该"容器"实体仍具有 1 次写入/秒的限制。而且您不能只更新嵌入的"实体",您必须更新整个"容器"实体。

嵌入实体可能看起来非常一致,但只是在与"容器"实体中的其他数据一致的意义上(这里没有什么特别的,实体内的任何属性也是如此(。在使用其值进行查询时,它仍然是最终一致的。而且您不能在事务中进行此类查询。

另一方面,由祖先绑定的实体是真实的、不同的实体,它们都位于同一个实体组中。整个实体组受 1 次写入/秒的限制。祖先查询的范围仅限于各自的实体组,是强一致性的,可以在事务内部完成。

如果您追求的是强一致性,则必须使用数据存储祖先将各个实体绑定在一起。

否则,您可以使用嵌入实体或仅使用不同类型的普通实体,并使用 Key 属性在实体之间建立关系。另请参阅Google App Engine (Python(中的电子商务产品类别

最新更新