本书结合分布式数据库系统的最新原理与技术,深入讲解OceanBase数据库系统的使用特性和开发实践方式。本书设计了一系列分布式数据库实验, 帮助读者实践如何通过OceanBase数据库使用分布式数据库,同时也提供部分习题测试读者是否掌握了分布式数据库的知识点。本书在内容上首先介绍了分布式数据库系统概论、OceanBase安装部署、数据库开发基础,使读者对分布式数据库系统、OceanBase数据库架构和数据库设计有一定的了解。然后,本书结合分布式数据库特性详细介绍了OceanBase数据库对象管理、开发、SQL查询处理与调优、用户管理、分布式事务管理与数据一致性、运维与高可用等多个方面的内容。最后,本书还为读者提供了OceanBase开源社区建设及对数据库进行性能测试的内容。
本书作为一本提供分布式数据库工程实践与教学参考的专业性技术书籍,可以作为计算机专业本科生和研究生学习分布式数据库原理及应用实践的教材,同时也可以作为OceanBase数据库初学者应用实践的技术指导书。
本书遵循教育部教指委相关指导文件和高等院校学生学习规律编写而成。践行四新理念,融入思政元素,注重理论与实践相结合。
前言
分布式数据库已经成为国内及全球范围各行业领域应用中对数据进行存储、管理与分析的基础软件。相比于传统的集中式数据库管理系统,分布式数据库系统通过整体架构和技术创新,在现有硬件及网络环境具备了高可用、高性能和低成本等核心特性,这些特性为企业应用中数据管理的高效访问、无损容灾、数据安全等需求提供了保障。分布式数据库系统正在不断完善发展,适应更加广泛领域对大规模数据管理的应用需求。
分布式数据库的概念早在20世纪70年代就被提出,相关的关键技术也伴随着数据库的大规模应用和硬件及网络环境的发展而高速发展。在当时有一系列原型系统被研发与应用,如IBM圣何塞实验室研制的System R*系统、美国CCA公司设计并研制的SDD-1系统以及美国UC Berkeley大学研制的分布式INGRES系统等。这些分布式数据库系统中的许多重要概念、方法和技术已被融入后续开发的商业化数据库系统,但由于设计之初的应用需求和网络硬件环境的限制,它们已然难以满足当前大数据时代对海量结构化数据的管理与分析需求。为此,在各领域应用需求以及学术界与工业界技术创新的共同驱动下,新型分布式数据库系统不断完善发展。这类系统基于通用服务器硬件、本地存储和对等分布式架构,通过保证高性能、高可用与高可靠特性,已成为更广泛场景下数据管理的主要解决方案。近年来,为了摆脱对于国外数据库产品的依赖,我国科技企业开始了数据库系统的研发并已取得了显著的成果。其中,采用无共享分布式集群架构的OceanBase数据库是国产原生分布式数据库系统的典型代表,其系统开发源于互联网应用对于海量结构化数据管理的高吞吐、高响应的应用需求。OceanBase数据库历经十余年的不断研发演化,在技术、成熟度、应用广度与深度、用户群体等方面均积累了大量的经验。OceanBase数据库在普通硬件上实现了金融级高可用,首创三地五中心城市级故障自动无损容灾新标准,刷新TPC-C标准测试,单集群规模超过1500个节点,具有云原生、强一致性、高度兼容Oracle/MySQL等特性,这些特性使其成为国内外技术领先的分布式数据库产品。
分布式数据库系统在计算机专业人才培养中始终被作为核心课程开展建设,长期以来面临着以理论教学为主,缺少基于实际分布式数据库系统的工程实践。OceanBase数据库已在产业中进行了较为广泛的应用,在其社区版开源后被高校逐步应用于分布式数据库相关课程教学,有效地弥补了课程中实验实践环境的不足。
本书主要从OceanBase数据库的应用开发层面展开介绍,通过结合分布式数据库系统发展的最新理论与技术,深入讲解OceanBase的使用特性和开发方式。本书定位为分布式数据库工程实践教材,主要面向高校分布式数据库的教学团队、OceanBase数据库的初学者、数据库技术爱好者,帮助高校学生学习和理解分布式数据库的理论与技术,加深工程技术人员对OceanBase分布式数据库的理解和使用。
本书共分10章,内容涵盖分布式数据库概论、OceanBase安装部署、数据库开发基础、OceanBase数据库对象管理、OceanBase数据库开发、SQL查询处理与调优、数据库用户管理、分布式事务管理与数据一致性、数据库运维与高可用,以及OceanBase开源社区与性能测试,同时在每章中结合分布式数据库特性设计了相关实验内容和习题内容,帮助读者实践并检验知识的掌握情况。通过以上内容读者可以了解分布式数据库的原理与技术,掌握OceanBase数据库的管理、开发、调优、运维和性能测试,并参与OceanBase数据库的开源贡献。关于OceanBase数据库更多及最新的产品信息和技术内容,读者可以访问OceanBase数据库社区网站获取。
本书由东北大学聂铁铮、于戈与北京奥星贝斯有限公司杨传辉和杨志丰合作编写。
感谢东北大学于明鹤、寇月对OceanBase数据库开发、分布式事务管理和数据库用户管理内容提出的宝贵意见。
本书在撰写过程中还得到了多家单位的大力支持,感谢北京奥星贝斯有限公司提供的资源和技术支持,感谢蚂蚁集团股份公司张婷婷对OceanBase数据库技术内容提出的宝贵意见。本书受东北大学研究生教育质量保障工程项目资助。
由于编者水平有限,且在编写过程中OceanBase数据库经历了多个版本的演化与改进,书中难免有不足之处,恳请读者批评指正!
作者
聂铁铮,2009年获得东北大学计算机软件与理论博士学位。
2013-2014年在美国宾夕法尼亚州立大学作为访问学者交流研究。
主要研究方向为大数据管理、数据集成与融合、区块链。主持(完成)多项国家自然科学基金面上项目、国家重点研发计划子课题等多项课题。在著名国际期刊和会议以及国内一级学报上发表论文20余篇,EI和SCI收录20余次。参编著作丛书3部,译著2部,申请发明专利10项。曾获教育部科技进步一等奖等省部级科学技术奖2项。
目录
前言
第1章分布式数据库概论
1.1分布式数据库系统基本概念
1.1.1关系数据库
1.1.2分布式数据库系统
1.2分布式数据库系统关键技术
1.2.1分布式数据库系统体系结构
1.2.2分布式数据存储
1.2.3分布式查询处理与优化
1.2.4分布式事务管理
1.2.5数据多副本管理
1.3OceanBase数据库简介
1.3.1OceanBase发展历程
1.3.2OceanBase系统概念
1.3.3OceanBase系统架构
1.3.4OceanBase的特性与应用场景
1.4本章小结
1.5习题
第2章OceanBase安装部署
2.1OceanBase版本介绍
2.1.1OceanBase社区版
2.1.2OceanBase企业版
2.2OceanBase社区版部署
2.2.1部署准备
2.2.2部署环境配置
2.2.3命令行部署OceanBase数据库
2.2.4通过OBD可视化部署OceanBase集群
2.2.5通过OCP可视化部署OceanBase数据库
2.2.6Kubernetes环境部署OceanBase数据库
2.2.7Docker环境部署OceanBase数据库
2.3连接访问OceanBase数据库
2.3.1客户端连接
2.3.2OceanBase 连接驱动
2.3.3ODC连接
2.4数据库部署实验
2.4.1OceanBase数据库单节点部署实验
2.4.2OceanBase集群部署实验
2.5本章小结
2.6习题
第3章数据库开发基础
3.1SQL概述
3.1.1SQL语言概览
3.1.2数据定义语言
3.1.3数据操作语言
3.1.4数据查询语言
3.1.5事务控制语句
3.1.6SQL语句查询处理流程
3.2数据库模式设计基础
3.2.1E-R模型
3.2.2E-R图转换关系模式
3.3数据库模式定义实验
3.4本章小结
3.5习题
第4章OceanBase数据库对象管理
4.1管理数据库
4.1.1创建数据库
4.1.2查看数据库
4.1.3修改数据库
4.1.4删除数据库
4.2管理数据表
4.2.1SQL的数据类型
4.2.2创建数据表
4.2.3修改数据表
4.2.4删除数据表
4.3数据分区管理
4.3.1分区的相关概念
4.3.2数据分区类型
4.3.3创建分区表
4.3.4维护分区表
4.4管理表组
4.4.1表组概述
4.4.2创建表组
4.4.3表组中增加表
4.4.4查看表组信息
4.4.5修改表组SHARDING属性
4.4.6管理表组内表
4.4.7删除表组
4.5管理普通视图
4.5.1创建普通视图
4.5.2普通视图的数据操作
4.5.3删除视图
4.6管理物化视图
4.6.1创建物化视图
4.6.2物化视图日志
4.6.3物化视图刷新
4.7管理索引
4.7.1索引概述
4.7.2创建索引
4.7.3删除索引
4.7.4创建分区索引
4.8数据库对象管理实验
4.8.1数据表及分区管理
4.8.2视图与索引
4.9本章小结
4.10习题
第5章OceanBase数据库开发
5.1数据查询
5.1.1查询中使用的运算符
5.1.2基本查询
5.1.3连接查询
5.1.4分组聚合查询
5.1.5子查询
5.1.6集合运算
5.2常用函数
5.2.1数学函数
5.2.2字符串函数
5.2.3日期和时间函数
5.2.4条件判断函数
5.2.5聚合函数
5.2.6系统信息函数
5.3数据更新
5.3.1插入数据
5.3.2修改数据
5.3.3删除数据
5.3.4替换数据
5.4数据库开发实验
5.4.1数据更新实验
5.4.2数据查询实验
5.5本章小结
5.6习题
第6章SQL查询处理与调优
6.1数据库查询处理概述
6.1.1查询处理流程
6.1.2SQL查询语句结构与执行流程
6.2SQL执行计划
6.2.1SQL执行计划简介
6.2.2执行计划算子
6.2.3SQL执行计划缓存
6.2.4实时执行计划展示
6.3分布式执行计划
6.3.1分布式查询处理概述
6.3.2分布式执行计划生成
6.3.3分布式执行计划管理
6.3.4并行查询执行
6.3.5并行查询参数调优
6.4SQL调优
6.4.1SQL调优概述
6.4.2SQL执行性能监控
6.4.3SQL调优基本流程
6.5管理查询执行计划
6.5.1Hint机制
6.5.2执行计划绑定
6.5.3查询执行计划管理
6.6数据库SQL调优实验
6.6.1SQL执行计划
6.6.2SQL语句调优
6.6.3使用Hint机制管理执行计划
6.7本章小结
6.8习题
第7章数据库用户管理
7.1OceanBase租户与用户概述
7.1.1租户相关概念
7.1.2用户相关概念
7.2管理租户
7.2.1创建租户
7.2.2修改租户属性
7.2.3删除租户
7.3管理用户和权限
7.3.1创建用户
7.3.2查看用户权限
7.3.3修改用户权限
7.3.4锁定和解锁用户
7.3.5删除用户
7.4监管租户
7.4.1租户信息查看
7.4.2租户资源配置查看与修改
7.4.3租户性能监控
7.4.4租户会话查看
7.5数据库用户管理实验
7.5.1租户与用户创建实验
7.5.2用户权限管理实验
7.6本章小结
7.7习题
第8章分布式事务管理与数据一致性
8.1事务基础
8.1.1事务基本概念
8.1.2分布式事务
8.1.3两阶段提交协议
8.1.4事务日志
8.1.5隔离级别
8.2OceanBase事务管理
8.2.1OceanBase的事务类型
8.2.2OceanBase的两阶段提交协议
8.2.3OceanBase的Redo日志
8.3OceanBase事务并发
8.3.1多版本并发控制
8.3.2锁机制
8.3.3OceanBase隔离级别
8.4OceanBase事务控制
8.4.1事务控制语句
8.4.2一致性读级别设置
8.5分布式事务控制实验
8.5.1事务控制实验
8.5.2事务隔离性实验
8.6本章小结
8.7习题
第9章数据库运维与高可用
9.1监控与诊断
9.1.1监控
9.1.2诊断
9.2扩容和缩容
9.2.1集群级别的扩容和缩容
9.2.2租户级别的扩容和缩容
9.3日志管理
9.3.1数据库日志概述
9.3.2日志打印级别管理
9.3.3日志文件管理
9.4备份与恢复
9.4.1备份与恢复概述
9.4.2日志归档
9.4.3数据备份
9.4.4恢复数据
9.4.5清理备份
9.5数据迁移
9.6数据库服务高可用
9.6.1OceanBase数据库代理
9.6.2代理层高可用
9.6.3数据库层高可用
9.7OceanBase运维实验
9.7.1数据库集群扩容与缩容
9.7.2替换节点
9.8本章小结
9.9习题
第10章OceanBase开源社区与性能测试
10.1OceanBase开源社区介绍
10.2OceanBase社区贡献
10.2.1社区源码贡献流程
10.2.2代码编译、开发与测试
10.3数据库性能测试实验
10.3.1TPC-H测试
10.3.2TPC-C测试
10.4本章小结
10.5习题