Nosql:web2.0时代数据库模型

Nosql全称是Not Only SQL

Nosql全称是Not Only SQL,是一种不同于传统关系型数据库的数据库管理系统(以下关系型数据库管理系统简称RDBMS)的设计方式。

一、Nosql历史

NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。

2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论,来自Rackspace的Eric Evans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模式。

2009年在亚特兰大举行的”no:sql(east)”讨论会是一个里程碑,其口号是:

select fun, profit

from real_world

where relational=false;

因此,对NoSQL最普遍的解释是“非关系型的”,强调Key-Value Stores和文档数据库的优点,而不是单纯的反对RDBMS。

二、Nosql出现的原因

先从关系数据库的4个根基式的性质谈起,即所谓的ACID准则:

A – Atomic,原子性

一次RDBM操作,必须满足“要么不做,要么全做”,假如因为故障而使事务未能完成,则需要恢复其对数据库造成的影响。

C – Consistency,一致性

一次DBMS操作,应使“数据库从一个一致性状态转变为另一个一致性状态”。举个例子来说,如果银行对客户的账号只拨款,不修改余额,则数据库就不一致,不能满足收支之差应等于其余额的要求。

I – Isolation ,隔离性

多个事务并发地执行,应像各个事务独立执行一样。

D – Durability,持久性

一次操作完成后,其对数据库的影响是持久的,即便数据库损坏也可以Rollback到之前的状态。

关系数据库的ACID准则,能够最大限度的保证数据的正确性,安全性,及时性。然而,反过来也必然会限制数据库在其他方面的性能。

web2.0时代,是一个数据爆炸的时代。像谷歌、亚马逊这样的企业,每时每刻都有无数的用户在使用它们提供的互联网服务,必然带来巨大的数据吞吐量,在同一时间,会并发的有成千上万的连接对数据库进行操作。而像Facebook、Twitter这样的SNS网站,每个月产生的数据更是庞大的难以忍受,更令人不快的是:这些数据的类型似乎并不能在事先完全预定义到一个RDBMS的表中。

于是,对于数据库,我们或许更多的要求下面这些性能:

  1. High performance – 对数据库高并发读写的需求
  2. Huge Storage – 对海量数据的高效率存储和访问的需求
  3. High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求

而Nosql的诞生,就是为了满足这些需求。

三、目前流行的Nosql结构

这里我只是列举了很少的一部分比较成熟的Nosql数据库

BigTable

Google开发设计的分布式数据库。Bigtable的设计目的是可靠的处理PB级别的数据,并且能够部署到上千台机器上。Bigtable已经实现了下面的几个目标:适用性广泛、可扩展、高性能和高可用性。Bigtable已经在超过60个Google的产品和项目上得到了应用,包括 Google Analytics、Google Finance、Orkut、Personalized Search、Writely和Google Earth等。

Dynamo

Dynamo是亚马逊的key-value模式的存储平台,可用性和扩展性都很好。数据分区并用改进的一致性哈希(consistent hashing)方式进行复制,利用数据对象的版本化实现一致性。Dynamo 是完全去中心化的系统,人工管理工作很小。

Cassandra

Cassandra是facebook开源出来的一个版本。Cassandra由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事 情,只管在群集里面添加节点就可以了。
Cassandra具有灵活的schema,不需要象数据库一样预先设计schema,增加或者删除字段非常方便(on the fly)。

Hypertable

Hypertable 是一个正在进行中的开源项目,以google的bigtable论文为基础指导,使用c++语言实现。目的是为了解决大并发,大数据量的数据库需求。目前 只支持最基本的查询功能,可以处理大量并发请求,和管理大量数据。可扩缩性好,扩容只需要增加集群中的机器。任何节点失效,既不会造成系统瘫痪也不会丢失数 据。在集群节点足够的情况下,并发量和数据量对性能基本没有影响。Hypertable项目得到了百度的赞助支持。

四、Nosql会成为?

Nosql是顺势而生,解决了高并发性、可扩展性等传统的RDBMS没法满足的需求。然而,Nosql和关系数据库并不是谁替代谁的关系。RDBMS在传统的数据应用领域仍具有不可动摇的地位。假想,某一个阳光明媚的清晨,你一觉醒来,登录自己的银行账户,发现自己的存款莫名其妙少了几个零,而原因是银行方面为了减少在服务器方面可能是微不足道的开支而采用了新的数据库系统,估计你绝对会抓狂(在一致性方面,关系数据库更有优势)。

参考文献:

Bigtable: A Distributed Storage System for Structured Data
Dynamo: Amazon’s Highly Available Key-value Store

hypertable介绍

NoSQL数据库探讨之一 - 为什么要用非关系数据库?

NoSQL数据库笔谈



分享到:
版权申明

本站所有文章,除特别标明外,皆为原创。如需转载,请注明出处:

转载自:i 飞扬 分享精彩!
原文链接:Nosql:web2.0时代数据库模型

您的支持是我最大的动力!

  1. 到时候SQL的KEY ID 之类的就是浮云了。。不过我觉得会加大工作量,本来就可以一句SQL搞定的,到时候要写不止一句了。

    [点击回复]

    老饕 回复:

    @OneDou, 是的,到时候很多东西都要程序员考虑了~

    [点击回复]

  2. 为接触过,有机会了解下

    [点击回复]

    老饕 回复:

    @代码回音, 简单有效,现在又回到关系数据库之前的网状数据库了

    [点击回复]

  3. 我是来回访的

    [点击回复]

    老饕 回复:

    @倪飞, 你这个技巧性也很高啊!我就不说原因了~

    [点击回复]

  4. 木有接触过,普及路还很长吧

    [点击回复]

    老饕 回复:

    @zwwooooo, 实际上,现在大型网站和云上已经在大量使用了~

    [点击回复]

  5. Key/Value格式,比较像Object的用法

    [点击回复]

    老饕 回复:

    @Will小问, 你这更新~~

    [点击回复]

    Will小问 回复:

    @老饕, ?什么更新

    [点击回复]

    老饕 回复:

    @Will小问, 文章啊~~你N旧不更了~

    [点击回复]

    Will小问 回复:

    @老饕, 最近有几篇技术文的更新,都是关于JavaScript的

    [点击回复]

    老饕 回复:

    @Will小问, 恩,有看到~

    Will小问 回复:

    @老饕, 主要是最近的新开源项目也打算用NoSQL架构

    [点击回复]

  6. 我表示看不懂.

    [点击回复]

    老饕 回复:

    @yesureadmin, 还好吧,可能写的比较大,不够细致吧~

    [点击回复]

    SOHO一族 回复:

    @老饕, 偶深有同感~~

    [点击回复]

  7. 第一次听说这个词。

    [点击回复]

    老饕 回复:

    @囧啊囧, 这个词提出没多久~~ 更流行的一个词是 key value store

    [点击回复]

  8. 这个要普及起来是件很难得事情

    [点击回复]

    老饕 回复:

    @huangjun, 目前大型的数据应用都是key/value store了,在社交这一块,这个是潮流~

    [点击回复]

  9. :!: 这个……是你的某次作业么?参考文献都一大堆,太专业了!

    [点击回复]

    老饕 回复:

    @Google不爱我, 呵呵,我现在努力写质量更高一点的文章~~

    PS:绝对不是作业,偶们数据库老师只关心B+树~

    [点击回复]

  10. 我不太喜欢搞数据库相关的编程,太枯燥了

    [点击回复]

    老饕 回复:

    @C瓜哥, 数据库编程?是利用接口嵌入SQL语句,还是设计数据库呢?

    [点击回复]

  11. :oops: 非常感谢SQL,要不然我的博客也不存在

    [点击回复]

    老饕 回复:

    @villen, 呵呵,你应该感谢database才对~SQL只是一种解释性的数据库查询语言~

    [点击回复]

  1. 没有通告


无觅相关文章插件,快速提升流量