2014-04-28 133 views
0

我的方案主要有3种数据存储实体,一种用户,对象和关键字的关键字分类。 问题在于对对象和关键词之间的关系进行建模。GAE - 爪哇 - 数据存储实体

用户可以创建尽可能多的对象,他们希望和用户对象的关系可以很容易地ascestor链路上实现。
我通过为任何关系定义实体来建模对象间和用户间的关系。因为这样我就可以拥有我想要的所有粉丝和粉丝,并且关系搜索可以与结果集一起扩展,所以它的效率也很高。

现在我需要对象分类关键字。每个对象可以关联到有限数量的按键,而每个按键不能具有扇出限制。
如何最有效的方式来实现它们? (时间效率(复杂性,...)和数据库活性)

第一种方法可以是:分配给每个对象的键的列表:
搜索将其结果集比例,所以它不会依赖关系数量和关键。

造型既键和键对象关系,因为像国米用户实体的对象间的情况:
搜索将再次与结果集扩展,从而再次不依赖于净尺寸。

我能考虑作为比较标准是什么?

回答

2

如果您在对象实体中放入了关键字列表(或其ID),则会产生额外的写入成本:添加每个关键字将导致更新Object实体,需要为每个实体编写一个写入每个索引属性,包括每个关键字的写入。

如果这种情况很少见,这将是一个小的额外费用,我会推荐它的简单列表的方法。另一方面,如果更频繁地添加/删除关键字,则成本将快速增加。

使用Keyword_Object实体可以避免更新对象实体的额外成本,但是您必须维护另一个实体类型,并且您存储的数据将占用更多空间(每个关键字 - 对象对的额外关键字)。

我建议用这些方法的执行会和优化后,当更多的数据是可用的,除非你一定会很快有上百万的记录,你已经知道你的数据访问模式。