什么是NoSQL非关系型数据库及与关系型数据库的区别

后端 潘老师 3年前 (2021-04-25) 1754 ℃ (0) 扫码查看

什么是NoSQL?

NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。

NoSQL诞生背景

随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储。

NoSQL数据库分类

近些年来,NoSQL 数据库的发展势头很快。据统计,目前已经产生了 50 到 150 个 NoSQL 数据库系统。但是,归结起来,可以将典型的 NoSQL 划分为 4 种类型,分别是键值(key-value)数据库、列式数据库、文档型数据库和图形(Graph)数据库

1)键值(Key-Value)存储数据库

键值存储数据库中的数据是以键值对格式进行存储的,类似于Java中的Map,其数据库中的表有一个特定的Key键和键所指向的Value值。Key-Value 模型的优势在于简单且容易部署,可以将程序中的数据直接映射到数据库中,使程序中的数据和键值存储数据库中的数据存储方式很相近,比如Redis.

2)列存储数据库

列存储数据库与传统的关系型数据库不同,关系型数据库按照行进行存储,而列数据库是每一列单独存放,仅仅查询所需要的列,查询速度大幅提高。在HBase中,这些列是由列家族来安排的。

3)文档型数据库

文档型数据库和键值存储类似。该类型的数据模型是将内容按照某些特定的格式进行存储,如JSON格式和MongoDB就属于文档型数据库。

4)图形(Graph) 数据库

图形数据库与关系型数据库和列式数据库不同,它是基于灵活的图形模型,并且可以扩展到多个服务器上。另外,由于NoSQL数据库并没有标准的查询语言(SQL) ,所以在进行数据库查询时需要制定数据模型,如Neo4j.

对比:

什么是NoSQL非关系型数据库及与关系型数据库的区别

NoSQL 数据库的应用

NoSQL数据库主要适用于以下场景:

  • 数据最大、数据模型比较简单。
  • 对数据库性能要求较高,需要节省开发成本和维护成本。
  • 不需要高度的数据一致性。
  • 对于给定key,比较容易映射复杂值的环境,数据之间关系性不强。

NoSQL与关系型数据库区别

关系型数据库与非关系型数据库的区别主要在成本、查询速度、存储数据格式和扩展性4个方面。

1)成本:

NoSOL数据库前单易部署,基本都是开源软件,不需要像使用Oracle那样花费大笔资金购买后使用,相比关系型数据库NoSQL价格便宜。

2)查询速度:

NoSOL数据库将数据存储于缓存中,关系型数据库将数据存储在硬盘中,自然查询速度远不及NoSQL数据库。

3)存储数据格式:

NoSQL 的存储格式是key/value形式、文档形式、图片形式等,所以可以存储基础类型及对象或者集合等各种格式,而数据库则只支持基础类型。

4)扩展性:

关系型数据库有类似于JOIN这样的多表查询机制的限制导致扩展很艰难。

NoSQL与关系型数据库优缺点对比

关系型数据库:

1) 关系数据库的特点是:
– 数据关系模型基于关系模型,结构化存储,完整性约束。
– 基于二维表及其之间的联系,需要连接、并、交、差、除等数据操作。
– 采用结构化的查询语言(SQL)做数据读写。
– 操作需要数据的一致性,需要事务甚至是强一致性。
2) 优点:
– 保持数据的一致性(事务处理)
– 可以进行join等复杂查询。
– 通用化,技术成熟。
3) 缺点:
– 数据读写必须经过sql解析,大量数据、高并发下读写性能不足。
– 对数据做读写,或修改数据结构时需要加锁,影响并发操作。
– 无法适应非结构化存储。
– 扩展困难。
– 昂贵、复杂。

NoSQL数据库:

1) NoSQL数据库的特点是:
– 非结构化的存储。
– 基于多维关系模型。
– 具有特有的使用场景。
2) 优点:
– 高并发,大数据下读写能力较强。
– 基本支持分布式,易于扩展,可伸缩。
– 简单,弱结构化存储。
3) 缺点:
– join等复杂操作能力较弱。
– 事务支持较弱。
– 通用性差。
– 无完整约束复杂业务场景支持较差。


版权声明:本站文章,如无说明,均为本站原创,转载请注明文章来源。如有侵权,请联系博主删除。
本文链接:https://www.panziye.com/java/bigdata/3071.html
喜欢 (2)
请潘老师喝杯Coffee吧!】
分享 (0)
用户头像
发表我的评论
取消评论
表情 贴图 签到 代码

Hi,您需要填写昵称和邮箱!

  • 昵称【必填】
  • 邮箱【必填】
  • 网址【可选】