陈锋 朱建风
摘要:使用计算机辅助工程,利用计算机数据库、软件开发、图形化技术等专业知识技能,通过实践使用者的需求,将数据库SQL语句间接的应用计算机操作,供使用者人性化的应用。避免数据库直接操作SQL语句的攻击和烦琐应用,提高使用者的工作效益、数据使用价值及数据库安全性。
关键词:数据库;SQL语句;运算;动作;可视化操作
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2019)07-0005-03
1 引言
随着互联网技术和大数据的高速发展,数据库驱动的WEB应用得到广泛的普及。目前,很多单位和机构都是基本架构一个数据库和N个面向用户业务的WEB交互网页,通过WEB页面后台脚本来获取用户交互界面提供的特定数据信息。但由于系统软件研发人员在实现系统模块功能时,往往会忽悠或轻视系统的安全性,在系统中留有大量的GUG (漏洞),给各业务系统留下了很大的安全隐患。
可视化的意义,不但展现全貌,增强理解、便于对话、探索、交流,还简化复杂性,增强审视。继而,数据库的可视化操作是使用者得以接受的可行性方案和最佳选择。
2 可视化操作
2.1 数据库连接池
数据库的连接池专门负责分配、管理和释放数据库的连接。它允许应用程序重用现有的数据库连接,而不必重新建立一个全新的连接,并释放出最大空闲的空间给更多的数据库来连接,因为没有释放数据库的连接。因此,该技术可以显著提升数据库操作的性能。
在Java语言程序开发中,由于它采用开源Java数据库连接池,管理的是享元模式。因此,简单的连接池设计思路如下:
(1)连接池配置属性“DBbean”:主要存储一些可以配置的属性;
(2)连接池接口“IConnectionPool”:主要定义一些获取连接的基本方法;
(3)实现接口“ConnectionPool”:对连接池接口的操作进行具体的实现,并添加一些其他方法;
(4)连接池的管理“ConnectionPoolManager”:主要是管理全部的不同的连接池,全部的连接都是通过这个连接池来获得的连接;
(5)另外还有几个测试类和连接信息模拟的类,这里就不进行XML和配置文件信息的读取。
2.2 运算片段
2.2.1 交集比对
交集比对的前提条件必须是两张及两张以上的数据表,数据表是通过数据库连接池获取。看似两步很简单的过程,实际需要后台开发语言将前端展现的表,运用在开发语言后台编译中,规范定义这些数据控制语言,对控制语言归类建立,且把表变量化。
如JAVA中取交集的常用方法是retainAll,有两个集合newCoures、oldCourses,怎样判断这两个集合是否包含有相同的对象或元素,通常都使用retainAll方法:oldCourses.retainAll(newCoures)。如果存在相同元素,oldCourses中仅保留相同的元素。如果不存在相同元素,oldCourse会变为空。如果有多个集合oldCourses1、oldCourses2、oldCourses3等,分别与newCourses比较,应该将newCourses统一放在后面,像这样:
oldCourses1.retainAll(newCoures);
oldCourses2.retainAll(newCoures);
oldCourses3.retainAll(newCoures);
public class Test {
public static void main(String[] args) {
List
List
List
for (inti = 0; i< 20; i++) {
list1.add(i+"");
if(i%2 == 0) {
list2.add(i+"");
}
list3.add(i+"@");
}
// list1 与 list2 存在相同元素,list1集合只保留list2中存在的元素
list1.retainAll(list2);
if(list1.isEmpty()) {
System.out.println("不包含");
} else {
System.out.println("包含");
}
System.out.println(list1);
// list1 与 list3 不存在相同元素,list1集合变为空
list1.retainAll(list3);
if(list1.isEmpty()) {
System.out.println("不包含");
} else {
System.out.println("包含");
}
System.out.println(list1);
}
}
2.2.2 条件碰撞
條件碰撞的前提条件必须是两张及两张以上的数据表,数据表是通过数据库连接池获取。较为复杂的条件碰撞方法,是需要根据使用者的输入条件来判断某个参数是否合法,如果合法的话,才能当作过滤的条件,常规做法就是在查询SQL语句中赋值给一个字符串变量,然后再根据判断条件动态的拼接where条件来进行查询,通过不确定的字段名称,而产生的SQL字符串拼接,例如有家公司要做一个系统,需要支持多种语言,这个时候就要将语言信息存储在数据库当中。然后,再根据客户所选择的查询对应语言字段来进行具体显示。
考虑到系统的性能,可能会使用存储过程来减少网络通信量和提高响应的速度。那么,在存储过程中,通常会传入一个参数,然后再根据这个参数来查询指定的语言字段,当把SQL语句拼好,最后传给数据库执行,具体实现的写法如下:
DECLARE @sqlNVARCHAR(100);
DECLARE @paraNVARCHAR(20);
SET @para = 'Chinese';
SET @sql = 'select ID, ' + @para + ' from SysLanguage'
print @sql
exec(@sql)
2.2.3 数据合并
数据合并的前提条件必须是两张及两张以上的数据表,数据表是通过数据库连接池获取。如何进行数据合并工作,大数据时代的到来,让数据量级的增加不可与以往相比,而且数据往往分布在数据库的不同表中,想把这些数据变成有价值的信息,需要进行数据合并处理的工作,而这个过程并不容易。
面对一堆无序的数据时,很多时候很难有效地开展工作,需要对不同数据进行数据收集、整理、清洗,加载到一个新的数据表中,为数据使用者提供一个统一的数据视图,这样才便于管理,而这个过程就是数据整合。数据整合的过程自然是少不了数据合并,无论格式或大小如何,都能随时通过重复数据删除,验证,标准化和丰富数据,干净,高质量的数据就此生成,可以用于数据访问,数据报告和数据分析。
数据合并是通过使用者对原来的数据,通过使用者对新业务需求的掌握和理解,将原有的数据进行提炼,却棄糟粕、取其精华的过程。
数据合并主要是将设置的条件转换为特定数据库的SQL语句,并执行这些语句。数据合并所涉及的关键技术包括几个方面,异构数据的连接方式、自增主键的合并处理、数据覆盖方式。
2.2.4 差集比对
通常来说A、B是两个集合,则全部属于A且不属于B的元素所构成的集合,叫作集合A减集合B或者集合A与集合B之差,依此类推,对于集合A、B,我们把集合x∣x∈A,且x?B叫作A与B的差集。在做差集比对前,输入的数据表(两张或两张以上)是具备单表字段的条件筛选处理,且是可视化操作按钮来实现。在此之后,才使用可视化差集比对按钮控件来对前面数据表处理的结果数据,进行差集比对,最终形成差集比对的结果。
如果开发语言中需要对其实现差集,可以参考如下脚本编译:
两个集合R和S的差集通常表述成R-S,其运算结果也是一个与R和S同结构的集合,其成员是属于R但不属于S的元组的集合。
2.2.5 数据清洗
数据清洗的前提条件是一张数据表的输入,不能对两张及以上数据表进行清洗处理,数据表是通过数据库连接池获取。数据清洗原理是利用有关技术如数理统计、数据挖掘或预定义的清理规则将脏数据转化为满足数据质量要求的数据,清洗需要经历两个步骤,第一个步骤是数据去重,首先是去重字段,然后再去掉重复值;第二个步骤才是数据清洗,清洗的原则如身份证有小写字母的,全部自动改为大写,身份证不符合十八位的全部干掉等。
数据清洗的方法一般来说,是将数据库精简以除去重复的记录,且使剩余的部分转换成标准的可接收的格式过程。标准模型则是将数据录入到数据清理处理的容器中,通过一系列的步骤进行“清理”数据,然后在以期望的格式输出清理过的数据。数据清理从数据的唯一性、一致性、完整性、适时性、有效性、准确性来处理数据的越界值、丢失值、重复数据、不一致代码等问题。
2.2.6 数据排序
数据排序的前提条件是一张数据表的输入,不能对两张及以上数据表进行排序处理,数据表是通过数据库连接池获取。寓意是将一张数据库表通过可视化界面操作条件查询出来的数据结果,连通后使用数据排序运算法则,对其产生的临时结果进行排序,排序的原则是所有字段可以任意挑选和组合,然后再按排序产生结果数据集,排序有升序和降序。
数据排序是按一定的顺序将数据进行排列,以方便使用者通过预览数据来发现一些明显的特征或趋势,便于找到解决问题的线索。除此之外,排序还有助于对数据进行检查和纠错,以及为重新归类或分组等提供便利。在特点场景中,排序本身就是分析的目的之一,例如了解究竟谁是中国汽车生产的三巨头,对于汽车生产厂商而言不论它是作为伙伴还是竞争者,都是很有用的信息。
好的排序方法可以有效提高排序速度,提高排序效果。在计算机领域,主要使用数据排序的方法,根据占用内存的方式不同,一般可以分为两大类,即内部排序方法、外部排序方法。
2.2.7 数据筛选
大数据环境下,数据量的快速积累,若想要分析出海量数据所蕴含的价值,并筛选出具有价值的数据,相当重要。然而数据筛选在整个数据处理中,又是处于至关重要的地位上。数据量的增加及结构的复杂化,这使得面向大数据的数据筛选必然会耗费很大的资源。因此,想要快速准确的筛选出有价值的数据,那么选择合适的算法就十分必要。然而每个算法都有着自己特定的环境,大数据环境下,数据复杂度的增加提升了选择合适算法的困难;其次,大数据的巨大数据量也使得通过单一算法分析出有价值的数据是越来越困难。
编辑数据筛选中数据挖掘的算法分析,主要有三种,分类算法分析、聚类算法分析、关联算法分析。关联算法的数据挖掘通常会分为两步,第一步就是在集合中寻找出现频率较高的项目组,这些项目组相当于整体记录而言必须达到一定水平。通常会认为设置要分析实体间的支持度,如果两实体间支持度大于设定值,那么称二者为高频项目组。第二步是利用第一步找出的高频项目组来确定二者间的关系,这种关系通常由二者间的概率表示。即计算A事件出现时B事件出现的概率,公式为(A与B同时出现的概率)/(A出现的概率),当比值满足既定的概率时,才能说明两事件相关联。关联分析能够从数据库中找出已有数据间的隐含关系,从而利用数据获得潜在价值。
2.2.8 分类统计
分类统计兼有两方面(分与合)的含义,是将总体区分为性质相异的若干部分,将性质相同的许多个体合成一个类。
统计整理的任务是使零散数据系统化,但怎样使数据系统化,本着什么去归类,这就取决于统计分类。在取得完整、正确的统计数据前提下,统计分类的优劣是决定整个统计数据研究成败的关键,它直接关系到统计分析数据的质量。
例如:将一所学校的人,根据老师、学生、男性、女性、年龄、成绩、特点等标识,进行分类统计。
目的就是保持分类内,统计数据的一致性和组之间数据的差异性,便于运用所有的统计方法来研究现象的数量表现和数量关系,从而正确地认识事物的本质规律。
本案在做分类统计前,输入的数据表(一张)是具备单表字段的条件筛选处理,且是可视化操作按钮来实现。
2.2.9 SQL编程
SQL可视化编程针对数据库表,采用系统开发的SQL编译控制台,对其编写SQL语言,由系统控制台转译成数据库可识别的SQL命令,并把执行的结果和情况,由SQL编译控制台对其接收,将结果和情况可视化的反馈给使用者。此功能并非是使用数据库或第三方数据库工具,通过直接连接数据库后编辑SQL语句而执行的结果。
2.3 结果处理片段
通过运算片段,将运算片段执行的结果,在结果区域内展现出来。在出结果前,需要将具体的运算进行分类。在以上的运算中,有针对一张表的运算,也有针对两张表的运算,更有针对两张表以上的运算。那么结果出来之后,很有可能再选择运算进行处理,然后再出执行结果,这一问题该如何处理呢?所以,需要将数据表、数据表操作、运算、结果进行分析。
考虑到以上问题,需要对运算的种类进行分类和定义,可以看出,一张数据表可视化操作的运算,定义为单动作运算(有数据清洗、数据排序、数据筛选、分类统计);两张数据表及两张数据表以上的运算,定义为多动作运算(有交集比对、条件碰撞、数据合并、差集比对)。另外一种就是独立的SQL编程控制台,此定义是不涉及运算的定义,仅仅为使用者提供通用编译SQL语言的应用平台而已。
那么,单动作运算所出的结果同样可以成为另外一个动作运算的输入,也有可能是另外一個多动作运算的输入,在这些不同的组合中,又有多少规律可循了?
首先,任何单动作和多动作的处理和执行,归纳总结均是一端输入,中间是动作处理,另一端是输出的结果,如下图1所示。
再有就是结果成为新的输入端,使用动作后成为新的结果,如下图2所示。
如果将上图1和上图2进行合并,最终的规律如下图3所示。
由上图3可以看出,核心是动作前后条件的处理,由此可以得出,针对单动作的输入,只能有一个条件输入,两个条件的输入就会成为多动作,最终动作执行的结果就是唯一的一个。
3 结论
数据库可视化操作如今成为很多项目的必备功能,是数据探索以及数据表现的重要形式。然而,对于数据库可视化操作的开发者来说,仍然有很多挑战需要去面对。迎接这些挑战的方法,必是很多专业的数据库可视化操作开发者不愿意让别人知道的秘密。
数据库可视化操作可以产生一些分析结果,不过需要指出的是,数据库可视化操作是一个辅助分析的工具,而不是数据分析的替代,更不是统计的替代。不过,要得出存在这些差异和相关性的可靠结论,还需要运用统计学的方法。要对数据库中的数据真正的掌握和了解,还需要有分析的技能以及专业的知识。
参考文献:
[1] 刘娜,奚玲,岳春生.基于模板的跨平台可视化界面开发系统设计[J].电子科技,2017(8).
[2] 林子雨,赖永炫,林琛,等.云数据库研究[J].软件学报,2012(2).
[3] 黄锋,吴华瑞.基于J2EE应用的SQL注入分析与防范[J].计算机工程与设计,2012(10).
【通联编辑:代影】