在我的 Rails 7.1.3 应用程序中,我有一个带有表的 MySQL 8 数据库
users
。每个用户有很多translations
,翻译属于另一个表languages
。
我想缓存计算用户
translations
按 language
细分的查询结果,理想情况下以我可以将其作为对象检索的方式存储,例如
{ es: 1754, pt: 353, ru: 23, zh: 2334 }
问题: 存储这些东西的最佳列是什么?序列化文本列、JSON 列还是其他列?
我以前从未在 Rails 中使用过 JSON 列。我是否需要创建一个 JSON 架构来验证此类列?
或者这是 JSON 列的错误用例吗? (哈希不需要作为 JSON 发送,我只是喜欢它是格式化的哈希。但序列化列也是如此。)
这个查询在 cron 上运行有什么原因吗?
这似乎是缓存层的一个很好的例子。让您的 Rails 缓存存储能够保留查询结果,为其提供合理的生存时间,并在不存在有效数据集时自动查询新数据集。
Rails.cache.fetch("user_translations_for_#{user.id}", expires_in: 1.hour) do
query_goes_here
end
有关 Rails 缓存的更多信息:https://guides.rubyonrails.org/caching_with_rails.html