我们即将升级我们网站上的评论系统,现在它是一个单级结构,并且正在使用MySQL。我们希望将其改为多层次。
要记住的一件事是我们会在每个用户个人资料下显示所有评论。
到目前为止,考虑因素如下:
SQL专业人士:
SQL缺点:
no-SQL专业人士:
no-SQL cons:
在您的制作经历中,有哪些其他优点和缺点?
答案 0 :(得分:1)
使用RDBMS,您可以使用JOIN - 因此只需存储一次注释,不存储任何数据(pro),并且可以通过使用JOIN来满足您的显示用例。
例如MongoDB,JOIN不受支持(con),但是你可以通过复制数据来实现两种情况的良好性能 - 在树结构中与页面文档相关的一次存储注释,再一次在“UserComments”集合文档中存储注释与特定用户有关。即,查看与页面关联的所有注释,查询该页面的CollectionA,查看用户的所有注释,按用户ID查询CollectionB。
答案 1 :(得分:1)
您可以在SQL中使用基于树的结构,请参阅LTree for PostgreSQL - http://www.postgresql.org/docs/9.1/static/ltree.html
除此之外,您还可以使用常见的表格表达式执行递归查询,例如Disqus - http://justcramer.com/2010/05/30/scaling-threaded-comments-on-django-at-disqus/
答案 2 :(得分:0)
您还可以将所有注释存储在SQL中的单个记录中,方法是将其存储为XML字符串。这样可以让您轻松访问并快速检索。
答案 3 :(得分:0)
对于NOSQL(也可以应用于SQL),您不必以规范化的形式存储数据,对其进行非规范化。在两个地方存储评论!有一个关于用户的评论列表。
来自凯尔银行家nested comment approaches的一些好读物。