2014-03-06 21 views
0

这是关于Google数据存储的最佳实践问题。我试图建立对象的关系,我看到两个选项使用Embedd类或为Google Datastore存储外键?

  1. 在父类
  2. 直接嵌入一个子类@Persistent使用谷歌Key类和存储我自己的外键的字符串相关类

第三个选项不可用,JDO加入

App Engine不支持连接查询:使用子实体的属性无法查询父实体。 (您可以查询嵌入式类的属性,因为嵌入父实体类存储属性请参阅定义数据类:嵌入式类)

我关于使用选项1忧的是一个简单的搜索查询我会返回大量不需要的数据。

实施例是一个产品类别和产品详情类。当客户搜索我的产品时,他们只是根据类别,名称进行搜索并按价格排序。所有简单的信息都在Product类中。在ProductDetail类中,我保存大量描述字符串,图像链接和关键属性列表。因此,在产品类中,我可以嵌入ProductDetail类或只创建一个包含ProductDetail类的键值的外键属性。

那么我应该使用选项2呢?我在某处阅读并不会将Google数据存储视为关系数据库。但是在使用选项2时,这正是我正在做的。

+1

而且@未知。 – DataNucleus

回答

0

一致认为,因为请求者通常是不感兴趣的嵌入式儿童选项1是不可扩展的。 JDO和JPA旨在按需执行延迟加载数据,但在不需要嵌入数据时可能仍会有开销。

选项2可能看起来像严格的关系,但它并没有要。如果您的实体没有通过祖先密钥锁定在实体组中,那么这些记录就无关紧要并且没有限制。您实际上可以确定实体设计和应用程序代码的一致性的紧密程度。

相关问题