我从数据库运行非常复杂的报告。到目前为止,我正在返回一个复杂的 json 对象,而 javscript 正在呈现报告。但是随着它越来越多地创建这个 json 对象需要很长时间。
我正在考虑用另一种方法代替它。用户将创建一个生成报告的请求,服务器端进程可以生成 json 并将其存储以供以后使用,用户将通过电子邮件收到一个链接。
将 json 对象存储在数据库中是否安全?存储它的主要原因是用户要运行报告的列永远不会固定。我应该选择 NoSql 吗?
提前致谢 。
在您提到的特定情况下,您应该考虑使用 Redis 等键值存储。你可以存储,比如 user_id -> json_object。键值存储非常适合缓存,这基本上就是您正在做的事情。
在一般情况下,存储 JSON 是可能的,但它失去了一件重要的事情:如何在 SQL 查询中使用数据的语义并不明显。例如,假设我们存储如下记录:
{'color': blue, 'height': '40px'}
{'color': blue, 'height': '50px'}
{'color': red, 'height': '40px'}
作为数据库中的字符串。
如果我们想识别所有颜色为“蓝色”的元素,那么我们唯一的选择是在每个字符串元素中搜索字符串“%blue%”。这既昂贵又容易出错。您可能会考虑分解 JSON 并将其存储为数据库,或者转移到某种键值对或其他存储中。
在数据库中存储 JSON 应该是安全的。JSON 是简单的文本,所以从这个意义上说,我认为这种方法没有任何问题。