nosql和关系型数据库对⽐
Nosql介绍
Nosql(not only sql)指的是⾮关系型数据库,⽽我们常⽤的都是关系型数据库,这些数据库⼀般⽤来存储重要信息,应对普通的业务是没有问题的,但是,随着互联⽹的告诉发展,传统道德关系型数据库在应对超⼤规模,超⼤流量以及⾼并发的时候⼒不从⼼。
四⼤类型
键值数据库
相关产品:redis、riak、simpledb、chordless、scalaris、memcached
应⽤:内容缓存
优点:扩展性号、灵活性好、⼤量写操作时性能⾼
缺点:⽆法存储结构化信息、条件查询效率较低
列组数据库
相关产品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS
应⽤:分布式数据存储与管理
优点:查速度快、可扩展性强、容易进⾏分布式扩展、复杂性低
⽂档数据库
相关产品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit
应⽤:存储、索引并管理⾯向⽂档的数据或者类似的半结构化数据
优点:性能好、灵活性⾼、复杂性低、数据结构灵活
缺点:缺乏统⼀的查询语⾔
图形数据库
相关产品:Neo4J、OrientDB、InfoGrid、GraphDBredis是nosql数据库吗
应⽤:⼤量复杂、互连接、低结构化的图结构场合,如社交⽹络、推荐系统等
优点:灵活性⾼、⽀持复杂的图形算法、可⽤于构建复杂的关系图谱
缺点:复杂性⾼、只能⽀持⼀定的数据规模
Nosql和关系型数据库的区别
存储⽅式
关系型数据库是表格式的,因此存储在表的列和⾏中,他们之间很容易关联协作存储,提取数据很⽅便。⽽nosql数据库则与其相反,它是⼤块的组合在⼀起。通常存储在数据集中,就像⽂档、键值对或者图结构。
存储结构
关系型数据库对应的是结构化数据,数据表都预先定义了结构(列的定义),结构描述了数据的形式和内容。这⼀点对数据建模⾄关重要,虽然预定义结构带来了可靠性和稳定性,但是修改这些数据⽐较困难。⽽nosql数据库基于动态结构,使⽤与⾮结构化数据。因为nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。
存储规范
关系型数据库的数据存储为了更⾼的规范性,把数据分割为最⼩的关系表以避免重复,获得精简的空间利⽤。虽然管理起来很清晰,但是单个操作设计到多张表的时候,数据管理就显得有点⼉⿇烦。⽽nosql数据存储在平⾯数据集中,数据经常可能会重复。单个数据库很少被分隔开,⽽是存储成了⼀个整体,这样整块数据更加便于读写
存储扩展(最⼤区别)
关系型数据库是纵向扩展,(提⾼处理能⼒,要使⽤速度更快的计算机)。数据存储在关系表中,因为数据存储在关系表中,操作的性能可能涉及到多个表,需要通过提升计算机性能来克服。虽然有很⼤的扩展空间,但是最终会达到纵向扩展的上限。⽽nosql数据库库是横向扩展的,它是存储⽅式就是分布式的,可以通过给资源池添加更多的普通数据库服务器来分担负担。
查询⽅式
关系型数据库通过结构化查询语⾔来操作数据库(就是我们通常说的SQL语句)。SQL⽀持数据库CURD操作的功能⾮常强⼤,是业界的标准⽤法。⽽nosql查询以块为单位操作数据,使⽤的是⾮结构化查询语⾔(UnQl),它是没有标准的。关系型数据库表中主键的概念对应nosql中存储⽂档的ID。关系型数据库使⽤预定义优化⽅式(⽐如索引)来加快查询操作,⽽nosql更简单更精确的数据访问模式。
事务
关系型数据库遵循ACID规则(原⼦性(Atomicity)、⼀致性(consistency)、隔离性(Isolation)、持久性
(Durability)),⽽nosql数据库遵循BASE原则(基本可⽤(Basically Availble)、软/柔性事务(soft-state)、最终⼀致性(Eventual Consistency))。由于关系型数据库的输⼏局强⼀致性,所以对事务的⽀持很好。关系型数据库⽀持对事务原⼦性细粒度控制,并且易于回滚事务。⽽nosql数据库是CAP(⼀致性(consistency)、可⽤性
(Availability)、分区容忍度(Partition tolerance))中任选两项,因为基于节点的分布式系统中,很难全部满⾜,
所以对事务的⽀持不是很好,虽然也可以使⽤事务,但是并不是nosql的闪光点。
性能
关系型数据库为了维护数据的⼀致性付出了巨⼤的代价,读写性能⽐较差。在⾯对⾼并发读写性能⾮常差,⾯对海量数据的时候效率⾮常低。⽽nosql存储的格式都是key-value类型的,并且存储在内存中,废话从哪个容易存储,⽽且对于数据⼀致性弱要求。nosql⽆需sql的解析,提⾼了读写性能。
授权⽅式
关系型数据库通常有SQL Server,Mysql,Oracle。主流的Nosql数据库有redis,memcache,MongoDb。⼤多数的关系型数据库都是付费的并且价格昂贵,成本较⼤,⽽Nosql数据库通常都是开源的。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。