聊聊
Nosql,而本篇将主要给大家做一下
Nosql数据库的综述。
首先将和大家聊聊为什么
Nosql会在关系型数据库已经非常普及的情况下异军突起
?
诞生的原因
随着互联网的不断发展,各种类型的应用层出不穷,所以导致在这个云计算的时代,对技术提出了更多的需求,主要体现在下面这四个方面:
1. 低延迟的读写速度:应用快速地反应能极大地提升用户的满意度
;
2. 支撑海量的数据和流量:对于搜索这样大型应用而言,需要利用
PB级别的数据和能应对百万级的流量
;
3. 大规模集群的管理:系统管理员希望分布式应用能更简单的部署和管理
;
4. 庞大运营成本的考量:
IT经理们希望在硬件成本、软件成本和人力成本能够有大幅度地降低
;
虽然关系型数据库已经在业界的数据存储方面占据不可动摇的地位,但是由于其天生的几个限制,使其很难满足上面这几个需求:
1. 扩展困难:由于存在类似
Join这样多表查询机制,使得数据库在扩展方面很艰难
;
2. 读写慢:这种情况主要发生在数据量达到一定规模时由于关系型数据库的系统逻辑非常复杂,使得其非常容易发生死锁等的并发问题,所以导致其读写速度下滑非常严重
;
3. 成本高:企业级数据库的
License价格很惊人,并且随着系统的规模,而不断上升
;
4. 有限的支撑容量:现有关系型解决方案还无法支撑
Google这样海量的数据存储
;
业界为了解决上面提到的几个需求,推出了多款新类型的数据库,并且由于它们在设计上和传统的
Nosql数据库相比有很大的不同,所以被统称为
“Nosql”系列数据库。总的来说,在设计上,它们非常关注对数据高并发地读写和对海量数据的存储等,与关系型数据库相比,它们在架构和数据模型方量面做了
“减法
”,而在扩展和并发等方面做了
“加法
”。现在主流的
Nosql数据库有
BigTable、
HBase、
Cassandra、
SimpleDB、
CouchDB、
MongoDB和
Redis等。接下来,将关注
Nosql数据库到底存在哪些优缺点。
优缺点
在优势方面,主要体现在下面这三点:
1. 简单的扩展:典型例子是
Cassandra,由于其架构是类似于经典的
P2P,所以能通过轻松地添加新的节点来扩展这个集群
;
2. 快速的读写:主要例子有
Redis,由于其逻辑简单,而且纯内存操作,使得其性能非常出色,单节点每秒可以处理超过
10万次读写操作
;
3. 低廉的成本:这是大多数分布式数据库共有的特点,因为主要都是开源软件,没有昂贵的
License成本
;
但瑕不掩瑜,
Nosql数据库还存在着很多的不足,常见主要有下面这几个:
1. 不提供对
sql的支持:如果不支持
sql这样的工业标准,将会对用户产生一定的学习和应用迁移成本
;
2. 支持的特性不够丰富:现有产品所提供的功能都比较有限,大多数
Nosql数据库都不支持事务,也不像
MS sql Server和
Oracle那样能提供各种附加功能,比如
BI和报表等
;
3. 现有产品的不够成熟:大多数产品都还处于初创期,和关系型数据库几十年的完善不可同日而语
;
上面
Nosql产品的优缺点都是些比较共通的,在实际情况下,每个产品都会根据自己所遵从的数据模型和
CAP理念而有所不同,接下来,将给大家介绍
Nosql两个最重要的概念:数据模型和
CAP理念,并在本文最后,对主流的
Nosql数据库进行分类。