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