nosql数据库和redis

上一篇 / 下一篇  2011-06-21 20:23:32 / 个人分类:数据库

原文:http://www.iteye.com/topic/524977

我的摘要:

1.什么是关系型数据库

关系型数据库是支持采用了关系模型来组织数据的数据库,简单来说,关系模型就是指二维表模型,以下是关系模型中的常用概念:

关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的表名。

元组:可以理解为二维表中的一行,在数据库中经常被称为记录。

属性:可以理解为二维表中的一列,在数据库中经常被称为字段。

域:属性的取值范围,也就是数据库中某一列的取值限制。

关键字:一组可以唯一标识元组的属性。数据库中常称为主键,由一个或多个列组成。

关系模式:指对关系的描述,其格式为:关系名(属性1,属性2,…,属性N)。在数据库中通常称为表结构

优点:容易理解、易于维护、使用方便;

2.什么是NoSql数据库,为什么使用NoSql数据库

相对于关系型数据库(sqlserver、oracle、mysql……),nosql就是非关系数据库

随着web2.0的发展,SNS等大型高并发应用对超大量数据、高发量、可扩展性要求越来越高,关系型数据库已经无法应付,并且关系型数据库的一些特性和优点(比如事物一致性、读写实时性、多表关联查询等),在这类应用中也得不到展现。

关系数据库在这些应用场景下显得不那么合适了,为了解决这类问题的非关系数据库应运而生,现在这两年,各种各样非关系数据库,特别是键值数据库(Key-Value Store DB)风起云涌: Redis,Tokyo Cabinet,Cassandra,Voldemort,MongoDB,Dynomite,HBase,CouchDB,Hypertable, Riak,Tin, Flare, Lightcloud, KiokuDB,Scalaris, Kai, ThruDB,  ......

3.Redis简介
Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,是我知道的性能最快的Key-Value DB。

Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存List链表和Set集合的数据结构,而且还支持对List进行各种操作,例如从List两端push和pop数据,取List区间,排序等等,对Set支持各种集合的并集交集操作,此外单个value的最大限制是1GB,不像memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能,比方说用他的List来做FIFO双向链表,实现一个轻量级的高性能消息队列服务,用他的Set可以做高性能的tag系统等等。另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一个功能加强版的memcached来用。

Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,并且它没有原生的可扩展机制,不具有scale(可扩展)能力,要依赖客户端来实现分布式读写,因此Redis适合的场景主要局限在较小数据量的高性能操作和运算上。目前使用Redis的网站有github,Engine Yard。


TAG:

 

评分:0

我来说两句

Open Toolbar