设计一个线程评论系统的最佳方式是什么?设计一个线程评论系统
回答
我在这种情况下通常会做的是让一个线程负责将数据放入数据库,并让所有辅助线程向该线程报告,然后将该数据排队,然后将其写入串行,或分批(取决于需求,以及我愿意忍受多少数据库活动)。
我猜你的问题是关于安排系统,让您不必上班:
- 选择所有的顶级评论
- 选择他们的父母在步骤发现所有评论之前
- 选择他们的父母在之前
- 步骤发现所有评论...重复,直到没有评论发现
我会建议使用一个线程键设计数据库表,这将是该职位的所有父母的字符串。你必须限制你的讨论到一定的深度,但是你的sql语句应该是直接选择和按线程键排序,给你回线程注释。对您的数据库和Web服务器征税较少。
一个线程键会像它的当前职位ID加入到它的父母的线程键与分隔符。
这听起来怎么样?
我猜你有类似“评论”表的东西,有一个外键自己,指向每行的父注释。这使得线程注释成为以线程启动器作为树根的树结构。
所以我们可以将这个问题改为“从数据库中选择树结构的最佳方法是什么?”。那么我不会假设知道最好的方式,但是我的第一个倾向(可能是错误的)是使用存储过程来遍历树,并编译要返回的行列表。它仍然需要多个选择语句来获取所有的孩子,但它只是一次数据库往返。
Aryeh的方法与积累父列表可能是更好:)
这个网站列出了一些常见的技术: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
我会做“嵌套组”的模式,但有多个根(如每个“主题”是一棵新树)。它的速度非常快,简单的查询,但复杂的维护......
SELECT ... START WITH ... CONNECT BY
Oracle有一个扩展选择,允许轻松基于树的检索。
这个查询将穿越其中的嵌套关系存储在父和孩子列的表。
select * from my_table
start with parent = :TOP_ARTICLE
connect by prior child = parent;
Modified pre-order tree traversal(或什么马特提到的 “嵌套组”)是要走的路。
如果你碰巧在Django工作,那么有一个第三方应用django-mptt,这使得在你的模型中实现MPTT是一个单线程。
我不得不第二次卡尔迈尔的建议,使用link text技术。我现在正在研究这样一个系统,但是对于论坛还有一些进一步的优化。
在支持回复的论坛系统中,您经常会插入树中间,从而导致性能下降。为了减少我正在努力让数字线上的空白的痛苦。这工作就像在数组列表中预先分配内存。向右移动树的成本对于1和100是相同的。因此,在连续回复(更有可能)时,我可以更新更少的树节点,并且它们将更快。
缩小规模是通过比较当前节点的左右值来中断后代节点的计数(本帖下面的回复数)。这些信息可以缓存在数据结构中以实现快速。所以在插入时,我将不得不用新计数来更新所有的祖先节点。更少的节点将被更新,结果将会大大加快平均情况下的插入时间。
多棵树被存储在同一个表中。每棵树都有一个唯一的树ID,每个主题一个。更小的树更新更快。
希望帮助
- 1. 为iOS设计一个线程评论系统
- 2. 评论系统数据库设计
- 3. 制作一个网站评论系统
- 4. 一个安全的php评论系统
- 5. Disqus评论系统
- 6. XSLT评论系统
- 7. Yii评论系统
- 8. php我有一个评论系统移动评论更接近
- 9. CakePHP博客教程的评论系统
- 10. 如何使用实体框架设计评论系统?
- 11. 开源评论系统
- 12. PHP中的评论系统
- 13. 嵌套评论系统sql
- 14. 多发表评论系统
- 15. PhP SQL评论系统
- 16. 评论系统 - 级联
- 17. Ajax/jQuery评论系统
- 18. php mysql +评论系统
- 19. 第三方评论系统
- 20. 评论系统rdbms vs nosql
- 21. PHP和HTML评论系统
- 22. 如何在C#中构建一个线程评论系统?帮助
- 23. 有人可以解释一下这个类的php线程评论系统吗?
- 24. PHP中图像博客的线程评论系统
- 25. SQL Server 2008线程评论系统 - 什么更有效?
- 26. Multiple IntenseDebate评论统计
- 27. Phabricator的评论统计
- 28. Django评论和评分系统
- 29. 评级系统的数据库设计
- 30. db设计评论/建议