偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

優(yōu)秀數(shù)據(jù)庫模式遷移工具的發(fā)展歷程

譯文
數(shù)據(jù)庫
從CLI到GUI,再到GitOps和數(shù)據(jù)庫即代碼(Database-as-Code),數(shù)據(jù)庫模式遷移經(jīng)歷了漫長的過程。而人們需要了解數(shù)據(jù)庫模式遷移工具的發(fā)展。

譯者 | 李睿

審校 | 重樓

數(shù)據(jù)庫模式遷移可能是應用程序開發(fā)中風險最大的領域——因為這是一個困難的、有風險的和痛苦的過程。數(shù)據(jù)庫模式遷移工具的存在是為了減輕這種痛苦,并且已經(jīng)取得了長足的進步:從基本的CLI工具到GUI工具,從簡單的SQL GUI客戶端到一體化協(xié)作數(shù)據(jù)庫平臺。

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

MySQL和PSQL分別是MySQL和PostgreSQL的本地CLI,可以從命令行直接向MySQL或PostgreSQL服務器發(fā)送命令或查詢。

盡管CLI界面很簡單,但有時它會讓初學者望而生畏。然而,根據(jù)Timescale公司的2022年PostgreSQL狀態(tài)調(diào)查結(jié)果,PSQL是最受歡迎的與PostgreSQL交互的工具,超過了pgAdmin和DBeaver等GUI工具。

GUI

1.PHPMyAdminPGAdmin

PHPMyAdminPGAdmin是經(jīng)典的SQL客戶端。PHPMyAdmin已經(jīng)是一個管理MySQL和MySQL兼容數(shù)據(jù)庫(例如MariaDB)的工具,而PGAdmin是PostgreSQL的對應工具,現(xiàn)在已經(jīng)發(fā)展到PGAdmin 4。與CLI工具相比,PHPMyAdminPGAdmin提供了一個用于運行和執(zhí)行SQL查詢的用戶界面(UI),使它們更加友好。

2.DBeaver

DBeaver的最初版本發(fā)布于2010年,這款開源SQL客戶端支持各種數(shù)據(jù)庫(SQL、NoSQL和云數(shù)據(jù)庫),并通過整合OpenAI公司的GPT功能跟上人工智能領域的最新趨勢,允許將自然語言轉(zhuǎn)換為SQL。

3.Navicat

Navicat于2001年首次發(fā)布。它當時只支持MySQL,但后來增加了更多的數(shù)據(jù)庫。雖然Navicat的UI看起來有點過時,但它具有完整的功能,并且在操作數(shù)據(jù)庫時提供了流暢的整體體驗。

基于GUI的SQL客戶端是對基于CLI的SQL客戶端的良好補充。從根本上講,它們的工作方式是一樣的。用戶可以快速方便連接到數(shù)據(jù)庫并執(zhí)行一些SQL。另一方面,在數(shù)據(jù)庫更改管理和數(shù)據(jù)安全方面缺乏控制。本文將以Navicat為例進行詳細介紹。

Gitops /數(shù)據(jù)庫即代碼

為了更好地管理和控制數(shù)據(jù)庫模式更改,一些工具在數(shù)據(jù)庫更改中引入了代碼更改過程,稱為數(shù)據(jù)庫即代碼(Database-as-Code)。

1.Liquibase

Liquibase創(chuàng)建于2006年,是一個用于跟蹤、管理和應用數(shù)據(jù)庫更改的開源庫。一個有趣的事實是:Liquibase于2012年被一家名為Datical的公司收購,并更名為Datica,但隨后于2020年更名為Liquibase(這是明智之舉,見過有人在論壇上提到過Datica嗎?)。

Liquibase的主要產(chǎn)品是基于Java的CLI,它允許開發(fā)團隊通過CLI將數(shù)據(jù)庫模式遷移集成到他們的CI/CD工作流中。

2.Flyway

Flyway與Liquibase在很多方面有相似之處:它們都是成立時間較長的數(shù)據(jù)庫,擁有客戶群,而且都是開源項目。它的核心產(chǎn)品是CLI和Java庫。

Flyway背后的商業(yè)實體是Redgate(于2019年被收購)。它有3個版本:社區(qū)、團隊和企業(yè)??梢钥闯?,他們在開源和商業(yè)產(chǎn)品之間劃出了一條清晰的界限:Flyway的網(wǎng)站總體上感覺更隨意,而Redgate的方式更專業(yè)。

Liquibase和Flyway并駕齊驅(qū)。兩者的主要區(qū)別在于各自的定位:Liquibase更面向企業(yè),而Flyway更面向開發(fā)者。

3.Sqitch

Sqitch是一個純開源項目,自從2012年以來一直沒有商業(yè)產(chǎn)品上市。它是純粹的CLI,沒有UI。

與基于Java的Liquibase和Flyway不同,Sqitch是使用Perl開發(fā)的。此外,Sqitch在如何管理數(shù)據(jù)庫模式更改方面有自己的理念:Liquibase和Flyway都使用文件命名約定來安排模式遷移(約定高于配置)。

而Sqitch采用了一種顯式的方法,允許用戶在Sqitch計劃中指定順序。

4.Atlas

Atlas是一個由Ariga構建的開源工具,并推廣了“數(shù)據(jù)庫模式即代碼”這一術語。

可以看出,他們從HashiCorp那里獲得了很多靈感,并在首次出現(xiàn)在Hacker News上時將自己稱為“數(shù)據(jù)庫遷移的Terraform”。他們還發(fā)明了基于HCL (HashiCorp配置語言)的Atlas HCL。

Atlas使用現(xiàn)代編程語言Go(與使用Java的Liquibase/Fireway不同),并以CLI為中心(類似于Liquibase.Fireay/Sqitch),但它也有一個輕量級的UI。Atlas Cloud是一個開源版本的商業(yè)產(chǎn)品。

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

1.Prisma

像Prisma這樣的ORM針對的是代碼如何與數(shù)據(jù)交互的領域。雖然這更多的是一個后端主題,但Prisma是一個具有前端根的ORM。前端工程師可能不是最精通SQL的。為了降低管理數(shù)據(jù)庫模式的障礙,Prisma發(fā)明了它的DSL來定義數(shù)據(jù)模型。

DSL是基于狀態(tài)的(聲明性的),它描述了數(shù)據(jù)庫模式的最終狀態(tài),而不是增量變化,這與Liquibase/Flyway/Sqitch不同。通過這種方式,Prisma可以在整個應用程序開發(fā)周期中提供更全面的數(shù)據(jù)庫管理視圖。

Prisma ORM是開源的,可以免費使用,他們的數(shù)據(jù)平臺提供了一個基于云的協(xié)作平臺,具有一些高級功能(很明顯,他們的目標不僅僅是一個ORM和模式遷移工具)。

2.Bytebase

Bytebase是一個開源數(shù)據(jù)庫DevOps工具,涵蓋了數(shù)據(jù)庫管理場景,從變更、查詢、安全性到基于Web的可視化協(xié)作工作區(qū)的治理。

Bytebase提供了一個基于Web的UI,開發(fā)人員和DBA可以通過同一個界面協(xié)作處理數(shù)據(jù)庫更改。

3.數(shù)據(jù)庫即代碼(Database-As-Code

為了更好地適應開發(fā)人員的工作習慣,Bytebase已經(jīng)將功能集成到代碼庫中,例如itLab和GitHub。通過啟用GitOps工作流,開發(fā)人員可以將數(shù)據(jù)庫更改文件提交到熟悉的代碼存儲庫,一旦審查完成并提交到repo, Bytebase將自動觸發(fā)部署。無需在多個工具之間切換。

4.團隊協(xié)作與管理

用戶可以為兩個級別的成員定義不同的角色:工作區(qū)和項目。可以為團隊成員分配不同的角色,以便他們對不同的項目具有不同的權限;或者為每個項目配置審批工作流,例如指定負責此特定項目的特定DBA或QA。

Prisma和Bytebase的區(qū)別在于目標受眾。Prisma主要針對前端/全棧開發(fā)人員,而Bytebase更專注于后端和DBA。這兩款產(chǎn)品都提供協(xié)作功能,Prisma專注于單個項目中開發(fā)人員之間的協(xié)作,而Bytebase針對整個工程組織,即開發(fā)人員和DBA/平臺工程/運營團隊。

結(jié)語

如果用戶以個人身份操作數(shù)據(jù)庫,那么傳統(tǒng)的CLI或GUI SQL客戶端(如Navicat)就足夠了。如果更喜歡與代碼庫集成,有像Liquebase和Flyway這樣的解決方案。然而,對于類似Jira或GitLab的GUI和項目協(xié)作功能,可以選擇Prisma和Bytebase。Bytebase是唯一一個提供組織范圍管理功能的工具,除了使數(shù)據(jù)庫更改更高效和更安全之外,還可以確保數(shù)據(jù)安全和治理。

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

責任編輯:華軒 來源: 51CTO
相關推薦

2010-06-07 10:00:45

MySQL數(shù)據(jù)庫

2010-03-31 13:47:22

Oralce數(shù)據(jù)庫

2020-06-08 10:41:13

云計算數(shù)據(jù)工具

2025-06-11 08:05:00

Go數(shù)據(jù)庫遷移開發(fā)

2020-02-27 09:00:00

數(shù)據(jù)庫設計工具

2025-07-03 08:26:10

數(shù)據(jù)庫遷移工具策略

2018-08-10 07:50:45

數(shù)據(jù)庫數(shù)據(jù)庫設計實踐步驟

2021-04-09 08:21:25

數(shù)據(jù)庫索引數(shù)據(jù)

2021-11-15 08:24:17

數(shù)據(jù)庫database同步工具

2011-05-11 10:26:36

MySQL數(shù)據(jù)庫無縫遷移

2011-11-10 14:42:11

2011-09-23 09:09:38

數(shù)據(jù)庫遷移

2020-08-13 07:42:15

數(shù)據(jù)庫Flyway代碼

2022-07-27 08:12:44

SchemaHero云原生

2021-07-07 10:12:08

數(shù)據(jù)庫工具技術

2022-12-15 15:34:50

數(shù)據(jù)中心云遷移

2014-12-09 14:03:51

甲骨文Oracle數(shù)據(jù)庫

2022-02-10 10:51:35

數(shù)據(jù)庫

2020-06-04 08:11:56

數(shù)據(jù)庫開發(fā)SQL Server數(shù)據(jù)庫

2022-09-05 15:12:34

數(shù)據(jù)庫GitHub開發(fā)
點贊
收藏

51CTO技術棧公眾號