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