实现评论系统(大量数据写入)的最佳方式是什么?
1)使用MySQL等RDBMS数据库,2张表,1张主题,1张评论 优点是新评论的插入速度快,效率高,索引效率高。缺点 是横向扩展(水平缩放)很难。
2)使用nosql数据库,例如couchdb或mongodb,优点是横向扩展(水平扩展)容易,支持大数据写入,无模式缺点 我认为新数据的插入不如RDBMS快速高效
比如更新couchdb文档需要抓取整个文档,在本地更新后再提交,文档会很大,会占用带宽。
另外我认为 couchdb 就地更新,Mongodb 更新会很慢,并且不会像在 RDBMS 中那样高效
此外,当您想获取每个用户在各种主题中的评论时,我认为在 RDBMS 中搜索会比在 nosql 系统中更快。
那是一个couchdb数据库文档的样本[每个主题的文档样本]
{"_id":"doc id",
"_rev":"45521231465421"
"topic_title":"the title of the topic"
"topic_body":"the body of the topic"
"comments":[
{"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla1"}, {"user":"user1"}
{"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla2"}, {"user":"user2"}
{"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla3"}, {"user":"user3"}
{"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla4"}, {"user":"user4"}
{"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla5"}, {"user":"user5"}
{"date":"mm/dd/yy hh:mm:ss"}, {"commment":"bla6"}, {"user":"user6"}
]
}