Postgres SQL 的json 数据优势和劣势

网友投稿 1017 2022-11-21

Postgres SQL 的json 数据优势和劣势

Postgres SQL 的json 数据优势和劣势

优势

以json 格式保存的数据,没有了表和表之间的关联关系,因为一切的关联关系都通过使用json 来进行关联,例如,一个订单下存在多个商品,以json 的格式存储,甚至不需要重新创建一张新的表,可以直接将数据保存在json 字段中从这方面讲同时也降低了数据查询量,大大加快了数据库的查询速度,并且pgsql 的json 是可以加索引的,也是其一大优势(但是为了其能够命中索引条件查询时其写法变得有些复杂)方便了关联关系查询,减少了n+1 的问题,如果我们想查询订单并且同时获取到订单详情的数据,直接查询订单表就可以找到相关联的订单详情数据增加了扩展性,如果要新增或者删除字段,不必那么麻烦直接在保存数据时不保存该字段即可

劣势

增加了添加、修改的难度

同样以上方的订单为例,因为一个订单可能绑定了多个商品,由于不是关系型的表结构,我们如果想要订单详情中的某个商品信息,我们必须经历如下步骤:

首先必须先查询当前订单之后获取到当前的订单详情的json 字段通过json字段转换称订单详情实体类之后通过遍历,获取到要修改的数据修改后还必须转换回Json 数据并保存到表中多出的代码意味着风险,写出的代码处理步骤约繁琐,越是容易写出bug另外再转换Json 数据的过程中也可能会出现一些未知的问题

空处理加上对接问题

这是我们不得不面对的一个问题,因为如果我们忽略处理某个字段,可能导致前端找不到某个字段,所以我们保存到数据库时必须保证对象中的某个字段即使为空,在生成Json后字段的值至少是null或者空字符

增加了设计难度和查询难度

仍然是以上面的订单和订单详情为例,如果我们只想查询某个订单的订单详情,甚至对订单详情做分页查询,就必须新建表了,如果存在一些特殊的需求,修改了订单详情,那同样要考虑到是否需要改变订单表的Json 字段,以达到两张表数据一致的问题

结论

在设计数据库表结构时,如果考虑使用Json 格式保存数据,那这张表的Json 字段最好是保存后就再不进行修改的字段,另外保存数据时必须保证Json 的值是null 或者空字符串

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:mysql 的 in 不一定不走索引
下一篇:如何用 css 画一个正方体
相关文章

 发表评论

暂时没有评论,来抢沙发吧~