万维网交互编程语言平台环境下高频数据访问系统与方法

文档序号:6648328阅读:165来源:国知局
专利名称:万维网交互编程语言平台环境下高频数据访问系统与方法
技术领域
本发明属于计算机数据存取访问技术领域,具体地说是一种万维网交互单元编程语言平台企业版J2EE环境下高频数据访问系统及方法。
背景技术
如图1所示,目前,很多大型的万维网(Web)应用系统采用企业版的万维网交互单元编程语言平台(J2EE,Java2 Platform,Enterprise Edition),这种平台构架是典型的多层结构,其客户端采用Web浏览器,将操作界面展示给用户;万维网容器(Web Container)进行用户页面的生成;J2EE服务器端组件平台实体容器(EJB Container,Enterprise Java Beans Container)用于实现业务逻辑;数据库(Data base)提供数据的存储和检索。对于典型的操作流程,通常由用户通过Web下发请求给Web Container,由后者调用EJB,由其执行业务操作,在EJB执行业务操作过程中会读写数据库,并将结果返回给Web Container,万维网同时再将这些结果生成另外的超文本链接标示语言(HTML)页面展示给用户。
在通常的应用系统中,往往有一些很少变化但使用频率却非常高的数据。如在业务运营支撑系统(BOSS,Business Operation Support System)系统中,“客户类型”、“客户等级”、“呼叫类型”、“资源类型”、“费用类型”等就是这样的数据。由于这些数据使用频率非常高,如果每次都从数据库中获取,必然会降低系统的响应性能,特别是在Web Container和EJB Container分别部署在不同的机器上时更是如此。另外,这些数据的种类、在数据库中存放的位置、语言类型、排序的方式、生命周期都可能是不同的。
如图2所示,在现有技术中,J2EE提出了实体(Bean)的概念,实体(Bean)是EJB的一种,其能够将数据库的数据以对象的形式缓存在EJB服务器中。因此,可以将这些高频数据以实体Bean的方式实现访问,Web Container通过调用这些实体Bean来获取相关数据。但是,当Web Container和EJB Container分别部署在不同机器上时,每次调用仍然要跨越网络边界,加上EJB调用本身的消耗,对性能仍然有较大影响。实体Bean消耗的资源比较多,而且配置和管理也比较复杂。当新增或者减少某种类型的高频数据时,必须通过硬编码来实现读取功能,无法实现动态的配置和扩展。由于缺乏统一的管理和规范的约束,容易造成整个应用系统对这些数据处理采用各不相同的方式,进而表现出不同的行为。而且,这种方式对系统的开发人员的技术要求较高,会增加系统开发成本。

发明内容
为克服现有技术的不足,本发明目的是提供一种J2EE环境下高频数据访问系统及访问方法,基于J2EE构架,解决每次都从数据库中获取高频数据导致系统响应性能降低的问题。
本发明的另一个目的是提供一种J2EE环境下高频数据访问系统及访问方法,用户能进行灵活的配置。
为完成上述发明目的,本发明采取的总体技术方案为一种万维网交互编程语言平台环境下高频数据访问系统,包括万维网浏览器、万维网容器、服务器端组件平台实体容器和数据库,万维网容器有能处理浏览器请求的万维网交互单元编程语言组件模块和万维网交互单元编程语言页面模块,服务器端组件平台实体容器有实体模块,所述万维网容器有一缓存管理表模块,它与所述的万维网交互单元编程语言组件模块和万维网交互单元编程语言页面模块连接,用于管理对高频数据的访问;所述服务器端组件平台实体容器有一会话实体模块,该模块一端与万维网容器中的缓存管理表模块连接,另一端与数据库连接,用于将高频数据配置信息和高频数据存储到缓存中,和同步高频数据;所述缓存,分别连接万维网容器的缓存管理表模块和服务器端组件平台实体容器的会话实体模块,用于以结构化方式存储高频数据。
所述万维网容器还有一自定义选择标签模块,它与缓存管理表模块相连,用于动态配置高频数据,和同步高频数据等。
一种万维网交互编程语言平台环境下访问高频数据的方法,包括以下步骤步骤1、用户向万维网容器发送高频数据访问请求;步骤2、万维网容器的缓存管理表模块从缓存的高频数据信息配置表中读取高频数据配置信息,并以结构化查询方式访问高频数据;步骤3、将高频数据访问结果返回给万维网容器;步骤4、万维网容器将高频数据访问结果返回给万维网交互单元编程语言页面模块并显示。
所述步骤1之前还包括初始化步骤,具体指万维网容器的缓存管理表模块调用服务器端组件平台实体容器的会话实体读取数据库中的高频数据信息配置表和高频数据,并存储到缓存中;所述步骤2中的高频数据信息配置表的结构为三层,第一层为哈希表,用于存储高频数据标识和表数据的对应关系;第二层为列表,用于存储行数据,包括表自身的标示、表名称、数据源、当前版本号、备注、是通用表还是独立表、是否支持多语言、对应标示的列的名称、对应备注列名称、排序列的名称;第三层存储某行中每个高频数据字段值,包括高频数据字段名和高频数据值。
所述步骤2还包括同步的步骤,具体包括步骤41、在缓存中开辟另外的存储空间;步骤42、将新的高频数据加载到新开辟的存储空间中;步骤43、加载完成后,直接将加载有新高频数据存储空间的缓存内容覆盖原缓存中的内容。
所述步骤4中的万维网容器将高频数据读写结果返回给万维网交互单元编程语言页面模块的形式为超文本链接标示语言页面。
本发明具有显著的优点和积极效果,本发明提供了数据缓存功能,并且利用哈希(hash)表,大大提高了高频数据的访问性能,通过缓存技术,将高频数据加载到Web Container中,以哈希表(Hashmap)保存数据,加快查找速度,极大地提高了在Web Container内访问高频数据的性能,由于高频数据的使用频率非常高,因此,系统的整体性能也得到很大提高。缓存查找效率高,并且进行了数据同步保护,本发明支持自动和手工数据同步,即使在数据同步期间,仍然可以并发访问缓存,对数据的更改通过同步机制保证一致性。允许动态配置哪些数据为高频数据,并动态加载。支持对高频数据的国际化、排序、有效期的管理。对Web Container内进行高频数据的访问提供统一的接口,包括自定义标签(Severlet)侧的应用程序接口(API),简单易用,减少了开发人员使用难度,提高开发效率,降低应用系统开发成本。同时,本发明功能强大,可配置性、可扩展性强,可以满足实际中绝大多数需求,做到零编码。


图1为现有技术万维网交互单元编程语言架构J2EE模块示意图;图2为现有技术中具有实体的万维网交互单元编程语言架构J2EE模块示意图;图3为本发明的总体结构模块图;图4为本发明主流程图;图5为本发明缓存结构图。
具体实施例方式
下面结合说明书附图来说明本发明的具体实施方式

请参阅图3,本发明的总体结构图。万维网交互编程语言平台环境下高频数据访问系统,包括万维网浏览器、万维网容器1、服务器端组件平台实体容器6和数据库9,万维网容器1有能处理浏览器请求的万维网交互单元编程语言组件模块2和万维网交互单元编程语言页面模块3,服务器端组件平台实体容器有实体模块,万维网容器1有一缓存管理表模块4,它与所述的万维网交互单元编程语言组件模块2和万维网交互单元编程语言页面模块3连接,用于调用服务器端组件平台实体容器6,管理对高频数据的访问和同步高频数据,服务器端组件平台实体容器6有一会话实体模块7,该模块一端与万维网容器1中的缓存管理表模块4连接,另一端与数据库9连接,通过数据源8与数据库9建立连接,用于将高频数据配置信息和高频数据存储到缓存中;缓存10分别连接万维网容器1的缓存管理表模块4和服务器端组件平台实体容器6的会话实体模块7,用于将高频数据加载到万维网容器1中,并以结构化方式保存数据,加快查找速度。本发明在万维网容器1中有能处理浏览器请求JAVA组件模块2、Java服务器页面模块3、缓存管理表模块4(Base Table),和自定义选择标签模块5,缓存管理表是一个单实例类,负责管理高频数据的缓存。在EJB容器6中,有一个会话实体模块(BaseSession)7,在初始化的时候,调用会话实体模块(Base Session)执行结构化查询(SQL)语句,从数据库9中获取高频数据。另外,缓存管理表模块4还负责对数据进行同步,并提供接口,供能够处理浏览器请求的JAVA组件Servlet 2和JAVA页面JSP Pages模块3的访问。为了方便JSP页面访问,本发明提供了自定义选择标签模块(Base Select)5。会话实体模块7的会话实体模块(BaseSession)能够从指定的数据源(DS)8获取数据库9连接,执行SQL语句,并将结果返回给用户。
请参阅图4,本发明的主流程图。首先,先进行初始化,万维网容器的缓存管理表模块调用服务器端组件平台实体容器的会话实体读取数据库中的高频数据信息配置表和高频数据,并存储到缓存中;高频数据可以分为简单和复杂两种类型。对于简单类型,应用系统只需要知道编号和名称的对应关系就可以了,如“性别”、“职业”等。这种高频数据在大型应用系统中往往有几十到上百个左右,如果这些不同的类型都用不同的物理表存储,会造成大量的小表,不利于维护,而且读取这些表要执行上百个SQL语句,数据读取的时候效率很低。所以,本发明采取将这些逻辑表合并到一个物理表的方式存储,其结构包括高频数据类型、标识、备注、排序值,按照从小到大排序、生效日期、失效日期等。对于复杂类型,系统除了要知道编号和名称的对应关系外,还需要知道额外的信息,如对于不同的“资源类型”,系统在进行各种业务操作的时候是有差异性的,这种差异性会通过额外的参数来区分,如资源的价格、型号等。所以,对于复杂类型,表的结构各不相同,这些表必须通过单独的物理表来进行存储。
在分布式系统中,各个子系统可能使用不同的数据库,为了做到数据的物理分布对系统透明,可以通过EJB Container的数据源8建立和数据库9的连接。
在初始化和进行同步时,缓存管理表模块4的缓存管理表Base Table类会从数据库中某个固定的高频数据信息配置表读取配置信息,以便了解有哪些高频数据要读,以及如何读取,这些高频数据都分别支持哪些不同的特性等,具体的表结构为高频数据信息配置表自身的标示、表名称(为实际的表名称,或者逻辑表名称)、数据源,即该表通过哪个数据源获取、当前版本号,用于数据同步、备注、是否是通用表,还是独立表、是否支持多语言、对应ID的列的名称、对应备注(REMARK)列的名称、排序列的名称(为独立表时有效)。
当有用户通过JAVA页面向万维网容器1发送高频数据访问请求时,万维网容器1的缓存管理表模块4从数据库9中的高频数据信息配置表中读取高频数据的配置信息。
请参阅图5本发明缓存结构图。为能够快速地定位数据,加快查找速度,本发明的缓存中的高频数据配置信息表采用的存储结构为第一层存储高频数据标识或者名称和表数据的对应关系,即存储所有高频数据表,表名称为键(KEY),实际表的数据为值(value);第二层存储某高频数据表,即存储某表的行数据,以列表(Array List)结构存储,以保证顺序性;第三层存储某行中每个字段值,key为字段名称,value为字段值。这种存储方式,大大加快了检索的速度;而且易于动态扩展,在高频数据表结构发生变化的时候,此存储结构无须做任何改动。
虽然高频数据修改的频率很低,但还是要考虑修改后数据的同步问题,而且在相对较长的数据同步期间,应用系统仍然会大量而且并发地访问内部缓存数据,因此,需要对数据进行保护,以保证并发访问的高性能,和避免应用系统访问到不完整的数据。本发明先用临时存储空间,然后再替换的方式实现数据同步。
本发明按照如下方式进行数据同步定时或者手工同步所有数据,可以设置定时周期。在数据同步时,先开辟另外的存储空间,将新数据加载到其中,加载完成后,直接将包含有该新数据存储空间的缓存内容覆盖原来缓存的内容。
高频数据经常用于界面上下拉框的显示,对于大型系统,往往存在多语种、排序等问题。而且高频数据通常不能够删除,在不用的时候只能设置为无效。对于排序和有效期,本发明会自动将超过有效期的数据过滤掉,并按照指定的某列值进行排序。对于多语种,在定义数据的显示名称时,不直接指定,而是用一个标示(ID)代替,在另外一个字典表中,定义此ID在不同语言环境下显示的字符串。该字典表结构包括备注标示(Remark ID)、语言类型和备注。在用户请求某数据的时候,本发明会自动将ID按照用户的语言环境进行替换,因此,对用户而言是透明的。
然后,万维网容器的缓存管理表模块4从缓存的高频数据信息配置表中读取高频数据配置信息,并以结构化查询方式(SQL)访问高频数据。
之后,EJB容器会话实体将高频数据读写结果返回给万维网容器。
最后,万维网容器将高频数据读写结果以超文本链接标示语言页面返回给用户JAVA页面。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的权利要求范围之内。
权利要求
1.一种万维网交互编程语言平台环境下高频数据访问系统,包括万维网浏览器、万维网容器、服务器端组件平台实体容器和数据库,万维网容器有能处理浏览器请求的万维网交互单元编程语言组件模块和万维网交互单元编程语言页面模块,缓存和服务器端组件平台实体容器有实体模块,其特征在于所述万维网容器有一缓存管理表模块,它与所述的万维网交互单元编程语言组件模块和万维网交互单元编程语言页面模块连接,用于管理对高频数据的访问;所述服务器端组件平台实体容器有一会话实体模块,该模块一端与万维网容器中的缓存管理表模块连接,另一端与数据库连接,用于将高频数据配置信息和高频数据存储到缓存中,和同步高频数据;所述缓存,分别连接万维网容器的缓存管理表模块和服务器端组件平台实体容器的会话实体模块,用于以结构化方式存储高频数据。
2.根据权利要求1所述的万维网交互编程语言平台环境下高频数据访问系统,其特征在于,所述万维网容器还有一自定义选择标签模块,它与缓存管理表模块相连,用于动态配置高频数据,和同步高频数据等。
3.一种万维网交互编程语言平台环境下访问高频数据的方法,其特征在于,该方法包括以下步骤步骤1、用户向万维网容器发送高频数据访问请求;步骤2、万维网容器的缓存管理表模块从缓存的高频数据信息配置表中读取高频数据配置信息,并以结构化查询方式访问高频数据;步骤3、将高频数据访问结果返回给万维网容器;步骤4、万维网容器将高频数据访问结果返回给万维网交互单元编程语言页面模块并显示。
4.根据权利要求3所述的万维网交互编程语言平台环境下访问高频数据的方法,其特征在于,所述步骤1之前还包括初始化步骤,具体指万维网容器的缓存管理表模块调用服务器端组件平台实体容器的会话实体读取数据库中的高频数据信息配置表和高频数据,并存储到缓存中。
5.根据权利要求3所述的万维网交互编程语言平台环境下访问高频数据的方法,其特征在于,所述步骤2中的高频数据信息配置表的结构为三层,第一层为哈希表,用于存储高频数据标识和表数据的对应关系;第二层为列表,用于存储行数据,包括表自身的标示、表名称、数据源、当前版本号、备注、是通用表还是独立表、是否支持多语言、对应标示的列的名称、对应备注列名称、排序列的名称;第三层存储某行中每个高频数据字段值,包括高频数据字段名和高频数据值。
6.根据权利要求3所述的万维网交互编程语言平台环境下访问高频数据的方法,其特征在于,所述步骤2还包括同步的步骤,具体包括步骤41、在缓存中开辟另外的存储空间;步骤42、将新的高频数据加载到新开辟的存储空间中;步骤43、加载完成后,直接将加载有新高频数据存储空间的缓存内容覆盖原缓存中的内容。
7.根据权利要求3所述的万维网交互编程语言平台环境下访问高频数据的方法,其特征在于,所述步骤4中的万维网容器将高频数据读写结果返回给万维网交互单元编程语言页面模块的形式为超文本链接标示语言页面。
全文摘要
一种J2EE环境下高频数据访问的系统及方法,万维网容器有缓存管理表模块,用于管理对高频数据的访问;EJB容器的会话实体模块分别与万维网容器的缓存管理表模块和数据库连接,用于以结构化查询方式将高频数据信息表和高频数据存储到缓存中,高频数据信息表为三层存储结构。缓存管理表模块调用会话实体模块读取数据库中的高频数据信息配置表和高频数据并存储到缓存中;用户向万维网容器发送高频数据访问请求;缓存管理表模块从缓存的高频数据信息配置表中读取高频数据配置信息并根据高频数据配置信息访问高频数据;将高频数据访问结果返回给万维网容器;万维网容器将高频数据访问结果返回给万维网交互单元编程语言页面模块并显示。
文档编号G06F17/30GK1851698SQ20051010590
公开日2006年10月25日 申请日期2005年9月30日 优先权日2005年9月30日
发明者徐健鹏 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1