ruby - 使用 YAML::store,生产中更新的 yml 文件是否会在部署更新的应用程序时被清除?
问题描述
我正在使用 YAML::store 来存储字符串列表,并且我不想使用数据库来限制对 SQL 查询的需求。管理员用户可以添加或更新字符串。我想知道 .yml 文件是否会在生产中更新,以及当我将应用程序的更新版本部署到生产中时数据是否会被清除。
解决方案
我正在使用rails YAML::store ...
YAML::Store不是 Rails 的一部分,而是一个常规的 Ruby 标准库。
我想知道 .yml 文件是否会在生产中更新,以及当我将应用程序的更新版本部署到生产中时数据是否会被清除。
YAML::Store 只是写入您选择的文件。该文件会发生什么完全取决于您的部署过程和生产环境。如果您正在运行自己的服务器或在单个虚拟机上运行它可能是安全的。如果它是像Heroku这样的云服务,那么任何文件都可能不安全。
我不想使用数据库来限制对 SQL 查询的需求。
这可能是一个糟糕的权衡。YAML::Store 每次读取时都必须加载和解析整个文件。任何更改都意味着重写整个文件。随着文件变大,这将变得越来越糟。
更糟糕的是,使用本地文件将您限制为程序的单个实例。这意味着您无法通过添加另一个生产实例来扩大规模。
相比之下,简单的数据库查询非常快速和健壮。无需担心本地文件是否会被清除。任意数量的实例都可以连接到数据库。并且数据库也可以扩展为具有多个实例。
推荐阅读
- sql - 根据 SQL 中的另一列填充列
- sql - 为什么在检查非空条件时我的动态 SQL 错误?
- node.js - 如何获取 Skype 机器人联系人的头像?
- sql - 如何使用这样的 sql 查询在后端检索答案和问题表?
- java - Reactor TcpServer 丢弃传入连接
- laravel-passport - Laravel 8 护照安装失败
- scala - 数组上的 Scala 多行匿名闭包映射
- node.js - 如何使用 axios 和 React 来发出 AJAX 请求
- javascript - 通过 URL 将文件夹名称传递给自定义 ASPX 页面中的 SPO Rest API 调用
- google-analytics - 有没有办法跟踪静态网页的下载?