0

我真的想在设置我的模型/实体时突破我的RDBMS思维集。我有一个关注性能的激光,所以我想这样做。我有三个不同的事情,我需要型号:GAE JDO - 建立这些关系的正确方法是什么?

事件 - 发生在一个至今,已邀请到它的人(S),具有与它

人相关帖子(S) - 有一个字符串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测试人员的适量数据,加载主列表的动作就会变慢,因为存在很多查询和GET操作。对于每个事件,我不得不为Posts创建另一组查询/获取。对于每篇文章,我不得不为与其关联的Person进行一堆其他查询/获取,等等。

我使用这个视频作为我的主要参考: http://www.youtube.com/watch?v=AgaL6NGpkB8&list=WLB3249928DA0FA4AF&feature=mh_lolz

什么是建立这些关系的最好方法?我正在考虑将所有内容压缩到事件中,以便将初始负载最小化为一个查询和一组并行获取。

+0

没有单一的“正确”的方式。取决于应用程序需要执行什么操作以及它的主要操作类型有多种方法。我没有在任何地方使用Keys ......你可以使用该插件的v2获得相同的结果,但使用真正的类,你也可以使用RDBMS,然后看看O-O。也许定义你的操作,以及每个操作引起的数据库操作......然后人们可以理解你的情况 – DataNucleus

回答

1

这里没有发布我的完整更新模型,我用来“正确”的两个驱动因素是:使用正确的键类型,并使用列表属性为数据建模索引。这里有两个很好的推荐,我发现了这一点:

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

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

相关问题