码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Postgres SQL 的json 数据优势和劣势


    优势

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

    劣势

    增加了添加、修改的难度

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

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

    空处理加上对接问题

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

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

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

    结论

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

  • 相关阅读:
    含文档+PPT+源码等]精品微信小程序电子书城销售系统|商城|电商系统+后台管理系统|前后分离VUE[包运行成功]微信小程序项目源码Java毕业设计
    计算机毕业设计Java超市会员积分管理系统(源码+系统+mysql数据库+lw文档)
    ubuntu server 更改时区:上海
    Phillweston 自动驾驶 决策规划算法 面经
    【pytorch】pytorch中的高级索引
    Android开发之——Jetpack Compose布局(03)
    14. 对有状态组件和无状态组件的理解及使用场景?
    Docker Buildkit(新增 --mount、--security、--network 等特性)
    前端SVG的学习
    opencl.dll丢失怎么办?为什么会丢失?
  • 原文地址:https://blog.csdn.net/qq_40929531/article/details/125561831
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号