如何存储用户评论信息?

比如像SegmentFault这样的社区,是如何存储用户评论的。评论中回复某人的功能如何实现?

使用mysql的话似乎不难,但是所有评论放在一个表中的话会造成数据量太大,如何分表?

使用nosql,比如Redis存储评论的话该选择哪种数据类型?

阅读 9.5k
4 个回答

1.用redis不太科学,用内存来存大量的评论和回帖不经济,去哪搞那么多内存,存不下啊。

2.回帖和评论是比较结构化的数据,可以使用关系db存储,分表策略有很多,表特别大以后可以垂直或水平分表。可以按时间,或按访问习惯等等规则分,自行google。

使用redis就可以。新浪微博就完全持久化在redis之上,之前有人分享过它的redis存储方案,可以参考一下。现在是海量数据时代,以空间换时间的思路是主流,数据不必像存在MySQL这样的结构化数据库里那样干净整洁,可以允许一定的冗余。

新手上路,请多包涵

回复某人如何实现:假设帖子为一个post,评论表comment用post_id关联帖子,用parent_comment_id关联上一级的评论
数据量我觉得一般情况下是不需要分表的,用post_id做索引,1亿条评论几乎不是问题,如果真要分表,可以考虑按post_id逻辑分表,当然我觉得这样复杂度很高,可以考虑数据库中间件(比如cobar)来实现分库分表,这样业务上是无感知的,另外查询二级评论可能会比较麻烦,建议使用redis等nosql做一层数据缓存。

建议去研究一下开discuz的实现方式

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏