Redis(入门学习一)

NoSQL,Redis简介:

NoSQL简介
Nosql的全称是Not Only Sql,这个概念早起就有⼈提出,在09年的时候⽐较⽕。Nosql指的是⾮关系型数据库,⽽
我们常⽤的都是关系型数据库。就像我们常⽤的mysql,sqlserver⼀样,这些数据库⼀般⽤来存储重要信息,应对普
通的业务是没有问题的。但是,随着互联⽹的⾼速发展,传统的关系型数据库在应付超⼤规模,超⼤流量以及⾼并
发的时候⼒不从⼼。⽽就在这个时候,Nosql得到的高速的发展。

NoSQL与关系型数据库的区别:

1. 存储⽅式

关系型数据库是表格式的,因此存储在表的⾏和列中。他们之间很容易关联协作存储,提取数据很⽅便。⽽Nosql
数据库则与其相反,他是⼤块的组合在⼀起。通常存储在数据集中,就像⽂档、键值对或者图结构。

2. 存储结构
关系型数据库对应的是结构化数据,数据表都预先定义了结构(列的定义),结构描述了数据的形式和内容。这⼀
点对数据建模⾄关重要,虽然预定义结构带来了可靠性和稳定性,但是修改这些数据⽐较困难。⽽Nosql数据库基
于动态结构,使⽤与⾮结构化数据。因为Nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。

3.存储规范

关系型数据库的数据存储为了更⾼的规范性,把数据分割为最⼩的关系表以避免重复,获得精简的空间利⽤。虽然
管理起来很清晰,但是单个操作设计到多张表的时候,数据管理就显得有点⿇烦。⽽Nosql数据存储在平⾯数据集
中,数据经常可能会重复。单个数据库很少被分隔开,⽽是存储成了⼀个整体,这样整块数据更加便于读写

4. 存储扩展

这可能是两者之间最⼤的区别,关系型数据库是纵向扩展,也就是说想要提⾼处理能⼒,要使⽤速度更快的计算
机。因为数据存储在关系表中,操作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服。虽然有很⼤
的扩展空间,但是最终会达到纵向扩展的上限。⽽Nosql数据库是横向扩展的,它的存储天然就是分布式的,可以
通过给资源池添加更多的普通数据库服务器来分担负载。

5. 查询⽅式

关系型数据库通过结构化查询语⾔来操作数据库(就是我们通常说的SQL)。SQL⽀持数据库CURD操作的功能⾮常
强⼤,是业界的标准⽤法。⽽Nosql查询以块为单元操作数据,使⽤的是⾮结构化查询语⾔(UnQl),它是没有标
准的。关系型数据库表中主键的概念对应Nosql中存储⽂档的ID。关系型数据库使⽤预定义优化⽅式(⽐如索引)
来加快查询操作,⽽Nosql更简单更精确的数据访问模式。


6.事务

关系型数据库遵循ACID规则(原⼦性(Atomicity)、⼀致性(Consistency)、隔离性(Isolation)、持久性
(Durability)),⽽Nosql数据库遵循BASE原则(基本可⽤(Basically Availble)、软/柔性事务
(Soft-state )、最终⼀致性(Eventual Consistency))。由于关系型数据库的数据强⼀致性,所以对
事务的⽀持很好。关系型数据库⽀持对事务原⼦性细粒度控制,并且易于回滚事务。⽽Nosql数据库是在CAP(⼀致
性、可⽤性、分区容忍度)中任选两项,因为基于节点的分布式系统中,很难全部满⾜,所以对事务的⽀持不是很
好,虽然也可以使⽤事务,但是并不是Nosql的闪光点。

7.性能

关系型数据库为了维护数据的⼀致性付出了巨⼤的代价,读写性能⽐较差。在⾯对⾼并发读写性能⾮常差,⾯对海
量数据的时候效率⾮常低。⽽Nosql存储的格式都是key-value类型的,并且存储在内存中,⾮常容易存储,⽽且
对于数据的 ⼀致性是 弱要求。Nosql⽆需sql的解析,提⾼了读写性能。

8.授权⽅式

关系型数据库通常有SQL Server,Mysql,Oracle。主流的Nosql数据库有redis,memcache,MongoDb。⼤
多数的关系型数据库都是付费的并且价格昂贵,成本较⼤,⽽Nosql数据库通常都是开源的。

NoSQL数据库分类:

1. 键值(Key-Value)存储数据库
这⼀类数据库主要会使⽤到⼀个哈希表,这个表中有⼀个特定的键和⼀个指针指向特定的数据。

相关产品: Redis 、Riak、SimpleDB、Chordless、Scalaris、Memcached
应⽤:内容缓存
优点::扩展性好、、灵活性好、、⼤量写操作时性能⾼
缺点:⽆法存储结构化信息、条件查询效率较低
使⽤者:百度云(Redis)、GitHub(Riak)、BestBuy(Riak)、Twitter(Ridis和Memcached)

2. 列族数据库
顾名思义,是按列存储数据的。最⼤的特点是⽅便存储结构化和半结构化数据,⽅便做数据压缩,对针对某⼀
列或者某⼏列的查询有⾮常⼤的IO优势。
相关产品:BigTable、 HBase 、Cassandra、HadoopDB、GreenPlum、PNUTS
应⽤:分布式数据存储与管理
优点:查找速度快、可扩展性强、容易进⾏分布式扩展、复杂性低
使⽤者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、Facebook(HBase)

3. ⽂档数据库
⽂档存储⼀般⽤类似json的格式存储,存储的内容是⽂档型的。这样也就有有机会对某些字段建⽴索引,实现
关系数据库的某些功能。
相关产品: MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit
应⽤:存储、索引并管理⾯向⽂档的数据或者类似的半结构化数据
优点:性能好、灵活性⾼、复杂性低、数据结构灵活
缺点:缺乏统⼀的查询语⾔
使⽤者:百度云数据库(MongoDB)、SAP(MongoDB)

4. 图形数据库
图形数据库是NoSQL数据库类型中最复杂的⼀个,旨在以⾼效的⽅式存储实体来之间的关系。图形数据库适⽤
于⾼度互连的数据,尤其是社交⽹络,科学论⽂引⽤或是资本资产集群。
相关产品: Neo4J 、OrientDB、InfoGrid、GraphDB
应⽤:⼤量复杂、互连接、低结构化的图结构场合,如社交⽹络、推荐系统等
优点:灵活性⾼、⽀持复杂的图形算法、可⽤于构建复杂的关系图谱
缺点:复杂性⾼、只能⽀持⼀定的数据规模
使⽤者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

猜你喜欢

转载自blog.csdn.net/qq_40180411/article/details/85861569