Google app engine 谷歌应用引擎:两个紧密相关的实体应该合并吗?

Google app engine 谷歌应用引擎:两个紧密相关的实体应该合并吗?,google-app-engine,google-cloud-datastore,Google App Engine,Google Cloud Datastore,在我正在开发的应用程序中,我有两个紧密相关的实体(EntityA、EntityB)。没有EntityA永远无法访问EntityB,但通常在没有实体B的情况下访问EntityA。此外,EntityB可能非常大,而EntityA的大小适中 将EntityB添加到EntityA(作为结构化属性/复制字段)是否有任何缺点?从而增加EntityA的大小,并消除EntityB。或者我应该只使用EntityA中的键属性引用EntityB,并在需要EntityB时使用额外的get吗?如果每个实体a最多只有一个实

在我正在开发的应用程序中,我有两个紧密相关的实体(EntityA、EntityB)。没有EntityA永远无法访问EntityB,但通常在没有实体B的情况下访问EntityA。此外,EntityB可能非常大,而EntityA的大小适中


将EntityB添加到EntityA(作为结构化属性/复制字段)是否有任何缺点?从而增加EntityA的大小,并消除EntityB。或者我应该只使用EntityA中的键属性引用EntityB,并在需要EntityB时使用额外的get吗?

如果每个实体a最多只有一个实体B,则可以将实体B设置为实体a的子实体。这样可以很容易地检索它-甚至不必在父实体中引用其键


如果您经常需要一个实体而不需要另一个实体,那么没有理由合并两个实体。加载超过需要的数据会对性能造成很小的损失。

是的,每个EntityA只有一个EntityB。所以你建议使用祖先查询来获取EntityB?这不是比按键获取慢很多吗?如果只有一个实体B,则不需要祖先查询。创建实体B时,可以给它一个id=1。现在,您可以使用其专利实体a的id轻松地构造一个密钥来检索它。