
《大数据导论》张尧学、胡春明第3章数据管理.pptx
47页大数据管理,王建民 清华大学软件学院 大数据系统软件国家工程实验室 2018.7 北京,新一代信息技术教材导教班,,数据管理概述,,,,新型数据管理与查询系统,关系数据库,分布式文件系统,数据管理概述,PART 1,本章重点介绍数据存储与管理技术的概念与发展过程,选择经典的关系数据库技术以及大数据时代的分布式文件系统技术、NoSQL与Sql on Hadoop技术新型大数据存储与查询技术进行介绍数据管理技术 数据管理技术是指对数据进行分类、编码、存储、索引和查询,是大数据处理流程中的关键技术,负责数据从落地存储(写)到查询检索(读)的核心系统数据管理技术从最早人们使用文件管理数据,到数据库、数据仓库技术的出现与成熟,再到大数据时代NoSQL等新型数据管理系统的涌现,一直是数据领域研究和工程领域的热点 数据库 数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库简单来说是本身可视为电子化的文件柜,用户可以对文件中的数据进行新增、截取、更新、删除等操作严格来说,数据库是长期储存在计算机内、有组织的、可共享的数据集合数据管理的内涵,关系数据库 上世纪70年代,IBM公司的E.F.Codd开创了关系数据库理论,80年代随着事务处理模型的完善,关系数据管理在学术届和工业界取得主导地位,并一直保持到今天。
关系数据库的核心是将数据保存在由行和列组成的简单表中,而不是将数据保存在一个层次结构中Codd开创了关系数据库和数据规范化理论研究,获得了1981年的图灵奖,关系数据库也很快成为数据库市场的主流 新型数据管理与查询系统 2010年前后,美国谷歌公司为满足搜索业务的需求,推出了以分布式文件系统GFS(Google File System)、分布式计算框架MapReduce、列族数据库BigTable为代表的新型数据管理与分布式计算技术Doug Cutting领衔的技术社区研发了对应的开源版本,在Apache开源社区推出,形成了Hadoop大数据技术生态,不断迭代发展出一系列大数据时代的新型数据管理技术,例如面向内存计算的Spark大数据处理软件栈,MangoDB、Cassandra等各类型NoSQL数据库,Impala、SparkSQL等分布式数据查询技术(Sql on Hadoop)数据管理历史,关系数据库,PART 2,关系数据库建立在关系数据模型之上,是主要用来存储结构化数据并支持数据的插入、查询、更新、删除等操作的数据库01,关系模型,关系数据模型是以集合论中的关系概念为基础发展起来的。
关系数据模型中无论是实体还是实体间的联系均由单一的数据结构——关系来表示关系数据模型中对的数据操作通常由关系代数和关系演算两种抽象操作语言来完成,此外关系数据模型中还通过实体完整性、参照完整性和自定义完整性来确保数据的完整一致,关系数据模型的基本数据结构就是关系(Relation),一个关系对应着一个二维表,二维表的名字就是关系名表3-1 学生表,,关系名,从横向看,二维表中的一行被称为是关系中的一个元组(Tuple),关系本质上就是由同类元组构成的集合 从纵向看,二维表由很多列构成,列被称为关系的属性(Attribute),同一个集合中的元组都由同样的一组属性值组成 属性的取值范围被称为域(Domain),它也可以被理解为属性中值的数据类型表3-1 学生表,,一个元组,01,关系模型:数据结构,,一个属性,,属性域:男,女,如果在一个关系中存在唯一标识一个元组的属性集合(可以是单一属性构成的集合),则称该属性集合为这个关系的键或码 用来唯一标识一个元组的最小属性集合,称为主键(主码)学生表,,键,01,关系模型:数据结构,,主键,从横向看,二维表中的一行被称为是关系中的一个元组(Tuple),关系本质上就是由同类元组构成的集合。
从纵向看,二维表由很多列构成,列被称为关系的属性(Attribute),同一个集合中的元组都由同样的一组属性值组成 属性的取值范围被称为域(Domain),它也可以被理解为属性中值的数据类型表3-1 学生表,,一个元组,01,关系模型:数据结构,,一个属性,,属性域:男,女,插入:将一个新的元组(行)加入到现有的关系中 修改:对关系中已有的数据进行修改,特指对各种属性值进行修改 删除:如果关系中的一行或多行数据已经不再需要,可以用删除操作将它们从关系中彻底去掉01,关系模型:数据操作,关系数据模型的数据操作分为查询和更新两类 关系更新可细分:插入(Insert)、修改(Update)、删除(Delete); 关系查询包括:选择(Select)、投影(Project)、并(Union)、差(Except)以及连接(Join)等连接:把分散在不同关系中的数据关联在一起查看我们希望查看学生选课的情况,但选课表中只有学生的学号,没有学生的姓名及所在系等信息(在学生表中),此时就需要将学生表和选课表连接起来 选择:从关系中选取满足条件的元组,例如从学生表中选出所有的男学生 投影:从关系中抽取出若干属性形成一个新的关系,例如我们只抽取学生的姓名和所在系。
并和差:并操作就是将两个同类关系中的元组集合合并起来形成新的关系,差操作则是从两个同类关系的元组集合中找出不同的元组集合01,关系模型:数据操作,02,结构化查询语言,结构化查询语言(Structured Query Language)简称SQL,是一种数据库查询和程序设计语言,用于查询、更新和管理关系数据库系统 结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以即使是具有完全不同底层结构的不同数据库系统, 也可以使用相同的结构化查询语言作为数据输入与管理的接口结构化查询语言语句可以嵌套,这使它具有极大的灵活性和强大的功能SQL是IBM在其System R系统中首次提出的1979年ORACLE公司首先提供商用的SQL,其后IBM公司在DB2和SQL/DS数据库系统产品中也实现了SQL 1986年10月,美国ANSI采用SQL作为关系数据库管理系统的标准语言(ANSI X3. 135-1986),后为国际标准化组织(ISO)采纳为国际标准 1989年,美国ANSI采纳在ANSI X3.135-1989报告中定义的关系数据库管理系统的SQL标准语言,称为ANSI SQL 89,该标准替代ANSI X3.135-1986版本。
之后每隔一定时间ISO都会更新新版本的SQL标准,目前最新的版本已经演进到201602,结构化查询语言:SQL历史,按照不同的用途,SQL语言通常被分成三个子集(子语言): 数据定义语言(DDL:Data Definition Language),用于操纵数据库模式,例如数据库对象(表、视图、索引等)的创建和删除数据定义语言的语句包括动词CREATE和DROP,之后用数据库对象的类型名词区分要定义的数据库对象,例如TABLE、VIEW、INDEX 数据操作语言(DML:Data Manipulation Language),用于对数据库中的数据进行各类操作,包括读取和修改,其语句包括动词SELECT、INSERT、UPDATE和DELETE它们分别用于查找、增加、修改和删除表中的行 数据控制语言(DCL:Data Control Language),包括除DDL和DML之外的其他杂项语句,这些语句包括对访问权限和安全级别的控制、事务的控制、连接会话的控制等02,结构化查询语言:SQL构成,为防止不同用户同时操作同一数据时产生的不良影响,现代的数据库管理系统中都引入了事务(Transaction)的概念。
事务由一系列的数据库操作构成,它必须满足四个特性(被简称为ACID特性): (1)原子性(Atomicity):事务所包含的所有操作要么全部正确地反映在数据库中,要么全部不反映; (2)一致性(Consistency):事务的执行会使数据库从一种一致性的状态达到另一种一致性状态,即事务的执行不会让数据库出现不一致; (3)隔离性(Isolation):事务之间是隔离的,每个事务都感觉不到系统中有其他事务在并发地执行; (4)持久性(Durability):一个事务成功完成后,它对数据库的改变是永久的,即使系统出现故障也是如此03,数据库事务,04,关系数据库管理系统,关系数据库管理系统(Relational Database Management System:RDBMS)是管理、操作和维护关系型数据库的一种软件程序分布式文件系统,PART 3,分布式文件系统建立在通过网络联系在一起的多台价格相对低廉的服务器上,将要存储的文件按照特定的策略划分成多个片段分散放置在系统中的多台服务器上01,分布式文件系统分类,从用途来看,目前主流的分布式文件系统主要有两类: 第一类分布式文件系统主要面向以大文件、块数据顺序读写为特点的数据分析业务,其典型代表是Apache旗下的HDFS。
另一类主要服务于通用文件系统需求并支持标准的可移植操作系统接口(Portable Operating System Interface of UNIX,缩写为 POSIX ),其代表包括Ceph和GlusterFS 这种分类仅表示各种分布式文件系统的专注点有所不同,并非指一种分布式文件系统只能用于某种用途02,Hadoop分布式文件系统(HDFS):特点,HDFS作为Hadoop的分布式文件系统,其功能为数据的存储、管理和出错处理它是类似于GFS的开源版本,设计的目的是用于可靠地存储大规模的数据集,并提高用户访问数据的效率02,Hadoop分布式文件系统(HDFS):架构和操作,HDFS采用的是单一主服务器的主从结构,一个HDFS集群通常由一台主服务器和若干台数据服务器构成,有一台后备主服务器用于定期对主服务器存储的元数据进行备份,保障名称空间、元数据等系统信息的完整性这台后备主服务器只与主服务器进行交互,对系统中的其他节点不可见02,Hadoop分布式文件系统(HDFS):副本管理,为了提高系统中文件数据的可靠性,HDFS系统提供了一种副本机制:默认情况下,每一个文件块都会在HDFS系统中拥有三个副本,副本数可以在部署集群时手动设置。
通常这三个副本会被放置在不同的数据服务器上,这样就保证了即便其中某一个副本丢失或者损坏,都可以保证该文件块可以继续使用,甚至还可以利用其他两个副本来恢复丢失或者损坏的那个副本从应用场景来看,HDFS是专门为Hadoop这样的计算引擎而生,更适合离线批量处理大数据,例如电商网站对于用户购物习惯的分析由于HDFS本身设计的特点,它不适合于经常要对文件进行更新、删除的业务03,Ceph,Ceph是一个高可用、易于管理、开源的分布式存储系统,可以同时提供对象存储、块存储以及文件存储服务,其优势包括统一存储能力、可扩展性、可靠性、性能、自动化的维护等等 Ceph优势均来源于其先进的核心设计思想,可其概括为八个字——“无需查表,算算就好”基于这种设计思想,Ceph充分发挥存储设备自身的计算能力,同时消除了对系统单一中心节点的依赖,从而实现了真正的无中心结构 Ceph项目起源于其创始人Sage Weil在加州大学圣克鲁兹分校攻读博士期间的研究课题03,Ceph,客户端通过与OSD(Object Storage Device)的直接通讯实现文件操作在打开一个文件时,客户端会向MDS(Metadata storage )发送一个请求。
MDS把请求的文件名翻译成文件节点(inode),并获得节点号、访问模式、大小以及文件的其他元数据如果文件存在并且客户端可以获得操作权,则MDS向客户端返回上述文件信息并且赋予客户端操作权03,Ceph,相对于面向离线批处理的HDFS来说,。
