Database-Design

數據庫開發階段是否與軟體開發階段相同?

  • August 9, 2022

在軟體開發中,它會經歷一系列階段——Dev、Test、UAT、Staging、Demo 和 Production。

這是我通過網際網路閱讀/研究後認為是正確的。

數據庫開發

  1. 在單獨的數據庫中開發數據庫(與產品版本相同,僅使用測試數據)
  2. 測試開發數據庫(與產品版本相同,僅使用測試數據)
  3. 推廣到產品數據庫

我的問題是:

  1. 我在上述數據庫開發階段是否正確?
  2. 數據庫開發中是否有等效的 UAT/Staging/Demo?
  3. 如果第 1 點是正確的,人們如何在開發/測試數據庫上創建/工作並最終將其推送到產品數據庫?

PS:我是數據庫新手,所以請放輕鬆!謝謝!

對於數據庫開發,您可以選擇盡可能多地使用通常用於應用程序軟體開發的相同環境。大多數人可能沒有您上面列出的所有六個獨立環境(即使是正常的應用程序軟體開發),但至少有一個 DEV、STAGING 和 PROD 環境是很常見的。有些人也選擇配置 UAT 環境。

  1. 我在上述數據庫開發階段是否正確?

這或多或少是正確的。我要更正的唯一一點是 DEV 中的版本總是大於或等於 PROD 中的版本。自然,如果開發人員對 DEV 中的數據庫進行更改,它現在是比 PROD 數據庫更新的版本。當然,可以在 DEV 中撤消該更改,但 DEV 絕不應該是比 PROD 更舊的版本,只是因為更改應該首先在 DEV 中進行,然後部署到任何中間環境,最後部署到 PROD。

  1. 數據庫開發中是否有等效的 UAT/Staging/Demo?

是的,這些是等價的。如果您在部署工作流程中決定它們,那麼其中任何一個都是可接受的環境。

  1. 如果第 1 點是正確的,人們如何在開發/測試數據庫上創建/工作並最終將其推送到產品數據庫?

有多種方法可以手動和自動管理環境之間的部署和刷新。這僅取決於您的業務需求和您使用的數據庫系統。

目前我支持 DEV、STAGING 和 PROD 環境。我的工作流程是在 DEV 中進行更改並跟踪我更改了哪些對象。當我準備將目前版本的 DEV 升級到 STAGING 時,我執行一組腳本,這些腳本從 PROD 數據庫的最新備份中刷新 STAGING。這些腳本還進行適當的數據混淆和特定於 STAGING 環境的更改。(這些腳本都是我創建的數據庫作業的一部分,因此我只需按一個按鈕即可從 PROD 刷新 STAGING。)

從 PROD 刷新 STAGING 後,我使用模式遷移工具(稱為 SQL Examiner)比較 DEV 和 STAGING 數據庫的差異,並自動生成從 DEV 到 STAGING 的遷移腳本。

然後,我在我的 STAGING 環境中執行這些腳本,並將相關的 STAGING 應用程序交給適當的使用者進行測試。一旦他們接受更改已準備好 PROD,我將這些腳本鎖定在原始碼控制中,以便它們為我們部署到 PROD 的那一天做好準備。此時,可以在 DEV 中進行進一步的更改,而不必擔心它們與準備好用於 PROD 的鎖定版本發生衝突。它們都將成為未來候選版本的一部分。

然後,當需要部署到 PROD 時,我們以與在 STAGING 環境中執行的相同方式執行完全相同的腳本。現在 PROD從 DEV趕上了那個版本。

所有這一切的關鍵是 STAGING 環境,它是 DEV 和 PROD 之間的握手。它可以以最少的護理從任一方向進行更新。它通過來自 PROD 環境的刷新和/或來自 DEV 環境的部署來持續維護。這創建了一個良好的工作流程,可確保在所有環境中進行正確的版本遷移和測試。

引用自:https://dba.stackexchange.com/questions/315389