单机版的数据库当然无法满足我们现在的需求,而对于关系型数据库的三个发展方向: Sharding on MySQL 、NewSQL 和Cloud Native DB ,都各有各的应用场景,在选择前先简要介绍下三个方向的技术。
Sharding on MySQL 在应用侧或代理层做分片来管理多个MySQL物理库,来解决MySQL单机容量和性能不足的问题。我们正在使用的TDDL就是该架构,虽然计算存储资源可扩展,但在扩展和数据迁移时,业务系统层面需要做大量的改造和业务数据的灰度,为了保证业务不停机会产生大量的改造成本和数据迁移的风险。
NewSQL 数据库,在国内以TiDB和OceanBase这类原生支持分布式的关系型数据库为代表,主要也是为了解决MySQL的问题,和Sharding on MySQL不同的是,NewSQL将分片功能作为数据库的一部分来实现,并提供了动态扩缩容的能力,且对上层业务透明,具备透明可扩展性。