1、CockroachDB 2.x特性详解目录CockroachDB 简介CockroachDB 2.x关键特性CockroachDB 2.x百度实践RoadmapP A R T01CockroachDB 介绍Release Timeline14年Github开源,17 年Release 1.0,目前版本2.1.6,即将release 19.11.01.12.02.119.12017.5.102017.10.122018.10.302018.4.4l CBOl Read From Followerl CDCl 任意时间点备份恢复lSQL可视化诊断l支持滚动升级支持import/dumpShow/C
2、ancel QueryllGEO-Partition支持Backup/RestoreRBAC支持JSON类型支持SQL审计llDistSQLOnline DDLMulti-ActiveCloud Nativellllllll 透明加密P A R T02CockroachDB 2.x关键特性 Cost Base Optimizer Read From Follower CDCCost Base Optimizer RBO : Rule-based Optimizer 根据通用的确定的优化规则变换重写执行计划 CBO : Cost-based Optimizer 枚举可能的执行计划,计算每个执行计
3、划的COST,最终选择COST最低的执行计划 Why choose CBO? RBO只根据静态规则优化执行计划,而CBO可以从时间和资源的角度评估,为每个SQL选择最优的执行计划 随着优化规则越来越多,RBO添加和修改规则会越来越复杂CBO优化过程SQL解析语法检查Parse(ast)常量展开、类型检查、resolve names语义检查Analyze(ast+)把AST变换成Memo expressions tree填充统计信息StatsPrep(expr)placeholder展开根据规则重写执行计划TransformsRewrite(expr)根据规则产生等价表达式生成执行代价,并查找最
4、小代价的执行路径 Cost of a Expr Tree = Cost of Child Expr + Cost of Parent Expr (自底向上)生成分布式执行计划Cost ModelSearch(physical plan)ExecuteCBO等价表达式管理【Memo】- 管理查询所有等价计划树- 跟踪每个Memo group的最低代价 Memo Group:一组 logically equivalent的表达式 Memo Expr:每个Memo表达式拥有一组Memo子表达式AST There are 12 possible plans (3 * 2 * 2) encoded in
5、 this memo.CBO统计信息生成目标:供coster使用,计算每个Expr的计算成本(代价)分类从metadata获取Table statistics持久化在系统表system.table_statistics从table statistics延伸Relational expression statistics仅对某一特定memo group有效自动收集的统计信息number of rowsnumber of columnsSketchNext Release:number of null value Histogram (data value distribution)如何收集统计信
6、息?Range-level statistic为什么要Read From FollowerRead from Follower:Read from Leader/Lease holder:Long Run类型查询Historical readsCDCLeader/Lease Holder 能提供一致性读Follower的delay无法预期Immutable tables121110121110121110一方有难,八方围观!RFF在Follower上一致性读(14,3)12(15,2)11(10,2)101011 12(14,3)12(15,2)11(10,2)10(11, 2)(16, 3)
7、now()now()Target Duration(14,3)12(15,2)11(10,2)101011 12(11, 2)(16, 3)Current CT候选CT(9,3)Follower一致性读:1. Log 的Applied Index 为 X,如果T满足: = 提交Log X 的事务时间戳,且后续Applied Index I 的Log的事务时间戳 T2. 时间戳=T的事务可Read From Follower3. 时间T称为 Closed TimestampRFF数据路由121110121110NotLeaseHolderErr121110121110DistSender1211
8、10Lease Holder121110Lease HolderDistSenderRead From Follower优先选择满足条件的最近的FollowerhealthlatencylocalityFollower无法满足RFF,则返回NotLeaseHolderErr,请求重新路由到Lease HolderCDCKafka集群间数据同步,可用于灾备,模拟沙盒环境等。与其他数据生态互通,可用于数据分析,数据挖掘等。CDC121110121110121110121110121110121110Lease HolderLease HolderChange of Row 1Change of R
9、ow 2Change of Row 1Change of Row 2P A R T03CockroachDB 2.x百度实践CockroachDB 实践冷热分离负载均衡器RDSSSDSSDHDDHDDHDDHDDHDDHDDSSD成本NoSQL热数据区冷数据区Partition By Range/List冷热分离可用存储容量(单位: TB)QPS700004003002001000800006000040000200000288400001501500029SSDSSD+HDDHDDSSDSSD + HDDHDD平响(单位:ms)1820151051380SSDSSD + HDDHDD下一步思
10、考如何进一步降低热数据长查询、复杂查询对写入的影响Read From Follower 分摊热数据读请求Read From Learner 分摊热数据读请求?Range 1Range 2Range 1Range 2Range 1Range 2Rangem+1Rangem+1Rangem+1Rangem+2Rangem+2Rangem+2热数据区冷数据区P A R T04RoadmapRoadmapCBO更多优化Schema Change 有效处理关联子查询 引入Plan Cache,加速CBO处理效率 Bulk处理,提升性能 可视化 Admin UI “JOBS” 可在事务中使用 优化决策考虑locality就近原则 Query Optimizer HintsCoreSecurity Parallel Range Scans Load-based splitting changefeed推送支持PostgreSQL协议支持Kerberos集成 Encryption