Rails/MySQL:对于非 JSON 使用,使用 JSON 列或序列化文本更好吗?

问题描述 投票:0回答:1

在我的 Rails 7.1.3 应用程序中,我有一个带有表的 MySQL 8 数据库

users
。每个用户有很多
translations
,翻译属于另一个表
languages

我想缓存计算用户

translations
language
细分的查询结果,理想情况下以我可以将其作为对象检索的方式存储,例如

{ es: 1754, pt: 353, ru: 23, zh: 2334 }
  • 我不会查询此数据,或将其发送到前端。
  • 该数据仅供内部使用,仅供展示。它用在用户的个人资料页面上,显示他们迄今为止的工作的大致数量。
  • 数据不是来自用户,而是来自应用程序。这是一个带有计数的数据库查询;所有值都是整数。它每天由 cron 作业刷新一次,并且它是否准确到最新并不重要。

问题: 存储这些东西的最佳列是什么?序列化文本列、JSON 列还是其他列?

我以前从未在 Rails 中使用过 JSON 列。我是否需要创建一个 JSON 架构来验证此类列?

或者这是 JSON 列的错误用例吗? (哈希不需要作为 JSON 发送,我只是喜欢它是格式化的哈希。但序列化列也是如此。)

ruby-on-rails serialization activerecord
1个回答
0
投票

这个查询在 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

© www.soinside.com 2019 - 2024. All rights reserved.