sql server 開發最佳體驗
公司看我比較閒,這周開始讓我去做 sql-server 資料庫開發。
一開始覺得資料庫有什麼好開發的,很多業務直接寫到應用層,資料表操作和查詢都直接讓應用來寫,不是挺好的嘛。但是看了一下已經寫好的部分儲存過程,被裡面簡單直接的寫法驚訝到了,雖然沒有像應用那麼直接可以有各種豐富資料型別、方法可以使用,但是就資料來說,xxxxxx。。。。。總之,沒想到還能這麼搞。對於使用 sql server 就4天的我來說,形容 sql server 開發的詞不多。
好的,不廢話,寫這篇文章的主要目的是因為,sql server 上寫程式碼非常非常非常的不爽。
1. 檔案的組織關係找不到。平時寫的程式碼都有程式碼檔案,但是資料庫的表,儲存過程,真心不好管理。
2. sql server studio 工具使用的非常不習慣,因為使用了十來年的蘋果系統,現在在 windows 系統上用這個工具。非常的不習慣。
3. 儲存過程執行生效的環節,讓初學者難以理解。首次修改某一儲存過程時候,從資料庫裡面拉一份儲存過程下來編輯,編輯好之後再要“執行”生效。如果有多個人協同開發,就可能存在彼此覆蓋的問題。而且如果每次從資料庫裡面拉程式碼下來,只能 呵呵,開發超級累。
摸索並請教過資料庫大神之後,較為合理的開發方式是:
1. 維護一個類似 table.sql 的檔案,將自己或者團隊共同維護的專案所 建的表,都寫到一個檔案裡面去。在開發過程中,將表的變更、建立等操作都寫到該檔案。當需要升級服務資料庫的時候,將新增的部分指令碼,在目標伺服器上執行一次。
2. 將儲存過程的程式碼本地維護一份,並傳到 SVN 上進行管理。當需要升級的時候,將新的儲存過程程式碼挑出來,然後在待升級的資料庫上,“執行”一次儲存過程的程式碼。
這樣看來,持續的做多輪迭代的資料庫開發,也是可以來做的。
但是,不喜歡 windows 的開發環境,以及在 sql server studio 上操作執行儲存過程的方式,還有寫出來的程式碼,不好備份,不好比較,不好測試等等在寫應用時非常自然的開發習慣 全部找不到落腳點了!非常難受。
所以,一直在想,怎樣的開發實踐方案最爽呢,找到了 visual studio code 的一個 sql server 外掛
主要使用這麼幾點:
1. 使用一個 開發 IDE 工具來寫 t-sql 程式碼
2. 每個 t-sql 語句,包括建表等表操作,儲存過程,函式等,都可以建工程然後儲存固定的位置,然後用 git 來管理程式碼,協同開發。
3. 工程裡面包含測試用例的 sql 檔案和簡單易行的 其他語言的指令碼檔案來呼叫測試。
4. 多個 sql server 環境快速的切換。
5. 資料庫伺服器升級方案,通過 git 比較來篩選出上一版本和當前版本的差異內容,然後生成 升級包(其實就是差異的 sql 語句)。
具體實踐步驟,我準備自己再多用用再在下文寫出來。這會先把理想的專案結構給構造出來,以後還可以做一個 sql-server 專案的腳手架,哈哈。不過現在是不是 sql server 開發的人沒那麼多了,估計沒什麼人來使用。
另外,我還需要多看看別人怎麼做 sql server 開發實踐的。最後,大家不要被我只看了4天 t-sql 程式碼的我給糊弄了,應該還有很多更好的開發實踐方式 我沒見過。
==========
晚上又試了下 大名鼎鼎的 datagrip , 貌似更加好用。。。也許這個工具才是最佳實踐方式