Mysql如何魔改
首先看看PolarDB的改进,PolarDB是阿里巴巴的东西所以除了内部人员可能使用之外外部的技术人员基本接触不到这个东西,这里简单介绍相关的设计思路。
下面为相关的设计图:
在PorlarDB中包含下面的关键组件:
- ECS:客户端
- Read/Write Splitter 读写分离中间件
- Mysql节点,文件系统, 数据路由和数据缓冲。主备服务器
- RMDA统一的管理
- Data Chunk Server:数据的存储桶,存储服务器,集群的方式存储
- Raft:强一致性的存储服务器。
- 日志传送和共享存储
- 备库如何查询数据
在传统的方式中,备库使用下面的方式进行处理
创新和改进点:在读取事务改动的时候,使用了叠加redo log的方式处理,防止读写库的数据不一致的问题
如何支撑双十一?
双十一刚刚出现的时候是一个十分火热的话题,然而到了现在电商成熟的年代双十一似乎变成了“日常活动”......,双十一的支撑依靠十分核心的中间组件:OceanBase,也被称之为new sql数据库。
OceanBase属于行列互存的架构最大的特点是机房跨全球。存储引擎的最下层是分片的分区层,Share-Nothing架构,数据分区使用的一主两备的结构。
数据如何更新?
数据更新依靠下面的流程,看起来比较负责,其实这里的设计思路有点类似谷歌在2006年的“Bigtable”设计,而SSTable于这篇论文中首次出现,SSTable主要用于给予LSM-Tree数据结构的日志存储引擎。
如果不清楚什么是LSM-Tree,可以阅读下面的文章了解:
《数据密集型型系统设计》LSM-Tree VS BTree - 掘金 (juejin.cn)
国产混合数据库-TiDB
TiDB简介:
下面的内容引用自官方介绍:
TiDB 是 PingCAP 公司自主设计、研发的开源分布式关系型数据库,是一款同时支持在线事务处理与在线分析处理 (Hybrid Transactional and Analytical Processing, HTAP) 的融合型分布式数据库产品,具备水平扩容或者缩容、金融级高可用、实时 HTAP、云原生的分布式数据库、兼容 MySQL 5.7 协议和 MySQL 生态等重要特性。目标是为用户提供一站式 OLTP (Online Transactional Processing)、OLAP (Online Analytical Processing)、HTAP 解决方案。TiDB 适合高可用、强一致要求较高、数据规模较大等各种应用场景。
简单来说Tidb主要有下面的几个特点:
- 一键水平扩容或者缩容
- 金融级高可用
- 实时HTAP
HTAP数据库(Hybrid Transaction and Analytical Process,混合事务和分析处理)。2014年Gartner的一份报告中使用混合事务分析处理(HTAP)一词描述新型的应用程序框架,以打破OLTP和OLAP之间的隔阂,既可以应用于事务型数据库场景,亦可以应用于分析型数据库场景。实现实时业务决策。这种架构具有显而易见的优势:不但避免了繁琐且昂贵的ETL操作,而且可以更快地对最新数据进行分析。这种快速分析数据的能力将成为未来企业的核心竞争力之一。
- 云原生的分布式数据库
- 兼容Mysql5.7 协议和Mysql生态。
虽然TiDB被使用之后有许多令人诟病的缺点,同时因为是新型的数据库对于一些实践问题的解答资料也比较少,但是作为一款非常有潜力的数据库还是值得我们保持关注的。
TiDB的架构设计如下:
- 纯分布式架构,拥有良好的扩展性,支持弹性的扩缩容
- 支持 SQL,对外暴露 Mysql 的网络协议,并兼容大多数 Mysql 的语法,在大多数场景下可以直接替换 Mysql
- 默认支持高可用,在少数副本失效的情况下,数据库本身能够自动进行数据修复和故障转移,对业务透明
- 支持 ACID 事务,对于一些有强一致需求的场景友好,例如:银行转账
- 具有丰富的工具链生态,覆盖数据迁移、同步、备份等多种场景
CockroachDB
小强数据库,2015启动,谷歌前员工发起。
CockroachDB,目标是打造一个开源、可伸缩、跨地域复制且兼容事务的 ACID 特性的分布式数据库,它不仅能实现全局(多数据中心)的一致性,而且保证了数据库极强的生存能力,就像 Cockroach(蟑螂)这个名字一样,是打不死的小强。
CockroachDB 的思路源自 Google 的全球性分布式数据库 Spanner。其理念是将数据分布在多数据中心的多台服务器上,实现一个可扩展,多版本,全球分布式并支持同步复制的数据库。
小结
本节内容主要针对Mysql的一些新特性以及其他第三方如何对于数据库进行扩展的,同时介绍了数据库的分类,我们可以发现数据库的分类最后都可以按照某种特定的类型进行划分。
写在最后
本节内容非常简单,读者可以根据相关的内容进行深入学习即可。