【发布时间】:2017-06-25 20:33:40
【问题描述】:
数据库是 MongoDB,而不是 SQL,这不会改变。
假设您有一个应用程序,允许用户发布问题,然后用一个主题标记它们:数学、科学、英语、历史。
此外,在导航上,每个主题都有自己的选项卡,将显示标有相应主题的问题。
既然按标签显示问题对于应用程序来说是必不可少的,那么检索这些数据的最快方法是什么?
可能性: (1) 将标签保留为问题集合中的单个字段。问题:必须搜索每个问题,然后搜索标签字段,以找到相关标签。
(2) 一个标签集合,每个主题都有一个字段。问题:如果问题的数量太大(大约 20,000 个帖子),Mongo 将无法工作。来自 Mongo 文档 (http://blog.mongodb.org/post/35133050249/mongodb-for-the-php-mind-part-3):
对于文档设计,您需要考虑两件事:规模和 搜索。 ScaleMongoDB 文档有 16MB 的限制,虽然 听起来很小,可以容纳数千个文件。然而,如果 您期望在高流量网站上的每个帖子有 20,000 cmets, 或者您的 cmets 大小不受限制,则嵌入可能不起作用 很适合你。
这似乎离开了...... (3) 每个标签都有一个单独的集合。在这种情况下(3)是最好的吗?
【问题讨论】: