NoSQL和关系型数据库的比较
相信大家对传统关系型数据库都不陌生,我们常常使用的关系型数据库有 MySQL、Oracle、SQL Server、SQLite、DB2、Teradata、Infomix、Sybase、PostgreSQL、Access、FoxPro 等;相对应的,常见的 NoSQL 数据库有 MongoDB、Memcached、Redis、HBase、CouchDB、Neo4j、Cassandra、Riak 等。
我们将通过以下几个方面来比较 NoSQL 数据库与传统关系型数据库。
关系型数据库:相对于NoSQL,关系型数据库通常需要安装部署,开源的比较少,使用成本比较昂贵。尤其是 Oracle 数据库,需要花费大量资金购买,使用成本比较高。
关系型数据库:关系型数据库是采用关系型数据模型来组织的,它是行列表结构,通过行与列的二元形式表示出来,数据之间有很强的关联性。它采用二维表结构的形式对数据进行持久存储。
关系型数据库:关系型数据库将数据存储在系统的硬盘中,在查询的时候需要经过 SQL 层的解析,然后读入内存,实现查询,因此查询效率较低。
关系型数据库:由于关系型数据库采用关系型数据模型来存储数据,数据与数据之间的关联性较强,存在耦合性,因此不易扩展。尤其是存在多表连接(join)查询机制的限制,使得扩展很难实现。
NoSQL:NoSQL 一般不支持 ACID 特性,它实现最终一致性。
关系型数据库:关系型数据库支持 ACID 特性,具有严格的数据一致性。
关系型数据库:关系型数据库支持 SQL 语句,也支持复杂查询。SQL 是结构化查询语言、数据操纵语言、数据定义语言。
NoSQL 数据与传统关系型数据库是互补的关系,对方的劣势就是自己的优势,反之亦然。
我们将通过以下几个方面来比较 NoSQL 数据库与传统关系型数据库。
1) 使用成本
NoSQL:NoSQL 使用简单,易搭建,大部分是开源软件,比较廉价,任何人都可以使用。关系型数据库:相对于NoSQL,关系型数据库通常需要安装部署,开源的比较少,使用成本比较昂贵。尤其是 Oracle 数据库,需要花费大量资金购买,使用成本比较高。
2) 存储形式
NoSQL:NoSQL 具有丰富的存储形式,如 key-value(键值对)形式、图结构形式、文档形式、列簇形式等,因此,它可以存储各种类型的数据。关系型数据库:关系型数据库是采用关系型数据模型来组织的,它是行列表结构,通过行与列的二元形式表示出来,数据之间有很强的关联性。它采用二维表结构的形式对数据进行持久存储。
3) 查询速度
NoSQL:NoSQL 将数据存储在系统的缓存中,不需要经过 SQL 层的解析,因此查询效率很高。关系型数据库:关系型数据库将数据存储在系统的硬盘中,在查询的时候需要经过 SQL 层的解析,然后读入内存,实现查询,因此查询效率较低。
4) 扩展性
NoSQL:NoSQL 去掉了传统关系型数据库表与字段之间的关系,实现了真正意义上的扩展。它采用键值对的形式存储数据,消除了数据之间的耦合性,因此易扩展。关系型数据库:由于关系型数据库采用关系型数据模型来存储数据,数据与数据之间的关联性较强,存在耦合性,因此不易扩展。尤其是存在多表连接(join)查询机制的限制,使得扩展很难实现。
5) 是否支持 ACID 特性
ACID 特性是指数据库事务的执行要素,包括原子性、一致性、隔离性、持久性。NoSQL:NoSQL 一般不支持 ACID 特性,它实现最终一致性。
关系型数据库:关系型数据库支持 ACID 特性,具有严格的数据一致性。
6) 是否支持 SQL 语句
NoSQL:SQL 语句在 NoSQL 中是不被支持的,NoSQL 没有声明性查询语言,且没有预定义的模式。关系型数据库:关系型数据库支持 SQL 语句,也支持复杂查询。SQL 是结构化查询语言、数据操纵语言、数据定义语言。
NoSQL 数据与传统关系型数据库是互补的关系,对方的劣势就是自己的优势,反之亦然。
所有教程
- C语言入门
- C语言编译器
- C语言项目案例
- 数据结构
- C++
- STL
- C++11
- socket
- GCC
- GDB
- Makefile
- OpenCV
- Qt教程
- Unity 3D
- UE4
- 游戏引擎
- Python
- Python并发编程
- TensorFlow
- Django
- NumPy
- Linux
- Shell
- Java教程
- 设计模式
- Java Swing
- Servlet
- JSP教程
- Struts2
- Maven
- Spring
- Spring MVC
- Spring Boot
- Spring Cloud
- Hibernate
- Mybatis
- MySQL教程
- MySQL函数
- NoSQL
- Redis
- MongoDB
- HBase
- Go语言
- C#
- MATLAB
- JavaScript
- Bootstrap
- HTML
- CSS教程
- PHP
- 汇编语言
- TCP/IP
- vi命令
- Android教程
- 区块链
- Docker
- 大数据
- 云计算