非Docker安装Discourse并使用MariaDB而不是PostgreSQL,谁的方案好? - 技术宅银魂 - 科技改变生活 - 万事屋 | 生活·动漫·娱乐综合社区-银魂同好聚集地

非Docker安装Discourse并使用MariaDB而不是PostgreSQL,谁的方案好?

AI的出现令不会技术的人也可以搞技术了,比如我。如标题需求。

DeepSeek给出的方案:Ubuntu Server 22.04 原生部署Discourse实战:宝塔+MariaDB+Memcached全方案

Grok3 给出的方案:在 Ubuntu Server 22.04 上通过 Plesk 安装 Discourse 的完整指南

DeekSeep意思是Discourse 可以直接兼容MySQL,而Grok分析说不稳定:

关于隔壁 deekseep 给出的方案和我的建议,我来帮您分析一下,看看哪个更可行。
 

DeekSeep 的方案

 
deekseep 建议直接修改 config/database.yml 文件,把数据库适配器从默认的 PostgreSQL 改为 MariaDB,具体配置如下:
 
production:
  adapter: mysql2
  connect_timeout: 10
  read_timeout: 5
  write_timeout: 5
  reconnect: true
  variables:
    wait_timeout: 28800
他的想法是,通过这些参数调整,Discourse 就能直接连接到 MariaDB,而不需要安装 PostgreSQL。
 
可行性分析
  • 理论上:Discourse 是基于 Ruby on Rails 构建的,而 Rails 确实支持多种数据库适配器,包括 mysql2(适用于 MariaDB)。从 Rails 的角度看,修改 config/database.yml 来连接 MariaDB 是可行的。
  • 实际上:Discourse 是一个专为 PostgreSQL 设计的应用程序。它大量依赖 PostgreSQL 的高级特性,比如全文搜索、JSONB 数据类型等。这些特性在 MariaDB 中要么没有直接支持,要么实现方式不同。如果直接切换到 MariaDB,Discourse 的很多功能可能会出现问题,甚至无法正常运行。
  • 代码依赖:Discourse 的源代码中包含许多针对 PostgreSQL 的特定查询和逻辑,直接用 MariaDB 替换可能会导致兼容性错误,需要对代码进行大量修改。
  • 支持问题:Discourse 的官方文档和社区都只支持 PostgreSQL。如果使用 MariaDB,遇到问题时很难得到官方或社区的帮助。
结论
 
deekseep 的方案看似简单,但实际上风险很高。除非您有足够的开发资源和时间去修改 Discourse 的代码并解决兼容性问题,否则这个方案不推荐

 


 

我的方案

 
我建议安装 PostgreSQL 作为 Discourse 的主要数据库。如果您有特殊需求需要连接 MariaDB,可以通过 PostgreSQL 的 mysql_fdw 扩展来实现。这样,Discourse 仍然运行在 PostgreSQL 上,但可以通过外键表访问 MariaDB 的数据。
 
可行性分析
  • 兼容性:Discourse 默认支持 PostgreSQL,所有功能都能正常运行。使用 mysql_fdw,Discourse 仍然认为自己在和 PostgreSQL 交互,代码无需修改。
  • 灵活性:您可以把部分数据存储在 MariaDB 中,通过 mysql_fdw 访问,同时保持 Discourse 的核心功能依赖 PostgreSQL。
  • 支持:因为 PostgreSQL 是官方推荐的数据库,遇到问题时可以轻松获得社区和官方支持。
局限性
  • 性能:通过外键表访问远程 MariaDB 数据可能会增加延迟,影响性能。
  • 复杂性:需要额外配置 PostgreSQL 和 mysql_fdw,系统维护会稍微复杂一些。
  • 功能限制:某些 PostgreSQL 特性可能因 mysql_fdw 的限制而无法完全发挥。
结论
 
我的方案需要安装 PostgreSQL 并做一些额外配置,但能保证 Discourse 的稳定性和兼容性,是更安全、更可行的选择。

最终对比与建议

  • deekseep 的方案
    • 优点:简单,不需要安装 PostgreSQL。
    • 缺点:兼容性问题严重,可能导致功能缺失或系统不稳定,不被官方支持。
    • 适用场景:只有在您有能力修改 Discourse 代码并愿意承担风险时才考虑。
  • 我的方案
    • 优点:完全兼容 Discourse,官方支持,灵活性高。
    • 缺点:需要安装 PostgreSQL 并配置 mysql_fdw,稍复杂。
    • 适用场景:希望 Discourse 稳定运行并可能需要连接 MariaDB 的情况。
推荐:大哥,如果您想让 Discourse 正常运行并减少麻烦,建议还是安装 PostgreSQL。如果有特殊需求要用 MariaDB,可以用我的方案通过 mysql_fdw 连接。如果您只是想省事而直接改用 deekseep 的方案,可能会遇到很多问题,后续维护会很头疼。
 
有什么疑问随时问我,大哥!
 
请登录后发表评论

    没有回复内容

万事屋新帖