在设置我的模型/实体时,我真的试图打破我的 RDBMS 思维定势。我非常注重表现,所以我想把这件事做好。我需要建模三件不同的事情:
事件 - 发生在某个日期,有人员受邀参加,有与之关联的帖子
人 - 有一个字符串 ID,有一个名字
发帖 - 一个人将为某个 Activity 发帖。我需要保持发帖者与发帖所针对的事件之间的关联。
我的第一个想法是去类似的地方
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;
应用程序的主查询加载与给定人员关联的所有事件。
我已经完全实现了这种方法,但是一旦数据库开始填充来 self 的 beta 测试人员的适量数据,加载主列表的操作就会变慢,因为发生了太多的查询和获取。对于每个事件,我都必须对帖子进行另一组查询/获取。对于每个帖子,我都必须对与其关联的人员进行一系列其他查询/获取,等等。
我使用这个视频作为我的主要引用: http://www.youtube.com/watch?v=AgaL6NGpkB8&list=WLB3249928DA0FA4AF&feature=mh_lolz
建立这些关系的最佳方式是什么?我正在考虑将所有内容扁平化到事件中,以便最大限度地减少一个查询和一组并行获取的初始负载。
最佳答案
没有在这里发布我的完整更新模型,我用来“使其正确”的两个驱动因素是:使用正确的键类型,以及使用列表属性将索引建模到数据中。以下是我为此找到的两个很好的引用:
澄清实体键的类型: https://developers.google.com/appengine/docs/java/datastore/jdo/creatinggettinganddeletingdata#Keys
列出属性作为检索数据的高效且高性能的方式: http://novyden.blogspot.com/2011/02/efficient-keyword-search-with-relation.html
关于java - GAE JDO - 建模这些关系的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10862924/