gpt4 book ai didi

performance - 如何实现线程化评论?

转载 作者:行者123 更新时间:2023-12-03 10:28:25 25 4
gpt4 key购买 nike

我正在开发一个可以支持线程注释的 Web 应用程序。我需要能够根据收到的票数重新排列评论。 (与线程评论在 reddit 中的工作方式相同)

我很想听听 SO 社区关于如何做到这一点的意见。

我应该如何设计 评论 table ?
这是我现在使用的结构:

Comment
id
parent_post
parent_comment
author
points

这种结构应该做哪些改变?

我应该如何从这个表中获取详细信息以正确的方式显示它们?
(欢迎以任何语言实现。我只想知道如何以最好的方式做到这一点)

在实现此功能时我需要注意哪些事项以减少 CPU/数据库的负载?

提前致谢。

最佳答案

在数据库中存储树是一个有许多不同解决方案的主题。这取决于您是否还想检索子层次结构(因此项目 X 的​​所有子项),或者您是否只想获取整个层次结构集并使用字典以 O(n) 方式在内存中构建树。

您的表格的优势在于,您可以通过过滤父帖子,一次性获取对帖子的所有评论。当您以教科书/天真的方式定义了评论的父级时,您必须在内存中构建树(见下文)。如果你想从数据库中获取树,你需要一种不同的方式来存储树:
在此处查看我对基于预计算的方法的描述:
http://www.llblgen.com/tinyforum/GotoMessage.aspx?MessageID=17746&ThreadID=3208
或通过 using balanced trees described by CELKO here :

或另一种方法:
http://www.sqlteam.com/article/more-trees-hierarchies-in-sql

如果您在内存中获取层次结构中的所有内容并在那里构建树,则由于查询非常简单,因此效率会更高: select .. from Comment where ParentPost = @id ORDER BY ParentComment ASC

在该查询之后,您只使用 1 个字典在内存中构建树,该字典跟踪元组 CommentID - Comment。您现在遍历结果集并动态构建树:您遇到的每个评论,您都可以在字典中查找其父评论,然后将当前处理的评论也存储在该字典中。

关于performance - 如何实现线程化评论?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/597882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com