在 mysql 中以 json 格式存储常用数据值得吗?

Posted

技术标签:

【中文标题】在 mysql 中以 json 格式存储常用数据值得吗?【英文标题】:is storing frequently used data in json in mysql worth it? 【发布时间】:2021-04-19 03:55:23 【问题描述】:

在 vue.js 应用程序中,主要关注点是与潜在客户合作。潜在客户有很多东西,比如联系人、列表和六个其他对象/表格。

他们也有互动,每个潜在客户可能有 30 次或更多,而电子邮件或电话等大多数事情都会有 1-3 个结果。我一次将 50 个潜在客户加载到前端

我正在尝试决定是否将其全部加载到前端以一次处理 50 个潜在客户是一个好主意,或者我是否应该有一个包含交互的 json 列作为潜在客户表的一部分,我将更新每个保存交互的时间,包含最少的信息,如日期、类型、主题...

在每次交互时更新 json 列似乎是一个额外的步骤(和重复的数据,这有多重要?),但似乎也可以节省查找和加载数据的时间

我不是程序员,但一直在自学如何通过教程和 youtube 为我的业务做一些我需要做的事情,任何专业处理此问题的人的意见将不胜感激

另外,如果有人想告诉我如何以更好的格式提出这个问题,我愿意接受

谢谢

【问题讨论】:

【参考方案1】:

想象一下,如果您有 1000 条数据,但您只发送了其中的 50 条,而您的用户按价格进行了过滤。您会只显示 50 或 1000 个过滤后的数据吗?

这取决于您是否要将所有 1000 条数据公开给前端。这是两者之间的选择,并且每次都调用您的服务器 api。

如果您正在调用服务器,请考虑使用像 Redis 这样的缓存来存储您的结果。

伪代码。

Request Received
    Check Redis Cache - Redis.get('key')
        If key exist - return cache.
        Else - 
            check mysql for latest results.
            Redis.set('key', latest results);


CreateRequest Received
     - Write to mysql
     - Redis.delete('key')  // next request to view will create new cache with fresh data.

你的密钥可以是任何东西,例如你的 url ('/my/url')

https://laravel.com/docs/8.x/redis

【讨论】:

老实说,我不知道那是什么,不过我会去兔子洞…… redis 是非常非常常用的数据缓存层,所以你不需要重复查询你的 mysql 以获得相同的结果。 感谢您的回复,将 1000 暴露给前端以进行过滤会很好,但不是很常见,用户需要从最新到最旧的潜在客户工作,所以从逻辑上讲,他们一次会工作 50 个,如果他们只想找到状态为 x 的人,那么点击 api 并加载状态为 x、y 或 z 的 50 个不是更容易吗? 是的,你说得对。我对您的问题的理解是加载 50 还是 1000 才能进行交互。 我的错,这是我在这里的第一篇文章,我可能没有问完全正确的问题,你对前景表中的一个单独的 json 列有什么看法来总结交互与交互资源:: 互动收藏。在大多数情况下,该集合将远远大于整个潜在客户资源

以上是关于在 mysql 中以 json 格式存储常用数据值得吗?的主要内容,如果未能解决你的问题,请参考以下文章

以 JSON 格式存储多语言数据 (MySQL)

在 MySQL JSON 字段中的数组中搜索值(Laravel/Lumen)[重复]

mysql 类似json字符串截取,获取某个值

mysql怎么搜索json格式的数据

如果将json格式数据存储到类似mysql这样的关系型数据库中,怎么查

如何在 Mysql 中以 unix 毫秒为单位存储日期?