赞
踩
关系型数据库:
关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
常见的关系型数据库:mysql,oracle,SQL Server
存储方式::行存储,一个表里每一个对象的记录存储一行,一行里包括了该记录的所有特征
优缺点以及应用场景:
优点:
1)复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
2)事务支持使得对于安全性能很高的数据访问要求得以实现。
缺点:
1)不擅长大量数据的写入处理
2)不擅长为有数据更新的表做索引或表结构(schema)变更
3) 字段不固定时应用不方便
4)不擅长对简单查询需要快速返回结果的处理
使用场景:
1)需要做复杂处理的数据;
2)数据量不是特别大的数据;
3)对安全性要求高的数据;
4)数据格式单一的数据;
非关系型数据库:
NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
常见的非关系型数据库:
(1)键值对存储(key-value):Redis键值对存储,优势:快速查询,缺点:存储数据缺少结构化。
(2)列存储:Hbase,优势:快速查询,扩展性强。缺点:功能相对于局限。
(3)文档数据库存储:MongoDB,早起应用多。优势:要求不特别的严格。缺点:查询性不高,缺少统一查询语法。
(4)图形数据库存储:应用于社交网络,优势:利用图结构相关算法。缺点:需要整个图计算才得出结果,不容易做分布式集群方案。
存储方式:
以列为单位进行数据的存储,一列作为一个记录,每个对象的记录会存储多行,各行相对独立;
优缺点以及使用场景:
优点:
1)nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
2)nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
3)nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
4)不支持Join处理,各个数据都是独立设计的,很容易把数据分散在多个服务器上,故减少了每个服务器上的数据量,即使要处理大量数据的写入,也变得更加容易,数据的读入操作当然也同样容易。
缺点:
1)无法对表进行复杂的计算,不支持join等功能。
使用场景:
1)海量数据存储;
2)多格式的数据存储;
3)对查询速度要求快的数据存储;
对非关系型数据库中又该如何选择合适的数据库呢
redis是一个高性能的(key/value)分布式内存数据库,
应用的场景:
(1) 缓存(数据查询,短连接,新闻内容,商品内容等),使用最多
(2) 聊天室在线好友列表
(3) 任务队列(秒杀,抢购,12306等)
(4) 应用排行榜
(5) 网站访问统计
(6) 数据过期处理(可以精确到毫秒)
(7) 分布式集群架构中的session问题
Mongodb存储的也是key/value,只不过它的value是json类型,适合存储对象类型的数据,
1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。
3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。
关系型数据库和非关系型数据库的比较
区别 | 关系型数据库 | 非关系型数据库(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的解析,提高了读写性能。 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。