NoSQL诞生的原因和优缺点

云计算背后的秘密:NoSQL诞生的原因和优缺点 

我本来一直觉得NoSQL其实很容易理解的,我本身也已经对NoSQL有了非常深入的研究,但是在最近准备YunTable的Chart的时候,发现NoSQL不仅非常博大精深,而且我个人对NoSQL的理解也只是皮毛而已,但我还算是一个“知耻而后勇”的人,所以经过一段时间的学习之后,从本系列第六篇开始,就将和大家聊聊NoSQL,而本篇将主要给大家做一下NoSQL数据库的综述。 
首先将和大家聊聊为什么NoSQL会在关系型数据库已经非常普及的情况下异军突起? 
诞生的原因 
随着互联网的不断发展,各种类型的应用层出不穷,所以导致在这个云计算的时代,对技术提出了更多的需求,主要体现在下面这四个方面: 
1. 低延迟的读写速度:应用快速地反应能极大地提升用户的满意度; 
2. 支撑海量的数据和流量:对于搜索这样大型应用而言,需要利用PB级别的数据和能应对百万级的流量; 
3. 大规模集群的管理:系统管理员希望分布式应用能更简单的部署和管理; 

4. 庞大运营成本的考量:IT经理们希望在硬件成本、软件成本和人力成本能够有大幅度地降低; 

目前世界上主流的存储系统大部分还是采用了关系型数据库,其主要有一下优点:

1.事务处理---保持数据的一致性;

2.由于以标准化为前提,数据更新的开销很小(相同的字段基本上只有一处);

3.可以进行Join等复杂查询。

虽然关系型数据库已经在业界的数据存储方面占据不可动摇的地位,但是由于其天生的几个限制,使其很难满足上面这几个需求: 
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数据库进行分类。
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL和NoSQL都是常见的数据库类型,它们各自有不同的优缺点。下面是它们的具体介绍: MySQL优点: 1. 稳定:MySQL是一款经过多年发展的数据库产品,已经非常稳定,被广泛应用于各种应用场景。 2. 支持 SQL:MySQL支持SQL语言,易于学习和使用,适合需要使用关系型数据库的应用场景。 3. 事务支持:MySQL支持事务,能够保证数据的完整性和一致性。 4. 可扩展性:MySQL支持集群部署,可以通过增加节点来扩展性能。 MySQL缺点: 1. 扩展性有限:虽然MySQL支持集群部署,但是节点增加到一定数量后,性能提升的空间会越来越小。 2. 读写性能不够高:相比于NoSQL数据库,MySQL的读写性能不够高效。 3. 数据结构固定:MySQL是关系型数据库,数据结构比较固定,不太适合存储非结构化数据。 NoSQL优点: 1. 高可扩展性:NoSQL数据库是分布式的,可以通过增加节点来扩展性能。 2. 高读写性能:NoSQL数据库通常采用分布式的架构,可以支持高并发的读写操作,性能比MySQL更高效。 3. 支持非结构化数据:NoSQL数据库支持非结构化数据的存储,非常适合存储大数据、文本、图片等非结构化数据。 4. 简单易用:NoSQL数据库通常采用键值对的方式存储数据,使用起来比较简单NoSQL缺点: 1. 不支持 SQL:NoSQL数据库不支持SQL语言,使用起来不够方便,需要重新学习一些新的查询语句。 2. 不支持事务:部分NoSQL数据库不支持事务,需要开发者自己实现一些事务控制机制。 3. 不稳定:一些新的NoSQL数据库可能比较不稳定,需要开发者自己进行评估和测试。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值