关系型数据库与非关系型数据库详细比较
-
1.关系型数据库通过外键关联来建立表与表之间的关系, -
2.非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定。 -
3.非关系型数据库中,我们查询一条数据,结果出来一个数组,关系型数据库中,查询一条数据结果是一个对象。
区别 | 关系型数据库 | 非关系型数据库(Nosql) |
存储方式 | 表格式存储。 存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便 | 而Nosql数据库则与其相反,他是大块的组合在一起。 通常存储在数据集中,就像文档、键值对或者图结构。 |
存储结构 | 结构化数据。 数据表都预先定义了结构(列的定义),结构描述了数据的形式和内容。这一点对数据建模至关重要,虽然预定义结构带来了可靠性和稳定性(优点),但是修改这些数据比较困难(缺点)。 | 而Nosql数据库基于动态结构,使用与非结构化数据。因为Nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。 |
存储规范 | 数据存储为了更高的规范性,把数据分割为最小的关系表以避免重复,获得精简的空间利用。虽然管理起来很清晰,但是单个操作设计到多张表的时候,数据管理就显得有点麻烦 | 而Nosql数据存储在平面数据集中,数据经常可能会重复。单个数据库很少被分隔开,而是存储成了一个整体,这样整块数据更加便于读写 |
存储扩展 | 系型数据库是纵向扩展,也就是说想要提高处理能力,要使用速度更快的计算机。因为数据存储在关系表中,操作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服。虽然有很大的扩展空间,但是最终会达到纵向扩展的上限 | 而Nosql数据库是横向扩展的,它的存储天然就是分布式的,可以通过给资源池添加更多的普通数据库服务器来分担负载。 |
查询方式 | 结构化查询语言来操作数据库(就是我们通常说的SQL) 关系型数据库表中主键 关系型数据库使用预定义优化方式(比如索引)来加快查询操作 | 以块为单元操作数据,使用的是非结构化查询语言(UnQl),它是没有标准的 Nosql中存储文档的ID 更简单更精确的数据访问模式 |
事务 | 遵循ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)) 支持对事务原子性细粒度控制,并且易于回滚事务。 | 遵循BASE原则(基本可用(Basically Availble)、软/柔性事务(Soft-state )、最终一致性(Eventual Consistency)) Nosql数据库是在CAP(一致性、可用性、分区容忍度)中任选两项,因为基于节点的分布式系统中,很难全部满足,所以对事务的支持不是很好,虽然也可以使用事务,但是并不是Nosql的闪光点。 |
性能 | 为了维护数据的一致性付出了巨大的代价,读写性能比较差。在面对高并发读写性能非常差,面对海量数据的时候效率非常低。 | Nosql存储的格式都是key-value类型的,并且存储在内存中,非常容易存储,而且对于数据的 一致性是 弱要求。Nosql无需sql的解析,提高了读写性能。 |
授权方式 | 关系型数据库通常有SQL Server,Mysql,Oracle。大多数的关系型数据库都是付费的并且价格昂贵,成本较大。 | 主流的Nosql数据库有redis,memcache,MongoDb。 而Nosql数据库通常都是开源的。 |
关系型数据库与非关系型数据库优缺点对比
数据库 类型 | 特性 | 优点 | 缺点 |
关系型数据库 SQLite、Oracle、mysql | 1、关系型数据库,是指采用了关系模型来组织 数据的数据库; 2、关系型数据库的最大特点就是事务的一致性; 3、简单来说,关系模型指的就是二维表格模型, 而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。 | 1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解; 2、使用方便:通用的SQL语言使得操作关系型数据库非常方便; 3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率; 4、支持SQL,可用于复杂的查询。 | 1、为了维护一致性所付出的巨大代价就是其读写性能比较差; 2、固定的表结构; 3、高并发读写需求; 4、海量数据的高效率读写; |
非关系型数据库 MongoDb、redis、HBase | 1、使用键值对存储数据; 2、分布式; 3、一般不支持ACID特性; 4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。 | 1、无需经过sql层的解析,读写性能很高; 2、基于键值对,数据没有耦合性,容易扩展; 3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。 | 1、不提供sql支持,学习和使用成本较高; 2、无事务处理,附加功能bi和报表等支持也不好; |
关于Nosql
1.Nosql
非关系型数据库,Not only sql。
2.Nosql特点:
(1)易扩展,数据之间没有关系的。
(2)大数据量,高性能。高性能读写非常灵活的。
(3)灵活的数据模型。不需要事先对存储数据建立字段。
(4)高可用。
简单概括:用于高并发读写、海量数据的高效率存储和访问、高可扩展性和高可用性。
3.Nosql主要主流产品
Redis(广泛应用),CouchDB,mongoDB,Cassandra等。Nosql中比较火的三个数据库Redis、Memchache、MongoDb。
4.Nosql数据库四大分类:
(1)键值对存储(key-value):Redis键值对存储,优势:快速查询,缺点:存储数据缺少结构化。
(2)列存储:Hbase,优势:快速查询,扩展性强。缺点:功能相对于局限。
(3)文档数据库存储:MongoDB,早起应用多。优势:要求不特别的严格。缺点:查询性不高,缺少统一查询语法。
(4)图形数据库存储:应用于社交网络,优势:利用图结构相关算法。缺点:需要整个图计算才得出结果,不容易做分布式集群方案。