简介两者定义及优劣势 什么是关系型数据库和非关系型数据库( 二 )


简介两者定义及优劣势  什么是关系型数据库和非关系型数据库

文章插图

简介两者定义及优劣势  什么是关系型数据库和非关系型数据库

文章插图
--对有数据更新的表做索引或表结构变化
使用关系型数据库时,为了加快查询速度,需要创建索引,而为了增加必要的字段,必须改变表结构 。是不可能的 。如果需要进行一些耗时的操作,比如为数据量大的表创建索引或者改变表结构等,需要特别注意,数据可能很长一段时间都不会更新 。
--字段不固定时的应用
如果字段不固定,也很难使用关系数据库 。有人会说,需要的时候加个字段就够了 。这种方法也不是不可能,但在实际应用中,每次都会重复表结构的变化 。很痛苦 。也可以预先设置大量的初步字段,但是这种情况下,随着时间的推移,很容易丢失字段和数据的对应状态,即哪些字段持有哪些数据 。
-- 处理需要快速返回结果的简单查询(这里的“简单”是指没有复杂的查询条件)
这不是缺点,但无论如何,关系型数据库对于简单的查询并不擅长快速返回结果,因为关系型数据库使用一种特殊的 SQL 语言进行数据读取,并且需要解析 SQL 和越南,而且还有额外的开销例如锁定和解锁表 。这并不是说关系数据库太慢,只是想告诉你,如果你想高速处理简单的查询,没有必要使用关系数据库 。不可能 。
--------------------------------------
NoSQL 数据库
关系数据库应用广泛,可以执行复杂的查询,例如事务处理和表连接 。相比之下,NoSQL 数据库只用在特定领域,基本不进行复杂的处理,只是弥补了上面列出的关系型数据库的不足 。
优势:
易于数据传播
各种数据之间的关系是关系数据库得名的主要原因 。关系型数据库为了进行join处理,不得不将数据存储在同一个服务器上,不利于数据的分散,这也是关系型数据库不擅长大数据写入处理的原因卷 。相反,NoSQL数据库本来就不支持Join处理,而且每个数据都是独立设计的,所以很容易将数据分布在多台服务器上,从而减少了每台服务器上的数据量 。即使要写入大量的数据,也变得更加容易,读取数据当然也一样容易 。
典型的 NoSQL 数据库
瞬态键值存储(,Redis),持久键值存储(ROMA,Redis),面向文档的数据库(,),面向列的数据库(,HBase)
一、 键值对存储
它的数据以键值的形式存储 。虽然速度很快,但基本上只能通过key的完全一致的查询来获取数据 。根据数据的保存方式,可以分为临时的、永久的和两者兼有 。带三个 。
(1)临时
所谓临时是指数据可能会丢失,所有数据都保存在内存中,所以保存和读取的速度非常快,但是当它停止时,数据就不存在了 。由于数据存储在内存中,超出内存容量的数据无法被操作,旧数据会丢失 。得出结论:
. 将数据保存在内存中
. 可以进行非常快速的保存和读取处理
. 数据可能会丢失
(2)永久
所谓永久是指数据不会丢失 。这里的key-value存储就是将数据保存在硬盘上 。与临时相比,由于不可避免的对硬盘的IO操作,在性能上还是有差距的,但数据不会丢失是它最大的优势 。得出结论:
. 将数据保存在硬盘上
. 可以进行非常快速的保存和读取处理(但没有可比性)
. 数据不会丢失
(3) 两者
Redis 属于这一类 。Redis 有点特别,既有临时的,也有永久的 。Redis首先将数据保存在内存中,当满足一定条件时将数据写入硬盘(默认15分钟1次以上,5分钟10次以上,1分钟10000次以上) 。既保证了内存中数据的处理速度,又保证了数据写入硬盘的持久性 。这种类型的数据库特别适合处理数组类型的数据 。得出结论: