0

在设置我的模型/实体时,我真的想打破我的 RDBMS 思维定势。我非常注重性能,所以我想把这件事做好。我需要建模三个不同的东西:

事件 - 发生在某个日期,有邀请人参加,有与之关联的帖子

Person - 有一个字符串 id,有一个名字

发布 - 一个人将为事件发布帖子。我需要保持发布帖子的人与发布帖子的事件之间的关联。

我的第一个想法是去类似的东西

class Event
    @PrimaryKey
    Long id;
    List<Key> personList;
    List<Key> postList;
    String name;

class Post
    @PrimaryKey
    Key id;
    String details;
    Key personWhoPosted;

class Person
    @PrimaryKey
    Key id;
    String fbId;
    String name;

应用程序的主要查询加载与给定人员关联的所有事件。

我已经完全实现了这种方法,但是一旦数据库开始填充来自我的 beta 测试人员的适量数据,加载主列表的操作就会变慢,因为发生了如此多的 QUERY 和 GET。对于每个事件,我都必须为帖子进行另一组查询/获取。对于每个帖子,我必须为与之关联的人进行一系列其他查询/获取,依此类推。

我将此视频用作主要参考: http ://www.youtube.com/watch?v=AgaL6NGpkB8&list=WLB3249928DA0FA4AF&feature=mh_lolz

建立这些关系的最佳方式是什么?我正在考虑将所有内容展平到 Event 中,以最大限度地减少对一个查询和一组并行获取的初始负载。

4

1 回答 1

1

没有在此处发布我的完整更新模型,我用来“使其正确”的两个驱动因素是:使用正确的键类型,以及使用列表属性将索引建模到数据中。这是我为此找到的两个很好的参考资料:

澄清实体键的类型: https ://developers.google.com/appengine/docs/java/datastore/jdo/creatinggettinganddeletingdata#Keys

列出属性作为检索数据的高效和高性能方式:http: //novyden.blogspot.com/2011/02/efficient-keyword-search-with-relation.html

于 2012-06-24T13:28:10.677 回答