1 引言

随着云计算时代的到来,各种类型的互联网应用层出不穷,对与此相关的数据模型、分布式架构、数 据存储等数据库相关的技术指标也提出了新的要求。虽然传统的关系型数据库已在数据存储方面占据了不可动摇的地位,但由于其天生的限制,已经越来越无法满足 云计算时代对数据扩展、读写速度、支撑容量以及建设和运营成本的要求。云计算时代对数据库技术提出了新的需求,主要表现在以下几个方面。

●海量数据处理:对类似搜索引擎和电信运营商级的经营分析系统这样大型的应用而言,需要能够处理PB级的数据,同时应对百万级的流量。

●大规模集群管理:分布式应用可以更加简单地部署、应用和管理。

●低延迟读写速度:快速的响应速度能够极大地提高用户的满意度。

●建设及运营成本:云计算应用的基本要求是希望在硬件成本、软件成本以及人力成本方面都有大幅度的降低。

2 关系型数据库的劣势分析

随着Web2.0的发展,传统的关系型数据库在应对超大规模和高并发的SNS类型的网站方面暴露了许多难以克服的问题,主要表现在以下方面。

(1)高并发读写速度慢

这种情况主要发生在数据量达到一定规模时,由于关系型数据库的系统逻辑非常复杂,使得其非常容 易发生死锁等并发问题,导致其读写速度下降非常严重。例如,Web2.0网站要根据用户个性化信息来实时生成动态页面、提供动态信息,所以基本上无法使用 动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系型数据库勉强可以应付上万次SQL查询,硬盘I/O往往无法承担上万 次的SQL写数据请求。

(2)支撑容量有限

类似Facebook、Twitter这样的SNS网站,用户每天产生海量的用户动态,每月会产生几亿条用户动态,对于关系型数据库来说,在一张数亿条记录的表里面进行SQL查询,效率是极其低下乃至不可忍受的。

(3)扩展性差

在 基于Web的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,传统的关系型数据库却没有办法像Web Server那样简单地通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛 苦的事情,往往需要停机维护和数据迁移,因此迫切需要关系型数据库也能够通过不断添加服务器节点来实现扩展。

(4)建设和运维成本高

企业级数据库的价格很高,并且随着系统的规模增大而不断上升。高昂的建设和运维成本无法满足云计算应用对数据库的需求。

关系型数据库遇到上述难以克服的瓶颈,与此同时,它的很多主要特性在云计算应用中却往往无用武之地,例如:数据库事务一致性、数据库的写实时性和读实时性、复杂的SQL查询特别是多表关联查询。因此,传统的关系型数据库已经无法独立应付云计算时代的各种应用。

3 NoSQL数据库数据模型

关系型数据库越来越无法满足云计算的应用场景,为了解决此类问题,非关系型数据库应运而生,由 于在设计上和传统的关系型数据库相比有了很大的不同,所以此类数据库被称为“NoSQL(Not only SQL)”系列数据库。与关系型数据库相比,它们非常关注对数据高并发读写和海量数据的存储,在架构和数据模型方面作了简化,而在扩展和并发等方面作了增 强。目前,主流的NoSQL数据库包括BigTable、HBase、Cassandra、SimpleDB、CouchDB、MongoDB以及 Redis等。NoSQL常用数据模型包括以下3种。

(1)Column-oriented(列式)

列式主要使用Table这样的模型,但是它并不支持类似Join这样多表的操作,它的主要特点 是在存储数据时,主要围绕着“列(Column)”,而不是像传统的关系型数据库那样根据“行(Row)”进行存储,也就是说,属于同一列的数据会尽可能 地存储在硬盘同一个页中,而不是将属于同一个行的数据存放在一起。这样做的好处是,对于很多类似数据仓库的应用,虽然每次查询都会处理很多数据,但是每次 所涉及的列并没有很多。使用列式数据库,将会节省大量I/O,并且大多数列式数据库都支持Column Family这个特性,能将多个列并为一个小组。这样做的好处是能将相似列放在一起存储,提高这些列的存储和查询效率。总体而言,这种数据模型的优点是比 较适合汇总和数据仓库这类应用。

(2)Key-value

虽然Key-value这种模型和传统的关系型相比较简单,有点类似常见的 HashTable,一个Key对应一个Value,但是它能提供非常快的查询速度、大的数据存放量和高并发操作,非常适合通过主键对数据进行查询和修改 等操作,虽然不支持复杂的操作,但是可以通过上层的开发来弥补这个缺陷。

(3)Document(文档)

在结构上,Document和Key-value是非常相似的,也是一个Key对应一个 Value,但是这个Value主要以JSON或者XML等格式的文档来进行存储,是有语义的,并且Document DB一般可以对Value来创建Secondary Index来方便上层的应用,而这点是普通Key-Value DB所无法支持的。

4 常用NoSQL数据库比较及优劣势分析

4.1主要NoSQL数据库比较

从设计理念、数据模式、分布式等几个角度对BigTable、Cassandra、Redis、MongoDB进行比较,见表1。

4.2 NoSQL数据库的优势分析

NoSQL数据库主要有以下优势:

●扩展简单,典型例子是Cassandra,由于其架构类似于经典的P2P,因此能够通过简单添加新的节点来扩展集群;

●读写快速,典型例子是Redis,由于其逻辑简单,纯内存操作,因此其具有非常出色的性能,单节点每秒可以处理超过10万次的读写操作;

●成本低廉,因为大多数NoSQL数据库都是开源软件,没有昂贵的成本限制。

4.3NoSQL数据库的劣势分析

虽然NoSQL具有很多显著的优势,但是依然存在很多不足,主要表现在:

●不提供对SQL的支持,将会对用户产生一定的应用迁移成本,同时,无法实现组合应用,发挥SQL数据库已经非常成熟的优势;

●支持的特性不够丰富,现有NoSQL数据库提供的功能十分有限,大多数都不支持事务和其他附加功能;

●产品不够成熟,大多数NoSQL数据库产品还处于初级阶段,与已经非常完善成熟的关系型数据库不可同日而语。

5 结束语

云计算主要常见的有两类场景:需要低延迟和高并发的读写能力,数据量虽大,但不超过TB级别, 大部分现在使用RDBMS的Web应用基本上都属于这一类,类似传统的OLTP(联机事务处理);海量数据的存储和操作,如PB级别的,这方面的例子有传 统的数据仓库、Google海量的Web页面和图片存储等,类似传统的OLAP(联机分析处理)。目前,业界还没有一款数据库能同时适应上述多种云计算场 景的NoSQL数据库。考虑到PaaS平台的需求比较复杂,能够在后台进行定制化的数据库将是未来发展的趋势,因此,轻量级的、兼顾高可扩展和高可靠性的 架构设计将会受到欢迎。

本文来自:http://www.ttm.com.cn

转载于:https://www.cnblogs.com/jiajinwen/archive/2012/03/18/2404449.html

云计算时代的数据库研究相关推荐

  1. 云计算时代的数据库运行

    云计算时代的高可用数据库是可扩展.容错且与任何私有云或公共云兼容的数据库实例.它们旨在提供业务连续性,而不会因任何类型的硬件或网络故障而导致用户体验的影响.其核心设计原则是消除任何单点故障,并提供平稳 ...

  2. 腾讯研发专家:TXSQL如何成为云计算时代数据库核弹头?

    背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广州召开,广东省各级政府机构领导.海内外业内学术专家.行业大咖及技术大牛等在现场共议云计算与数字 ...

  3. TXSQL:云计算时代数据库核弹头——云+未来峰会开发者专场回顾

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广州召开,广东省各级政府机构领导.海内外业 ...

  4. TXSQL:云计算时代数据库核弹头——云+未来峰会开发者专场回顾 1

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在广州召开,广东省各级政府机构领导.海内外业 ...

  5. 腾讯技术峰会:从模型部署到算法应用,云计算时代下的人工智能

    在飞速变化的时代,新的技术和产品层出不穷,云会议.云教学的出现敲开了新世界的大门,更改变了我们的工作和生活方式.沉淀新技术.开发最好的产品.助力开发者成长一直是腾讯持续关注的方向. 12月19日至20 ...

  6. (文中有惊喜)走进云时代的数据库

    数据技术嘉年华等你来 云时代的数据库 最近几年,随着云计算相关技术的发展,各种不同类型的云层出不穷,服务越来越多不同类型的企业业务,传统企业也渐渐开始探索上云的道路.在云上,作为业务最核心的数据库,相 ...

  7. 【观察】华为IoT首席架构师王启军:云计算时代全栈工程师的养成

    申耀的科技观察 读懂科技,赢取未来! 在王启军的公众号里,有一篇<My Team>的文章,里面记录了早年他所带团队成长的心得. 这个被他称为完美组合的团队,并不是来自大厂名企,彼时王启军给 ...

  8. 从曾经的一家独大到现在的群雄逐鹿,大数据时代的数据库圈为啥如此之乱?

    前言 最近家里事情比较多,逃了很久的更.终于找到了点时间继续写一写,好不容易坚持下来的写东西的习惯可不能半途而废了. 上一篇文章吐槽了下技术快速发展对技术人员带来的各种深远影响,但是主要是从总体上来说 ...

  9. 云计算时代——本质、技术、创新、战略

    云计算时代--本质.技术.创新.战略(一线云计算布道师历时6年力作,透析云计算本质.简述云计算关键技术.分析主要云服务架构.解剖云计算巨头策略,既有广度又有深度,云计算2.0时代必备) 刘黎明 王昭顺 ...

  10. 《SaaS软件工程 云计算时代的敏捷开发》PDF版

    点击下载:[<SaaS软件工程 云计算时代的敏捷开发>](https://pan.baidu.com/s/1upWJEYOni1XLsPBnrrMVhQ)![这里写图片描述](https: ...

最新文章

  1. Linux 忘记登录密码?破解系统登陆密码
  2. ajax返回去掉引号,为什么我的服务器代码ajax调用返回一个用双引号括起来的响应?...
  3. Java控制内存的功力
  4. python位置参数ppt_如何在Python中使用一个或多个相同的位置参数?
  5. import cv2 失败 ImportError:DLL load fail:找不到指定模块
  6. saiku 展示优化
  7. SQL Server 阻止组件 xp_cmdshell
  8. mongodb查询某个字段数据
  9. python爬虫爬取糗百成人图片单线程版本
  10. 2022-05-30 无法验证是否已安装所需的Microsoft更新KB2919355
  11. Dnspod域名设置
  12. 电巢:继腾讯与联通混改后,又有两家企业官宣,科技巨头与国企混改,意味着什么?
  13. 保护眼睛的屏幕设置 Win2008R2中的Win7桌面效果设置
  14. 傲慢与偏见 中英版
  15. java综合技术分享
  16. JavaScript 实现动物识别专家系统交互演示
  17. 关于计算机实践创新的名言,创新与实践的名言名句
  18. ECS 7天实践训练营学习笔记——DAY5
  19. [转载]三大WEB服务器软件比较(Apache ,Lighttpd,Nginx)对比分析
  20. python一点基础都没有的怎么办-有没有简单一点的 Python 小例子或小项目?

热门文章

  1. Thinking in Java 9.6 适配接口
  2. windows安装jdk与配置环境变量详解
  3. Angularjs中$http以post请求通过消息体传递参数
  4. SpringCloud和AlibabaCloud区别
  5. ajax发送html标识,如何在jQuery的.ajax函数中正确转义作为数据发送的html
  6. sap字段及描述底表_SAP各模块字段与表的对应关系.
  7. 爬虫实例3 批量抓取数据之异步请求(ajax)
  8. Ubuntu18.04下安装配置ORB_SLAM2以及过程中遇到的问题解决方法
  9. c事件和委托的区别_web前端教程分享JavaScript学习笔记之Event事件二
  10. python 代码分块_python大数据分块处理