首页 > 编程笔记 > Web笔记 阅读:3,244

NoSQL和关系型数据库的比较

相信大家对传统关系型数据库都不陌生,我们常常使用的关系型数据库有 MySQL、Oracle、SQL Server、SQLite、DB2、Teradata、Infomix、Sybase、PostgreSQL、Access、FoxPro 等;相对应的,常见的 NoSQL 数据库有 MongoDB、Memcached、RedisHBase、CouchDB、Neo4j、Cassandra、Riak 等。

我们将通过以下几个方面来比较 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语言中文网站长运营,每日更新,坚持原创,敢说真话,凡事有态度。

魏雪原二维码
微信扫描二维码关注公众号

优秀文章