欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > PPT文档下载
     

    第五章非关系型数据库.ppt

    • 资源ID:2625597       资源大小:5.11MB        全文页数:107页
    • 资源格式: PPT        下载积分:10
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要10
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第五章非关系型数据库.ppt

    Cloud ComputingCloud Computing Autumn, 2011 Chapter 5 NoSQL Database Xu Jungang 1 1 *Cloud Computing, GUCAS2 提纲 1. 关系数据库的瓶颈 2. 云计算对数据库技术的要求 3. NoSQL数据库 4. BigTable 5. HBase 2 3 关系数据库的产生 l1970年IBM研究员Edgar Frank Codd发表了业界第一篇关于关系 数据库理论的论文A Relational Model of Data for Large Shared Data Banks,首次提出了关系 模型的概念。 l后来Codd又陆续发表多篇文章 ,奠定了关系数据库的基础。关 系模型有严格的数学基础,抽象 级别比较高,而且简单清晰,便 于理解和使用。 3 关系型数据库的概念 关系数据库,是建立在关系模型基础上的数据库, 借助于集合代数等数学概念和方法来处理数据库中 的数据。现实世界中的各种实体以及实体之间的各 种联系均用关系模型来表示。 SQL是一种基于关系数据库的语言,这种语言执行 对关系数据库中数据的检索和操作。 关系模型由关系数据结构、关系操作集合、关系完 整性约束三部分组成。 4 4 关系操作 关系模块中常用的操作包括: 5 数据查询数据操作 投影增加 连接删除 并修改 除更新 差 5 关系型数据库的优点 操作方便:通过应用程序和后台连接,方便了用户 对数据的操作,特别是没有编程基础的人。 易于维护 :丰富的完整性,包括实体完整性、参照 完整性和用户定义完整性,大大降低了数据冗余和 数据不一致的概率 。 便于访问数据:提供了诸如视图,存储过程,触发 器,索引等对象。 更安全,更快捷 :权限分配和管理,使其较以往的 数据库在安全性上要高的多, 6 6 关系型数据库的瓶颈 (1)关系数据库所采用的二维表格数据模型不能 有效地处理多维数据,不能有效处理互联网应用中 半结构化和非结构化的海量数据,如Web页面、电 子邮件、音频、视频等 7 7 关系型数据库的瓶颈 (2)高并发读写的性能低 关系数据库达到一定规模时,非常容易发生死锁等并发 问题,导致其读写性能下降非常严重。 Web2.0网站数据库并发负载非常高,往往要达到每秒上 万次读写请求。 关系型数据库勉强可以应付上万次SQL查询,但硬盘I/O 往往无法承担上万次的SQL写数据请求。 8 8 关系型数据库的瓶颈 查询效率低 各种等待 9 关系型数据库的瓶颈 (3)支撑容量有限 类似人人网,新浪微博,Facebook,Twitter,Friendfeed (已被Facebook收购)这样的网站,每天用户产生海量 的用户动态信息。 (a)以Facebook为例,一个月就要存储1350亿条(未得 到确认)用户动态,对于关系数据库来说,在一张1350亿 条记录的表里面进行SQL查询,效率是极其低下乃至不可 忍受的。 (b)再例如大型Web网站或IM的用户登录系统,例如腾 讯,MSN,动辄数以亿计的帐号,关系数据库也很难应付 。 10 关系型数据库的瓶颈 (4)数据库的可扩展性和可用性低 当一个应用系统的用户量和访问量与日俱增的时候,传统 的关系型数据库却没有办法像Web Server那样简单地通过 添加更多的硬件和服务节点来扩展性能和负载能力。 对于很多需要提供不间断服务的系统来说,对数据库系统 进行升级和扩展往往需要停机维护和数据迁移 11 关系型数据库的瓶颈 12 关系型数据库的瓶颈 (5)建设和运维成本高 企业级关系数据库的价格很高,并且随着系统的规模增大 而不断上升。 高昂的建设和运维成本无法满足云计算应用对数据库的需 求。 13 *Cloud Computing, GUCAS14 提纲 1. 关系数据库的瓶颈 2. 云计算对数据库技术的要求 3. NoSQL数据库 4. BigTable 5. HBase 14 大量Web 2.0网站 15 大量Web 2.0网站 16 Types of Cloud Service ProviderTypes of Cloud Service Provider 云服务提供商类型云服务提供商类型 SaaSSaaS Software as a ServiceSoftware as a Service 软件即服务软件即服务 PaaSPaaS Platform as a ServicePlatform as a Service 平台即服务平台即服务 IaaSIaaS Infrastructure as a ServiceInfrastructure as a Service 基础设施即服务基础设施即服务 17 AaaSArchitecture as a Service BaaSBusiness as a Service CaaSComputing as a Service DaaSData as a Service DBaaSDatabase as a Service EaaSEthernet as a Service FaaSFrameworks as a Service GaaSGlobalization or Governance as a Service HaaSHardware as a Service IMaaSInformation as a Service IaaSIaaS Infrastructure or Integration as a ServiceInfrastructure or Integration as a Service IDaaSIdentity as a Service LaaSLending as a Service MaaSMashups as a Service OaaSOrganization or Operations as a Service SaaSSaaSSoftware or Storage as a ServiceSoftware or Storage as a Service PaaSPaaSPlatform as a ServicePlatform as a Service TaaSTechnology or Testing as a Service VaaSVoice as a Service Everything as a ServiceEverything as a Service任何事物都是一种服务任何事物都是一种服务 引用自 : https:/www.ibm.com/developerworks/mydeveloperworks/blogs/sbose/entry/gathering_clouds_of_xaas Customer-OrientedCustomer-Oriented 客户导向客户导向 18 云计算对数据库技术的需求 海量数据处理:需要能够处理PB级的数据。 大规模集群管理:分布式应用可以更加简单地部署 、应用和管理。 低延迟读写速度:快速的响应速度能够极大地提高 用户的满意度。 较低的建设及运营成本:云计算应用的基本要求是 希望在硬件成本、软件成本以及人力成本方面都有 大幅度的降低。 19 *Cloud Computing, GUCAS20 提纲 1. 关系数据库的瓶颈 2. 云计算对数据库技术的要求 3. NoSQL数据库 4. BigTable 5. HBase 20 What is NoSQL? In computing, NoSQL (sometimes expanded to “not only SQL“) is a broad class of database management systems that differ from classic relational database management systems (RDBMSes) in some significant ways. These data stores may not require fixed table schemas, usually avoid join operations, and typically scale horizontallyWikipedia NoSQL是一种与关系型数据库管理系统截然不同的 数据库管理系统,它的数据存储格式可以是松散的 、通常不支持Join操作并且易于横向扩展。也可以 称之为非关系型数据库。 21 NameAgeGenderBirthday a20M1990-10-1 b40F1970-8-24 c30M1980-1-18 关系型数据库 Name : a Age : 20 Gender : M Birthday : 1990-10-1 Hobby : travel Name : b Age : 40 Birthday : 1970-8-24 Tel : 12345678 Name : c Age : 30 Gender : M NoSQL An Example of NoSQL 22 SQL PK NoSQL SQLNoSQL - 重量级轻量级 贵便宜 商业开源 成熟时尚、风险 企业通用特定领域、互联网 23 Availability 可用性 Partition Tolerance 分区容错性 Consistency 一致性 RDBMS NoSQL 数据一致更新,所有 数据变动都是同步的 尽管有一些信息丢失 ,系统依旧继续运转 某个节点的宕机不会影 响其他节点继续完成操 作 CAP理论 24 CAP理论 Consistency(一致性): 数据一致更新,所有数据 变动都是同步的 Availability(可用性):某个节点的宕机不会影响其 他节点继续完成操作 Partition tolerance(分区容错性):尽管有一些信息 丢失,系统依旧继续运转可靠性 定理:一个分布式系统不可能满足一致性,可用性和分 区容错性这三个需求,最多只能同时满足两个。 忠告:架构师不要将精力浪费在如何设计能满足三者的 完美分布式系统,而是应该进行取舍。 25 关系数据库的ACID特性 Atomicity(原子性):一个事务中所有操作都必须全部完 成,要么全部不完成。 Consistency(一致性): 在事务开始或结束时,数据库 应该在一致状态。 Isolation(隔离性): 事务将假定只有它自己在操作数据 库,彼此不知晓。 Durability(持久性):一旦事务完成,就不能返回。 跨数据库事务:两阶段提交协议(Two-phase commit, 2PC) 结论:关系型数据库通过把更新操作写到事务型日志里实 现了较高的可靠性,但带来的是写性能的下降 26 BASE模式 BASE模型是反ACID模型,完全不同于ACID模型, 牺牲高一致性,获得可用性或可靠性: Basically Available(基本可用):支持分区失败。 Soft state(软状态):状态可以有一段时间不同步。 Eventually consistent(最终一致):最终数据是一致的 就可以了,而不是时时高一致。 BASE思想主要强调基本的可用性,如果你需要高可用性 ,也就是纯粹的高性能,那么就要以一致性或容错性为牺 牲 27 Web 1.0时代Web 2.0时代 28 Why NoSQL? 对于Web2.0网站来说,关系数据库的很多主要特 性却往往无用武之地。例如: 1. 数据库事务一致性需求: 很多Web实时系统并不要求 严格的数据库事务,对读一致性的要求很低,有些场合 对写一致性要求也不高。因此数据库事务管理成了数据 库高负载之外另一个沉重的负担。 2. 数据库的写实时性和读实时性需求: 对关系数据库来 说,插入一条数据之后立刻查询,是肯定可以读出来这 条数据的,但是对于很多Web应用来说,并不要求这么 高的实时性,比方说某人发一条消息之后,过几秒乃至 十几秒之后,他的订阅者才看到这条动态信息是完全可 以接受的。 29 关系数据库适合这样的场景? 对于Web2.0网站来说,关系数据库的很多主要特 性却往往无用武之地。例如: 3. 对复杂的SQL查询,特别是多表关联查询的需求: (1)任何大数据量的Web系统,都非常忌讳多个大表的关联查 询,以及复杂的数据分析类型的复杂SQL报表查询。 (2)特别是SNS类型的网站,从需求以及产品设计角度,就避 免了这种情况的产生。往往更多的只是单表的主键查询,以及单 表的简单条件分页查询,SQL的功能被极大的弱化了。 因此,关系数据库在这些越来越多的应用场景下 显得就不那么合适了。 30 NoSQL的优势和劣势 优势 扩展简单 读写快速 成本低廉 劣势 不提供对SQL支持 产品不够成熟 很难实现数据的完整性。 缺乏强有力的技术支持。 开源数据库从出现到用户 接受需要一个漫长的过程 。 31 NoSQL分类(按功能) Column-oriented:列式存储,通常不支持join操作,与传统 关系型数据库的行式存储相比他的存储是列式的,这样会让 很多统计聚合操作更简单方便。 Key/Value:有点类似常见的HashTable,一个Key对应一个 Value,但是它能提供非常快的查询速度、大的数据存放量 和高并发操作,非常适合通过主键对数据进行查询和修改等 操作。 Document-oriented:Document和Key/value是非常相似的 ,也是一个Key对应一个Value,但是这个Value主要以 JSON(JavaScript Object Notations)或者XML等格式的文 档来进行存储。这种存储方式可以很容易地被面向对象的语 言所使用。 32 Column-oriented Vertica BigTable Hypertable HBase Cassandra NoSQL分类(按功能) 33 Key-Value Redis Scalaris MemcacheDB Berkeley DB Dynamo Voldemort Tokyo Cabinet KAI NoSQL分类(按功能) 34 Document-oriented MongoDB Terrastore CouchDB SimpleDB Riak NoSQL分类(按功能) 35 按CAP的组合分类 满足C和A的系统,通常在可扩展性上不太强大: Traditional RDBMSs like Postgres, MySQL, etc (relational) Vertica (column-oriented) Aster Data (relational) Greenplum (relational) 36 按CAP的组合分类 满足C和P的系统,通常性能不是特别高: BigTable (column-oriented/tabular) Hypertable (column-oriented/tabular) HBase (column-oriented/tabular) MongoDB (document-oriented) Terrastore (document-oriented) Redis (key-value) Scalaris (key-value) MemcacheDB (key-value) Berkeley DB (key-value) 37 按CAP的组合分类 满足A和P的系统,通常可能对一致性要求低一些: Dynamo (key-value) Voldemort (key-value) Tokyo Cabinet (key-value) KAI (key-value) Cassandra (column-oriented/tabular) CouchDB (document-oriented) SimpleDB (document-oriented) Riak (document-oriented) 38 Row Store and Column Store In row store data are stored in the disk tuple by tuple. Where in column store data are stored in the disk column by column 39 Row Store and Column Store So column stores are suitable for read-mostly, read- intensive, large data repositories Row Store Column Store (+) Easy to add/modify a record(+) Only need to read in relevant data (-) Might read in unnecessary data (-) Tuple writes require multiple accesses 40 列式数据库是革命性的 传统传统 行式数据库库 c 5 c 4 c 3 c 2 c 1 c 9 c 8 c 7 c 6 r1 r2 r3 r4 r5 列式数据库库 c 5 c 4 c 3 c 2 c 1 c 9 c 8 c 7 c 6 r1 r2 r3 r4 r5 § 数据按列存储 每一列单独存放 § 数据即是索引 § 只访问查询涉及的列 大量降低系统IO § 每一列由一个线索来处理 查询的并发处理 § 数据类型一致,数据特征相似 方便压缩 § 数据是按行存储的 § 没有索引的查询使用大量I/O § 建立索引和物化视图需要花费大量时间和资源 § 面对查询的需求,数据库必须被大量膨胀才能满 足性能要求 41 Key/Value数据模型 域(Domain)+数据项(Item) 域类似于“表”,但无结构;作用 是容纳所有的数据项 在同一个域中存储的数据项可以 存在很大的差异 4242 Key/Value PK Relational Database 43 SQL PK API 关系数据库的数据创建、更新、删除和获取都使用SQL完成 ,SQL查询可以从单个表或是通过多个表的Join操作来获取 数据,SQL查询包括聚集、复杂的数据过滤等功能,传统关 系数据库还包括将一些数据处理逻辑嵌入到数据存储中的实 现。例如存储过程、触发器等。 Key/Value数据的创建、更新、删除和获取都是用API方法调 用。 4444 Key/Value应用 Amazon Dynamo,Yahoo!PNUTS等均是使用 Key/Value数据结构 同时也有一些Key/Value的变体,如Google Bigtable,Facebook Cassandra,HyperTable等 4545 Key/value的优缺点 优点 便于扩展,适用于云计算环境 与应用程序代码的兼容性更好 缺点 数据完整性约束移至应用程序 目前的很多Key/Value数据存储系统之间不兼容 46 Document oriented database A document-oriented database is a computer program designed for storing, retrieving, and managing document-oriented, or semi structured data, information. Document-oriented databases are one of the main categories of so-called NoSQL databases and the popularity of the term “document-oriented database“ (or “document store“) has grown with the use of the term NoSQL itself. Documents encodings include XML, YAML, JSON and BSON, as well as binary forms like PDF and Microsoft Office documents (MS Word, Excel, and so on). 47 Document oriented database Documents are addressed in the database via a unique key that represents that document. this key is a simple string. In some cases, this string is a URI or path Retrieval Support simple key-document (or key-value) lookup offer an API or query language that will allow you to retrieve documents based on their contents 48 An JSON Sample Doc _id : ObjectId(“4c4ba5c0672c685e5e8aabf3“), author : “roger“, date : “Sat Jul 24 2010 19:47:11 GMT- 0700 (PDT)“, text : ”MongoSF“, tags : ”San Francisco“, ”MongoDB“ 49 50 提纲 1. 关系数据库的瓶颈 2. 云计算对数据库技术的要求 3. NoSQL数据库 4. BigTable 5. HBase *Cloud Computing, GUCAS50 BigTable设计动机 从商业上考虑,Google不会把自己最宝贵的数据 资源放在别家的数据库上,尤其是Oracle。 对商业数据库来说数据规模太大,即使能实现, 花费也将会很高。 存储的数据种类多种多样,海量的服务请求,市 面上的商用数据库无法满足Google存储和处理数 据的需求 为了与GFS和MapReduce相配套,Google从2004 年初开始研发“大表”BigTable,以实现结构化数据的 分布式存储 5151 BigTable设计目标 面对以上几个方面的需求和考虑,Google便开始着 眼于一种能够处理大规模数据的数据库系统,这就 是BigTable。 Google设计实现的BigTable需要完成一下几个基本 要求: 广泛的适用性: 满足Google不同产品 高可扩展性:根据需要随时扩容 高可用性:要保证几乎所有情况下系统都不能宕机 5252 BigTable的提出 Google发表论文BigTable:A Distributed Storage System for Structured Data BigTable是一种为了管理结构化数据而设计的分 布式存储系统,这些数据可以扩展到非常大的规模 ,例如在数千台商用服务器上的达到PB(Petabytes) 规模的数据。 53 BigTable数据模型 BigTable本质上是一个稀疏的、分布式的、持久化 存储的多维度排序Map(由key, value组成)。 每个BigTable Cell(单元格)的组成: 行(Row) 列(Column) 时间戳(Time Stamp) 通过它们进行三维定位,Cell的内容本身是一个字符串。 5454 分布式多分布式多维维维维稀疏稀疏图图图图. . ( (行行, , 列列, , 时间戳时间戳) ) CellCell内容内容 BigTable管理的数据的存储结构为:-string. BigTable的基本元素是:行(row),列(column),子表(tablet)和时间戳( timestamp)。 对对GoogleGoogle大多数大多数应应用良好匹配用良好匹配. . 55 其中: lTablet是一段行的集合体 :BigTable中的数据项按照行关键字的字 典序排列,每行动态地划分到tablet中,每个节点管理大约100个 tablet。 l时间戳是一个64位的整数,表示数据的不同版本。 l列族是若干列的集合,BigTable中的存取权限控制在列族的粒度进 行。 BigTableBigTable逻辑结构:逻辑结构: 56 BigTable记录表 import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.ByteArrayInputStream; import java.io.DataInputStream; import java.util.Map; import org.apache.hadoop.io.Writable; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HTableDescriptor; import org.apache.hadoop.hbase.HColumnDescriptor; import org.apache.hadoop.hbase.client.HBaseAdmin; import org.apache.hadoop.hbase.client.HTable; import org.apache.hadoop.hbase.io.BatchUpdate; import org.apache.hadoop.hbase.io.RowResult; import org.apache.hadoop.hbase.io.Cell; import org.apache.hadoop.hbase.util.Writables; 103 一个例子-Java public class HBaseBasic public static void main(String args) throws Exception HBaseConfiguration config = new HBaseConfiguration(); HBaseAdmin admin = new HBaseAdmin(config); if (admin.tableExists(“scores“) System.out.println(“drop table“); admin.disableTable(“scores“); admin.deleteTable(“scores“); System.out.println(“create table“); HTableDescriptor tableDescripter = new HTableDescriptor(“scores“.getBytes(); tableDescripter.addFamily(new HColumnDescriptor(“grade:“); tableDescripter.addFamily(new HColumnDescriptor(“course:“); admin.createTable(tableDescripter); 104 一个例子-JavaAPI HTable table = new HTable(config, “scores“); System.out.println(“add Tom's data“); BatchUpdate tomUpdate = new BatchUpdate(“Tom“); tomUpdate.put(“grade:“, Writables.getBytes(new IntWritable(1); tomUpdate.put(“course:math“, Writables.getBytes(new IntWritable(87); tomUpdate.put(“course:art“, Writables.getBytes(new IntWritable(97); table.commit(tomUpdate); System.out.println(“add Jerry's data“); BatchUpdate jerryUpdate = new BatchUpdate(“Jerry“); jerryUpdate.put(“grade:“, Writables.getBytes(new IntWritable(2); jerryUpdate.put(“course:math“, Writables.getBytes(new IntWritable(100); jerryUpdate.put(“course:art“, Writables.getBytes(new IntWritable(80); table.commit(jerryUpdate); for (RowResult row : table.getScanner(new String “course:“ ) System.out.format(“ROWt%sn“, new String(row.getRow(); for (Map.Entry entry : row.entrySet() String column = new String(entry.getKey(); Cell cell = entry.getValue(); IntWritable value = new IntWritable(); Writables.copyWritable(cell.getValue(), value); System.out.format(“ COLUMNt%st%dn“, column, value.get(); 输出如下: drop table 09/07/11 08:51:59 INFO client.HBaseAdmin: Disabled scores 09/07/11 08:51:59 INFO client.HBaseAdmin: Deleted scores create table add Tom's data add Jerry's data ROW Tom COLUMN course:art 97 COLUMN course:math 87 ROW Jerry COLUMN course:art 80 COLUMN course:math 100 105 *Cloud Computing, GUCAS106 总结 1. 关系数据库的瓶颈 2. 云计算对数据库技术的要求 3. NoSQL数据库 4. BigTable 5. HBase 106 实验作业 Hadoop和HBase的安装和配置 下载 安装 使用 撰写实验报告 检查 107

    注意事项

    本文(第五章非关系型数据库.ppt)为本站会员(本田雅阁)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开