Skip to content

領域模型

這份文件是 核心概念 的延伸版。如果你只想要一張總圖+表,這頁就夠了。

結構

text
Workspace
   └── Environment (Dev / Staging / Prod ...)
         └── Instance (一個資料庫 server)
               └── Database (一個資料庫)

                       │ transfer
                       v
                    Project
                       └── Plan (想做的變更)
                             ├── PlanCheckRun*  (自動體檢,多個)
                             └── Issue (處理中的單據,含審批)
                                   └── Rollout (執行容器)
                                         └── Task* (每 DB 一個)
                                               └── TaskRun* (每次執行一筆)

Release ── 凍結 Plan 的某個快照
Revision ── 已實際施加到 DB 的紀錄(執行成功後產生)

物件總覽

物件範圍一句話生命週期
Workspace全域整個 Argus instance 的最外層容器唯一,部署即存在
EnvironmentWorkspace例:Dev / Staging / Prodadmin 建立
InstanceEnvironment一個資料庫 serverDBA 接入
DatabaseInstance一個 logical DBsync 自動發現
ProjectWorkspace變更與審批的範圍邊界admin / lead 建立
PlanProject「我想做」draft → checking → ready → issued → done
PlanCheckRunPlan自動體檢pending → running → done(success/warning/error)
IssueProject「處理中」open → approved → done / canceled
RolloutIssue執行容器pending → running → done / canceled
TaskRollout, Database單一 DB 上的單一動作pending → running → done / failed
TaskRunTask一次執行紀錄running → done / failed(task 可重試→多筆)
ReleaseProject凍結版本published → archived
RevisionDatabase已施加變更紀錄append-only

重要設計決定

1. Plan 和 Issue 為何分開

  • Plan:技術內容(SQL、影響範圍、檢查結果)
  • Issue:協作流程(誰來審、誰來執行、狀態追蹤)

同一個 Plan 可以被多個 Issue 引用(少數情境,例如重做、補票)。

2. Task vs TaskRun

Task 是「計畫要在這個 DB 上做這件事」,TaskRun 是「第 N 次嘗試這件事」。

  • 同一個 Task 可能對應 0..N 個 TaskRun
  • 0 個 → 還沒執行
  • 1 個 → 一次過
  • N 個 → 重試 N 次(含失敗)

這讓我們可以保留所有歷史執行,不會因為重試而蓋掉前一次的 log。

3. Composite PK

plan / issue / task / task_run / plan_check_run / plan_webhook_delivery / db_group / release / task_run_log 都用複合主鍵(通常 (project, id))。

意義:id 本身不唯一,必須帶上 project 才能定位。所有 SQL predicate 都要帶完整 PK。

詳見:Migration / Composite-PK 表清單

4. Release 與 Revision 的分工

ReleaseRevision
對象Project(多個 DB)單一 Database
時機提早凍結(version cut)執行完成後產生
用途版本管理 / 多環境推進「這個 DB 已經到哪版」
可變?凍結後不可改內容append-only

詳細頁

Argus — 公司內部資料庫變更審計平台