【问题标题】:Database for microblogging startup微博启动数据库
【发布时间】:2009-10-31 17:42:30
【问题描述】:

我会做微博网络服务(为了学校,所以不要因为缺乏新想法而抨击我)并且我担心数据库可能经常超载(用户可以关注其他用户甚至标记所以我想@987654321 @ 会很重 - 检查包含所有观察标签和用户的 20 条最新消息)。

我的想法是创建另一个表,并仅在其中存储 statusID 和 userID(谁应该接收消息)。危险在于,如果某个标签或用户有很多关注者,那么该状态 ID 将会有很多记录。那么,这是个好主意吗?或者也许更好地使用 M2M 关系? (一个状态 -> 许多接收者)

【问题讨论】:

  • 我个人会使用 M2M,移动的数据更少...
  • 不要使用数据库,一切都基于文件;万圣节快乐。
  • @dlamblin 他还应该使用什么......平面文件?! :S

标签: sql database database-optimization microblogging


【解决方案1】:

我认为大多数数据库都可以轻松处理大型记录集。让它预制的责任在于您的设计是否正确设置了索引。如果您创建了正确的索引,那么 select 子句应该会执行得非常好。

【讨论】:

    【解决方案2】:

    我会使用 users 表,该表具有用户和 messages 表之间的 m2m 关系。

    然后您可以进行一次选择以查找用户关注的所有用户,然后再进行一次选择以获取所有感兴趣的消息(根据需要对结果进行排序和限制)。将此扩展到标记应该非常简单。

    只要索引正确的列,这种设计应该适合大量用户和消息。如果你有大量的,那么你也可以将用户表和消息表运行到不同的服务器或只读复制。暂时我什至不会担心 - 你需要很大。

    【讨论】:

    • 一个用户可以有很多条消息,但一条消息应该只属于一个用户。我认为您可能是指用户和关注者之间的 m2m。因此,它应该是关注者表(包含用户 pk)和消息(应该具有用户的外键)之间的单一连接。
    【解决方案3】:

    在实现 Collabinate (http://www.collabinate.com)(一种基于服务的微博和共享活动流引擎)时,我使用了图形数据库。人们创建帖子并关注其他人的事实适用于图形结构。使用正确的关系和算法,这可能是一个非常有效和高性能的解决方案。

    【讨论】:

      猜你喜欢
      • 2023-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多