查看其它 3 个回答youki2008的回答

youki2008youki2008  系统架构师 , DDT

Nosql 和关系型数据库的区别

  1. 存储方式

关系型数据库是表格式的,因此存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便。而 Nosql 数据库则与其相反,他是大块的组合在一起。通常存储在数据集中,就像文档、键值对或者图结构。

  1. 存储结构

关系型数据库对应的是结构化数据,数据表都预先定义了结构(列的定义),结构描述了数据的形式和内容。这一点对数据建模至关重要,虽然预定义结构带来了可靠性和稳定性,但是修改这些数据比较困难。而 Nosql 数据库基于动态结构,使用与非结构化数据。因为 Nosql 数据库是动态结构,可以很容易适应数据类型和结构的变化。

  1. 存储规范

关系型数据库的数据存储为了更高的规范性,把数据分割为最小的关系表以避免重复,获得精简的空间利用。虽然管理起来很清晰,但是单个操作设计到多张表的时候,数据管理就显得有点麻烦。而 Nosql 数据存储在平面数据集中,数据经常可能会重复。单个数据库很少被分隔开,而是存储成了一个整体,这样整块数据更加便于读写

  1. 存储扩展

这可能是两者之间最大的区别,关系型数据库是纵向扩展,也就是说想要提高处理能力,要使用速度更快的计算机。因为数据存储在关系表中,操作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服。虽然有很大的扩展空间,但是最终会达到纵向扩展的上限。而 Nosql 数据库是横向扩展的,它的存储天然就是分布式的,可以通过给资源池添加更多的普通数据库服务器来分担负载。

  1. 查询方式

关系型数据库通过结构化查询语言来操作数据库(就是我们通常说的 SQL )。 SQL 支持数据库 CURD 操作的功能非常强大,是业界的标准用法。而 Nosql 查询以块为单元操作数据,使用的是非结构化查询语言( UnQl ),它是没有标准的。关系型数据库表中主键的概念对应 Nosql 中存储文档的 ID 。关系型数据库使用预定义优化方式(比如索引)来加快查询操作,而 Nosql 更简单更精确的数据访问模式。

  1. 事务

关系型数据库遵循 ACID 规则(原子性 (Atomicity) 、一致性 (Consistency) 、隔离性 (Isolation) 、持久性 (Durability) ),而 Nosql 数据库遵循 BASE 原则(基本可用( Basically Availble )、软 / 柔性事务( Soft-state )、最终一致性( Eventual Consistency ))。由于关系型数据库的数据强一致性,所以对事务的支持很好。关系型数据库支持对事务原子性细粒度控制,并且易于回滚事务。而 Nosql 数据库是在 CAP (一致性、可用性、分区容忍度)中任选两项,因为基于节点的分布式系统中,很难全部满足,所以对事务的支持不是很好,虽然也可以使用事务,但是并不是 Nosql 的闪光点。

柔性事务满足 Base 理论 ( 基本可用、最终一致性 ) 、 CAP 理论。

刚性事务满足 ACID 理论。

  1. 性能

关系型数据库为了维护数据的一致性付出了巨大的代价,读写性能比较差。在面对高并发读写性能非常差,面对海量数据的时候效率非常低。而 Nosql 存储的格式都是 key-value 类型的,并且存储在内存中,非常容易存储,而且对于数据的 一致性是 弱要求。 Nosql 无需 sql 的解析,提高了读写性能。

  1. 授权方式

关系型数据库通常有 SQL Server , Mysql , Oracle 。主流的 Nosql 数据库有 redis , memcache , MongoDb 。大多数的关系型数据库都是付费的并且价格昂贵,成本较大,而 Nosql 数据库通常都是开源的。

互联网服务 · 2020-04-28
浏览3367

回答者

youki2008
系统架构师DDT
擅长领域: 服务器云计算数据库

youki2008 最近回答过的问题

回答状态

  • 发布时间:2020-04-28
  • 关注会员:6 人
  • 回答浏览:3367
  • X社区推广