标题: 假如虎绿林为帖子加上历史记录功能,数据库应该怎么设计?
时间: 2022-04-10
类比下知乎的问题日志,如果历史记录功能可以查看:
还兼容未来可能新增的功能,如:
例:
@无名啊 删除帖子
•2022-04-10 19:00:00
@老虎会游泳 关闭评论
•2022-04-10 18:30:00
@老虎会游泳 移动至
虎绿林 > 开发
版块•2022-04-10 18:20:00
@无名啊 修改帖子内容
•2022-04-10 18:10:00
(假如不搞差异显示)
等待审核修改内容
@无名啊 在
编程 > 数据库
版块发布帖子《假如虎绿林为帖子加上历史记录功能,数据库应该怎么设计?》
•2022-04-10 18:00:00
@老虎会游泳 审核通过•2022-04-10 18:05:00
原始内容
数据库该如何设计呢?
『回复列表(19|隐藏机器人聊天)』
我太不想要这个特性,不要提交给hu60.cn。
我以极高的频率修改帖子并保存,中间状态都不应该存在。
版主修改前的内容不应该被其他用户看到。
用户有被遗忘权,如果不能靠修改发言被遗忘,他们会选择删除发言,直至注销账号。
帖子内容表
增加字段内容类型
(如0:text 1:markdown 2:latex
),查看历史时需要该字段内容,来决定格式解析器
{"内容类型": 0}
(假设用json
序列化)至所有历史记录内容类型 = 历史数据["内容类型"] || 0
好像也无关紧要。。还是能提前渲染好。。
虎绿林的帖子改成只显示最新通过审核版本的内容
历史版本不存在
审核通过
则显示正在审核……
(存在正在审核
状态的内容)或审核未通过
(全是未通过
)甚至作者还能主动回退版本……
方案二
还好使吗?至少不太能只存储最终渲染了事
甚至觉得方案一
这种还是结构化数据方便读写(如给管理员显示diff 内容
加快审核)
@strwei,这是我专门为进入自嗨模式设计的功能,所以应该是不会关闭的。如果你对此不满意,可以屏蔽使用该功能的用户。比如,我就使用该功能,我甚至在该功能不存在的时候就一直在使用SQL语句实现类似功能。所以该功能最初就是为我开发的。如果你讨厌我发表的内容,认为我使用该功能浪费了公共资源,你可以屏蔽我。
关闭评论和删除评论是两个重要的自我保护措施。
如果我遭受攻击时会下意识使用这些措施,我就应该开放给所有其他用户,这样,他们才能和我一样保护自己免遭网络暴力。
和我一样,其他人也可以自由选择事前保护(发帖时就关闭评论)、事中保护(最开始允许回复,见势不对就关闭评论)和事后保护(允许回复,删除造成伤害的评论)。
因为删除的楼层会内信给作者,所以作者不会丢失自己的打字成果。如果作者真的想发表自己评论中的观点,也完全可以开一个新帖发布。所以上述两个功能对其他用户的发表权没有侵害。
随着互联网变得越来越暴力,我解决网络争端的指导方针已经发生了明显的变化。以前,我倾向于调解。现在,我倾向于第一时间脱离接触。
如果看对方不顺眼,请第一时间屏蔽他,这样就能避免未来发生更大的争端。随着互联网越发暴力,很多时候争吵都根本不会有结果,没有任何人的想法会改变。所以,迟早是要脱离接触的,还不如一开始就脱离接触。
虎绿林做为电子公告牌,为注册用户提供同等条件的电子公告发表服务。电子公告可以接受评论,但不是必然接受评论。如果用户只想公告,不想征求意见,当然可以选择发表不接受评论的电子公告。这样的公告在展示时没有理由被降级。
如果某些用户不喜欢某些公告,可以通过屏蔽发布者的方式来屏蔽这些公告。我认为这已经足以让这些用户远离自己不喜欢的内容。
如果一个管理员特权被我滥用,用于私人目的,导致我在使用虎绿林时和非管理员相比拥有特殊的优势,我就会考虑把该功能开放给所有人。
比如,我经常SQL语句锁帖,实现关闭评论。所以现在所有帖子作者都能关闭评论。
我经常因为不喜欢某人的言论就用管理员权限删除他在我帖子里的评论,所以现在所有帖子作者都能删除楼层评论。
我经常用帖子编辑权限查看、复制用户发表的UBB代码,所以现在帖子添加了“显示源码”(简称“源”)功能。
所以,如果关闭评论变成管理员特权,那么就回到了旧时代:管理员在发帖时和非管理员相比就还是有独特的优势——可以更有效的控评。
我会继续使用关闭评论对我的帖子进行控评,非管理员则失去了这样的机会。我不喜欢这样。