我对如何在App Engine中建立多对多关系有疑问:
一个Blogentry可以有许多标签,一个标签可以应用于许多博客条目。
我看到几种情况:
使用字符串集作为博客条目上的属性。
这使我可以轻松地使用标签查询条目
这不允许我获取所有标签及其权重(它们适用于多少个条目)
在Entry和Tag类之间使用非所有权关系(Entry类中的Tag的键集,反之亦然)
这使我可以获取所有标签及其权重
这要维护得多
是Set属性是懒加载的,还是每次都会获取对象的整个图? (获取条目,该条目获取多个标签,每个标签依次获取多个条目)
使用1.,但分别维护标签及其权重上的数据
标签数据和条目中的标签之间存在同步问题
任何输入和指针,将不胜感激。我认为这是一个很常见的情况,但是我还没有看到任何好的解决方案。
最佳答案
与许多其他数据库管理系统一样,App Engine数据存储区本身不支持多对多关系,但可以通过“连接表”解决。但是,由于App Engine的查询语言不支持联接,因此在您的应用程序中使用它会非常痛苦。实际上,Google的BigTable架构不鼓励这样做,因为分布式联接效率不高。
因此,我建议遵循“保持简单愚蠢”规则;使用最简单的方法。 “ Blogentry”对象中的字符串列表听起来相当健壮。即使很容易出现竞争状况(人们并行进行更新,覆盖彼此的更改),但是您仍然有多少人在编辑同一篇博客文章?
关于java - 如何在App Engine中建立多对多关系的模型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1747207/