失效链接处理 |
NoSQL数据库入门 PDF 下载
本站整理下载:
相关截图:
主要内容:
NoSQL概述
如今,⼤多数的计算机系统(包括服务器、PC、移动设备等)都会产⽣庞⼤的数据量。其实,早在
2012年的时候,全世界每天产⽣的数据量就达到了2.5EB(艾字节, )。这些数据有很
⼤⼀部分是由关系型数据库来存储和管理的。 早在1970年,E.F.Codd发表了论述关系型数据库的著名
论⽂“A relational model of data for large shared data banks”,这篇⽂章奠定了关系型数据库的基础并
在接下来的数⼗年时间内产⽣了深远的影响。实践证明,关系型数据库是实现数据持久化最为᯿要的⽅
式,它也是⼤多数应⽤在选择持久化⽅案时的⾸选技术。
NoSQL是⼀项全新的数据库⾰命性运动,虽然它的历史可以追溯到1998年,但是NoSQL真正深⼊⼈⼼
并得到⼴泛的应⽤是在进⼊⼤数据时候以后,业界普遍认为NoSQL是更适合⼤数据存储的技术⽅案,这
才使得NoSQL的发展达到了前所未有的⾼度。2012年《纽约时报》的⼀篇专栏中写到,⼤数据时代已
经降临,在商业、经济及其他领域中,决策将不再基于经验和直觉⽽是基于数据和分析⽽作出。事实
上,在天⽂学、⽓象学、基因组学、⽣物学、社会学、互联⽹搜索引擎、⾦融、医疗、社交⽹络、电⼦
商务等诸多领域,由于数据过于密集和庞⼤,在数据的分析和处理上也遇到了前所未有的限制和阻碍,
这⼀切都使得对⼤数据处理技术的研究被提升到了新的⾼度,也使得各种NoSQL的技术⽅案进⼊到了公
众的视ᰀ。
NoSQL数据库按照其存储类型可以⼤致分为以下⼏类:
类型 部分代表 特点
列族数据库
HBase
Cassandra
Hypertable
顾名思义是按列存储数据的。最⼤的特点是⽅便存储结构化和半结构化
数据,⽅便做数据压缩,对针对某⼀列或者某⼏列的查询有⾮常⼤的I/O
优势,适合于批量数据处理和即时查询。
⽂档数据库
MongoDB
CouchDB
ElasticSearch
⽂档数据库⼀般⽤类JSON格式存储数据,存储的内容是⽂档型的。这样
也就有机会对某些字段建⽴索引,实现关系数据库的某些功能,但不提
供对参照完整性和分布事务的⽀持。
KV
数据库
DynamoDB
Redis
LevelDB
可以通过key快速查询到其value,有基于内存和基于磁盘两种实现⽅
案。
图数据库
Neo4J
FlockDB
JanusGraph
使⽤图结构进⾏语义查询的数据库,它使⽤节点、边和属性来表示和存
储数据。图数据库从设计上,就可以简单快速的检索难以在关系系统中
建模的复杂层次结构。
对象数据库
db4o
Versant 通过类似⾯向对象语⾔的语法操作数据库,通过对象的⽅式存取数据。
说明:想了解更多的NoSQL数据库,可以访问http://nosql-database.org/。
Redis概述
Redis是⼀种基于键值对的NoSQL数据库,它提供了对多种数据类型(字符串、哈希、列表、集合、有
序集合、位图等)的⽀持,能够满⾜很多应⽤场景的需求。Redis将数据放在内存中,因此读写性能是
⾮常惊⼈的。与此同时,Redis也提供了持久化机制,能够将内存中的数据保存到硬盘上,在发⽣意外
状况时数据也不会丢掉。此外,Redis还⽀持键过期、地理信息运算、发布订阅、事务、管道、Lua脚本
扩展等功能,总⽽⾔之,Redis的功能和性能都⾮常强⼤,如果项⽬中要实现⾼速缓存和消息队列这样
的服务,直接交给Redis就可以了。⽬前,国内外很多著名的企业和商业项⽬都使⽤了Redis,包括:
Twitter、Github、StackOverflow、新浪微博、百度、优酷⼟⾖、美团、⼩⽶、唯品会等。
Redis简介
2008年,⼀个名为Salvatore Sanfilippo的程序员为他开发的LLOOGG项⽬定制了专属的数据库(因为
之前他⽆论怎样优化MySQL,系统性能已经⽆法再提升了),这项⼯作的成果就是Redis的初始版本。
后来他将Redis的代码放到了全球最⼤的代码托管平台Github,从那以后,Redis引发了⼤量开发者的好
评和关注,继⽽有数百⼈参与了Redis的开发和维护,这使得Redis的功能越来越强⼤和性能越来越好。
Redis是REmote DIctionary Server的缩写,它是⼀个⽤ANSI C编写的⾼性能的key-value存储系统,与
其他的key-value存储系统相⽐,Redis有以下⼀些特点(也是优点):
Redis的读写性能极⾼,并且有丰富的特性(发布/订阅、事务、通知等)。
Redis⽀持数据的持久化(RDB和AOF两种⽅式),可以将内存中的数据保存在磁盘中,᯿启的时
候可以再次加载进⾏使⽤。
Redis⽀持多种数据类型,包括:string、hash、list、set,zset、bitmap、hyperloglog等。
Redis⽀持主从复制(实现读写分析)以及哨兵模式(监控master是否宕机并⾃动调整配置)。
Redis⽀持分布式集群,可以很容易的通过⽔平扩展来提升系统的整体性能。
Redis基于TCP提供的可靠传输服务进⾏通信,很多编程语⾔都提供了Redis客户端⽀持。
Redis的应⽤场景
1. ⾼速缓存 - 将不常变化但⼜经常被访问的热点数据放到Redis数据库中,可以⼤⼤降低关系型数据
库的压⼒,从⽽提升系统的响应性能。
2. 排⾏榜 - 很多⽹站都有排⾏榜功能,利⽤Redis中的列表和有序集合可以⾮常⽅便的构造各种排⾏
榜系统。
3. 商品秒杀/投票点赞 - Redis提供了对计数操作的⽀持,⽹站上常⻅的秒杀、点赞等功能都可以利⽤
Redis的计数器通过+1或-1的操作来实现,从⽽避免了使⽤关系型数据的 update 操作。
4. 分布式锁 - 利⽤Redis可以跨多台服务器实现分布式锁(类似于线程锁,但是能够被多台机器上的
多个线程或进程共享)的功能,⽤于实现⼀个阻塞式操作。
5. 消息队列 - 消息队列和⾼速缓存⼀样,是⼀个⼤型⽹站不可缺少的基础服务,可以实现业务解耦和
⾮实时业务削峰等特性,这些我们都会在后⾯的项⽬中为⼤家展示。
|