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

Redis基础(1):NoSQL认识

SQL和NoSQL

数据库可以分为关系型数据库非关系型数据库SQL(Structured Query Language)相信大家并不陌生,这是用于操作关系型数据库的语言NoSQL,顾名思义,它对应的就是非关系数据库,它是操作非关系型数据库的技术类别。二者有很多地方是相同的,因为它们都是操作数据库的技术,但二者又有很多的不同之处,下面让我们从不同的角度了解二者的差异。

结构化(Structure)

SQL是结构化的查询语言,其结构化表现在数据是以一张二维表的形式保存在数据库中的,并且在创建表的时候,可以给表添加约束和字段限制。这些约束一旦建立好了,则这张二维表的结构就确定了,之后插入表中的数据就需要严格按照表的结构进行插入。并且表的结构是不建议修改的,需要在项目初期就确定好整张表的结构——由此也可以看出结构化对于SQL的重要性
NoSQL则是非结构化的,其对于数据的结构并没有严格的约束——但并不是意味着完全没有约束,需要根据NoSQL数据库的类型具体分析。但不论是哪种,相较于SQL的数据结构都比较松散,并没有这么强的结构和约束。

关系型

SQL对应的是关系型数据库表中的数据是有关联的。比如有三张表tb_user(用户表)tb_item(商品表)tb_order(订单表),这三张表看似是没有任何关系的,但是可以通过foreign key外键技术让三张表产生关系:

在删除数据的时候,必须按照外键的关系按照顺序删除。
NoSQL数据库本身是不会维护这种表之间的关系的,如果想要有SQL数据库一样的关系们必须依靠程序员自己维护。

SQL查询

关系型数据库可以通过SQL语句完成查询,并且SQL语句在关系型数据库中是通用的,不论是MySQL或者Oracle或者SQLSeverSQL语句都是通用的,其格式是固定的,语法也是固定的。
非关系型数据库中的查询语句完全不固定,根据不同的非关系型数据库,有不同的查询语句。

上图是三种常见非关系型数据库的查询语句,如图所示,三者都实现了查询id为1的用户信息这个功能,但是查询的语句却是大相径庭的Redis是一种命令、MongoDB是一种基于函数形式的调用、elasticsearch是一种基于RESTful风格的请求

事务

确保事务可靠执行的四个特性是ACID(Atomicity原子性、Consistency一致性、Isolation隔离性、Durability持久性),在关系型数据库中,经常会使用到事务,特别是涉及到多表操作时,而数据库底层可以帮助我们实现ACID的特性,所以说可以认为所有的关系型数据库都是满足ACID特性的。
非关系型数据库对于事务的ACID特性支持并不完善,有的数据库无法满足事务的强一致性,只能满足基本一致性,有的数据库甚至不支持事务。

存储方式

关系型数据库数据库中的数据存储一般是在磁盘中,非关系型数据库数据库中的数据一般是存储在内存中。通过一些计算机组成原理的知识,我们可以知道内存的读写速度是远远高于磁盘的,所以说一般基于内存存储的非关系型数据库的查询速度会远远高于基于磁盘存储的关系型数据库。但由于内存的容量较小,非关系型数据库的数据容量也会小于关系型数据库并且内存资源十分的宝贵,所以说一般不用来作持久化存储

总结

上表就是SQLNoSQL的主要区别,在实际开发中可以按照具体的使用场景来选择具体需要使用的数据库,但是在更多的情况下,会将二者结合起来使用,通过SQL的结构化存储来持久化保存数据;然后通过NoSQL的极致性能来做数据缓存,提升查询效率。

http://www.dtcms.com/a/265173.html

相关文章:

  • sqlmap学习笔记ing(3.[MoeCTF 2022]Sqlmap_boy,cookie的作用)
  • UniApp完美对接RuoYi框架开发企业级应用
  • 基于 ethers.js 的区块链事件处理与钱包管理
  • UI前端大数据可视化实战技巧:动态数据加载与刷新策略
  • 【AI智能体】Coze 搭建个人旅游规划助手实战详解
  • 【Rancher Server + Kubernets】- Nginx-ingress日志持久化至宿主机
  • Pillow 安装使用教程
  • AI之Tool:Glean的简介、安装和使用方法、案例应用之详细攻略
  • 监测检测一体化项目实践——整体功能规划
  • uniapp实现图片预览,懒加载,下拉刷新等
  • 基于 TOF 图像高频信息恢复 RGB 图像的原理、应用与实现
  • 重要版本:无需关闭UAC通知的TOS无线USB助手1.0.4,它来了(2025-07-02)
  • 操作系统考试大题-处理机调度算法-详解-1
  • 2025-暑期训练二
  • 通过具有一致性嵌入的大语言模型实现端到端乳腺癌放射治疗计划制定|文献速递-最新论文分享
  • AlpineLinux安装部署zabbix
  • 进程概念以及相关函数
  • 进程(起个开头,复习的一天)day26
  • 轻松上手:使用Nginx实现高效负载均衡
  • 应用密码学纲要
  • 怎样理解:source ~/.bash_profile
  • 决策树(Decision tree)算法详解(ID3、C4.5、CART)
  • 在线学堂-3.媒资管理模块(二)
  • 软件反调试(2)- 基于窗口列表的检测
  • 外侧三兵策略
  • 睿抗省赛2023
  • 【通识】机器学习相关
  • YOLOv11剪枝与量化(二)通道剪枝技术原理
  • 【Ragflow】30.离线环境迁移方案
  • 数据库9:数据库字符编码调整与校队(排序)规则