在 MySQL 中存储相当大的 JSON 对象的最佳方法是啥
Posted
技术标签:
【中文标题】在 MySQL 中存储相当大的 JSON 对象的最佳方法是啥【英文标题】:What is the best way to store a pretty large JSON object in MySQL在 MySQL 中存储相当大的 JSON 对象的最佳方法是什么 【发布时间】:2016-02-28 00:18:44 【问题描述】:我正在构建一个 Laravel 应用程序,其核心功能由相当大的 JSON 对象驱动。 (最大的在 1000-1500 行之间)。
我知道有比 mysql 更好的数据库选择来存储文件和数据块,但由于各种原因,我需要将 MySQL 用于应用程序。
所以我的问题是,如何在 MySQL 中最有效地存储我的 JSON 对象?我不需要对保存数据的列进行任何查询,会有其他列来识别它。像这样的:
id、title、created-at、update-at、JSON-blobthingy
有什么想法吗?
【问题讨论】:
您可以将其保存为 TEXT,但我建议您更改为 MongoDB 或 Redis,因为它们是为文档存储而不是关系架构设计的。LONGTEXT
会有所帮助
@toubou 谢谢。但我需要使用 MySQL,系统的其余部分基于关系数据模型。
@Christoffer 天哪,祝你好运:)
【参考方案1】:
如果您的 MySQL 版本为 5.7.8 或更高版本,则可以使用 JSON 数据类型。
您可以将 JSON 文件存储在服务器上,并通过 MySQL 简单地引用其位置。
您也可以使用TEXT types 之一。
【讨论】:
只要他不需要对存储的 JSON 进行任何查询,我会直接转到 TEXT 类型。小心不要索引该列。LONGTEXT
会有所帮助。
我希望他们可以将服务器更新到 >= 5.7.8。尽管如此,我认为在存储 JSON 时不必验证它,因为我将在创建和解析它时通过模式验证它。此外,我真的需要一种简单巧妙的方式将其绑定到应用程序关系结构中。所以我现在可能会选择Text。谢谢!【参考方案2】:
我能给出的最佳答案是使用 MySQL 5.7。在此版本上,支持新的列类型 JSON
。它可以很好地处理大型 JSON(显然)。
https://dev.mysql.com/doc/refman/5.7/en/json.html
【讨论】:
【参考方案3】:如果您不需要可搜索的数据,您可以在插入数据之前对其进行压缩。我正在为此使用“zlib”库
【讨论】:
【参考方案4】:简单地说,您可以使用类型longblob
,它可以为包含大型 JSON 对象的列处理多达 4GB 的数据,您可以在其中插入、更新和读取该列,就像它是文本或其他任何内容一样!
【讨论】:
以上是关于在 MySQL 中存储相当大的 JSON 对象的最佳方法是啥的主要内容,如果未能解决你的问题,请参考以下文章
(预)处理存储在 json 中的大型数据集的最有效方法是啥?