设计一个线程评论系统的最佳方式是什么?设计一个线程评论系统
回答
我在这种情况下通常会做的是让一个线程负责将数据放入数据库,并让所有辅助线程向该线程报告,然后将该数据排队,然后将其写入串行,或分批(取决于需求,以及我愿意忍受多少数据库活动)。
我猜你的问题是关于安排系统,让您不必上班:
- 选择所有的顶级评论
- 选择他们的父母在步骤发现所有评论之前
- 选择他们的父母在之前
- 步骤发现所有评论...重复,直到没有评论发现
我会建议使用一个线程键设计数据库表,这将是该职位的所有父母的字符串。你必须限制你的讨论到一定的深度,但是你的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. MySql数据库设计评论系统
- 3. 评论系统数据库设计
- 4. 制作一个网站评论系统
- 5. 一个安全的php评论系统
- 6. 在评论系统
- 7. Hierarchal评论系统
- 8. 评论系统php
- 9. XSLT评论系统
- 10. Yii评论系统
- 11. Disqus评论系统
- 12. php我有一个评论系统移动评论更接近
- 13. 如何创建一个评论系统像计算器
- 14. 如何使用评论框评论框使用评论系统
- 15. CakePHP博客教程的评论系统
- 16. 如何使用实体框架设计评论系统?
- 17. 评论系统设计中的JavaScript问题
- 18. 回复评论系统
- 19. 多发表评论系统
- 20. 嵌套评论系统sql
- 21. Codeigniter评论回复系统
- 22. 开源评论系统
- 23. Ajax/jQuery评论系统
- 24. PhP SQL评论系统
- 25. 评论系统rdbms vs nosql
- 26. 评论系统的结构
- 27. PHP和HTML评论系统
- 28. 评论系统 - 级联
- 29. php + mysql评论系统
- 30. 第三方评论系统