PHP:将共享用户数据作为 JSON 字符串存储在 MySQL 中的想法有多糟糕?

Posted

技术标签:

【中文标题】PHP:将共享用户数据作为 JSON 字符串存储在 MySQL 中的想法有多糟糕?【英文标题】:PHP: How bad of an idea is it to store shared user data in MySQL as a JSON string? 【发布时间】:2015-03-03 14:10:47 【问题描述】:

我正在开发一个简单的多人游戏,一次可能有 2 到 6 个人玩游戏。该游戏仅比五张抽牌扑克稍微复杂一点,因此资源消耗不是很大。

为了使开发变得快速和简单,我正在考虑有一个这样的表:(简化)

games
    id (int) primary-key auto-inc > unique id
    data (text) > for storing a JSON string

这是我对这个过程的想法:

AJAX 帖子包含 game_id 字段 做一些权限检查和验证 我从 games 获取条目,id 等于 game_id json_decode data 字段 更多权限和验证内容 如果对游戏数据进行了更改:json_encode 新数据并更新 DB

问题:我这样做会遇到什么陷阱?

【问题讨论】:

Storing Data in mysql as JSON 的可能重复项 不是重复的......我没有问任何关于 CouchDB 的问题,我也不是关于 JSON 的“n00b”问题。 【参考方案1】:

有些人会这样做,这就是您要面对的情况(1) 每次您需要更新用户数据时,您都必须解码 json 数据,编辑它然后存储它(要检索更多数据,要存储更多数据 => 更多处理)(2) 忘记使用 MySQL 查询进行数据聚合,您将不得不这样做通过 php 或您使用的任何语言手动完成

我不能说在 MySQL 中存储 JSON 是好还是坏,这取决于应用程序域和您的使用

【讨论】:

(1) 与使用标准关系数据库请求相比,我可以预期性能会受到影响……但可以说,如果每个解码/编码都替换了多个选择/插入/更新的使用,它可能会抵消这一点。 (2) 非常有力和充分的理由不按照我的想法去做。谢谢阿卜杜!

以上是关于PHP:将共享用户数据作为 JSON 字符串存储在 MySQL 中的想法有多糟糕?的主要内容,如果未能解决你的问题,请参考以下文章

PHP/MySQL - 将数组数据存储为 JSON,不好的做法?

如何将 BLOB 与 JSON 和 PHP 一起使用?

在共享首选项中解码存储的 json 结果字符串

如何将静态 JSON 从 PHP 返回到 extjs 存储

Pyspark:将数据帧作为 JSON 存储在 MySQL 表列中

将用户数据存储在服务器上的 JSON 文件中