【问题标题】:Building good-designed database for a simple webapp with NoSQL使用 NoSQL 为简单的 webapp 构建设计良好的数据库
【发布时间】:2012-04-19 11:54:52
【问题描述】:

我来自 SQL 世界,所以请不要问我 NoSQL 中没有表、关系等,我知道,但我很难理解如何在没有关系的类别中保留新闻.

因此,假设我们要在数据库中保存新闻、新闻类别、标签、用户资料和用户新闻的 cmets。使用 SQL 我认为这个任务可以用这样的架构来解决(不要看语法,它是伪代码):

categories ( id, title )
news (id, title, content, category_id)
users (id, first_name, last_name, homepage_url)
news_comments (id, news_id, user_id, comment)
tags (id, title)
news_tags (news_id, tag_id)

如何使用 MongoDB / CouchDB / NoSQL 解决此任务?我对良好的架构感兴趣,我不需要了解诸如索引之类的特定内容。

【问题讨论】:

  • 您可能需要将问题缩小到单个数据库,您不太可能获得所有 nosql 风格的详尽答案。

标签: mongodb nosql


【解决方案1】:

通常,您需要对数据进行非规范化处理。您的“新闻”记录如下所示:

news (id, title, content, category_title, [tags]) # that is list of tags

或更准确地说,例如:

(id, type=news, title, content, category_title, [tags])

您可以通过“外键”进行过滤,因此具有

news_comments (id, news_id, user_id, comment)

如果您想为给定新闻选择 cmets,这不是什么大问题,但如果您想显示用户的 first_name,您可能希望将该数据包含在评论记录本身中。

如果用户在评论后更改了数据怎么办?

  1. 你不在乎
  2. 您在工作中使用了错误的工具

有一个选项 3,您可以找到所有 cmets 并更新它们,但如果这种情况足够普遍,您可能需要从关系数据库开始。

【讨论】:

    猜你喜欢
    • 2019-01-03
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 2021-04-05
    • 2012-12-08
    • 1970-01-01
    • 2011-06-24
    • 1970-01-01
    相关资源
    最近更新 更多