首页 > 解决方案 > 使用 YAML::store,生产中更新的 yml 文件是否会在部署更新的应用程序时被清除?

问题描述

我正在使用 YAML::store 来存储字符串列表,并且我不想使用数据库来限制对 SQL 查询的需求。管理员用户可以添加或更新字符串。我想知道 .yml 文件是否会在生产中更新,以及当我将应用程序的更新版本部署到生产中时数据是否会被清除。

标签: ruby

解决方案


我正在使用rails YAML::store ...

YAML::Store不是 Rails 的一部分,而是一个常规的 Ruby 标准库。

我想知道 .yml 文件是否会在生产中更新,以及当我将应用程序的更新版本部署到生产中时数据是否会被清除。

YAML::Store 只是写入您选择的文件。该文件会发生什么完全取决于您的部署过程和生产环境。如果您正在运行自己的服务器或在单个虚拟机上运行它可能是安全的。如果它是像Heroku这样的云服务,那么任何文件都可能不安全。

我不想使用数据库来限制对 SQL 查询的需求。

这可能是一个糟糕的权衡。YAML::Store 每次读取时都必须加载和解析整个文件。任何更改都意味着重写整个文件。随着文件变大,这将变得越来越糟。

更糟糕的是,使用本地文件将您限制为程序的单个实例。这意味着您无法通过添加另一个生产实例来扩大规模。

相比之下,简单的数据库查询非常快速和健壮。无需担心本地文件是否会被清除。任意数量的实例都可以连接到数据库。并且数据库也可以扩展为具有多个实例。


推荐阅读