java – 应用引擎数据存储:如何实现没有连接的帖子和标签?
我正在Google App Engine(
Java)中构建一个应用程序,用户可以在其中发帖,我正在考虑在这些帖子中添加标签,所以我将会有这样的:
实体发布: public List<Key> tags; 实体标签: public List<Key> posts; 很容易查询,例如,所有具有某个标签的帖子,但是如何获取所有具有标签列表的帖子? 另一件事可能会更困难的是收到一个帖子,获得标签共同按照常见标签数量排列的帖子,所以我可以以某种方式获得“类似”的帖子. 那么,加入这将是一个很容易,但我开始与应用程序引擎,不能真正考虑一个很好的方式来替换联接. 谢谢! 解决方法
有了这个设计,我恐怕你的标签实体可能是一个瓶颈,特别是如果你期望一些标签是非常普遍的.
我可以想到的三个具体问题是您的获取和投放的效率,写入争用和爆炸性索引.我们来看看stackoverflow的一个例子 – 现在有14,000个帖子标记为“java”. 这意味着每次您需要获取您的java标签实体时,您将从数据存储区中提取14k的关键数据.那么当你做一个put时,你会发回它.这可能会增加很多字节. 进一步阅读: >这个post涉及大型列表的一些问题 好消息是,您的一些要求将被Post实体轻松处理. Query q = pm.newQuery(Post.class) q.setFilter("tags" == 'Java' && "tags == 'appengine'"); 对于所有具有java或appengine标签的帖子,您需要对每个标签执行一个查询,然后自己组合结果.数据存储区现在不处理OR / IN类型操作. 发现相关帖子听起来很棘手.一些咖啡后,我会考虑一下. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |