空心|Aurora,万字详文:腾讯数据库专家深度探索Amazon( 十 )


在1.2节我们提到“鉴于以上几点 , 备机数据获取和更新的这个细节 , 算是个谜” , 即备机的数据获取 , 是从存储层而来还是从主节点而来?我们不妨做个论文没有提及的猜想:备机的数据 , 源自存储层和主节点 , 存储层统一向上层提供数据页的缓冲服务 , 用以不断响应计算层的数据缺页请求 , 这起到了传统的数据缓冲区的作用 。 而主节点传输日志给备节点 , 备节点可以从中解析出UNDO日志信息(UNDO也是受到REDO的保护的) , 从而能够构造出主节点在某个时刻的完整的计算环境状态(数据缓冲区+UNDO信息) , 这样 , 备机就可以为接到的读请求构造一致的“ReadView” , 为读操作提供了事务读数据的一致性状态 。 如为此点 , 则是一个巧妙的设计 。 更进一步 , 主机直接传输给备机的 , 可以只是准备写入REDO的UNDO信息 。
3.4锁管理
基于MySQL的Aurora同样使用了基于封锁的并发访问控制技术 。 但是 , Aurora改造了MySQL的锁管理器 , 这点论文没有提及 , 而在2017年的Percona技术大会上 , Aurora的一个分享展示了如图1-11的内容 。 图中显示 , 在MySQL的锁表管理器上 , 对于Scan、Delete、Insert三种操作 , 把lock互斥了三种类型的并发 , 而Aurora分别按操作类型加锁“lockmanager” , 提高了并发度 , 这样的锁 , 看起来是一个系统锁 , 把一个粗粒度的系统锁拆分为三个细粒度的系统锁 。 但是 , 较为奇怪的是 , 如图1-12 , Aurora展示了其效果却十分的惊人(图1-13是测试环境的配置) 。
4.云服务能力
4.1强化的云服务能力
除了通过更多的数据冗余(跨3个AZ的6个副本)提高高可用性外 , Aurora还有着其他强大的云服务能力 , 这是云数据库需要重点建设的能力 。
存储方面 , 存储的单位是段(segment) , 每个段的大小为10G , 单实例数据库存储最大限是64TB 。
处理系统故障方面:
10秒内完成一个10G的Segment的网络迁移 。 30秒完成故障转移 。 以Segment为单位周期性并行备份 。 以REDO日志为单位周期性并行备份 。 通过日志实时地持续恢复 , 提供了更快的crashrecovery 。性能方面:
更快的索引构建 。 采用自底向上的索引构建方式 , 比MySQL快2倍到4倍 。 无锁并发Read-View算法 。 构造ReadView采用无锁算法减少竞争提高性能 。 无锁队列提高审计功能的速度 。 其他如热行竞争、批量数据插入等性能提升明显 。其他云服务:
提供快速provisioning和部署 。 自动安装补丁和软件升级 。 备份和point-in-time恢复 。 计算和存储的扩展性支持 。如图1-3所示 , 存储系统的元数据存于AmazonDynamoDB中 , 使用AmazonSWF提供的工作流实现对Aurora的自动化管理 , 这也是云中规模化服务的重要能力 。
万能数据库
AWS的Aurora不只是MySQL的一个分支版本 , 更像是一个万能的数据库系统 , 这样的系统 , 通过兼容各种主流数据库的SQL语法、功能 , 也许能在云上一统数据库的服务 , 把各种数据库的用户应用接入 , 通过统一的一个分布式的数据库引擎 , 提供各种数据库的数据服务能力 。
AWS的官网 , 声明了“兼容PostgreSQL的AmazonAurora”如下:


推荐阅读