mysql - 了解了有关 SQL 和 no-SQL 的所有知识后,存储树的最佳方式是什么?

标签 mysql sql mongodb nosql

我们即将升级我们网站上的评论系统,该系统目前是单级结构并使用 MySQL。我们想将其更改为多级。

需要记住的一件事是,我们会显示每个用户个人资料下的所有评论。

到目前为止,考虑因素如下:

SQL 专家:

  • 更轻松地检索每个用户的评论

SQL 缺点:

  • 需要更长的时间来检索线程的整个树

无 SQL 优点:

  • 线程中的所有评论都可以作为单个对象检索
  • 现有树模式

无 SQL 缺点:

  • 检索单个用户的评论更难/更慢
  • 现有树的更新更加困难

在您的制作经验中,还有哪些其他优点和缺点?

最佳答案

通过 RDBMS,您可以使用 JOIN - 因此每个评论只需存储一次,没有数据重复(专业版),并且可以通过利用 JOIN 来满足您的两种显示用例。

例如MongoDB、JOIN 不受支持(缺点),但是您可以通过复制数据来实现这两种情况的良好性能 - 将评论存储在与树结构相关的页面文档中一次,然后再存储在“UserComments”集合文档中与该特定用户相关。即要查看与某个页面关联的所有评论,请查询该页面的 CollectionA,要查看某个用户的所有评论,请按用户 ID 查询 CollectionB。

关于mysql - 了解了有关 SQL 和 no-SQL 的所有知识后,存储树的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995369/

相关文章:

mysql 'friend_id' 中的未知列 'on clause'

mysql - mySQL 中使用 REPLACE 函数索引列

mysql - 连接 3 个表,查询无响应

MongoDB - 按子树查询

mongodb - 启动时如何在Docker容器中创建新的Mongodb?

MongoDB Map/Reduce Array 聚合问题

mysql - 如何将 ORDER BY 和 LIMIT 与 UPDATE 一起使用?

php - SQL选择计数代码不起作用

sql - T-SQL 格式秒为 HH :MM:SS time

sql - 减少 VARCHAR 长度时的错误