你好,我是王磊,你也可以叫我 Ivan。
这一讲是我们课程的答疑篇,我会集中讨论前 7 讲布置的思考题,以及留言区中大家关注的一些内容。
第 1 讲:分布式数据库的定义
在第 1 讲中,我们通过层层递进式的分析,给这门课程要讨论的“分布式数据库”下了一个定义:分布式数据库是服务于写多读少、低延时、海量并发 OLTP 场景的,具有海量数据存储能力和高可靠性的关系型数据库。在“内部构成”这一节,我们还着重讨论了几种不属于分布式数据库的解决方案。 在这一讲的思考题部分,我们聊到了 Aurora,我说“Aurora 和这里说的分布式数据库还是有明显差别的”,想看看大家的理解。在留言中,我看到有些同学是持不同观点的,理由是 Aurora 也基于分布式存储的。
那么,为什么我说它不是分布式数据库呢?主要原因就是 Aurora 依然是不支持写入能力的水平扩展。
Aurora 是亚马逊推出的云原生数据库,它采用计算与存储分离的思想,计算能力垂直扩展,存储能力水平扩展。究其原因,它的存储系统是直接架设在自家的分布式存储系统(S3)之上的;而计算节点仍然是单节点,所以是垂直扩展。当然 Aurora 也像 MySQL 一样是支持一写多读的,根据亚马逊的官方说明,可以配置 15 个备节点来分流读操作的压力。由于 Aurora 的元数据会缓存在主节点上的,在发生变更时,主备同步数据有一个小的延迟(小于 100 毫秒),这就造成备节点不能承接写入功能,读也不能保证严格的数据一致性。