您现在的位置是:主页 > 数据库技术 > 数据库技术

online DDL的原理以及Vitess如何帮助处理模式迁移

IDCBT2022-01-12服务器技术人已围观

简介这篇文章主要为大家分析了 online DDL的原理以及Vitess如何帮助处理模式迁移的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来

这篇文章主要为大家分析了 online DDL的原理以及Vitess如何帮助处理模式迁移的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“ online DDL的原理以及Vitess如何帮助处理模式迁移”的知识吧。


Vitess 引入了一种运行模式迁移的新方法:非阻塞的、异步的、预定的online DDL。通过 online DDL,Vitess 简化了模式迁移过程,它获得了操作开销的所有权,并为用户提供了一个简单、熟悉的界面:标准的 ALTER TABLE 语句。

让我们首先介绍一些背景知识并解释为什么模式迁移在数据库世界中是一个如此重要的问题,然后深入研究实现细节。 

关系模型和操作开销

关系模型是软件世界中存在时间最长的模型之一,它是几十年前引入的,直到今天仍被广泛使用。SQL 同样古老而可靠,甚至在非关系数据库中也可以找到 SQL 或类似 SQL 的语言。

关系模型对许多常见的用例都有意义,具有属性的实体(分别为表和列)可以很好地映射到流行的结构,如用户、产品、成员关系、消息等,而且 SQL 的表达能力足够强,能够构造简单和复杂的问题。

但从历史上看,关系模型是有代价的。虽然许多数据库系统对读和写进行了优化,但它们对元数据更改(特别是模式更改)的优化程度并不高。此类更改的最大挑战之一是,它们需要一个操作程序,而且大多不在开发人员的领域之内。

在早期,数据库管理员(DBA)充当数据库的保镖是很常见的。他们会拖延来自开发者的“疯狂请求”。变更的要求需要经过漫长的程序和文书工作。

幸运的是,这些日子已经过去了,我们在持续部署和快速开发方面更加协作。然而,新的变化加剧了这个问题。在过去,你需要每月更改一次模式;也许几个月就有一次。你应该为此做好准备,推出一个新的版本。如今,世界上最繁忙的数据库部署每天都要运行多个模式迁移,这并不少见。

这重新引入并强化了模式迁移问题:该过程大部分不在开发人员的领域之内。它要求他们是数据库专家。在每天进行多次迁移的情况下,他们需要以与自己的开发流程不兼容的方式与其他开发人员协作和同步(例如,这与比较和合并 git 分支完全不同)。在小公司中,你会看到开发人员只是在他们认为合适的时候拥有和运行他们的迁移,但这并不能扩展,而且产品和组织越大,就越需要一个更正式的流程。

在 MySQL 世界中,直接的模式迁移是阻塞的,如果不是在主服务器上,那就是在副本上。他们对资源咄咄逼人,无法被打断或压制。在线模式更改工具已经存在了十多年,但是它们引入了自己的复杂性:你需要将它们与数据库一起安装、允许访问、安排执行、登录、执行、通知这些工具如何进行限制、处理错误、为它们的操作提供可见性等等。在规模较大的公司中,有专门的 DBA 或 Ops 团队

标签:

很赞哦! ()

本栏推荐