关系型数据库 和 非关系型数据库
关系型数据库 和 非关系型数据库
1、关系型数据库
概述
关系型数据库,被称为SQL,是一个结构化的数据库,创建在关系模型(二维表格模型)基础上,一般面向于记录。
其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据。
主流的关系型数据库
Oracle、MySQL、PgSQL、SQL Server、Microsoft Access、DB2 等。
ACID原则
-
原子性(Atomicity)
-
一致性(Consistency)
-
隔离性(Isolation)
-
持久性(Durability)
关系型数据库强调ACID规则。
可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能和操作稳定性的要求。并且关系型数据库十分强调数据的强一致性,对于事务的操作有很好的支持。关系型数据库可以控制事务原子性细粒度,并且一旦操作有误或者有需要,可以马上回滚事务。
2、非关系型数据库
概述
非关系型数据库,又被称为NoSQL(Not Only SQL ),意为不仅仅是SQL( Structured QueryLanguage,结构化查询语言)。
NoSQL主要是指非关系型、分布式、不提供ACID (数据库事务处理的四个基本要素)的数据库设计模式。
对NoSQL 最普遍的定义是“非关联型的”,强调Key-Value 存储和文档数据库的优点。
主流的非关系型数据库
Redis、Amazon DynamoDB、Memcached、Microsoft Azure Cosmos DB、Hazelcast等。
不遵循ACID原则
使用范围
分布式数据库,近几年分布式数据库用的比较火的是redis。
3、数据库区别
1、数据存储方式不同
SQL:
关系型数据天然就是表格式的,因此存储在数据表的行和列中。数据表可以彼此关联协作存储,也很容易提取数据。
NoSQL:
与其相反,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构。
2、扩展方式不同
SQL和NoSQL数据库最大的差别可能是在扩展方式上。
SQL:
为了支持更多并发量,SQL数据库是纵向扩展,也就是说提高处理能力,使用速度更快速的计算机,这样处理相同的数据集就更快了。
因为数据存储在关系表中,操作的性能瓶颈可能涉及很多个表,这都需要通过提高计算机性能来客服。虽然SQL数据库有很大扩展空间,但最终肯定会达到纵向扩展的上限。
NoSQL:
而NoSQL数据库是横向扩展的。因为非关系型数据存储天然就是分布式的,NoSQL数据库的扩展可以通过给资源池添加更多普通的数据库服务器(节点)来分担负载。
3、对事务性的支持不同
SQL:
如果数据操作需要高事务性或者复杂数据查询需要控制执行计划,那么传统的SQL数据库从性能和稳定性方面考虑是你的最佳选择。SQL数据库支持对事务原子性细粒度控制,并且易于回滚事务。
NoSQL:
虽然NoSQL数据库也可以使用事务操作,但稳定性方面没法和关系型数据库比较,所以它们真正闪亮的价值是在操作的扩展性和大数据量处理方面。
参考文章: