2013-11-04 32 views
0

我创建一个谷歌应用程序引擎应用程序,中有一类用户 - 时间轴的(如Facebook或Twitter),它由一系列按时间顺序排序的事件,用数据存储区
但是,我无法想出一些有效的方法。
在本方案中,我定义的实体:在GAE创建活动时间线数据存储

实体:活动: -
- 标识
- 详细信息...
- ...
- 时间戳

这是一种方式所以我可以索引并得到在一些排序订单,根据时间戳活动?
我正在与Java和使用Objectify进行数据访问。

回答

0

规则是:如果您要使用属性查询/订购,则需要对其进行索引。 我认为这很简单,你在做什么。

问题是:你还想要什么?性能是一个主要需求? (可能,因为你的应用程序似乎面向用户)。

如果您只需要记录用户活动并检索它,我可能会建议您将您的“活动”实体置于父实体“用户”或“用户活动”下。

  • UserActivity(键名=用户ID)
    • 活动(ID,细节,时间戳[索引])

这样,你就可以使用运行祖先查询您的用户的ID来检索他的所有帖子。 唯一的缺点是它会限制你在这个实体组上每秒写一次(基本上是“所有的用户活动”)。

+0

谢谢@Michael。可能是这种技术的混合会做! –

+0

我会小心这样做,因为它违背了Google的最佳实践: “不要索引具有单调递增值的属性(例如NOW()时间戳)。维护此类索引可能会导致影响云数据存储延迟的热点高读写率的应用程序。“ https://cloud.google.com/datastore/docs/best-practices#indexes –