使用 SQLite 为单人框架提供超级加速

主要观点:Rails 从一开始以高速推进想法而闻名,但如今部署和运行全功能应用像成为火箭科学家。标准 Web 应用架构随时间变得更复杂,如今 Heroku 应用的服务器和服务数量大幅增加。但进步也可以是简化,Rails 8 和 SQLite 可一起将 Rails 变为“一人框架”,实现强大与简单的结合。
关键信息

  • Rails 8 使rails new命令具备生产就绪性,新的 Solid 宝石为 Rails 核心数据绑定组件提供生产就绪、灵活且可扩展的默认值。
  • Kamal 为生产部署提供新的改进解决方案,可通过 Docker 部署和管理 Web 应用。
  • SQLite 是世界上使用最广泛的数据库,虽曾被认为不适合 Web 应用,但通过调整配置和使用,在 Rails 8 中已成为完全可行的生产选项。
  • 解决了使用嵌入式数据库在多线程 Web 应用中的两个问题,使 SQLite 在高并发负载下性能大幅提升。
  • 用 Campfire 应用和其他现有应用实例证明单机器上运行全功能 Rails 应用的可行性,同时指出运行 SQLite 生产环境时需注意备份机制、迁移和垂直扩展等问题。
    重要细节
  • Rails 7 中rails new的生产默认值在生产环境中存在问题,如异步作业适配器、文件缓存存储等。
  • SQLite 运行在 Ruby 线程和进程中,是一个文件和嵌入式可执行文件,虽存储在单个文件中,但可处理高达 281 太字节的数据。
  • 解决 SQLite 在 Rails 中默认体验的两个问题的相关 PR 及详细技术内容可在作者博客查看。
  • Campfire 应用通过更换适配器用 Rails 8、Solid 宝石和 SQLite 运行,性能与标准版本相当。Ruby Video 应用在单台每月 4 美元的服务器上用 SQLite 运行良好。
  • Litestream 是用于 SQLite 的备份工具,可将更新流式传输到存储系统,作者已将其封装为 Ruby 宝石。
  • 垂直扩展可通过租用大型服务器实现,如 Hetzner 的 VPS 具有 48 核、192G 内存和 1T NVME SSD 空间,每月费用不超过 350 美元。
  • 大多数应用是读重写轻,使用嵌入式数据库能大幅提升性能,在云数据库环境下性能差异更明显。但对于大量写入操作,SQLite 的线性写入可能会影响应用性能。
阅读 14
0 条评论