事情是这样的,我目前有一个应用程序,它使用第三方API,它的端点返回JSON。目前,当在前端挂载组件时,我执行一个函数,该函数向我自己的后端发出GET请求,作为回报,我的后端向第三方API发出GET请求,然后来自API的响应以JSON的形式返回给前端。
现在这一切都很好,但是,我对该API的允许请求数量是有限的,所以我希望确保将响应保存到我的数据库中,这样当将来发出请求时,我的后端将返回数据库中的内容,而不是发出一个全新的GET请求。
现在的问题是,我不确定存储JSON是否明智或可行,这就是为什么我决定首先咨询你们,因为你们非常有帮助。JSON应该保存在什么数据类型下,我所做的事情会有什么缺点吗?
发布于 2019-08-12 22:07:47
是的,这是可能的。从5.7版本开始,MySQL就实现了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慢,特别是当您只需要访问特定的键值对时(您可以在普通的selects中只查询特定的键)。
但是,如果您的数据根本没有集成到以JSON格式存储,那么使用JSON数据类型也不是一个好主意。JSON不喜欢哪种数据?基本上,当number-of-keys :TO: overall-size
比率非常小时,所有类型的非结构化流。举个例子,字典有一个键,值存储了500个kByte的长字符串:
{"file": "a very very very ... long string, perhaps just encoded file"}
在这种情况下-是的,一个更好的方法是将其存储为常规文件。
因此,与往常一样,这一切都取决于特定的用例:)
https://stackoverflow.com/questions/57461932
复制相似问题