博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个简单系统的设计之争
阅读量:6855 次
发布时间:2019-06-26

本文共 954 字,大约阅读时间需要 3 分钟。

hot3.png

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代码层的不安全因素

 

任何一个设计都是仁者见仁,大家都有什么其它的好点子呢。

转载于:https://my.oschina.net/aiguozhe/blog/35151

你可能感兴趣的文章
ubuntu修改mysql的大小写不敏感
查看>>
为什么屠呦呦获得了诺贝尔奖却没被评上中科院院士?
查看>>
Hibernate使用注释
查看>>
Docker Hub 公有镜像在国内拉取加速配置
查看>>
vue-04
查看>>
直播平台制作中的直播间礼物功能开发基本介绍
查看>>
解密 | 阿里云破图像识别世界纪录的背后
查看>>
阿里云 Aliplayer高级功能介绍(四):直播时移
查看>>
linux less
查看>>
Python 学习(四)
查看>>
SUSE 开发者提议在 GCC 编译器中用 Python 替代 AWK
查看>>
0034-CM启动报InnoDB engine not found分析
查看>>
从奇葩说学到的解题方法
查看>>
源码分析Retrofit请求流程
查看>>
枚举类
查看>>
MySQL 5.6关闭DNS查询
查看>>
第二十章:异步和文件I/O.(四)
查看>>
WPF字体图标——FontAwesom
查看>>
深入剖析Redis - Redis集群模式搭建与原理详解
查看>>
这些Spring中的设计模式,你都知道吗?
查看>>