关系型数据库(RDBMS)和非关系型数据库对比
关系型数据库(RDBMS)
首先要知道,关系型数据库绝对是数据库管理系统(DBMS)中的主流 , Oracle和MySQL都是关系型数据库
关系型数据库的实质:
- 关系型数据库是最古老的数据库类型,关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格的形式)
eg:
Tnu Tname Tsex Department
T001 光头强 男 计算机系
T002 飞飞 男 计算机系
T003 喵喵 女 数学系
T004 猪猪 女 物电系
- 关系型数据库以行(row)和列(column)的形式存储数据,以便于用户理解.这一系列的行和列被称为表(table),一组表又组成了一个库(Database)
- 表与表之间的数据记录有关系,现实世界中的各种实体和实体之间的各种联系均用关系模型表示, 关系数据库就是建立在关系模型基础上的数据库
- SQL就是关系型数据库的查询语言
关系数据库的优势:
- 复杂查询
- 可以使用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询
- 事物支持
- 使得对于安全性很高的数据访问要求得以实现
非关系型数据库(非RDBMS)
非关系型数据库可以看成传统关系数据库的功能阉割版本,非关系型数据库基于键值对存储数据,不需要经过SQL层的解析,性能非常的高,同时通过减少不常用的功能就可以进一步提升性能
- 也就是说: 非关系型数据库(非RDBMS)就是在关系型数据库的基础上舍弃部分功能以求得更高的性能的一种数据库
那么有哪些非关系型数据库?
-
键值型数据库
- 常见的键值型数据库管理系统: Redis
- 一般学习java后端开发时就要学习Redis
- Redis是一个缓存级别的数据库管理系统
- 在高并发场景中(eg:秒杀)等场景中使用Redis要做一些缓存处理
- 常见的键值型数据库管理系统: Redis
-
文档型数据库
- 将value值改为了文档
- 文档型数据库可以用于存放并获取文档
- 可以是XML,JSON等格式
- 常见的文档型数据库: MongoDB
-
搜索引擎数据库
- 搜索引擎数据库的核心原理是:“倒排索引”
- 常见的搜索引擎数据库 : Elasticsearch
-
列式数据库
- 做大数据的程序员一般都要学习列式数据库
- 我们的关系数据库中查询时只可以是一个一个的记录进行搜索,这个时候如果有20个字段,但是这个时候如果我们只要3个字段,那么这个时候如果我们是关系型数据库,我们就只能是返回这一整个记录上的20个字段, 但是这个时候如果我们使用的是列式数据库,我们就可以指定字段进行搜索(也就是一列一列的进行搜索),这个时候我们就可以精确的找到这3个字段,就减少了系统的I/O — 所以所列式数据库可以减少系统的I/O
- 常见的列式数据库 : Hbase
-
图形数据库
- 图形数据库更加适合存储关系复杂的数据
补充:
SQl用来操作关系型数据库,NoSQl用来操作非关系型数据库(非RDBMS)
日志收集,排行榜,定时器等要使用非关系型数据库来完成
- 日志收集和排行榜还有定时器都是不需要完整的关系型数据库的功能的