Datical為資料庫新增持續交付能力

2021-09-16 18:20:45 字數 3556 閱讀 4176

\u0026#xd;\n

\u0026#xd;\n

\u0026#xd;\n\u0026#xd;\n

資料庫發布自動化提供商datical發布了新版本datical 5。該版本實現了一種集中命令中心,提公升了資料庫版本的可見性,支援開發人員在無需手動應用**更改的情況下,管理並重做(rework)資料庫**更改。此外,該版本還增強了資料庫憑證和可審計性的安全。

\u0026#xd;\n\u0026#xd;\n

datical 5提供了一組儀表板和管理介面,可供開發人員和資料專家訪問。儀錶盤上展示了資料庫版本的狀態和進展速度,管理介面則用於跟蹤資料庫在整個發布流水線中的更改情況。它還支援在強制執行審計和合規性規的同時,對部署變更到環境之前模擬變更所產生的影響。

\u0026#xd;\n\u0026#xd;\n

新版本解決了在資料庫迭代開發中存在的一些挑戰,允許開發人員檢入需重做的資料庫**更改。當前,重做資料庫更改是一項具有挑戰性的工作。因為一旦應用發生更改,資料將即刻被新增、修改、重新組織或刪除。要重做更改,資料庫管理員必須手動地撤消以前的更改。這增舔了一部分額外的工作,並對應用的發布過程給出了一些潛在的限制。

\u0026#xd;\n\u0026#xd;\n

datical 5可自動回退不必要的資料庫更改,並應用更新後的更改。由於缺乏統一的標準和控制,管理資料庫環境憑證和訪問很有可能是乙個高風險的流程。新的集中式憑證儲存,提供了一種管理整個企業資料庫憑證的標準方法。它還可處理利益相關者的訪問控制,提供對集中管理介面的適當訪問,從而提高資料的安全性。這有助於組織使用者,並強制執行部署狀態檢視或資料庫更改的相關許可權。

\u0026#xd;\n\u0026#xd;\n

正如eduardo piairo撰寫的「將資料庫更改新增到部署流水線中的原因及做法」一文中所說的:

\u0026#xd;\n\u0026#xd;\n

\u0026#xd;\n

資料庫和應用應並存於同一部署流水線中。換句話說,二者應分享同樣的開發生命週期。但應區別對待資料庫開發和應用開發。

\u0026#xd;\n

\u0026#xd;\n\u0026#xd;\n

piairo建議,資料庫部署應使用一種**驅動的方法:

\u0026#xd;\n\u0026#xd;\n

\u0026#xd;\n

如果使用指令碼實現所有的資料庫更改,那麼就可以對資料庫更改應用源**控制,並且可將持續整合和持續交付活動包括到資料庫開發中。也就是說,資料庫更改可以參與到部署流水線中。

\u0026#xd;\n

\u0026#xd;\n\u0026#xd;\n

piairo還列出了在自動化資料庫部署中應採取的步驟:

\u0026#xd;\n\u0026#xd;\n

\u0026#xd;\n

第一步是使用指令碼實現資料庫更改。在一般情況下,該步驟是手工完成的。下一步是構件(artefact)的構建和驗證,構件中包括了資料庫更改。這一步應實現完全的自動化。換句話說,我們需要使用指令碼實現構建軟體包、執行單元測試和整合測試、將軟體包傳送給構件管理系統和(或)傳送給部署伺服器或服務。正常情況下,構建伺服器預設包括了上述步驟。最後一步是在目標伺服器或資料庫中實現資料庫更改的自動化部署。和前面的步驟一樣,你可以使用部署伺服器的內建選項,也可以構建自己定製的指令碼。

\u0026#xd;\n

\u0026#xd;\n\u0026#xd;\n

datical的高階產品市場經理sanjay challa在他的部落格帖子「使用jenkins推送資料庫更改存在什麼問題?」中指出:

\u0026#xd;\n\u0026#xd;\n

\u0026#xd;\n

資料庫更改當然可以提交給源**控制。這些指令碼可從源**控制中檢出,並使用持續整合工具打包到構件中。所生成的構件可以推送到構件倉儲中,並在倉儲中使用發布自動化工具,隨發布流水線部署到環境,直至生產環境。

\u0026#xd;\n

\u0026#xd;\n\u0026#xd;\n

but challa進而建議,應慎重使用該方法:

\u0026#xd;\n\u0026#xd;\n

\u0026#xd;\n

有必要提醒大家,資料庫是具有狀態的。因此,必須要慎重管理資料庫更改,因為我們並不想破壞資料庫的狀態。儘管可以使用更改的版本覆蓋應用的舊版本而實現替換,但是這種簡單的做法並不適用於資料庫。乙個不良的資料庫版本,可能會對企業造成不可恢復的資料損失,也可能導致應用大量停止服務。和大多數應用可執行檔案一樣,根本不可能「吹乾淨」舊版本的資料庫。然後用更新後的版本覆蓋它。

\u0026#xd;\n\u0026#xd;\n

根本上講,如果僅依靠構建、配置和發布自動化工具來管理資料庫部署,那麼會使資料處於風險之中。考慮到不良更改的後果,資料庫更改通常單獨使用手動過程處理。組織的執行將會繼續維持手工資料庫更改過程所固有的一些特點,例如應用發布速度較低,**質量較低等。最後一點,如果單純依靠構建和發布自動化工具,應用和資料庫更改將永遠不會以相同的速度通過發布流水線。

\u0026#xd;\n

\u0026#xd;\n\u0026#xd;\n

challa解釋說,為使資料庫更改通過應用**所歷經的同乙個統一的發布流水線,需要一系列特性的支援。通常需要重做資料庫更改,並且由於需要保持資料庫的狀態,因此相比起重做任何其他型別的**,重做資料庫更改需要做更多的工作。通常,dba必須手動完成資料庫環境的恢復,這樣開發人員才能重做更改。如果沒有手動撤消需重做的更改,那麼會在較低層級的環境中將會執行有差異的前滾,進而有差異的更改將會應用於未受初始更改影響的較高層級環境。這破壞了devops「一次構建,多次部署」的理念,因為較高層級的部署與較低層級的部署間存在不一致。

\u0026#xd;\n\u0026#xd;\n

當開發人員可以像處理應用**一樣處理資料庫**,並將更新後的資料庫版本更改檢入源**控制時,這時可以使用一種工具去智慧型地清理較低層級的環境,在其中生成舊版本更改,並應用更新後的版本(並將更新後的更改正確地應用於從未受到舊版本更改影響的更高層級環境)。這將降低了資料庫狀態受損的風險,去除了手動作業,使得一致性構件可通過流水線得以部署。

\u0026#xd;\n\u0026#xd;\n

challa接著解釋說,資料庫**驗證通常是乙個完全手動的過程,它不會通過我們在持續整合或交付流水線中所期望的自動化測試。datical提供的dynamic rules engine解決了這個限制,它允許組織編撰標準和最佳實踐,對資料庫**做自動驗證。它使用的是基於物件的規則引擎,而不是簡單的正規表示式引擎,因此可以實現功能性規則(例如,限制每個表的索引總數)。這去除了手動作業,並可對提交源**控制的資料庫更改做出快速反饋。datical的change management simulator通過構建目標資料庫的記憶體模型,將建議更改應用於模型中,進而驗證模型的最終狀態是否符合預期。

\u0026#xd;\n\u0026#xd;\n

datical 5當前發布的是beta版,ga版計畫於2023年第二季度發布。

\u0026#xd;\n\u0026#xd;\n

檢視英文原文:datical adds continuous delivery capabilities for the database

Datical為資料庫新增持續交付能力

資料庫發布自動化提供商datical發布了新版本datical 5。該版本實現了一種集中命令中心,提公升了資料庫版本的可見性,支援開發人員在無需手動應用 更改的情況下,管理並重做 rework 資料庫 更改。此外,該版本還增強了資料庫憑證和可審計性的安全。datical 5提供了一組儀表板和管理介面...

Datical為資料庫新增持續交付能力

資料庫發布自動化提供商datical發布了新版本datical 5。該版本實現了一種集中命令中心,提公升了資料庫版本的可見性,支援開發人員在無需手動應用 更改的情況下,管理並重做 rework 資料庫 更改。此外,該版本還增強了資料庫憑證和可審計性的安全。datical 5提供了一組儀表板和管理介面...

Datical為資料庫新增持續交付能力

資料庫發布自動化提供商datical發布了新版本datical 5。該版本實現了一種集中命令中心,提公升了資料庫版本的可見性,支援開發人員在無需手動應用 更改的情況下,管理並重做 rework 資料庫 更改。此外,該版本還增強了資料庫憑證和可審計性的安全。datical 5提供了一組儀表板和管理介面...