• {正版现货新书} OLAP引擎底层原理与设计实践 9787111769842 高英举 许一腾 著

{正版现货新书} OLAP引擎底层原理与设计实践 9787111769842 高英举 许一腾 著

全新正版现货,以书名为准,放心购买,购书咨询18515909251朱老师

64.49 5.9折 109 全新

库存91件

北京丰台

作者高英举 许一腾 著

出版社机械工业出版社

ISBN9787111769842

出版时间2024-11

装帧平装

开本16开

定价109元

货号17969367

上书时间2026-01-14

   商品详情   

品相描述:全新
商品描述
目录
Contents 目 录<br />序一<br />序二<br />序三<br />序四(原版)<br />序四(中文版)<br />前言<br />致谢一<br />致谢二<br />第一篇 背景知识<br />第1章 OLAP引擎介绍与对比2<br />1.1 OLAP的定义与对比标准2<br />1.1.1 OLAP的定义2<br />1.1.2 OLAP引擎之间的对比标准3<br />1.2 各种OLAP引擎的主要特点6<br />1.2.1 Hive6<br />1.2.2 SparkSQL、FlinkSQL6<br />1.2.3 ClickHouse6<br />1.2.4 Elasticsearch8<br />1.2.5 Presto9<br />1.2.6 Impala10<br />1.2.7 Doris10<br />1.2.8 Druid11<br />1.2.9 总结12<br />1.3 再谈对Presto技术发展的理解13<br />1.4 总结、思考、实践15<br />第2章 Presto基本介绍16<br />2.1 Presto概述:特性、原理、架构16<br />2.1.1 一个高性能、分布式的SQL<br />   执行框架17<br />2.1.2 一套插件化体系18<br />2.1.3 开箱即用的SQL内置函数和<br />   连接器20<br />2.2 Presto的应用场景与企业案例20<br />2.2.1 Presto的应用场景20<br />2.2.2 Presto的企业案例21<br />2.2.3 Presto不适合哪些场景23<br />2.3 Presto常见问题及应对策略25<br />2.3.1 查询协调节点单点问题25<br />2.3.2 查询执行过程没有容错机制27<br />2.3.3 查询执行时报错exceeding <br />   memory limits27<br />2.3.4 无法动态增删改或加载数据<br />   目录与UDF28<br />2.3.5 查询执行结果必须经集群协调节<br />   点返回28<br />2.3.6 不支持低延迟、高并发28<br />2.4 Presto与Trino的项目与版本<br />  选择30<br />2.4.1 Trino与Presto选择哪个30<br />2.4.2 本书为什么用Trino的v350<br />   版本来做介绍31<br />2.4.3 Presto项目源码结构32<br />2.5 编译与运行Presto源码34<br />2.5.1 环境准备34<br />2.5.2 下载源码并载入IDEA35<br />2.5.3 编译Presto源码36<br />2.5.4 标记Antlr4自动生成的代码<br />   为generated source36<br />2.5.5 在IDEA中运行3个节点的<br />   Presto集群38<br />2.5.6 运行Presto命令行工具44<br />2.5.7 调试Presto源码常见问题44<br />2.6 基于Presto的数据仓库及本书<br />  常用SQL46<br />2.6.1 数据仓库介绍46<br />2.6.2 TPC-DS Data Model数据<br />   模型介绍47<br />2.6.3 本书常用SQL49<br />2.6.4 在哪里执行本节介绍的SQL54<br />2.7 总结、思考、实践54<br />第二篇 核心原理<br />第3章 分布式查询执行的整体流程56<br />3.1 分布式OLAP引擎整体架构及<br />   查询执行原理56<br />3.2 分布式查询执行的整体介绍58<br />3.2.1 从分布式架构看SQL查询<br />   的执行流程58<br />3.2.2 从功能模块看SQL执行流程58<br />3.2.3 原理讲解涉及的案例介绍59<br />3.3 查询的接收、解析与提交60<br />3.3.1 接收SQL查询请求60<br />3.3.2 词法与语法分析并生成抽象<br />   语法树62<br />3.3.3 创建并提交QueryExecution63<br />3.4 执行计划的生成与优化64<br />3.4.1 语义分析,生成执行计划64<br />3.4.2 优化执行计划,生成优化后<br />   的执行计划65<br />3.4.3 将逻辑执行计划树拆分为<br />   多棵子树68<br />3.5 执行计划的调度69<br />3.5.1 创建SqlStageExecution69<br />3.5.2 调度并分发HttpRemoteTask72<br />3.6 执行计划的执行78<br />3.6.1 在多个查询执行节点上执行<br />   任务78<br />3.6.2 分批返回查询计算结果给<br />   SQL客户端85<br />3.7 总结、思考、实践87<br />第4章 查询引擎核心模块拆解88<br />4.1 执行计划生成的设计实现88<br />4.1.1 从SQL到抽象语法树88<br />4.1.2 语义分析95<br />4.1.3 生成初始逻辑执行计划101<br />4.2 执行计划优化的目的、基本<br />  原理和基础算法106<br />4.2.1 执行计划优化的目的106<br />4.2.2 执行计划优化的基本原理106<br />4.2.3 执行计划优化的基础算法110<br />4.3 执行计划优化的设计实现115<br />4.3.1 执行计划优化的工作流程115<br />4.3.2 非迭代式优化器和迭代式<br />   优化器118<br />4.4 总结、思考、实践125<br />第三篇 经典SQL<br />第5章 数据过滤与投影相关查询<br />    的执行原理解析128<br />5.1 SQL-01简单拉取数据查询的<br />   实现原理128<br />5.1.1 执行计划的生成与优化128<br />5.1.2 分布式调度与执行的设计实现130<br />5.2 SQL-02数据过滤与投影查询的<br />  实现原理134<br />5.2.1 执行计划的生成与优化134<br />5.2.2 分布式调度与执行的设计实现136<br />5.3 数据过滤与投影相关查询涉及<br />  的查询优化147<br />5.3.1 列裁剪147<br />5.3.2 部分计算下推到存储服务148<br />5.3.3 表达式计算的优化150<br />5.4 总结、思考、实践151<br />第6章 行数限定与排序相关<br />    查询的执行原理解析153<br />6.1 SQL-10行数限定查询的实现<br />  原理153<br />6.1.1 执行计划的生成与优化154<br />6.1.2 分布式调度与执行的设计<br />   实现155<br />6.2 SQL-11 排序查询的实现原理158<br />6.2.1 执行计划的生成与优化158<br />6.2.2 分布式调度与执行的设计实现160<br />6.3 SQL-12 排序与行数限定组合<br />  查询的实现原理174<br />6.3.1 执行计划的生成与优化174<br />6.3.2 分布式调度与执行的设计实现176<br />6.4 简单SELECT查询相关的查询<br />  优化191<br />6.4.1 将LIMIT计算下推到数据<br />   源连接器191<br />6.4.2 去除不需要的LIMIT计算192<br />6.5 总结、思考、实践193<br />第7章 简单聚合查询的执行原理<br />    解析194<br />7.1 聚合查询原理通识性介绍194<br />7.1.1 常见的聚合查询194<br />7.1.2 聚合查询是有状态计算196<br />7.1.3 实现分布式聚合的几种执行<br />   模型196<br />7.1.4 Presto对聚合查询的设计与<br />   抽象197<br />7.2 SQL-20不分组聚合查询的实现<br />   原理198<br />7.2.1 执行计划的生成与优化198<br />7.2.2 分布式调度与执行的设计实现201<br />7.2.3 使用Scatter-Gather执行模型<br />   实现SQL-20211<br />7.3 SQL-21分组聚合查询的实现原理212<br />7.3.1 执行计划的生成与优化213<br />7.3.2 分布式调度与执行的设计实现214<br />7.3.3 使用Scatter-Gather执行模型<br />   实现SQL-21236<br />7.3.4 总结237<br />7.4 聚合函数的设计与实现238<br />7.5 总结、思考、实践240<br />第8章 复杂聚合查询的执行原理<br />    解析242<br />8.1 SQL-22去重计数查询的实现<br />  原理242<br />8.1.1 执行计划的生成与优化243<br />8.1.2 分布式调度与执行的设计实现246<br />8.1.3 使用Scatter-Gather执行模型<br />   实现SQL-22247<br />8.1.4 总结248<br />8.2 SQL-23多个聚合计算查询的<br />   实现原理248<br />8.2.1 执行计划的生成与优化249<br />8.2.2 分布式调度与执行的设计实现252<br />8.2.3 为什么Presto要引入MarkDistinct<br />   优化258<br />8.2.4 使用Scatter-Gather执行模型<br />   实现SQL-23260<br />8.3 SQL-30综合多种计算查询的<br />   实现原理260<br />8.3.1 执行计划的生成与优化261<br />8.3.2 分布式调度与执行的设计实现264<br />8.3.3 使用Scatter-Gather执行模型<br />   实现SQL-30265<br />8.3.4 总结266<br />8.4 常见聚合查询优化手段与优化器267<br />8.4.1 将聚合操作拆分为部分聚合与<br />   最终聚合267<br />8.4.2 在上下游任务中传播哈希聚合<br />   分组列的哈希值267<br />8.4.3 部分聚合计算下推268<br />8.4.4 将ORDER BY与LIMI T计算<br />   优化为TopN计算268<br />8.4.5 基于代价评估的方式来决定<br />   如何选择执行模型268<br />8.4.6 利用存储的数据分布特性做<br />   优化269<br />8.5 总结、思考、实践270<br />第四篇 数据交换机制<br />第9章 数据交换在查询规划、<br />    调度、执行中的基本原理272<br />9.1 数据交换机制简介272<br />9.1.1 数据交换是什么272<br />9.1.2 何时需要做数据交换273<br />9.1.3 数据交换是拉取模型274<br />9.1.4 任务之间数据交换与任务内部<br />   数据交换275<br />9.1.5 数据交换的代价276<br />9.2 查询优化阶段任务之间数据交换<br />   的设计实现276<br />9.2.1 任务之间数据交换的3个<br />   阶段276<br />9.2.2 ExchangeNode的实现277<br />9.2.3 利用AddExchanges优化器<br />   插入ExchangeNode282<br />9.2.4 AddExchanges决策在哪里<br />   插入ExchangeNode的主要<br />   考虑因素284<br />9.2.5 AddExchanges优化器的设计思路<br />   与案例285<br />9.2.6 拆分PlanFragment296<br />9.3 查询调度与执行阶段的整体设计<br />   思路297<br />9.3.1 在分布式查询集群中唯一确定<br />   某个任务297<br />9.3.2 每个任务的上游和下游298<br />9.3.3 交付上游任务产出的数据298<br />9.3.4 上下游任务数据交换的交互<br />   机制300<br />9.3.5 上下游任务生产与消费的速度301<br />9.4 总结、思考、实践301<br />第10章 数据交换在查询调度与<br />     执行中的详细设计302<br />10.1 查询调度阶段任务之间数据<br />   交换的设计实现302<br />10.1.1 调度部分整体介绍302<br />10.1.2 建立相邻上下游查询执行<br />    阶段间的数据依赖关系303<br />10.1.3 RemoteTask中与任务之间<br />    数据交换相关的抽象设计308<br />10.2 查询执行阶段任务之间数据交换<br />   上游的设计实现309<br />10.2.1 整体概述309<br />10.2.2 OutputBuffer的工作流程309<br />10.2.3 不同的OutputBuffer具体实现313<br />10.2.4 两种OutputOperator315<br />10.3 查询执行阶段任务之间数据交换<br />   下游的设计实现315<br />10.3.1 整体概述315<br />10.3.2 两种用于拉取上游任务数据<br />    的SourceOperator316<br />10.4 上下游任务之间数据交换的RPC<br />   交互机制321<br />10.4.1 数据交换的RPC通信协议321<br />10.4.2 SerializedPage的序列化<br />     格式323<br />10.5 任务内部数据交换的基本原理324<br />10.6 利用数据交换能力实现的特殊<br />   功能326<br />10.6.1 利用数据交换能力在查询执行<br />    路径实现的反压机制326<br />10.6.2 利用数据交换能力实现部分<br />    SQL的LIMIT语义328<br />10.6.3 任务之间数据交换交互中的<br />    乱序请求328<br />10.6.4 分批计算与返回执行结果329<br />10.7 总结、思考、实践330<br />第五篇 插件体系与连接器<br />第11章 连接器插件体系详解334<br />11.1 插件体系整体介绍334<br />11.1.1 插件概述335<br />11.1.2 插件分类335<br />11.1.3 SPI机制337<br />11.2 插件加载机制341<br />11.2.1 插件初始化流程入口341<br />11.2.2 插件加载343<br />11.2.3 插件整合346<br />11.2.4 类加载原理347<br />11.3 连接器实现原理351<br />11.3.1 连接器概述351<br />11.3.2 连接器插件实例化353<br />11.3.3 元数据模块359<br />11.3.4 数据读取366<br />11.3.5 部分计算下推371<br />11.3.6 连接器在查询执行中的作用374<br />11.4 关于连接器的一些深入思考375<br />11.4.1 使用连接器的注意事项376<br />11.4.2 站在OLAP引擎设计者视角来<br />    理解连接器的设计范式376<br />11.5 总结、思考、实践377<br />第12章 连接器开发实践:以Example-<br />    HTTP连接器为例378<br />12.1 Example-HTTP连接器基本介绍379<br />12.2 基础代码380<br />12.2.1 ExamplePlugin380

以下为对购买帮助不大的评价

此功能需要访问孔网APP才能使用
暂时不用
打开孔网APP