【Redis】SQL 和NoSQL区别

发布时间 2024-01-03 14:18:30作者: 陆陆无为而治者
  SQL(关系型数据库) NoSQL(非关系型数据库)
是否结构化 结构化 非结构化
是否关联
查询

SQL查询(语法固定

 SELECT id,name,age FROM tb_user WHERE id =1

 

非SQL查询(语法不固定)

Redis: get user:1 

MongoDB:db.users.find({_id:1})

事务特性 ACID(原子性、一致性、隔离性、持久性) BASE(基本一致,无事物)
存储方式 磁盘 内存
扩展性 垂直 水平
使用场景

数据结构固定

相关业务对数据安全性、一致性要求较高

数据结构不固定

对一致性、安全性要求不高

对性能要求高

非结构化数据库举例

  1. 键值类型(Redis)

  2. 文档类型(MongoDB)

  3. 列类型(HBase)

  4. Graph类型(Neo4j)

ACID

数据库管理系统(DBMS)在写入或更新资料的过程中,为保证事务是正确可靠的,必须具备四个特性:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durablity)。

  • 原子性 :一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被恢复(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样
  • 一致性:在事务开始之前和事务结束以后,数据库的完整性没有被破坏。这表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性地完成预定的工作 。
  • 隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)。
  • 持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失 。