新書推薦:
《
镶嵌之美:古希腊罗马的马赛克艺术
》
售價:HK$
305.8
《
后希腊化哲学:从斯多亚学派到奥利金的发展研究
》
售價:HK$
76.8
《
别纠结啦:不被情绪牵着走的通透生活指南(“当代一休”小池龙之介治愈新作!附赠精美书签!)
》
售價:HK$
64.9
《
第二人生:找到重新定义人生的智慧
》
售價:HK$
96.8
《
唐朝三百年
》
售價:HK$
107.8
《
反操纵心理学:夺回人生主导权 拒绝被操纵
》
售價:HK$
54.8
《
同工异曲:跨文化阅读的启示(修订版)
》
售價:HK$
43.8
《
牛津立法研究手册
》
售價:HK$
358.6
|
內容簡介: |
OceanBase作为当今最先进的分布式关系型数据库之一,在开源之后受到了业界的广泛关注。为了帮助数据库内核研发人员、科研工作者、数据库技术爱好者理解OceanBase内核,本书从OceanBase开源版的源代码出发,介绍其实现机制和技术细节。
本书的主要内容包括:OceanBase概述、OceanBase的架构、OBServer、存储引擎、SQL引擎、事务引擎、高可用、多租户、安全管理等。本书尽可能沿着SQL语句的执行路径对上述主题进行详细介绍,以使读者对OceanBase的内部运作机理能有全面和深入的认识。
本书适合从事数据库领域相关研发的人员、高等院校相关专业研究生或高年级本科生阅读,也可以作为数据库特别是分布式数据库相关课程的补充读物。
|
目錄:
|
目录
前言
第1章OceanBase概述
1.1OceanBase简介及发展历程
1.2OceanBase的特性
1.3OceanBase的应用案例
1.4OceanBase的编译和部署
1.4.1环境依赖
1.4.2构建/打包 OceanBase 数据库
1.4.3部署OceanBase
1.5OceanBase的性能
1.6小结
第2章OceanBase的架构
2.1架构概述
2.2源码结构
2.2.1依赖库
2.2.2内核源码
2.2.3其他子目录
2.3安装目录结构
2.3.1执行文件目录
2.3.2配置文件目录
2.3.3运行日志目录
2.3.4运行状态目录
2.3.5数据文件目录
2.4ODP
2.5小结
第3章OBServer
3.1OBServer结构
3.2网络子系统
3.3多租户环境
3.4线程架构
3.5连接和会话管理
3.5.1ObMySQLHandler
3.5.2ObRpcHandler
3.5.3请求投送
3.5.4请求处理
3.5.5会话管理
3.6总控服务
3.7配置子系统
3.8小结
第4章存储引擎
4.1元数据存储
4.1.1系统表
4.1.2多版本模式服务
4.1.3DDL服务
4.1.4模式缓存
4.1.5模式刷新
4.2数据的物理存储
4.2.1行存储格式
4.2.2微块
4.2.3宏块
4.2.4SSTable和存储文件
4.2.5MemTable
4.2.6分区组、表组等
4.2.7数据压缩
4.3转储和合并
4.3.1冻结
4.3.2转储和Minor Compaction
4.3.3Major Compaction
4.4多级缓存
4.5小结
第5章SQL引擎
5.1SQL引擎结构
5.2解析器
5.2.1词法分析器
5.2.2语法分析器
5.2.3SQL语句的解析
5.2.4语法树的结构
5.3计划缓存
5.3.1计划和计划缓存的结构
5.3.2缓存计划
5.3.3查找计划
5.3.4淘汰计划缓存和失效
5.4语义分析器
5.4.1DROP TABLE语句的语义分析
5.4.2语句树(逻辑计划)结构
5.5重写器
5.5.1预处理
5.5.2重写
5.5.3后处理
5.6优化器
5.6.1路径与逻辑计划
5.6.2初始计划生成
5.6.3并行优化
5.6.4代价模型
5.6.5代码生成
5.7执行器
5.7.1命令执行
5.7.2计划执行框架
5.7.3并行执行框架
5.7.4并行框架实现
5.8小结
第6章事务引擎
6.1事务管理
6.1.1事务的结构
6.1.2事务控制
6.1.3语句级原子性
6.1.4全局时间戳
6.2保存点
6.2.1实现原理
6.2.2定义保存点
6.2.3释放保存点
6.2.4回滚到指定保存点
6.3Redo日志
6.3.1日志文件类型
6.3.2日志的产生
6.3.3日志的回放
6.3.4日志容灾
6.3.5日志的控制与回收
6.4本地事务
6.4.1本地单分区事务
6.4.2本地多分区事务
6.5分布式事务
6.5.1分布式事务的构造
6.5.2两阶段提交
6.6并发控制
6.6.1MVCC
6.6.2多版本读一致性
6.6.3多版本读一致性实现
6.7封锁及两阶段锁2PL
6.7.1锁使用
6.7.2锁粒度和互斥
6.7.3锁存储
6.7.4锁的获取与释放
6.7.5唤醒等待事务
6.7.6死锁处理
6.8ELR技术
6.8.1解锁时机
6.8.2解锁之后数据的可见性
6.9事务隔离级别
6.10弱一致性读
6.10.1SQL语句的一致性级别
6.10.2事务的一致性级别
6.10.3弱一致性读配置项
6.10.4时间戳生成方式
6.11小结
第7章高可用
7.1高可用架构
7.1.1Paxos协议
7.1.2分布式选举
7.1.3节点故障处理
7.1.4多副本日志同步
7.2对象闪回
7.2.1回收站
7.2.2删除到回收站
7.2.3从回收站恢复
7.2.4清理回收站
7.3备份恢复
7.3.1物理备份架构
7.3.2日志归档
7.3.3数据备份
7.3.4取消备份
7.3.5数据恢复
7.3.6逻辑备份
7.4小结
第8章多租户
8.1租户
8.1.1租户管理
8.1.2租户操作
8.2资源隔离
8.2.1租户资源定义
8.2.2资源管理和操作
8.2.3资源隔离
8.2.4资源使用控制
8.3资源自动均衡
8.3.1自动均衡概述
8.3.2自动均衡的发起
8.3.3再均衡任务的构建与分发
8.3.4手动迁移
8.4小结
第9章安全管理
9.1身份鉴别
9.1.1鉴别方式
9.1.2身份认证全过程
9.2访问控制
9.2.1用户
9.2.2授予及撤销权限
9.2.3访问权限检查
9.3安全审计
9.4小结
|
內容試閱:
|
前言
随着处理规模和数据规模的日益增长,传统集中式数据库的扩展能力几乎已达到极限,在这类场景中,人们越来越多地开始使用分布式数据库系统。
在开源数据库世界中,可供选择的成熟分布式数据库系统并不多,OceanBase正是其中极具代表性的一种。OceanBase开源版(社区版)源自在支付宝、阿里巴巴集团内久经考验的OceanBase,同时在性能上也通过TPC-C和TPC-H基准测试得到过验证,因而受到了很多企业用户以及数据库爱好者的关注。
为了帮助来自不同领域的企业和个人开发者更好地加入到OceanBase社区版的演进过程中,我们决定写一本技术性书籍,从源码级别分析OceanBase,用该书介绍OceanBase内部的实现细节,揭示一个分布式数据库系统的内部奥秘。我们希望本书能够帮助分布式数据库系统研发人员、开源数据库技术爱好者、数据库用户、科研人员更好地理解OceanBase,进而能够为OceanBase贡献特性或者更好地将OceanBase应用于各种不同的场景中。读者定位本书面向OceanBase内核开发人员、分布式数据库技术爱好者、数据库运维人员、高校学生、教师以及其他希望了解OceanBase数据库内部实现方法的读者。为了更好地理解本书的内容,我们希望读者能具备以下基础: 有一定C 语言开发经验。了解数据库系统(特别是分布式数据库系统)的基本概念和常用术语。学习过有关数据库管理系统实现原理的书籍或者课程。
本书组织
本书的组织如下:
第1章介绍OceanBase的发展历程、特性、应用案例以及基于源代码的编译和部署等内容。
第2章介绍OceanBase的架构、源码结构和安装目录结构,并且专门介绍了OceanBase的专用代理服务器ODP。
第3章介绍OceanBase集群中每个节点上的总控进程OBServer,对其中的网络子系统、多租户环境、线程结构、连接和会话管理、总控服务以及配置子系统进行了专门的分析。
第4章介绍OceanBase的存储引擎,对元数据存储、数据的物理存储、内存数据与磁盘数据之间的转储和合并、多级缓存等内外存管理机制进行详细分析。
第5章介绍OceanBase的SQL引擎,以SQL语句的处理过程为主线逐一分析其中的词法和语法分析、计划缓存、语义分析、重写、优化、执行等步骤。
第6章介绍OceanBase的事务引擎,给出了OceanBase中本地事务和分布式事务的呈现和管理方式以及保存点的实现原理,并对其重做日志、多版本并发控制等机制的实现进行了分析。
第7章介绍OceanBase的高可用机制,首先解释了高可用机制的基础理论Paxos协议,然后对分布式选举和以其为基础的多副本容错进行分析,最后详细解析了数据库对象闪回机制和备份恢复措施的实现方式。
第8章介绍OceanBase中用于资源隔离的多租户机制,对租户和各种资源限制的定义和存储方式进行分析,并详细分析了租户之间的资源隔离和自动资源均衡机制的实现细节。
第9章介绍OceanBase中的安全管理,分析了用户身份鉴别、访问控制、安全审计等安全机制的具体实现方法。源代码版本本书对OceanBase社区版的分析工作基于OceanBase社区版的3.1.0版本,该版本的源代码可以从以下地址下载:https://github.com/oceanbase/oceanbase/tree/3.1。由于作者的水平有限,本书难免存在差错或遗漏等,若您在阅读时发现任何问题以及想对本书提出批评和建议,都可以发送电子邮件到ywpeng@whu.edu.cn,作者不胜感激。由于时间有限,作者可能无法一一回答所有的电子邮件,但我们会将发现的错误和收到的建议整理后公布在作者个人网站(http://www.pengyuwei.net/obbook/)上本书的页面中。
致谢感谢我的妻女。在写作本书的近一年时间里,她们从精神上给予了巨大的支持,使我能没有后顾之忧地埋头啃读代码和写作。感谢两位合作者以及OceanBase团队的泽寰、羡林等技术专家。理解一个253万行代码的庞大数据库系统是一项艰难的任务,正是他们的帮助和及时解答,才使得我能在相对可控的时间内完成本书。感谢OceanBase团队张婷婷女士为本书付出的努力和耗费的心血。感谢每一位阅读本书的读者,你们给予了作者莫大的鼓励,也是作者继续前行的动力,希望本书能对你们有所帮助。
彭煜玮
|
|