当前位置: 首页 > news >正文

NoSQL与SQL比较

1.认识NoSQL

NoSql可以翻译做Not Only Sql(不仅仅是SQL),或者是No Sql(非Sql的)数据库。是相对于传统关系型数据库而言,有很大差异的一种特殊的数据库,因此也称之为非关系型数据库

1.1.结构化与非结构化

传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束:

而NoSql则对数据库格式没有严格约束,往往形式松散,自由。

可以是键值型:

也可以是文档型:

甚至可以是图格式:

1.2.关联和非关联

传统数据库的表与表之间往往存在关联,例如外键:

而非关系型数据库不存在关联关系,要维护关系要么靠代码中的业务逻辑,要么靠数据之间的耦合:

{id: 1,name: "张三",orders: [{id: 1,item: {id: 10, title: "荣耀6", price: 4999}},{id: 2,item: {id: 20, title: "小米11", price: 3999}}]
}

此处要维护“张三”的订单与商品“荣耀”和“小米11”的关系,不得不冗余的将这两个商品保存在张三的订单文档中,不够优雅。还是建议用业务来维护关联关系。

1.3.查询方式

传统关系型数据库会基于Sql语句做查询,语法有统一标准;

而不同的非关系数据库查询语法差异极大,五花八门各种各样。

1.4.事务

传统关系型数据库能满足事务ACID的原则。

而非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性。

1.5.总结

除了上述四点以外,在存储方式、扩展性、查询性能上关系型与非关系型也都有着显著差异,总结如下:

  • 存储方式

    • 关系型数据库基于磁盘进行存储,会有大量的磁盘IO,对性能有一定影响

    • 非关系型数据库,他们的操作更多的是依赖于内存来操作,内存的读写速度会非常快,性能自然会好一些

  • 扩展性

    • 关系型数据库集群模式一般是主从,主从数据一致,起到数据备份的作用,称为垂直扩展。

    • 非关系型数据库可以将数据拆分,存储在不同机器上,可以保存海量数据,解决内存大小有限的问题。称为水平扩展。

    • 关系型数据库因为表之间存在关联关系,如果做水平扩展会给数据查询带来很多麻烦

http://www.lryc.cn/news/528412.html

相关文章:

  • Ceph:关于Ceph 中使用 RADOS 块设备提供块存储的一些笔记整理(12)
  • Android SystemUI——最近任务列表启动(十八)
  • 数据结构课程设计(三)构建决策树
  • 从ChatGPT热潮看智算崛起
  • 基于PyQt设计的智能停车管理系统
  • http的请求体各项解析
  • 【linux】Linux 常见目录特性、权限和功能
  • 创作三载·福启新章2025
  • RoboMaster- RDK X5能量机关实现案例(一)识别
  • Python帝王學集成-母稿
  • 安全漏洞扫描与修复系统的高质量技术详解
  • JavaScript反爬技术解析与应对
  • [NOIP2007]矩阵取数游戏
  • 在Linux系统上安装.NET
  • PCB Editor层叠文件(Gerber文件输出-01)
  • labelimg闪退的解决办法
  • 【开源免费】基于Vue和SpringBoot的在线文档管理系统(附论文)
  • 数据库管理-第287期 Oracle DB 23.7新特性一览(20250124)
  • Golang :用Redis构建高效灵活的应用程序
  • 四层网络模型
  • CUDA学习-内存访问
  • 进程通讯——类型和发展
  • 在 Windows 11 中为 SMB 3.x 文件共享协议提供 RDMA 支持
  • C 标准库 - `<errno.h>`
  • 2025年01月28日Github流行趋势
  • 7. 马科维茨资产组合模型+金融研报AI长文本智能体(Qwen-Long)增强方案(理论+Python实战)
  • Android 启动流程
  • 庆祝2025到来:C++编程的新篇章
  • 基于STM32的智能家用温控器设计
  • 扣子平台音频功能:让声音也能“智能”起来。扣子免费系列教程(14)