Redis & NoSql(非关系数据库)

1、NoSql简介

NoSQL——非关系型数据库,用于超大规模数据的存储(如:谷歌、Facebook每天为其用户收集的万亿比特数据),特点是数据存储无需固定模式,无需多余操作即可横向扩展。

2、使用NoSql的原因

随着互联网 web2.0 网站的兴起,可通过众多如Google、Facebook等第三方平台极其容易的访问和抓取数据。用户个人信息、社交网络、地理位置、用户所生成数据以及用户的操作日志呈指数上升。如果需要挖掘如此大量的数据,传统的关系型数据库(SQL)无法满足,超大规模、高并发的 SNS 类型的 web2.0 纯动态网站已显得力不从心,此时非关系型数据库(NoSQL)的出现与发展满足了此类需求。

3、SQL & NoSql 对比

SQL

- 数据高度组织化、结构化(SQL语句) 
- 数据、关系均存放在单独的表中 
- 数据操纵语言,数据定义语言 
- 严格的一致性
- 基础事务

NoSQL

- 没有声明性查询语言
- 没有预定义的模式
- 拥有多种存储方式(键值对存储、列存储、文档存储、图形存储等)
- 最终一致性,而非ACID属性(原子性、一致性、隔离性、持久性)
- 非结构化以及数据不可预知
- CAP定理(一致性、可用性、分区容错性) 
- 高性能,高可用以及可伸缩

4、NoSQL数据库分类

1)键值数据库

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

2)列族数据库

相关产品:BigTable、HBase、Cassandra、HadoopDB、GreenPlum、PNUTS
应用:分布式数据存储与管理
优点:查找速度快、可扩展性强、容易进行分布式扩展、复杂性低
使用者:Ebay(Cassandra)、Instagram(Cassandra)、NASA(Cassandra)、Facebook(HBase)

3)文档数据库

相关产品:MongoDB、CouchDB、ThruDB、CloudKit、Perservere、Jackrabbit
应用:存储、索引并管理面向文档的数据或者类似的半结构化数据
优点:性能好、灵活性高、复杂性低、数据结构灵活
缺点:缺乏统一的查询语言
使用者:百度云数据库(MongoDB)、SAP(MongoDB)

4)图形数据库

相关产品:Neo4J、OrientDB、InfoGrid、GraphDB
应用:大量复杂、互连接、低结构化的图结构场合,如社交网络、推荐系统等
优点:灵活性高、支持复杂的图形算法、可用于构建复杂的关系图谱
缺点:复杂性高、只能支持一定的数据规模
使用者:Adobe(Neo4J)、Cisco(Neo4J)、T-Mobile(Neo4J)

类型部分代表特点
列存储Hbase Cassandra Hypertable顾名思义,是按列存储数据的。最大的特点是方便存储结构化和半结构化数据,方便做数据压缩,对针对某一列或者某几列的查询有非常大的IO优势。
文档存储MongoDB CouchDB文档存储一般用类似json的格式存储,存储的内容是文档型的。这样也就有有机会对某些字段建立索引,实现关系数据库的某些功能。
key-value存储Tokyo Cabinet / Tyrant Berkeley DB MemcacheDB Redis可以通过key快速查询到其value。一般来说,存储不管value的格式,照单全收。(Redis包含了其他功能)
图存储Neo4J FlockDB图形关系的最佳存储。使用传统关系数据库来解决的话性能低下,而且设计使用不方便。
对象存储db4o Versant通过类似面向对象语言的语法操作数据库,通过对象的方式存取数据。
xml数据库Berkeley DB XML BaseX高效的存储XML数据,并支持XML的内部查询语法,比如XQuery,Xpath。

5、Redis简介

全称Remote Dictionary Server(远程字典服务器)。开源免费,遵循BSD开源协议,底层使用C语言编写。采用键值对key/value保存数据,是一个高性能的分布式内存数据库,基于内存运行并且支持持久化的NoSQL数据库,被人们称为数据结构服务器。

6、Redis特点

i)支持数据持久化,可将存放在内存中的数据保存在磁盘中,重启时再次加载进行调用;
ii)不仅仅支持简单的键值对(key/value)类型的数据,还存在list,set,zset,hash等数据结构的存储;
iii)支持数据备份,主从master-slave模式的数据备份;

7、Redis与其他数据库 & 软件的对比

名称类型数据存储选项查询类型附加功能
Redis使用内存存储(in-memory)的非关系数据库字符串、列表、集合、散列表、有序集合每种数据类型都有自己的专属命令,另外还有批量操作(bulk operation)和不完全(partial)的事务支持发布与订阅,主从复制(master/slave replication),持久化,脚本(存储过程,stored procedure)
memcached使用内存存储的键值缓存键值之间的映射创建命令、读取命令、更新命令、删除命令以及其他几个命令为提升性能而设的多线程服务器
MySQL关系数据库每个数据库可以包含多个表,每个表可以包含多个行;可以处理多个表的视图(view);支持空间(spatial)和第三方扩展SELECT、 INSERT、 UPDATE、 DELETE、函数、存储过程支持ACID性质(需要使用InnoDB),主从复制和主主复制 (master/master replication)
PostgreSQL关系数据库每个数据库可以包含多个表,每个表可以包含多个行;可以处理多个表的视图;支持空间和第三方扩展;支持可定制类型SELECT、 INSERT、 UPDATE、 DELETE、内置函数、自定义的存储过程支持ACID性质,主从复制,由第三方支持的多主复制(multi-master replication)
MongoDB使用硬盘存储(on-disk)的非关系文档存储每个数据库可以包含多个表,每个表可以包含多个无schema(schema-less)的BSON文档创建命令、读取命令、更新命令、删除命令、条件查询命令等支持map-reduce操作,主从复制,分片,空间索引(spatial index)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值