一种对临时表的管理方法及装置 【技术领域】
本发明涉及数据处理技术领域,特别涉及一种对临时表的管理方法及装置。
背景技术
目前,市面上存在多种数据库,如Oracle,结构化查询语言服务器(SQLServer),DB2等数据库,各种数据库所采用的数据类型是不一样的,每种数据库都有对应其特性的优化数据结构。
相应的,各种数据库所应用的软件都是基于各个数据库单独开发的,通常的模式是,先选定使用哪种数据库,再针对这个数据库的特性进行开发,从而得到应用于某个数据库的应用软件或程序。
可以理解,各种应用软件在使用的过程中都会用到临时表,以进行数据的交换和处理,因而,无论是哪种软件,都会用到临时表。
现有技术中,由于各种数据库的类型不一样,因而,基于各种数据库的软件所应用的临时表所采用的数据类型也是不一样的,通常,是各个数据库采用本数据库提供的工具单独维护本数据库所应用的临时表;而且,临时表的维护是在内存中,一旦数据库所在的服务器重新启动,则需要重新创建并维护各种所需要的临时表。
从临时表本身的角度看,其实各个数据库所维护管理临时表的结构基本相同,只是由于各数据库所支持的数据类型不同,因而维护管理的方式不同。
可见,在现有技术中,为了适应各个数据库所支持的数据类型,各个数据库都需要单独维护并管理本数据库所支持的临时表,浪费了各个数据库的资源,特别是,如果一个软件在一个数据库开发后,需要从一个数据库迁移到另一数据库,则需要更换临时表的管理工具,改变用户对临时表的操作管理方式,因而,几乎不能实现临时表在不同数据库之间的迁移操作,不能实现通用。
【发明内容】
本发明实施例的在于提供一种对临时表的管理方法及装置,以使临时表能在各种数据库之间通用,并为各数据库节省了对临时表的管理资源。
本发明实施例提供了一种对临时表的管理方法,包括:
设置表池,记录所述表池中各个临时表的表名称、状态及结构属性;
接收来自数据库的临时表申请请求,从所述申请请求中获取发起申请的数据库类型以及所要求的表结构;
如果所述表池中存在与所述申请请求中所要求的表结构一致的临时表,且该表的状态为空闲,则将表池中该临时表的表名及表结构以所述发起申请的数据库所支持的数据类型发送给所述数据库,并且,将所述已发送的临时表的表状态修改为使用。
其中,所述方法还包括:
如果所述表池中不存在与所述申请请求中所要求的表结构一致的临时表,则按照所述申请请求所要求的表结构创建一个临时表,将所创建的临时表放入到表池中,再将该表的表名及表结构以所述发起申请的数据库所支持的数据类型发送给所述数据库,并且,将所述已发送的临时表的表状态修改为使用。
其中,所述方法还包括:
接收来自数据库的临时表释放请求,将所释放地临时表表结构所对应的内容删除,标记释放时间,并将所释放临时表的状态标记为空闲,之后,将所释放的临时表放入表池中。
其中,所述方法还包括:
若在预设时间段内,被标记为空闲状态的临时表没有被调用过,则从所述表池中删除该临时表,并且,从本地删除该临时表。
本发明实施例还提供了一种对临时表的管理方法,包括:
设置表池,记录所述表池中各个临时表的表名称、状态及结构属性;
接收来自数据库的临时表释放请求,将所释放的临时表表结构这所对应的内容删除,标记释放时间,并将所释放临时表的状态标记为空闲,之后,将所释放的临时表放入表池中。
其中,所述方法还包括:
若在预设时间段内,被标记为空闲状态的临时表没有被调用过,则从所述表池中删除该临时表,并且,从本地删除该临时表。
本发明实施例还提供了一种对临时表的管理装置,包括:
设置记录模块,用于设置表池,记录所述表池中各个临时表的表名称、状态及结构属性;
申请接收模块,用于接收来自数据库的临时表申请请求,从所述申请请求中获取发起申请的数据库类型以及所要求的表结构;
对比模块,用于确定所述表池中存在与所述申请请求中所要求的表结构一致的临时表,且该表的状态为空闲时,通知分配模块;
分配模块,用于将表池中该临时表的表名及表结构以所述发起申请的数据库所支持的数据类型发送给所述数据库,并且,将所述已发送的临时表的表状态修改为使用。
其中,所述装置还包括:
创建模块,用于在所述表池中不存在与所述申请请求中所要求的表结构一致的临时表时,按照所述申请请求所要求的表结构创建一个临时表,将所创建的临时表放入到表池中,再通知分配模块。
其中,所述装置还包括:
释放接收模块,用于接收来自数据库的临时表释放请求,将所释放的临时表表结构所对应的内容删除,标记释放时间,并将所释放临时表的状态标记为空闲,之后,将所释放的临时表放入表池中。
其中,所述装置还包括:
回收模块,用于确定在预设时间段内,被标记为空闲状态的临时表没有被调用过时,从所述表池中删除该临时表,并且,从本地删除该临时表。
本发明实施例还提供了一种对临时表的管理装置,包括:
设置记录模块,用于设置表池,记录所述表池中各个临时表的表名称、状态及结构属性;
释放接收模块,接收来自数据库的临时表释放请求,将所释放的临时表表结构这所对应的内容删除,标记释放时间,并将所释放临时表的状态标记为空闲,之后,将所释放的临时表放入表池中。
其中,所述装置还包括:回收模块,用于确定在预设时间段内,被标记为空闲状态的临时表没有被调用过时,从所述表池中删除该临时表,并且,从本地删除该临时表。
应用本发明实施例提供的对临时表的管理方法和装置,各数据库不再需要单独维护自身所需的临时表,从而节约了各数据库自身的资源。再有,由于临时表被统一管理,降低了临时表对数据库本身的依赖性,也不再需要更换临时表的管理工具,不需要改变用户对临时表的操作管理方式,解决了临时表在各种数据库之间迁移的问题,使得被统一管理的临时表对各个数据库都有很好的兼容性。
【附图说明】
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是根据本发明实施例的一种对临时表的管理方法流程图;
图2是根据本发明实施例的另一种对临时表的管理方法流程图;
图3是根据本发明实施例的回收流程图;
图4是根据本发明实施例的一种对临时表的管理装置结构示意图;
图5是根据本发明实施例的另一种对临时表的管理装置结构示意图。
【具体实施方式】
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例所提供的技术方案的思路是,对临时表进行统一管理,各种类型的数据库在需要使用临时表时,只需在指定的服务器上调用其所需要的临时表即可,在使用完毕后,释放给指定的服务器,这样,各数据库不需再单独维护自身所需的临时表,从而节约了各数据库自身的资源。再有,由于临时表被统一管理,降低了临时表对数据库本身的依赖性,也不再需要更换临时表的管理工具,不需要改变用户对临时表的操作管理方式,解决了临时表在各种数据库之间迁移的问题,使得被统一管理的临时表对各个数据库都有很好的兼容性。
具体而言,指定的用于统一管理临时表的服务器可以对外提供两个接口,一个用于申请临时表,一个用于释放临时表。申请临时表是指向表池申请一张表,此时需要传进来要申请的临时表的表结构,服务器返回一个可用的与申请的表结构一样的表;释放临时表是指将之前申请的临时表释放,以表示使用临时表结束,将它归还表池。
下面结合附图对本发明再做详细说明。
参见图1,其是根据本发明实施例的一种对临时表的管理方法流程图,本实施例为数据库申请临时表,具体步骤包括:
步骤101,设置表池,记录所述表池中各个临时表的表名称、状态及结构属性;
步骤102,服务器接收来自数据库的临时表申请请求,对该申请请求进行解析,从该申请请求的参数中获取发起申请的数据库类型以及所要求的表结构;
步骤103,判断所述表池中是否存在与所述申请请求中所要求的表结构一致的临时表,且该表的状态为空闲,若是,则执行步骤106,否则执行步骤104;
步骤104,服务器按照所述申请请求所要求的表结构创建一个临时表;
步骤105,服务器将所创建的临时表放入到表池中,并且,记录该创建的临时表的表名、状态及结构属性;
步骤106,将从表池获得的与申请请求中的要求一致的临时表的表名及表结构以所述发起申请的数据库所支持的数据类型发送给所述数据库,并且,将所述已发送的临时表的表状态修改为使用。
至此,完成了临时表的申请管理。
参见图2,其是根据本发明实施例的另一种对临时表的管理方法流程图,本实施例为数据库释放临时表,具体步骤包括:
步骤201,接收来自数据库的临时表释放请求;
步骤202,将所释放的临时表表结构所对应的内容删除;
步骤203,标记释放时间;
步骤204,将所释放临时表的状态标记为空闲;
步骤205,将所释放的临时表放入表池中。
至此,完成了临时表的释放管理。
需要说明的是,在上述释放管理流程中,步骤202-204之间没有严格的先后顺序,也即,上述步骤202-204可以同时执行,也可以先执行其中的任一步,再执行剩下两步中的任一步,最后执行剩下的任意一步。
参见图3,其是根据本发明实施例的回收流程,具体包括:
步骤301,判断在预设时间段内,被标记为空闲状态的临时表没有被调用过,若是,则退出本流程,否则执行步骤302;
上述预设时间段可根据实际需要确定,可长可短。
步骤302,从所述表池中删除该临时表;
步骤303,从服务器本地删除该临时表。
也就是说,如果在规定时间内某个临时表没有再被重用,则系统认为不再需要临时表,则删除该临时表,以免浪费资源。
至此,完成了临时表的回收管理。
在本发明实施例中,临时表不仅仅在内存中维护,还保存在服务器本地,一旦服务器重新启动,只需将本地保存的临时表加载到内存即可,避免了因服务器非正常关闭重新启动而造成的数据丢失,知所以在内存中也维护,是为了加快各数据库的调用释放速度。
需要说明的是,上述图2、3所示的释放流程和回收流程可以不依赖于图1所示的申请流程单独存在。
应用本发明实施例提供的对临时表的管理方法,各数据库不需再单独维护自身所需的临时表,从而节约了各数据库自身的资源。再有,由于临时表被统一管理,降低了临时表对数据库本身的依赖性,也不再需要更换临时表的管理工具,不需要改变用户对临时表的操作管理方式,解决了临时表在各种数据库之间迁移的问题,使得被统一管理的临时表对各个数据库都有很好的兼容性。
本发明实施例还提供了一种对临时表的管理装置,参见图4,具体包括:
设置记录模块401,用于设置表池,记录所述表池中各个临时表的表名称、状态及结构属性;
申请接收模块402,用于接收来自数据库的临时表申请请求,从所述申请请求中获取发起申请的数据库类型以及所要求的表结构;
对比模块403,用于确定所述表池中存在与所述申请请求中所要求的表结构一致的临时表,且该表的状态为空闲时,通知分配模块;
分配模块404,用于将表池中该临时表的表名及表结构以所述发起申请的数据库所支持的数据类型发送给所述数据库,并且,将所述已发送的临时表的表状态修改为使用。
上述装置还可以包括:
创建模块405,用于在所述表池中不存在与所述申请请求中所要求的表结构一致的临时表时,按照所述申请请求所要求的表结构创建一个临时表,将所创建的临时表放入到表池中,再通知分配模块。
上述装置还可以包括:
释放接收模块406,用于接收来自数据库的临时表释放请求,将所释放的临时表表结构这所对应的内容删除,标记释放时间,并将所释放临时表的状态标记为空闲,之后,将所释放的临时表放入表池中。
上述装置还可以包括:
回收模块407,用于确定在预设时间段内,被标记为空闲状态的临时表没有被调用过时,从所述表池中删除该临时表,并且从服务器本地删除该临时表。
本发明实施例还提供了一种对临时表的管理装置,参见图5,具体包括:
设置记录模块501,用于设置表池,记录所述表池中各个临时表的表名称、状态及结构属性;
释放接收模块502,接收来自数据库的临时表释放请求,将所释放的临时表表结构这所对应的内容删除,标记释放时间,并将所释放临时表的状态标记为空闲,之后,将所释放的临时表放入表池中。
上述装置还可以包括:
回收模块503,用于确定在预设时间段内,被标记为空闲状态的临时表没有被调用过时,从所述表池中删除该临时表,并且从服务器本地删除该临时表。
应用本发明实施例提供的对临时表的管理装置,各数据库不需再单独维护自身所需的临时表,从而节约了各数据库自身的资源。再有,由于临时表被统一管理,降低了临时表对数据库本身的依赖性,也不再需要更换临时表的管理工具,不需要改变用户对临时表的操作管理方式,解决了临时表在各种数据库之间迁移的问题,使得被统一管理的临时表对各个数据库都有很好的兼容性。
对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。