比如像SegmentFault这样的社区,是如何存储用户评论的。评论中回复某人的功能如何实现?
使用mysql的话似乎不难,但是所有评论放在一个表中的话会造成数据量太大,如何分表?
使用nosql,比如Redis存储评论的话该选择哪种数据类型?
比如像SegmentFault这样的社区,是如何存储用户评论的。评论中回复某人的功能如何实现?
使用mysql的话似乎不难,但是所有评论放在一个表中的话会造成数据量太大,如何分表?
使用nosql,比如Redis存储评论的话该选择哪种数据类型?
使用redis就可以。新浪微博就完全持久化在redis之上,之前有人分享过它的redis存储方案,可以参考一下。现在是海量数据时代,以空间换时间的思路是主流,数据不必像存在MySQL这样的结构化数据库里那样干净整洁,可以允许一定的冗余。
回复某人如何实现:假设帖子为一个post,评论表comment用post_id关联帖子,用parent_comment_id关联上一级的评论
数据量我觉得一般情况下是不需要分表的,用post_id做索引,1亿条评论几乎不是问题,如果真要分表,可以考虑按post_id逻辑分表,当然我觉得这样复杂度很高,可以考虑数据库中间件(比如cobar)来实现分库分表,这样业务上是无感知的,另外查询二级评论可能会比较麻烦,建议使用redis等nosql做一层数据缓存。
4 回答13.5k 阅读✓ 已解决
5 回答7.9k 阅读✓ 已解决
2 回答7.5k 阅读✓ 已解决
2 回答6.7k 阅读✓ 已解决
1 回答5.3k 阅读✓ 已解决
1 回答5.1k 阅读✓ 已解决
4 回答2.4k 阅读
1.用redis不太科学,用内存来存大量的评论和回帖不经济,去哪搞那么多内存,存不下啊。
2.回帖和评论是比较结构化的数据,可以使用关系db存储,分表策略有很多,表特别大以后可以垂直或水平分表。可以按时间,或按访问习惯等等规则分,自行google。