優秀資料庫模式遷移工具的發展歷程

2023-10-19 19:06:45 字數 3870 閱讀 3524

譯者:李睿。

資料庫模式遷移可能是應用程式開發中風險最大的領域——因為這是乙個困難的、有風險的和痛苦的過程。資料庫模式遷移工具的存在是為了減輕這種痛苦,並且已經取得了長足的進步:從基本的cli工具到gui工具,從簡單的sql gui客戶端到一體化協作資料庫平台。

mysql和psql分別是mysql和postgresql的本地cli,可以從命令列直接向mysql或postgresql伺服器傳送命令或查詢。

儘管cli介面很簡單,但有時它會讓初學者望而生畏。然而,根據timescale公司的2023年postgresql狀態調查結果,psql是最受歡迎的與postgresql互動的工具,超過了pgadmin和dbe**er等gui工具。

phpmyadmin和pgadmin是經典的sql客戶端。phpmyadmin已經是乙個管理mysql和mysql相容資料庫(例如mariadb)的工具,而pgadmin是postgresql的對應工具,現在已經發展到pgadmin 4。與cli工具相比,phpmyadmin和pgadmin提供了乙個用於執行和執行sql查詢的使用者介面(ui),使它們更加友好。

dbe**er的最初版本發布於2023年,這款開源sql客戶端支援各種資料庫(sql、nosql和雲資料庫),並通過整合openai公司的gpt功能跟上人工智慧領域的最新趨勢,允許將自然語言轉換為sql。

n**icat於2023年首次發布。它當時只支援mysql,但後來增加了更多的資料庫。雖然n**icat的ui看起來有點過時,但它具有完整的功能,並且在運算元據庫時提供了流暢的整體體驗。

基於gui的sql客戶端是對基於cli的sql客戶端的良好補充。從根本上講,它們的工作方式是一樣的。使用者可以快速方便連線到資料庫並執行一些sql。另一方面,在資料庫更改管理和資料安全方面缺乏控制。本文將以n**icat為例進行詳細介紹。

為了更好地管理和控制資料庫模式更改,一些工具在資料庫更改中引入了**更改過程,稱為資料庫即**(database-as-code)。

liquibase建立於2023年,是乙個用於跟蹤、管理和應用資料庫更改的開源庫。乙個有趣的事實是:liquibase於2023年被一家名為datical的公司收購,並更名為datica,但隨後於2023年更名為liquibase(這是明智之舉,見過有人在論壇上提到過datica嗎?)。

liquibase的主要產品是基於j**a的cli,它允許開發團隊通過cli將資料庫模式遷移整合到他們的ci/cd工作流中。

flyway與liquibase在很多方面有相似之處:它們都是成立時間較長的資料庫,擁有客戶群,而且都是開源專案。它的核心產品是cli和j**a庫。

flyway背後的商業實體是redgate(於2023年被收購)。它有3個版本:社群、團隊和企業。可以看出,他們在開源和商業產品之間劃出了一條清晰的界限:flyway的**總體上感覺更隨意,而redgate的方式更專業。

liquibase和flyway並駕齊驅。兩者的主要區別在於各自的定位:liquibase更面向企業,而flyway更面向開發者。

sqitch是乙個純開源專案,自從2023年以來一直沒有商業產品上市。它是純粹的cli,沒有ui。

與基於j**a的liquibase和flyway不同,sqitch是使用perl開發的。此外,sqitch在如何管理資料庫模式更改方面有自己的理念:liquibase和flyway都使用檔案命名約定來安排模式遷移(約定高於配置)。

而sqitch採用了一種顯式的方法,允許使用者在sqitch計畫中指定順序。

atlas是乙個由ariga構建的開源工具,並推廣了「資料庫模式即**」這一術語。

可以看出,他們從hashicorp那裡獲得了很多靈感,並在首次出現在hacker news上時將自己稱為「資料庫遷移的terraform」。他們還發明了基於hcl (hashicorp配置語言)的atlas hcl。

atlas使用現代程式語言go(與使用j**a的liquibase/fireway不同),並以cli為中心(類似於liquibase.fireay/sqitch),但它也有乙個輕量級的ui。atlas cloud是乙個開源版本的商業產品。

像prisma這樣的orm針對的是**如何與資料互動的領域。雖然這更多的是乙個後端主題,但prisma是乙個具有前端根的orm。前端工程師可能不是最精通sql的。為了降低管理資料庫模式的障礙,prisma發明了它的dsl來定義資料模型。

dsl是基於狀態的(宣告性的),它描述了資料庫模式的最終狀態,而不是增量變化,這與liquibase/flyway/sqitch不同。通過這種方式,prisma可以在整個應用程式開發周期中提供更全面的資料庫管理檢視。

prisma orm是開源的,可以免費使用,他們的資料平台提供了乙個基於雲的協作平台,具有一些高階功能(很明顯,他們的目標不僅僅是乙個orm和模式遷移工具)。

bytebase是乙個開源資料庫devops工具,涵蓋了資料庫管理場景,從變更、查詢、安全性到基於web的視覺化協作工作區的治理。

bytebase提供了乙個基於web的ui,開發人員和dba可以通過同乙個介面協作處理資料庫更改。

為了更好地適應開發人員的工作習慣,bytebase已經將功能整合到**庫中,例如itlab和github。通過啟用gitops工作流,開發人員可以將資料庫更改檔案提交到熟悉的**儲存庫,一旦審查完成並提交到repo, bytebase將自動觸發部署。無需在多個工具之間切換。

使用者可以為兩個級別的成員定義不同的角色:工作區和專案。可以為團隊成員分配不同的角色,以便他們對不同的專案具有不同的許可權;或者為每個專案配置審批工作流,例如指定負責此特定專案的特定dba或qa。

prisma和bytebase的區別在於目標受眾。prisma主要針對前端/全棧開發人員,而bytebase更專注於後端和dba。這兩款產品都提供協作功能,prisma專注於單個專案中開發人員之間的協作,而bytebase針對整個工程組織,即開發人員和dba/平台工程/運營團隊。

如果使用者以個人身份運算元據庫,那麼傳統的cli或gui sql客戶端(如n**icat)就足夠了。如果更喜歡與**庫整合,有像liquebase和flyway這樣的解決方案。然而,對於類似jira或gitlab的gui和專案協作功能,可以選擇prisma和bytebase。bytebase是唯一乙個提供組織範圍管理功能的工具,除了使資料庫更改更高效和更安全之外,還可以確保資料安全和治理。

資料的儲存 資料庫(理解篇)

資料庫就是資料存放的地方,資料庫之於資料猶如貨物之於倉庫。實際上,倉庫的作用不僅僅是存放貨物,如果隨意的亂堆亂放,首先,空間利用不合理,會造成很多浪費 其次,取貨不方便,不容易找到,或者直接就是找不到。由此理應合理規劃倉庫空間,對貨物和倉庫的使用進行管理。如入庫,確定擺放位置,記錄入庫數量,以及貨物...

什麼是向量資料庫?

向量資料庫 vector database 是一種專門用於儲存和處理向量資料的資料庫系統。在本文中,我們將向您介紹向量資料庫的基本概念 特點 應用場景以及與類似技術的區別。一 向量資料庫的基本概念。向量資料庫是一種面向向量資料的資料庫,它以向量作為基本資料型別,支援向量的儲存 索引 查詢和計算。向量...

全球資料庫的老大Oracle,再出新品,國人卻不敢用

隨著科技的飛速發展,資料庫技術一直在不斷進步,全球資料庫的老大oracle最新發布了新品oracle database 23c,標誌著資料庫技術領域的一次重大進步。然而,儘管這一產品為全球使用者帶來了令人興奮的增強功能,國人卻不敢用。oracle database 23c的進步功能不可否認。它為全球分...