时态数据库的应用介绍(2)--时态数据库之TimeDB
前面介绍了TimeDB(
http://www.timeconsult.com/Software/Software.html
)是一种结合关系型数据库来实现时间数据库应用的技术,它支持时态数据库脚本:ATSQL2 [SBJS96a,SBJS96b,SBJS98]。它可以认为是关系数据库的一个前端,把时态数据库语句转换为关系型数据库的脚本进行执行,它的运用场景如下所示。
TimeDB是传统的数据库管理系统的前端软件,应用程序中使用的时态ATSQL语句,通过TimeDB转换后形成标准的SQL语言和操作,这些标准SQL语句和操作传入到后台数据库中操作实际的数据。TimeDB支持ATSQL2语言和时态模型,实现了时态查询、时态更新、时态视图和部分的时态完整性约束等基本的时态功能。
TimeDB 2.0版本使用Java语言开发,具有平台无关的有点;基于JDBC访问数据库,目前仅支持Oracle、Sybase和IBM的Cloudscape’s JBMS三种数据库,下一版本可能支持Microsoft's Access、SQL Server 7.0、Informix等数据库;具有较友好的用户界面;优化了辅助表的创建过程;具有可以供Java应用程序调用的接口TDBCI,可供Java应用程序调用以执行ATSQL2语句。TimeDB2.0的程序运行界面如下:
TDBCI提供的接口函数如下所示
//
设置访问参数
public
boolean
setPrefs(String Path,
int
DBMS, String JDBCDriver, String URL);
//
初始化/清除 执行ATSQL语句所需的表
public
boolean
createDB();
public
boolean
clearDB();
//
打开或者关闭数据库
public
boolean
openDB(String Login, String Password);
public
void
closeDB();
//
执行 ATSQL语句
public
ResultSet execute(String stmt);
其中setPrefs是用来设置TimeDB的相关访问参数的,如下所示
if
(t.setPrefs(
"
C:\\TimeDB 2.2\\
"
,
//
Path to TimeDB2.0 directory
1
,
//
Using Oracle DBMS
"
oracle.jdbc.driver.OracleDriver
"
,
//
Oracle's JDBC driver
"
jdbc:oracle:thin:1521:ORCL
"
))
//
URL
createDB是用来创建一些基础表,以便支持执行ATSQL的,而clearDB则是清除这些表,对数据库而言,只需要开始的时候调用createDB一次即可。
openDB 和closeDB有点类似于我们操作数据库的时候,打开Connection连接的操作,每次查询事务,都需要先执行openDB的操作,事务提交后,调用closeDB来关闭数据库。
执行 ATSQL语句只有一个函数execute,它返回的是TimeDB定义的ResultSet对象,而ResultSet对象可以获取每一个ResultRow对象,ResultRow对象通过row.getColumnValue(i)和row.getColumnType(i)函数调用只能拿到列的值和对应值的类型,结果类型是字符类型。
返回的类型名称有:
• number • smallint •float• numeric •integer •double
• longint •real• interval • date•period •char•varchar
如何应用TimeDB的时间数据库技术
由于我们的产品技术主要是基于.NET基础上开发的,而TimeDB是基于Java的应用技术,因此可以考虑通过包装TimeDB成为WebService的应用,然后通过.NET客户端进行访问,实现时间数据库技术的应用。
初始化数据库基础信息
TimeDB是基于关系型数据库之上的一个模块,在做时间数据库相关的脚本(ATSQL)解析前,它需要一些基础表和记录来存储相关的信息,因此需要初始化所建立的数据库。
初始化数据库可以通过执行安装目录下的SQL脚本而进行(位置为X:\TimeDB 2.2\scripts\initDB),如Oracle调用initOracle脚本,Sybase数据库调用initSybase脚本。
另外,也可以通过调用TDBCI的接口createDB创建这些基础表。
使用Java创建基于TimeDB查询操作的WebService
TDBCI公开了一些供Java应用程序调用的API函数,为了使得.NET的应用程序也能在TimeDB中执行ATSQL脚本,我们把对TDBCI的调用封装成了WebService。
开发环境:MyEclipse6.01、Tomcat5.5、Java SDK1.6、Oracle 10g、TimeDB2.0。
实现步骤:
1、 使用MyEclipse创建WebService项目,配置好Tomcat服务器
2、 引用Oralce的JDBC类和TimeDB开发所需的类
3、 创建具体的WebService服务类,提供返回结果查询和无结果的查询接口,并实现接口函数
4、 部署WebService到Tomcat中
使用.NET客户端对WebService进行访问,执行ATSQL
实现步骤:
1、 引用包装好的WebService
2、 调用相应的接口,使用ATSQL语句创建业务表
3、 调用相应的接口实现ATSQL数据操作(查询、插入、删除等)
创建业务表:
和在关系数据库(如Oracle)中创建表不同,创建时间数据库表需要调用TimeDB的接口,执行ATSQL而实现。ATSQL2是一个SQL标准,具体使用请参考相关文档。