开篇:在Web2.0网站引起的高并发需求下,关系数据库(RDB)的ACID强制要求,犹如一把自宫之剑进退维谷可谓&ldquo沉舟侧畔千帆过,病树前头万木春&rdquo,NoSQL的出现,似乎是要革了
开篇:
在Web 2.0网站引起的高并发需求下,关系数据库(RDB)的ACID强制要求,犹如一把自宫之剑进退维谷;可谓“沉舟侧畔千帆过,病树前头万木春”,NoSQL的出现,似乎是要革了关系型数据库在互联网行业的命,以Google和Amazon推出BigTable和Dynamo为代表的各路NoSQL数据库风声水起。革命正在进行,作为一个IT人,再以“打酱油”的心态泰然自若,情何以堪啊!
详细介绍:
NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受。(“NoSQL”一词最早于1998年被用于一个轻量级的关系数据库的名字。)
NoSQL的核心应用多以key-value存储,当然还有其他的文档型的、列存储、图型数据库、xml数据库等。在NoSQL概念提出之前,这些数据库就被用于各种系统当中,但是却很少用于web互联网应用。比如cdb、qdbm、bdb数据库。
1、RDB的瓶颈
由网络数据库发展为关系型数据库,其性能、稳定性、可操作性、安全性等引领了一个时代,久经历史考验,获得了巨大的成功。而在以只读为主的互联网领域中,MySQL的高效查询性能使其成了绝对靠前的王者,并作出了巨大的贡献。如常见的WAMP结构或LAMP结构。
在web 1.0年代,网站的访问量一般都不大,用单个数据库完全可以轻松应付。却多为静态网页,动态交互类型的网站不多;随着互联网的高速发展,在web 2.0出现的火爆论坛、博客、sns、微博等,其数据量的迅速膨胀引起了负责数据存储的后台RDB性能问题,于是程序员们结出的解决之道是:cache技术、分表、分区、垂直分割、水平分割、混合分割….,可悲的是这些技术都受限于RDB的ACID,却可伸缩性并不明显,现实需要一种新的技术来突破这种瓶颈--NoSQL。
2、NOSQL的优势
易扩展、可伸缩性强
NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。
大数据量,高性能
NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。如:一般MySQL使用Query Cache,每次表的更新Cache就失效,是一种大粒度的Cache,在针对web2.0的交互频繁的应用,Cache性能不高。而NoSQL的Cache是记录级的,是一种细粒度的Cache,所以NoSQL在这个层面上来说就要性能高很多了。
灵活的数据模型
NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。这点在大数据量的web2.0时代尤其明显。
高可用
NoSQL在不太影响性能的情况,就可以方便的实现高可用的架构。比如Cassandra,HBase模型,通过复制模型也能实现高可用。
3、Oracle 发布NoSQL数据库
Oracle 作为全球最大的关系型数据库提供商,在其产品链条中,也加入了NoSQL数据库这一环,称为NoSQL Database(名字起的有些搞笑)
Oracle的这个NoSQL Database,是甲骨文Big Data Appliance的其中一个组件,Big Data Appliance是一个集成了Hadoop、NoSQL Database、Oracle数据库Hadoop适配器、Oracle数据库Hadoop装载器及R语言的系统。
下面是NoSQL Database的特性简介:
- 数据模型简单
-
- Key-Value式的存储,其中key由一级主要key和二次次要key组成
-
- 由Java写成,支持基于Java API 的Put、Delete和GET操作
-
- 扩展性强
-
- 支持自动地基于hash函数的数据分片策略
-
- 提供基于数据节点拓扑结构和访问延迟的智能控制,以提供最佳的数据访问性能
-
- 行为可预测性
-
- 提供ACID 的事务性支持,并且支持基于全局和单个操作的事务级别设置
-
- 通过B-tree 数据结构构成的Cache层和高效的查询调度机制,提供可控的请求延时
-
- 高可用性
-
- 没有单点故障
-
- 提供内置且可配置的数据复制备份机制
-
- 对单点或多点故障有很好的容错性
-
- 通过跨数据中心的数据备份,提供数据的灾难恢复
-
- 简单的管理与维护
-
- 除了命令行之外,还提供基于Web的界面管理工具
-
- 提供对系统及数据节点的控制控制
-
- 可以查看系统的拓扑结构、系统状态参数、当前负载情况、请求延迟记录、内部事件及通知等信息
本站技术原创栏目文章均为中睿原创或编译,转载请注明:文章来自中睿,本站保留追究责任的权利。