ITPub博客

首页 > Linux操作系统 > Linux操作系统 > NoSQL 初探

NoSQL 初探

原创 Linux操作系统 作者:Jujay 时间:2011-10-11 14:32:43 0 删除 编辑
1. 什么叫NoSQL?
NoSQL一词首先是Carlo Strozzi在1998年提出来的,指的是他开发的一个没有SQL功能,轻量级的,开源的关系型数据库。注意,这个定义跟我们现在对NoSQL的定义有很大的区别,它确确实实字如其名,指的就是“没有SQL”的数据库。但是NoSQL的发展慢慢偏离了初衷,Carlo Strozzi也发觉,其实我们要的不是"no sql",而应该是"no relational",也就是我们现在常说的非关系型数据库了。

2009年初,Johan Oskarsson举办了一场关于开源分布式数据库的讨论,Eric Evans在这次讨论中再次提出了NoSQL一词,用于指代那些非关系型的,分布式的,且一般不保证遵循ACID原则的数据储存系统的出现和兴起。 Eric Evans使用NoSQL这个词,并不是因为字面上的“没有SQL”的意思,他只是觉得很多经典的关系型数据库名字都叫"**SQL"(例如 MySQL,MS SQL,PostgreSQL),所以为了表示跟这些关系型数据库在定位上的截然不同,就用了"NoSQL"一词。

2. 传统关系型数据库有哪些瓶颈?
随着像Facebook, Twitter等SNS web2.0网站的兴起,传统的关系型数据库面对以下的“3高”问题,已经越来越力不从心了。
1) 高并发读写需求
Web 2.0网站的用户并发性非常高,往往达到每秒上万次读写请求,对于传统的关系型数据库来说,硬盘I/O会是一个很大的瓶颈。
2) 海量数据的高效率读写
Web 2.0网站每天产生的数据量是巨大的,对于关系型数据库来说,在一张包含海量数据的表中查询,效率是非常低的。
3) 高扩展性和可用性
Normal 0 false false false EN-US ZH-CN X-NONE在基于web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web server和app server那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24小时不间断服务的网站来说,对数据库系统进行升级和扩展 是非常痛苦的事情,往往需要停机维护和数据迁移,为什么数据库不能通过不断的添加服务器节点来实现扩展呢?

对于Web 2.0网站来说,关系型数据库的很多特性不再需要了,比如:

1) 事务一致性
关系型数据库在对事物一致性的维护中有很大的开销,而现在很多Web 2.0系统对事物的读写一致性都不高。
2) 读写实时性
Normal 0 false false false EN-US ZH-CN X-NONE对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web应用来说,并不要求这么高的实时性,比方说发一条消息之 后,过几秒乃至十几秒之后,我的订阅者才看到这条动态是完全可以接受的。
3) 复杂SQL,特别是多表关联查询
Normal 0 false false false EN-US ZH-CN X-NONE任何大数据量的web系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL报表查询,特别是SNS类型的网站,从需求以及产品设计角 度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL的功能被极大的弱化了。

3. NoSQL的主要产品有哪些?
1) Normal 0 false false false EN-US ZH-CN X-NONE满足极高并发读写需求的Key-Value数据库:Redis,Tokyo Cabinet, Flare
Key-value类型数据库的特点是把这个数据库系统都加载到内存,定期通过异步操作把数据库刷到磁盘上,因为是纯内存操作,这类数据库性能非常快,但是缺点就是数据库容量受物理内存限制,无法用于海量数据的读写。
2) 满足海量数据读写和面向文档的数据库: MongoDB,CouchDB
面向文档的数据库保证海量数据存储的同时,还具有良好的查询性能,注意:这里只是提高了读性能,而写性能却无法做到显著提高。
3) 满足高扩展性和可用性的面向分布式计算的数据库: Normal 0 false false false EN-US ZH-CN X-NONE,Hadoop,HBase,Voldemort
Normal 0 false false false EN-US ZH-CN X-NONE面向scale能力的数据库其实主要解决的问题领域和上述两类数据库还不太一样,它首先必须是一个分布式的数据库系统,由分布在不同节点上面的数据库共同构成一个数据库服务系统,并且根据这种分布式架构来提供online的,具有弹性的可扩展能力,例如可以不停机的添加更多数据节点,删除数据节点等等。

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/26277071/viewspace-708958/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: rman 备份
请登录后发表评论 登录
全部评论

注册时间:2011-09-14

  • 博文量
    93
  • 访问量
    291022