天天看點

【DB吐槽大會】第63期 - PG 缺乏跨版本相容性評估工具

背景

1、産品的問題點

  • PG 大版本更新不支援業務側相容性自動評估

2、問題點背後涉及的技術原理

  • PG 的大版本更新方式較多: 支援pg_upgrade導出中繼資料的模式, 邏輯增量定義的模式, 全量導出導入的模式.
  • 但是高版本和低版本之間可能存在一些不相容的點:
    • 插件版本是否不相容
    • SQL文法是否不相容, 是否去掉了某些文法, 是否去掉了某些函數.

3、這個問題将影響哪些行業以及業務場景

  • 通用, 大版本更新時
    • 業務想使用大版本的新功能或提升性能,
    • 業務使用的資料庫版本太老, 社群已經不支援, 被迫更新到大版本

4、會導緻什麼問題?

  • 業務需要自己評估版本更新後業務是否相容.
    • 通常比較麻煩, 需要去看PG的release notes, 看裡面的大版本更新相容性部分, 通常隻會将與上一個版本的差異, 不會涉及到與更早的版本之間的差異.
    • 如果更新跨了很多個大版本, 需要看很多release notes, 比較複雜.

5、業務上應該如何避免這個坑

  • 必須搜集所有的SQL、插件、定義等, 根據release notes的大小版本差異逐條比對是否存在不相容的問題.

6、業務上避免這個坑犧牲了什麼, 會引入什麼新的問題

  • 比較複雜, 容易出問題.

7、資料庫未來産品疊代如何修複這個坑

  • 希望資料庫提供可評估業務側相容性報告的工具, 類似阿裡雲adam(采集中繼資料、應用SQL請求等, 在大版本庫中回放, 或根據已有規則判定相容性), 報告業務運作的SQL , DDL 等在更新到大版本後, 有哪些不相容, 應該怎麼改等.

https://github.com/digoal/blog/blob/master/202109/20210929_08.md#postgresql-%E8%AE%B8%E6%84%BF%E9%93%BE%E6%8E%A5 https://github.com/digoal/blog/issues/76