|
1. 前言
一個朋友最近在做一個小項目,想讓我去評審評審設計,于是我就去聽了聽他們的設計,同時提出了自己的一點思路,發現了一點有趣的事情。
拋開業務,這個系統要干的事情其實很簡單:
a. 將常用的SQL保存在DB服務器上
b. 做一個web畫面,讓操作員得以訪問SQL列表
c. 在web畫面上,可以針對選擇的SQL,填寫參數,并且交付執行
d. 將SQL執行得到的結果數據,做成execl格式傳給web頁面
2. 不同的設計思路
2.1 我朋友的設計思路
- 在數據庫中create一個表,將所有常見的SQL都已字符串的方式存在這個表中
- 在前臺畫面,用下拉框的方式展現這個表中所有的SQL
- 在前臺上輸入參數,傳遞到Java中,拼到SQL字符串中,然后丟到丟到DB中執行
- DB中執行完得到的數據結果集在Java中被處理,并且按照格式生成execl(用第三方API),最后被傳遞到前臺
2.2 我自己的設計思路
- 寫一個PL/SQL模板,專門用以執行這些SQL,同時和我朋友的思路一樣,把這些SQL存到數據庫中去
- 在前臺畫面,用下拉框的方式展現這個表中所有的SQL
- 在前臺上輸入參數,傳遞到PL/SQL模板中,由PL/SQL去調用表中的SQL,填上參數,在DB中執行
- DB中得到的數據集,用PL/SQL的方法生成CSV文件,存放在服務器的temp文件夾中
- 前臺web層,從服務器的temo文件夾中讀取該CSV文件
3. 兩個設計思路的比較
每個架構都有自己存在的理由,沒有所謂的最好也沒有所謂的最差
我朋友的設計 | 我自己的設計 | |
性能 | Java處理這種大批量數據,還要生成execl~~想起來就可怕 | 性能上肯定是PL/SQL比較優秀 |
易擴展 | 三層的設計,理論上說起來易擴展一點,注意!是理論上 | 基本上沒什么美麗的架構 |
維護性 | 插入新的SQL可以用畫面來實現 | 插入新的SQL可以用畫面來實現 |
安全性 | 因為可以直接執行DB中的SQL,其實不是很安全的 | 因為有一個專門的PL/SQL來執行SQL,應該可以屏蔽掉Java代碼層的不安全因素 |
it知識庫:一個簡單系統的設計之爭,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。