接oracle私活价格,也来记录一下第一次接私活的体验
來源
所在部門領導答應另一個部門領導解決業務上的一些問題,剛好是我負責。由于各總原因,沒過試用期,領導需要我離職了,跟另一個部門領導確認后,就在離職前 2 天加個班,交付了已經完成的部分。
大概 2 個月后,前同事找我,說要繼續做剩下的部分。
項目內容
其實就是把已經在用的 ERP ( Oracle 數據庫) 對接簡道云的 API,包括推送數據到簡道云和從簡道云接收表單數據兩個部分,而 ERP 這塊是沒有源代碼進行二次開發的,只能修改下數據庫存儲過程。
由于時間限制,在職時交付的代碼主要目的是驗證可行性,完成剩余部分的功能需要做一些重構。做了一個分兩階段交付的計劃,首先是重構基礎代碼,再來交付添加新功能的代碼。
數據推送
之前有做過一個 Laravel 項目,用的 Laravel Queue 加上數據庫作為隊列存儲。因為 Lavael Queue 的實現是輪詢表,然后代碼維護了隊列各種邏輯,覺得不夠優雅 :doge:,加上這次需要用 Python 來實現,所以要另找辦法。
仔細查了 Oracle 的官方文檔之后發現有個 Advanced Queue 功能,另外還順便查了下 SQL Server 的 Service Broken 也有個 Message Queue,并且兩者都有 CDC 功能。因為不需要收集所有變化的數據,所以就不用 CDC 了。
實現思路是由存儲過程將定義好結構的 Message Object push 到 Queue,python 代碼獲取,并轉換結構,推送到指定的 API。整個過程是異步的,不會增加事務耗時,隊列的有序、可靠性、重試直接用數據庫自帶機制就能實現。
坑
坑總是避不掉的,這里新舊坑都說一下。
數據庫時區
數據庫用的是 UTC+0 時區,但 ERP 客戶端應用處理業務數據都是把時間當本地時間看的,也就是整個 ERP 系統的時間其實是錯的,還不能去修正。
長連接無法保持
本來 Advanced Queue 是可以做成監聽模式,但是我發現無法保持長連接,并且還不會報錯!問了下才知道,服務器那邊數據庫實例隨時可能會重啟之類的。沒辦法,改成輪詢模式,并且每次都主動打開關閉連接。因為簡道云 API 的請求頻率限制,性能影響這點可以忽略。
部署到 Windows
開始做的時候說了是要部署到 Linux,結果臨交付了說要弄到 Windows 上。
Windows 服務器(附帶 360 全家桶)根本就沒更新過,缺少 VC++ 庫需要的補丁,安裝不了 Python3.6 依賴的 VC++ 庫,運行不了 Python3.6 !考慮直接使用系統更新功能需要安裝的補丁太多,怕更新失敗服務器就起不來,只能查補丁依賴列表,手動安裝 VC++ 庫需要的補丁。
簡道云 API 更新了
準備驗收結款了,簡道云 API 更新了:doge:,不過不是兼容問題,只是增加了部門成員查詢接口。最開始做的時候,隨口說過的話把自己坑了——這個功能是 API 不支持,否則肯定給你們做。
加了個部門成員信息定時同步到本地數據庫的功能,然后我覺得反正做都做了,就再加了個企業微信通知推送報錯信息,后面出問題好查一些。
結果
因為自己也覺得應該把之前的事情做完,預計 5 個工作日,不會很肝,所以報價 3000,最終交付完成總計 3 周(僅工作日)。
超期的原因:
拯救艾澤拉斯
各個階段交付時不能影響正在運行的業務,反饋需要有等待時間
需求變化
需求增加
總結
術士不配拯救艾澤拉斯(已 A )
下次別給自己加戲了,吃飯要緊
事后
抽空重構了一個版本,加上了 SQL Server 的支持,不過總的來說實際意義不大,畢竟應用場景太小眾,而收集分析數據 CDC 方式更合適。另外還可以 Message Queue 觸發存儲過程實現一些業務,或者單機實現異步執行存儲過程,不過互聯網應用應該是不存在對數據庫編程強依賴的場景,依舊用處不大。
不過如果你剛好有 SQL Server 或者 Oracle 需要通過數據庫觸發 API 之類的需求,還是可以參考一下的。
總結
以上是生活随笔為你收集整理的接oracle私活价格,也来记录一下第一次接私活的体验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 杭州地名集趣
- 下一篇: 简述软件黑盒测试的方法,简述什么是黑盒测