基于web及riversql的数据库管理方案

2015-12-05 08:27倪曼蒂马建明
电子测试 2015年15期
关键词:网段后台报表

倪曼蒂,马建明

(湖南商务职业技术学院 湖南长沙,410205)

基于web及riversql的数据库管理方案

倪曼蒂,马建明

(湖南商务职业技术学院 湖南长沙,410205)

出于安全考虑,将服务器所在网段与办公电脑所在网段进行隔离,却为应用系统的数据导入、导出等操作带来不便。本文在riversql的基础上,提出了一种基于web的数据库管理方案,用于对各系统各类型数据库的综合管理。

数据库管理;riversql

1 背景

随着一年一度高招工作的临近,高等院校网络安全面临新一轮考验,其中一种常见方式为通过职工的机器间接地获取信息。为了防止黑客再次通过这样的手段攻击服务器,可将服务器所在的网段与职工电脑所在的网段进行隔离,以防止不法份子攻击服务器,破坏或盗取相关的资料信息。而实际情况下,这样的措施虽然提高了服务器的安全性和可靠性,却为网络中心的日常数据运维带来了不便,包括数据导入、导出,报表生成等。因此,我们希望能开发一个工具来解决当前的问题。

2 功能设计

目前我院系统使用的数据库包括mysql及ms sqlserver这两种常用数据库,考虑到未来发展,这个数据库管理工具需要支持mysql、ms sqlserver以及oracle等几种常用的数据库的基本操作,满足对数据表的增、删、查、改功能,并且对查询结果进行导出。另外,因为使用者可能存在使用不当的情况,例如当执行了update,delete,add等更改功能时,没有点击commit或rollback功能,这就会导致某个数据表行被锁,因此,为了防止数据库表不被锁,当用户没有提交事务或回滚而退出浏览器时,直接回滚没有提交的事务,即当session失效时,我们将所有的没有commit或rollback的功能进行回滚操作。

3 实现原理

要完成对数据库的管理,必定会面临的几个问题,主要包括:如何获取表字段名称;如何获取当前schema下的表,视图,存储过程,函数,包等;如何处理不同数据库之间的差异。

在JDBC技术规范中,提供了Connection,Statement,ResultSet这三个开发过程中常用的接口。针对每个接口,JDBC规范又提供了相应的接口描述对象,也就是xxxMetaData描述对象。而在数据库管理工具中,我们将会用到DatabaseMetaData和ResultSetMetaData,他们分别描述了数据库的相关信息和结果集的相关信息。利用xxxMetaData描述对象,我们可以获取到相应的数据库信息。但是由于不同的数据库之间,还会存在差异,因此对于不同数据库之间的特性,我们还需要通过查询特定表来获取相关的信息。

3.1 通过JDBC技术规范获取数据库信息

JDBC技术规范中提供了DatabaseMetaData类来访问数据库信息。可通过如下代码获取到此类, 并且通过此类提供的方法获取数据库的相应信息。

Connection con;

Con = DriverManager. getConnection ( url, username, password);

DatabaseMetaData dbmd=con.getMetaData ();

通过getTables方法获取数据库表名。此方法可返回结果集ResultSet,结果集中有5列,超出会报越界异常。

ResultSet DatabaseMetaData. getTables (String catalog, String schema, String tableName, String[ ] type)

通过getColumns方法获取指定表的列信息。

ResultSet DatabaseMetaData getColumns (String catalog, String schema, String tableName, String columnName)

通过getPrimaryKeys得到指定表的主键信息:

ResultSet DatabaseMetaData getPrimaryKeys (String catalog, String schema, String tableName)

DatabaseMetaData类除了可以获取以上所述的信息外,还可以获取数据库与用户,数据库标识符以及函数与存储过程;数据库限制;架构、编目、表、列和视图等。

3.2 通过sql获取数据库的相应信息

有些信息因为不同数据库之间会存在着差异,因此对这些信息需要分开处理,要获取这些信息我们可以通过执行sql的方式来获取相应的数据库信息,下面将举例说明:

例1、获取mysql和oracle的存储过程

mysql:

"select routine_name from information_schema. routines

where routine_schema=? And routine_ type=’PROCEDURE’ order by 1 asc";

oracle:

final String sql="SELECT object_name, status, creater, last_ddl_time,timestamp"+

"FROM sys.all_objects where owner=?"+

"and object_type=’PROCEDURE’ order by 1 asc";

例2、获取mysql和oracle的函数

mysql:

"select routine_name from information_schema. routines

where routine_schema=? And routine_type=’FUNCTION’order by 1 asc";

oracle:

final String sql="SELECT object_name, status, created, last_ddl_time,timestamp"+

"FROM sys.all_objects where owner=?"+

"and object_type=’ FUNCTION’ order by 1 asc";

4 实现方案

4.1 整体架构

我们引入了riversql[3]开源工具,并在其基础上了实现了基于web的数据库管理工具。主要功能包括数据结构(表,存储过程,视图,触发器等)查看、数据导出(支持CSV/Excel、PDF格式)。技术框架模型如图1所示:

图1 技术框架模型

展现层:基于jsp+extJs开发,可兼容大多数浏览器。

服务层:服务层中,riversql简单实现了自己的mvc框架,并没有使用其他另外一些开源框架。实现的方式,主要是根据传入的action字符串,然后实例化需要执行的类,每一个实例化的类执行每一个动作,从而实现controller的功能。

数据层:用jdbc直接执行sql。

4.2 基于riversql的二次开发

我们在riversql的基础上进行了二次开发,强化了整体功能,改善传输效率、中文支持等,以满足我们当前实际的需求。

由于riversql是由外国人开发的一个工具,开发者并没有考虑到中文的问题,加上不同的中间件编码以及extjs对传输的编码设置都不尽相同。为了减少这种不同环境的配置的麻烦,我们引入了Base64编码。在导出数据时,我们先对页面数据进行编码,然后再传到后台进行解码导出文件。

由于原先是将所有的数据显示在页面上,不利于我们查看数据,也对浏览器的js解释能力带来负担,当一次显示的数据量比较大的时候,浏览器的响应速度会比较慢。因此,我们将原来的数据显示方式,改为分页方式查看。

此方案导出数据的方式,如图2所示:

图2 数据导出

①在页面上输入sql语句,传到后台进行查询。

②后台将查询到的数据,以报表形式返回到页面上显示。

③将页面上的所有报表数据传回后台,后台对页面上所显示的报表数据进行处理,生成特定格式(例如csv,pdf,excel等格式)的字节流。

④返回生成后的报表文件,供用户下载。

根据以上分析,网络间的传输数据量是最终得到数据的2倍。因此,当数据量较大时,第③、④步将导致网络开销升高。因此,我们结合分页功能对导出数据进行改进。改进后的导出功能分两种情况:

1)导出当前分页页面数据时,用回原来的导出方式进行导出结果。这样避免了对数据库频繁的执行sql。

2)导出全部查询结果,将第③④步合为一步,即不再将页面的数据往后台传输,而是再查询一次数据库,直接导出结果,而且导出的最大结果集为5000条。

5 结语

随着教育信息化的不断推进,各教育单位对网络安全的要求也会不断提高,对数据库系统的安全管理也提出了更高的要求。网络中心的管理人员应对计算机的管理方式不断探索与创新,制定出合理的应对措施来面对日益严峻的网络安全考验。

[1] 计算机数据库安全管理探析[J].网络安全技术与应用,2013.10

[2] 基于JDBC的数据库连接池的煤矿安全监控技术体系建设[J].煤炭技术,2013.7

[3] http://m.blog.csdn.net/blog/alen1985/41356361

Database management scheme based on Web and riversql

Ma Jianming,Ni Mandi
(Hunan Vocational College of Commerce,Changsha,Hunan,410205)

For security reasons, the server where the segment and the office computer network segment where the isolation of,but for the application system of data import and export operation inconvenience.In this paper,based on riversql,a database management scheme based on web is proposed,which is used to manage all kinds of databases.

database management;riversql

猜你喜欢
网段后台报表
单位遭遇蠕虫类病毒攻击
可变编组动车组制动系统TCN网络信号传输需求研究*
Wu Fenghua:Yueju Opera Artist
LabWindows/CVI中Excel报表技术研究
网上邻居跨网段访问故障
后台暗恋
从三大报表读懂养猪人的成绩单
后台朋友
后台的风景
三层交换技术在大型医疗设备互联时的应用