首先,mysql版本在5.7以下是不支持json格式存储的;
若使用json格式存储数据,在使用生成实体类的工具得到的文件字段类型为 object;
场景:
今天准备项目上线,在archery-sql审核查询平台提交sql并进行审查,审查结果为
not allowd json ..
询问dba 回复为 数据库支持 但不建议 使用json格式进行存储。
原因:
不符合安全规范;
解决:
后续使用varchar(500)格式 进行替换。
所以 json格式 真的存在安全隐患吗?
问了一圈度娘,优缺点并存,但不建议使用。
优点:
即使不使用 JSON类型,我们一样可以通过varchar类型或者text等类型来保存相关数据,但是,为什么还要专门增加这一数据格式的支持呢?其中肯定有较varchar或者text来存储此类型更优越的地方。
- 保证了JSON数据类型的强校验,JSON数据列会自动校验存入此列的内容是否符合JSON格式,非正常格式则报错,而varchar类型和text等类型本身是不存在这种机制的。
- MySQL同时提供了一组操作JSON类型数据的内置函数。
- 更优化的存储格式,存储在JSON列中的JSON数据会被转成内部特定的存储格式,允许快速读取。
- 查询性能提升:查询不需要遍历所有字符串才能找到数据;
- 修改性能提升:可以基于JSON格式的特征支持修改特定的键值。(即不需要把整条内容拿出来放到程序中遍历然后寻找替换再塞回去,MySQL内置的函数允许你通过一条SQL语句就能搞定)
- 支持索引:通过虚拟列的功能可以对JSON中的部分数据进行索引
缺点:
大概的意思都一样,就是性能问题,如果 体量大的值 一股脑存入json 会影响数据库性能;
以上。