以下比較不太全面,純粹是個人的理解。可能是針對前一篇文章的補充與說明
1、批量資料的處理比較
業務邏輯:單位a部門劃轉到b部門,業務規則是把a部門的100人的關聯單位改為b部門,同時在人員崗位變化子表裡增加一條變動記錄。
業務實現:
1)儲存過程實現(sp實現)(兩個sql語句)
insert into 崗位變化子表(變化前部門、變化前崗位、變化後部門、變化後崗位、生效時間、操作人、操作時間) select a,崗位,b,崗位,sysdate,當前登入使用者,sysdate from 員工表 where 部門id=a;--完成插入100條子表的資料
update 員工表 set 部門id=b where 部門id=a; --更新員工的部門關聯
commit; --最後提交,sp本身就開啟了事務機制,所以可以放心操作。
2)業務類實現1(符合物件導向的原則)
獲得a部門員工物件,一般是100個員工物件的collection,即生成的sql語句是把所有的員工表的字段都查詢出來,然後迴圈進行員工物件屬性的變更與儲存、子物件的建立與儲存等業務。
3)業務類實現2(有點不太符合物件導向的原則,但效率肯定比前面一種高)
按sp方式執行sql語句。當然要注意開啟事務處理,否則可能會產生垃圾資料喲。
當然可能還有除了這三種之外的實現方式,但這三種應該是最常見的了。其它的內容這裡就不展開說了。希望非專業人士可以看明白。專業人士可以自行計算一下資料庫連線的次數及需要傳輸的資料量。
需求變更:增加操作ip的記錄
所有都要做的事情:增加【崗位變化子表】資料表字段:操作ip
1)sp調整
增加引數ip,修改第一條insert語句即可。
關聯修改:呼叫儲存過程方法重新調整。重新編譯發布
2)業務實現1
修改崗位變化子表的實體類。(一般是重新生成即可)
修改業務邏輯類
重新編譯發布
3)業務實現2
修改崗位變化子表的實體類。(一般是重新生成即可)
修改sql語句
重新編譯發布
2、資料統計類
業務邏輯:定時(每小時或每天)更新使用者排行榜(如積分排行榜),假設使用者積分資料8千萬條資料。
業務實現:sp的方式
建立乙個job佇列執行設定的儲存過程,把統計的結果存到積分排行榜的資料表裡。
適應需求變化:統計的規則可能經常變化,特別是積分系統的調整也是非常頻繁的(可能一周就會有一次,特別是專案上線前期),儲存過程可以很快的修改測試與部署。不需要指定專門的時間去停止所有的web伺服器更新應用來滿足需求的變化。
先寫這些吧,寫東西太耗時間了。還是等壓力測試的資料出來再做一些分析吧。
儲存過程還是業務邏輯層
1.儲存過程是基於計算密集型的業務邏輯。如果是基於操作密集型的就不要用儲存過程了 2.所有資料訪問在應用層封裝為資料訪問層,在那裡,如果sql簡單的話,直接用sql 如果sql複雜,或者資料互動多且中間資料最後不會用到,使用儲存過程 業務邏輯層 優點 功能分層明確,便於在業務邏輯層集中處理業務邏輯,...
Etcd 與Redis 業務應用場景差異
1.豐富的資料型別 string,hash,set zset,list 等 2.讀寫效能優異 3.單執行緒原子性 4.可持久化 aof rdb 5.支援pub sub 訂閱發布模式 高可用方案 哨兵機制 分布式一致性 redis主從為非同步複製模式,一致性無法保證 多節點資料一致性強依賴網路延遲 主...
儲存過程根據業務場景自己摸索的寫法
自己摸索的最low寫法 begin declare v htbh varchar 255 上游合同編號 declare v id integer 上游合同id declare v kbsj date declare no more products int default0 declare mycu...