《大数据管理系统原理与技术》介绍了多种数据库管理系统的基本概念以及代表性数据库管理系统的使用和优化方法,覆盖了传统的关系数据库、数据仓库,以及列族、键值、文档、图等NoSQL数据库系统。
通过阅读《大数据管理系统原理与技术》,读者可以较全面地了解支撑大数据应用所需的数据库管理系统的概念、特征和相关技术,并且可以学习代表性关系数据库系统的使用方法,将理论和实际相结合。
《大数据管理系统原理与技术》可作为大数据相关专业本科生和研究生教材,也可供从事大数据相关工作的工程技术人员参考使用。
要进行有效的大数据处理和计算,选择适当的数据库管理系统并对其进行配置、编程和调优是非常关键的环节。在大数据场景下,单一的数据库管理系统无法满足所有类型数据管理的需要,因此大数据相关专业的学生和从业者需要了解不同类型的数据库管理系统,以解决不同场景下的实际问题。
《大数据管理系统原理与技术》基于作者多年的教学和工程经验编写而成,旨在帮助读者掌握面向大数据的数据库管理系统的原理和应用方法。
大数据计算的重要支撑是有效管理数据,研发以数据为核心的应用系统的重要任务之一就是选择数据库管理系统,对其进行配置、编程和调优。由于大数据的多样性,单一的数据库管理系统难以满足所有类型数据管理的需要,因而除传统的成熟关系数据库产品之外,还出现了面向不同数据和应用特点的数据库管理系统,这使得数据库管理系统的选择和使用更加具有挑战性。因而,掌握多种数据库管理系统对于大数据领域从业者来说非常重要。针对这一需求,本书试图介绍面向大数据的数据库管理系统知识。
本书系统介绍了面向大数据的数据库管理系统的基本原理和应用,以及关系数据库、数据仓库、多种NoSQL数据库管理系统等。考虑到读者的多样性,本书针对不同种类的数据库介绍了基本原理、使用方法和案例。
本书兼顾深度和广度,选取典型数据库系统进行了介绍。对于关系数据库,介绍了其相关的基本概念以及典型关系数据库系统MySQL。对于数据仓库,介绍了其基本概念和基于Hadoop的数据仓库系统Hive。本书还重点介绍了NoSQL数据库系统,并选取比较典型的键值数据库、列族数据库、文档数据库和图数据库分别介绍了其原理与应用。
本书适用于本科生和研究生的数据库管理系统,大数据管理等相关课程,也可以作为大数据系统开发、分布式系统、数据库系统等课程的补充教材或课外读物。本书也可作为大数据技术方面的职业培训教材,同时,还可供大数据领域的从业人员参考使用。
针对不同层次的教学要求,教师可以从本书中选择不同的内容。如果教学偏重讲授原理,可以着重讲授本书的概念和原理部分,而将后面的具体系统作为实例。如果教学偏重讲授技术和应用,可以着重讲授本书中系统的使用和开发,而对各类数据库管理系统只介绍基本概念,原理部分的深度视学时数而定。需要注意的是,数据库系统原理及使用是相辅相成的:只有深入了解了原理,才能对数据库管理系统进行高效应用,对于大数据管理系统来说尤其如此;反之,只有真正应用了数据库管理系统,才能对相关的原理有深入的认知。
本书可以独立学习,但是建议读者有一些离散数学、计算机系统和数据库管理系统的先修知识。尽管本书对数据库知识进行了简单介绍,但是其深度和广度难以与专门的数据库管理系统教材相比,建议读者在学习第2章和第3章时与数据库管理系统教材相互参考。具有一些分布式系统的知识对本书第4~8章的学习会有所帮助,建议读者在学习这几章时与分布式系统教材相互参考。
随着数据量和数据形态的不断变化,面向大数据的数据管理系统一直处于不断变化之中,尽管本书尽可能兼顾深度和广度,但是,限于笔者的水平,在内容安排、表述等方面的不当之处在所难免,敬请读者在阅读过程中不吝提出宝贵建议,以期改进本书。读者的任何意见和建议请发至邮箱,与本书相关的信息也会在微信公众号“大数据与数据科学家”发布。
感谢哈尔滨工业大学的李建中教授、高宏教授以及海量数据计算研究中心诸位同事的指导,以及在专业上对我的帮助。
在本书撰写过程中,哈尔滨工业大学的张梦、陈翔等同学在资料翻译、搜集和整理以及文本校对、作图等多个方面提供了帮助和支持,在此表示感谢。
感谢Ne04j中国总代理松鼠山科技有限公司对图数据库部分的技术支持,其专业的知识使得这一部分的质量得到了提升。
感谢北京华育兴业科技有限公司的企业专家对本书编写提出了很多建议,并通过“教育部一华育兴业产学合作协同育人”项目在课程和教学资源建设方面提供了大力支持。
非常感谢我的爱人黎玲利副教授一直以来对我的支持,以及在大数据管理领域和我的探讨。在本书写作期间,感谢我的母亲和岳母帮忙料理家务,照顾我的宝宝“壮壮”,使我有时间从事本书的写作。
最后,关于大数据管理方面的研究和本书的写作还得到了国家自然科学基金项目(编号:U1509216,U1866602)和微软亚洲研究院的资助,在此一并表示感谢。
王宏志,哈尔滨工业大学计算机科学与技术学院教授、博士生导师,英才学院副院长。研究方向为大数据、数据科学、数据管理与分析。在VLDB、SIGMOD等国内外重要会议和期刊上发表学术论文200余篇,出版学术专著两本,其论文被SCI收录50余次,他引千余次。获黑龙江省自然科学一等奖和教育部高等学校科技进步一等奖各一项,获黑龙江省青年科技奖、宝钢优秀教师奖等。先后主持10余个国家自然科学基金重点项目、国家支撑计划课题、国家博士后特别资助项目等。主讲的MOOC课程“大数据算法”入选第一批全国精品在线开放课程。主要社会兼职有ACMSIGMOD中国秘书长、ACM数据科学学科标准编写组专家、中国计算机学会数据库专业委员会常务委员、黑龙江省数据科学与大数据技术专业委员会副主任委员、中国计算机学会大数据专家委员会委员等。
何震瀛,博士,复旦大学计算机科学学院副教授,中国计算机学会数据库专业委员会委员、大数据专业委员会通信委员。主要研究兴趣是数据管理和数据分析等。主持和参加20余项预研、核高基、863、国家自然科学基金项目。多年来,在数据管理、数据分析等方面进行了大量研究工作,发表论文70余篇。在海量数据管理和分析方面,作为独立开发者完成并行海量信息查询和分析系统的开发,实现了海量信息的秒级分析;该软件连同硬件平台一起,获得国家科技进步二等奖。参与研发的数据库系统已应用在国家海洋局某重大专项中(作为数据的保险箱)。
王鹏,毕业于哈尔滨工业大学软件工程专业,研究生学历。曾就职于中国普天信息技术研究院,并担任架构师、技术总监等职使。曾代表企业主导网络存储国家行业标准制定,拥有相关专利3项。2013年开始从事大数据领域的技术研发工作。现就职于北京华育兴业科技有限公司,任首席技术官,主要从事金融、电信、电力及教育等行业海量数据分析挖掘工作。主要社会兼职包括中国大数据与智能计算产业联盟副秘书长、甲骨文大数据专家、黑龙江省人工智能学会理事、四川省计算机协会理事等,致力于帮助全国高校进行大数据及人工智能专业的建设与咨询工作。
李春静,工学硕士,现任北京华育兴业科技有限公司大数据讲师,并承担高校大数据技术与应用资源建设工作。主要从事Hadoop、HBase、Hive、Spark、大数据库、机器学习等课程研发工作。研究兴趣为大数据应用、机器学习和智能自动化。曾以首作者在国内核心期刊上发表论文2篇,参与大型煤矿信息化项目1个、国家医疗大数据项目2个。参与编写大数据教材1本。
本书编委会
前言
第1章 绪论
1.1 大数据的基本概念
1.2 数据库管理系统
1.2.1 数据库管理系统的基本概念
1.2.2 数据库管理系统的发展历史
1.2.3 数据库管理系统的要素
1.3 大数据对数据库管理系统的需求和挑战
1.4 本书结构
第2章 关系型数据库管理系统
2.1 关系数据库概述
2.1.1 关系模型
2.1.2 关系数据的存储
2.1.3 关系数据库的索引
2.1.4 关系数据库中的查询处理算法
2.1.5 并发控制
2.1.6 数据库恢复
2.2 关系数据库MySQL概述
2.3 MySQL应用
2.3.1 SQL概述
2.3.2 数据定义语句
2.3.3 数据处理语句
2.3.4 事务和锁定声明
2.3.5 其他
2.4 存储过程
2.4.1 概述
2.4.2 建立存储过程
2.4.3 调用存储过程
2.4.4 查询存储过程
2.4.5 删除存储过程
2.5 视图
2.6 分区
2.7 复制
2.8 MySQL的Java客户端JDBC
2.8.1 JDBC概述
2.8.2 JDBCAPI
2.8.3 Java通过JDBCAPI操作MySQL
第3章 数据仓库Hive
3.1 数据仓库概述
3.1.1 数据仓库的概念和特征
3.1.2 数据仓库的体系结构
3.1.3 数据仓库的模型
3.1.4 数据仓库关键技术
3.1.5 数据仓库与大数据
3.2 Hive概述
3.2.1 Hive存储结构
3.2.2 Hive体系结构
3.2.3 Hive的任务执行流程
3.3 Hive的特征
3.3.1 一致性
3.3.2 可扩展性
3.3.3 事务
3.4 Hive的基本概念
3.4.1 基本数据类型
3.4.2 数据类型转换
3.4.3 复杂数据类型
3.4.4 文本文件数据编码
3.4.5 数据读取模式
3.4.6 文件格式与压缩
3.4.7 Hive压缩
3.4.8 Hive关键字
3.5 Hive的使用
3.5.1 Hive命令
3.5.2 HiveDDL
3.5.3 HiveDML
3.5.4 HiveQL基本查询
3.5.5 Hive函数
3.5.6 HiveQL高级查询
3.6 面向大数据的优化策略
3.6.1 分桶
3.6.2 视图和索引
3.6.3 模式设计
3.7 Hive的调优
3.7.1 使用EXPLAIN查看执行计划
3.7.2 Hive配置管理
3.7.3 限制调整
3.7.4 JOIN优化
3.7.5 本地模式
3.7.6 并行执行
3.7.7 严格模式
3.7.8 调整Mapper和Reducer个数
3.7.9 JVM重用
3.7.10 动态分区调整
3.7.11 推测执行
3.7.12 单个MapReduce中的多个GROUPBY
3.7.13 虚拟列
3.8 Java通过JDBC操作Hive
……
第4章 NoSQL概述
第5章 键值数据库
第6章 列族数据库
第7章 非关系型文档数据库
第8章 非关系型图数据库