我可以将JSON存储在MySQL数据库表字段中吗?就我而言,这是个好主意吗?如果是这样,怎么办?

时间:2019-08-12 13:15:24

标签: mysql json database

这很重要,我目前有一个使用第三方API(其端点返回JSON)的应用程序。当前,当安装前端上的组件时,我执行一个函数,该函数向我自己的后端发出GET请求,而我的后端向第三方API发出GET请求,然后从API响应以JSON的形式返回到前端。

现在这一切都很好,但是,我对该API的允许请求数量有限,因此我想确保将响应保存到数据库中,以便将来发出请求时,我的后端会返回数据库中的内容,而不是发出全新的GET请求。

现在问题是,我不确定存储JSON是否明智或可行,这就是为什么我决定先咨询您的家伙,因为您的帮助非常大。应该以哪种数据类型保存JSON,我的操作会不会有任何弊端?

4 个答案:

答案 0 :(得分:2)

是的,您可以将JSON保存到mysql数据库。 Mysql在5.7版本以上添加了JSON数据类型。

请参阅http://www.mysqltutorial.org/mysql-json/

答案 1 :(得分:0)

是的,您可以将JSON响应保存在表本身内。

但是它将采用简单的字符串格式,并且需要在代码级别解析JSON字符串。

您可以使用CLOB。

答案 2 :(得分:0)

这只是一个BLOB,并没有固有的错误,它是受支持的数据类型。

但是,我建议您将JSON保存到文件中,并保留路径列表。仅仅是因为它会更快。

答案 3 :(得分:0)

是的,这是可能的。 MySQL从5.7版本开始实现JSON数据类型。

如果您要询问有关如何使用此数据类型的技术细节,这里是excellent shortcut

仅举几个例子:

创建:

mysql> CREATE TABLE facts (sentence JSON);

插入:

mysql> INSERT INTO facts VALUES
     >   ('{"mascot": "Our mascot is a dolphin named \\"Sakila\\"."}');

阅读:

mysql> SELECT sentence->"$.mascot" FROM facts;

但是我敢打赌,一个真正的问题是关于在数据库中存储JSON有多明智。

所以一般的答案是:

if developers of particular RDBMS included such aproach in their implementation, it is intended and desired for use.

因此,只要是将数据格式化为JSON的好主意,将数据存储在RDBMS中的JSON列中也是一个好主意。我没有那种特定实现的经验(更喜欢Postgresql而不是MySQL),但是我一经需要就开始使用JSON数据类型,但我仍然不认为这是一个错误的决定。 >

尤其是,当您考虑将JSON格式的数据存储在文件中并仅在数据库内部挂接路径时,改用JSON类型应该是一个好主意。几乎总是将JSON格式的数据存储在文件中将比插入和查询JSON慢,尤其是当您只需要访问特定键值对时(可以在普通选择中仅查询特定键)。

但是,如果您的数据根本不打算以JSON格式存储,那么也不要使用JSON数据类型。 JSON不喜欢哪种数据?基本上,当number-of-keys :TO: overall-size比率非常小时,各种非结构化流。一个示例是带有一个键的字典,其值存储500 kByte长的字符串:

{"file": "a very very very ... long string, perhaps just encoded file"}

在这种情况下-是的,更好的方法是将其存储为常规文件。

一如既往,这都取决于特定的用例:)

相关问题