綱要演進 是什麼?
Schema Evolution — 綱要演進 的完整解釋
綱要演進是指資料庫或資料倉儲的綱要隨著時間推移而發生的變更,以及管理這些變更的過程,以確保資料的相容性和可用性。
容易混淆
綱要演進 vs 資料遷移
綱要演進是結構在原地變更 資料遷移是把資料搬到別的結構或系統 最關鍵的區別是改結構還是搬資料。
綱要演進 vs 資料漂移
綱要演進是資料格式或欄位定義改變 資料漂移是資料分布變了 最關鍵的區別是 schema 變還是資料內容變。
記住這句就好
欄位會變,重點是新舊版本還能不能互通。
實際案例
加欄位 原本的使用者表新增生日欄位,如果處理得好,舊程式仍然能讀原本資料。
欄位改名 把
phone改成mobile_phone時,後端和資料管線都要一起跟上版本。
算法與應用
常見原則是保持向後相容或向前相容,避免一次改壞所有系統。 實務上常搭配版本控制、灰度發布和資料轉換。 綱要演進做不好,報表、模型和 API 都會一起出問題。
情境判斷
Q1(直覺題):如果你只是新增一個欄位,但老系統還要能正常讀舊資料,這叫什麼問題?
→ 這是在處理綱要演進的相容性問題。
Q2(判斷題):欄位一改名,所有服務都一定要同時停機嗎?
→ 不一定。做得好可以靠版本與相容層降低停機風險。
相關術語
常見問題
怎麼處理綱要演進的相容性?
A:常見做法是版本控制、轉換層和測試一起上。
什麼是零停機綱要演進?
A:就是在改結構的同時,系統仍能繼續提供服務。
綱要演進最重要的原則是什麼?
A:先想清楚新舊版本如何共存,再動手改結構。