【问题标题】:Database design in blogging systems博客系统中的数据库设计
【发布时间】:2011-01-28 20:08:37
【问题描述】:

作为一项学习练习,我试图为自己建立一个博客系统。

目标是编写可以让我创建多个博客的代码,例如 blogger.com 或 wordpress.com,但要简化很多。

我想问你,对于这种类型的脚本,你认为最好的数据库设计是什么。

最好有一个大表,包含来自所有用户的所有博客的帖子(如friendfeed),还是为每个博客的帖子创建单独的表更好?

非常感谢您的帮助, 彼得。

【问题讨论】:

    标签: mysql database database-design optimization performance


    【解决方案1】:

    您最有效的方法是创建一个适当规范化的数据库(作者、帖子、cmets 表),然后随着您的扩展寻找方法来处理出现的性能问题,而不是预先设计问题...这些问题可能永远不会实现。

    通常,如果要将单个表拆分为多个表,则需要查看数据的查询方式并确定对数据进行分区的最佳方式。可能时间是一种更好的分区方式,或者您希望按作者甚至博客 url 进行分区。

    总而言之 - 从传统的规范化设计开始,只有在遇到性能问题时才会偏离该路径。

    【讨论】:

    • 此外,拆分成多个表意味着您要么必须动态生成 SQL,要么使用复杂的动态别名来拥有一个使用 n 个相同表副本的应用程序。这是一个潜在的软件维护噩梦。如果你做错了(即使用动态生成的 SQL),它可能是一场安全噩梦。
    【解决方案2】:

    这是一个很好的问题 (+1)。

    就可扩展性而言,很明显,除非您有非常大的预算,否则每个人的每个博客都需要一张桌子。也许 FriendFeed 可以负担得起在桌子上推送服务器场 - 但我有兴趣阅读您对它们的研究。

    如果您只期望少量用户,那么专注于设计并忽略可扩展性。

    我想答案取决于您希望将项目扩展至多远。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-29
      • 2012-02-12
      • 1970-01-01
      • 2010-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多