我有一个关于如何在App Engine中建模多对多关系的问题:
Blogentry可以有很多标签,标签可以应用于许多博客条目。
我看到了几个场景:
在博客条目中使用一组字符串作为属性。
使用Entry和Tag类之间的无主关系(Entry类中的标记键集,反之亦然)
使用1.但单独维护标签及其重量的数据
任何输入和指针都将不胜感激。我认为这是一个非常常见的情况,但我还没有看到任何好的解决方案。
答案 0 :(得分:1)
与许多其他数据库管理系统一样,App Engine数据存储区本身不支持多对多关系,但可以通过“联结表”解决。但是,由于App Engine的查询语言不支持联接,因此在您的应用程序中使用这将非常痛苦。谷歌的BigTable架构实际上不鼓励这样做,因为分布式连接效率不高。
所以,我建议采用“保持简单愚蠢”的规则;使用最简单的东西。 “Blogentry”对象中的字符串列表听起来相当健壮。即使它容易出现竞争条件(人们同时进行更新,覆盖彼此的更改),但是你有多少人在编辑相同的博客帖子呢?
答案 1 :(得分:0)
我决定使用选项3.来维护一个单独的标签列表及其权重。
这似乎工作正常,虽然插入/更新代码有点混乱。