我的编程空间,编程开发者的网络收藏夹
学习永远不晚

优秀数据库模式迁移工具的发展历程

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

优秀数据库模式迁移工具的发展历程

审校 | 重楼

数据库模式迁移可能是应用程序开发中风险最大的领域——因为这是一个困难的、有风险的和痛苦的过程。数据库模式迁移工具的存在是为了减轻这种痛苦,并且已经取得了长足的进步:从基本的CLI工具到GUI工具,从简单的SQL GUI客户端到一体化协作数据库平台。

命令行客户端(CLI) - MySQL/PSQL

MySQL和PSQL分别是MySQL和PostgreSQL的本地CLI可以从命令行直接向MySQL或PostgreSQL服务器发送命令或查询。

尽管CLI界面很简单,但有时它会让初学者望而生畏。然而,根据Timescale公司的2022年PostgreSQL状态调查结果,PSQL是最受欢迎的与PostgreSQL交互的工具,超过了pgAdmin和DBeaver等GUI工具。

GUI

1.PHPMyAdminPGAdmin

PHPMyAdminPGAdmin是经典的SQL客户端。PHPMyAdmin已经是一个管理MySQL和MySQL兼容数据库(例如MariaDB)的工具,而PGAdmin是PostgreSQL的对应工具,现在已经发展到PGAdmin 4。与CLI工具相比,PHPMyAdminPGAdmin提供了一个用于运行和执行SQL查询的用户界面(UI),使它们更加友好。

2.DBeaver

DBeaver的最初版本发布于2010年,这款开源SQL客户端支持各种数据库(SQL、NoSQL和云数据库),并通过整合OpenAI公司的GPT功能跟上人工智能领域的最新趋势,允许将自然语言转换为SQL。

3.Navicat

Navicat于2001年首次发布。它当时只支持MySQL,但后来增加了更多的数据库。虽然Navicat的UI看起来有点过时,但它具有完整的功能,并且在操作数据库时提供了流畅的整体体验。

基于GUI的SQL客户端是对基于CLI的SQL客户端的良好补充。从根本上讲,它们的工作方式是一样的。用户可以快速方便连接到数据库并执行一些SQL。另一方面,在数据库更改管理和数据安全方面缺乏控制。本文将以Navicat为例进行详细介绍。

Gitops /数据库即代码

为了更好地管理和控制数据库模式更改,一些工具在数据库更改中引入了代码更改过程,称为数据库即代码(Database-as-Code)

1.Liquibase

Liquibase创建于2006年,是一个用于跟踪、管理和应用数据库更改的开源库。一个有趣的事实是:Liquibase于2012年被一家名为Datical的公司收购,并更名为Datica,但随后于2020年更名为Liquibase(这是明智之举,见过有人在论坛上提到过Datica吗?)。

Liquibase的主要产品是基于Java的CLI,它允许开发团队通过CLI将数据库模式迁移集成到他们的CI/CD工作流中。

2.Flyway

Flyway与Liquibase在很多方面有相似之处:它们都是成立时间较长的数据库,拥有客户群,而且都是开源项目。它的核心产品是CLI和Java库。

Flyway背后的商业实体是Redgate(于2019年被收购)。它有3个版本:社区、团队和企业。可以看出,他们在开源和商业产品之间划出了一条清晰的界限:Flyway的网站总体上感觉更随意,而Redgate的方式更专业。

Liquibase和Flyway并驾齐驱。两者的主要区别在于各自的定位:Liquibase更面向企业,而Flyway更面向开发者。

3.Sqitch

Sqitch是一个纯开源项目,自从2012年以来一直没有商业产品上市。它是纯粹的CLI,没有UI。

与基于Java的Liquibase和Flyway不同,Sqitch是使用Perl开发的。此外,Sqitch在如何管理数据库模式更改方面有自己的理念:Liquibase和Flyway都使用文件命名约定来安排模式迁移(约定高于配置)。

而Sqitch采用了一种显式的方法,允许用户在Sqitch计划中指定顺序。

4.Atlas

Atlas是一个由Ariga构建的开源工具,并推广了“数据库模式即代码”这一术语。

可以看出,他们从HashiCorp那里获得了很多灵感,并在首次出现在Hacker News上时将自己称为“数据库迁移的Terraform”。他们还发明了基于HCL (HashiCorp配置语言)的Atlas HCL。

Atlas使用现代编程语言Go(与使用Java的Liquibase/Fireway不同),并以CLI为中心(类似于Liquibase.Fireay/Sqitch),但它也有一个轻量级的UI。Atlas Cloud是一个开源版本的商业产品。

一体化:GUI + Gitops / Database-As-Code + Collaboration

1.Prisma

像Prisma这样的ORM针对的是代码如何与数据交互的领域。虽然这更多的是一个后端主题,但Prisma是一个具有前端根的ORM。前端工程师可能不是最精通SQL的。为了降低管理数据库模式的障碍,Prisma发明了它的DSL来定义数据模型。

DSL是基于状态的(声明性的),它描述了数据库模式的最终状态,而不是增量变化,这与Liquibase/Flyway/Sqitch不同。通过这种方式,Prisma可以在整个应用程序开发周期中提供更全面的数据库管理视图。

Prisma ORM是开源的,可以免费使用,他们的数据平台提供了一个基于云的协作平台,具有一些高级功能(很明显,他们的目标不仅仅是一个ORM和模式迁移工具)。

2.Bytebase

Bytebase是一个开源数据库DevOps工具,涵盖了数据库管理场景,从变更、查询、安全性到基于Web的可视化协作工作区的治理。

Bytebase提供了一个基于Web的UI,开发人员和DBA可以通过同一个界面协作处理数据库更改。

3.数据库即代码(Database-As-Code

为了更好地适应开发人员的工作习惯,Bytebase已经将功能集成到代码库中,例如itLab和GitHub。通过启用GitOps工作流,开发人员可以将数据库更改文件提交到熟悉的代码存储库,一旦审查完成并提交到repo, Bytebase将自动触发部署。无需在多个工具之间切换。

4.团队协作与管理

用户可以为两个级别的成员定义不同的角色:工作区和项目。可以为团队成员分配不同的角色,以便他们对不同的项目具有不同的权限;或者为每个项目配置审批工作流,例如指定负责此特定项目的特定DBA或QA。

Prisma和Bytebase的区别在于目标受众。Prisma主要针对前端/全栈开发人员,而Bytebase更专注于后端和DBA。这两款产品都提供协作功能,Prisma专注于单个项目中开发人员之间的协作,而Bytebase针对整个工程组织,即开发人员和DBA/平台工程/运营团队。

结语

如果用户以个人身份操作数据库,那么传统的CLI或GUI SQL客户端(如Navicat)就足够了。如果更喜欢与代码库集成,有像Liquebase和Flyway这样的解决方案。然而,对于类似Jira或GitLab的GUI和项目协作功能,可以选择Prisma和Bytebase。Bytebase是唯一一个提供组织范围管理功能的工具,除了使数据库更改更高效和更安全之外,还可以确保数据安全和治理。

原文Evolution of Top Database Schema Change Tools,作者:Mila Wu

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

优秀数据库模式迁移工具的发展历程

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

优秀数据库模式迁移工具的发展历程

从CLI到GUI,再到GitOps和数据库即代码(Database-as-Code),数据库模式迁移经历了漫长的过程。而人们需要了解数据库模式迁移工具的发展。
数据库GitOps2024-11-30

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录