Discourse 最多能存储多少主题

根据 Discourse 的数据库设计,关于主题表使用了的是 sequence。

ID 字段使用的是 int,sequence 的名字为:topics_id_seq

那么根据 postgres 数据库手册我们知道如果使用 int 的 sequence 最多能存储:2147483647

那么整体来说,Discourse 的设计能够存储 20 亿左右数据在主题中,对大部分的社区来说应该是足够了。

如果还想增加的话,Postgres 数据库的数据类型可以使用 bitint,使用下面的 SQL 进行更改。

ALTER SEQUENCE "topics_id_seq" AS bigint MAXVALUE 9223372036854775807;

在当前运营的很多社区中,这个更改其实没有太大必要,因为很少可能会存储到这么大的数据。

不止啊,一个topic至少对应一个post,post_id也需要扩容

反正这个挺烦的 不过目前还没有任何一个社区能做到发21亿条post(Bilibili都没21亿条视频),我觉得没必要

确实没有必要的。

最近在看 Discourse 的数据结构和看下他们的表设计,通过这个来了解下真实的数据是怎么存储的,所以就顺便发下自己发现的。

启用一次对话也会占用一个post(比如ai机器人,私聊)

嗯,好像是这个意思。

不过还是看站点规模和参与用户吧。

现在我们这 ID 才 1万6,说运行到 10 万的 Topic 都费劲。