CN1877579A - 在确保软件模块独立的同时实现数据库应用的系统和方法 - Google Patents
在确保软件模块独立的同时实现数据库应用的系统和方法 Download PDFInfo
- Publication number
- CN1877579A CN1877579A CNA2006100885941A CN200610088594A CN1877579A CN 1877579 A CN1877579 A CN 1877579A CN A2006100885941 A CNA2006100885941 A CN A2006100885941A CN 200610088594 A CN200610088594 A CN 200610088594A CN 1877579 A CN1877579 A CN 1877579A
- Authority
- CN
- China
- Prior art keywords
- sql statement
- database
- identifying information
- xml file
- process object
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
提供了一种用于在确保软件模块独立的同时实现数据库应用的系统和方法。所述系统包括:XML处理单元、SQL信息单元、对象池和调度程序。系统可保证软件模块的独立和开发数据库应用的灵活性、减少软件程序的开发和维护成本并确保软件程序的独立。
Description
本申请要求于2005年6月7日在韩国知识产权局提交的10-2005-0048470号韩国专利申请的优先权,该申请全部公开于此以资参考。
技术领域
本发明涉及一种开发软件程序的方法和设备,更具体地说,涉及一种在确保各个软件模块独立的同时使用数据库开发软件程序的方法和设备。
背景技术
由于已经开发具有网络功能的大型软件程序数量的增加,作为这种软件程序的一部分的数据库的重要性已经稳步地增长。另外,更多的公众注意已经被吸引到一种存储在数据库中的数据被软件程序处理的方法、处理存储在数据库中的数据需要的软件模块的类型、和在提高数据库的效率的同时确保软件模块的独立的方法。一般地,不仅仅是开发软件程序,还有更新这样的软件程序,都需要相当多的时间。
图1是解释包括用于处理数据的模块的传统的数据库相关的软件程序的格式的框图。参照图1,用于处理数据的软件程序包括:应用代码10、数据处理逻辑20和数据库30。应用代码10从用户或除了用户的外部源接收数据,并显示接收的数据。数据处理逻辑20是用于处理由应用执行的各种操作的程序,所述操作例如,搜索数据库30、修改存储在数据库30的数据和将数据输入到数据库30,并且数据处理逻辑20包括结构化查询语言(SQL)语句(statement)。数据库30是用于存储和管理数据的模块。用于搜索数据库30寻找期待的数据所用的时间和数据库30存储数据的方法可根据数据库30的类型而改变。一般地,软件程序可由以下三个理由被改变。第一,当应用代码10将字段,特别地,日志记录字段,加入到协议消息时,软件程序可被改变。应用代码10配合于用户或者外部软件程序,由此应用代码10容易由于各种外部的因素而改变。第二,当数据库30的模式改变时,例如,当组成数据库30的表被改变时或者当表的列的名称被改变时,软件程序可被改变。第三,当数据处理逻辑20由于对应用代码10作出的改变或者对数据库30作出的改变(例如,当数据库30的字段改变时)而改变时,或者当数据处理逻辑20为了提高处理SQL语句的速度被调整时,软件程序可被改变。但是,应用代码10、数据处理逻辑20和数据库30是紧密相关的,从而,在应用代码10、数据处理逻辑20和数据库30之一中的变化可影响其它两者。
图2至图4示出用于处理数据的传统的系统或者解决方案的示例。特别地,图2至图4是用于解释处理数据的传统方法的框图。图2是用于解释传统的数据库相关的软件程序的格式的框图,在所述软件程序中SQL语句被硬编码(hard-coded)进包括Java数据库连接(JDBC)并使用JDBC处理数据的应用代码。参照图2,应用代码11使用Java数据库连接(JDBC)21处理数据,并且SQL语句22被硬编码进应用代码11。图2的格式广泛地用于开发唯一地用于特定的解决方案的数据库处理代码,不能确保数据处理程序的独立。因此,当数据库30被改变时,应用代码11中的SQL语句22必须相应地改变。在图2的格式中,调用JDBC 21的数据库处理代码依赖于预定的应用,从而提供一些性能优势。
图3是用于解释传统的数据库相关的软件程序的格式的框图,在所述软件程序中SQL语句从包括JDBC并使用JDBC处理数据的应用代码中分离。
图3的格式一般被用于商用中间件解决方案中。参照图3,SQL语句22独立于应用代码12而实现。因此,当数据库30被改变时,应用代码12仍然需要相应地改变。
图4是用于解释传统的数据库相关的软件程序的格式的框图,在所述软件程序中数据处理代码从应用代码中被分离。参照图4的格式,JDBC 21和SQL语句22被硬编码进数据处理代码。图4的格式一般用于作为开源框架的一种的Spring Framework、由TIBCO软件公司制造的产品、商用数据处理软件开发工具包(SDK),诸如融合框架(fusion framework),和商业web应用服务器(WAS)的数据访问对象(DAO)模块,诸如WebLogic或者JRun。应用代码10仅将输入参数发送到数据处理逻辑,并且数据处理逻辑将SQL语句22输入到数据库,从数据库接收执行SQL语句22的结果,将执行结果作为Java收集对象而不是SQL ResultSet发送到应用代码10。图4中所示的这一格式可确保除SQL语句22以外的所有软件模块的一定程度的独立。
表1 是按照确保软件模块相互之间的独立来比较在图2至图4中示出的格式的性能。
表1
应用的变化 | 数据库的变化 | 数据处理逻辑的变化 | |
以图2的格式的软件模块 | 非独立 | 非独立 | 非独立 |
以图3的格式的软件模块 | 非独立 | 非独立 | 独立 |
以图4的格式的软件模块 | 独立 | 独立 | 非独立 |
当软件模块相互不独立时,软件模块之一的变化影响其它软件模块,从而增加相应的软件程序的开发和维持成本。但是,如果软件模块相互独立地被实现,则包括软件模块的系统的性能可恶化。因此,有必要开发确保软件模块互相独立并且防止系统性能恶化的系统。
发明内容
本发明提供一种在确保程序的软件模块独立的同时用于开发与数据库一起被执行的软件程序的系统和方法。
本发明还提供一种当与连接到应用的对象一起执行应用时用于减少上下文切换的系统和方法。
通过对下面描述的研究,本发明的上述方面和其它方面、特点和优点,对于本领域的技术人员将是清晰的。说明性的、非限制性的本发明的示例性实施例克服了上述缺点和上面没有描述的其它缺点。另外,本发明没有被要求克服上诉缺点,并且说明性的、非限制性的本发明的实施例可不克服上诉任何问题。
根据本发明的一方面,提供一种在确保软件模块的独立的同时,实现数据库应用的系统,所述系统包括:XML(可扩展标示语言)处理单元,分析XML文件的元素及提取SQL语句和SQL语句的识别信息;SQL信息单元,将SQL语句和SQL语句的识别信息加载到存储器装置;对象池,包括一个或多个处理对象,所述处理对象从应用接收SQL语句识别信息,搜索与接收的SQL语句识别信息相应的SQL语句,发送发现的SQL语句,从数据库接收执行发现的SQL语句的结果,并将执行结果发送到所述应用;调度程序,从应用接收第一SQL语句识别信息,从对象池选择先前从应用接收第二SQL语句识别信息的处理对象,并将第一SQL语句识别信息发送到选择的处理对象。
根据本发明的另一方面,提供一种在确保软件模块的独立的同时实现数据库应用的方法,所述方法包括:分析XML文件的元素及提取SQL语句和SQL语句的识别信息;将SQL语句和SQL语句的识别信息加载到存储器装置;从应用接收第一SQL语句识别信息,选择先前从应用接收第二SQL语句识别信息的处理对象,并将第一SQL语句识别信息发送到选择的处理对象;使选择的处理对象搜索与第一SQL语句识别信息相应的SQL语句,将发现的SQL语句发送到数据库,从数据库接收执行发现的SQL语句的结果,将执行结果发送到所述应用。
附图说明
通过参照附图对示例性实施例进行的详细描述,本发明的上述和其它特点和优点将会变得更加清楚,其中:
图1是解释包括用于处理数据的模块的传统的数据库相关的软件程序的格式的框图;
图2是用于解释传统的数据库相关的软件程序的格式的框图,在所述软件程序中SQL语句被硬编码(hard-coded)进包括JDBC和使用JDBC处理数据的应用代码;
图3是用于解释传统的数据库相关的软件程序的格式的框图,在所述软件程序中SQL语句从包括JDBC并使用JDBC处理数据的应用代码中分离;
图4是用于解释传统的数据库相关的软件程序的格式的框图,在所述软件程序中数据处理代码从应用代码中分离;
图5是根据本发明的示例性实施例的数据处理系统的框图;
图6是根据本发明的示例性实施例的用于解释数据处理系统的多个模块之间交互作用的框图;
图7是根据本发明的示例性实施例的用于解释调度程序的操作,即,处理对象的选择和对于执行由应用发出的数据库操作的请求的处理的框图;
图8是根据本发明的示例性实施例的用于解释使用包括在XML文件中的SQL语句和SQL语句的识别信息来发出对于数据库操作的请求的方法的流程图;
图9是用于比较本发明的性能和现有技术的性能的图表;和
图10是用于比较本发明的性能和现有技术的性能的图表。
具体实施方式
参照下面对示例性实施例详细描述和附图,本发明的优点和特点以及完成其的方法可以很容易地理解。然而,本发明可被包含在许多不同的形式中,并且不应该解释为限于在这里阐述的示例性实施例。而是,提供这些示例性实施例,从而公开是彻底的和完全的,并充分地将本发明的构思传达给本领域的技术人员,并且本发明将仅由附加的权利要求所限定。在整个说明书中,相同的标号始终表示相同的部件。
以下,参照根据本发明的示例性实施例的方法的流程图来描述本发明。可以理解流程图的每个方框和在流程图中的方框的组合,可通过计算机程序指令实现。这些计算机程序指令可提供给通用计算机、专用计算机或其它可编程数据处理设备的处理器,以产生设备,从而经由计算机或可编程数据处理设备的处理器执行的指令,创建用于实现在流程图的一个或多个方框中指定的功能的手段。
这些计算机程序指令也可存储在可指导计算机或其他可编程数据处理设备以特定方式运行的计算机可用或计算机可读存储器(计算机可读介质)中,从而使存储在计算机可用或计算机可读存储器中的指令产生包括实现在流程图的一个或多个方框中指定的功能的指令手段的产品。
计算机程序指令也可加载到计算机或其它可编程数据处理设备以使得一系列可操作步骤在计算机或其它可编程数据处理设备上被执行以产生计算机实现的处理,从而在计算机或其它可编程数据处理设备上执行的指令提供用于实现流程图的一个或多个方框中指定的功能的步骤。
流程图的每个方框可代表模块、段或代码的一部分,其包括一条或更多实现特定的逻辑功能的可执行指令。应注意的是,在一些替换的实现中,在这些方框中标注的功能可不按顺序发生。例如,连续示出的两个方框事实上可基本同时地被执行,或者有时所述方框以相反的顺序执行,这取决于涉及的功能。
在下面描述的本发明的示例性实施例中,“单元”、“部分”或“模块”指示软件组件或硬件组件,诸如现场可编程逻辑阵列(FPGA)或专用集成电路(ASIC)。单元执行特定的功能但不受限于软件和硬件。单元可被包含在可寻址的存储介质中或被配置为进行一个或者多个处理器(或通过一个或者多个处理器被执行)。因此,单元可包含组件,诸如软件组件、面向对象的软件组件、类组件和任务组件、进程、函数、属性、程序、子程序、程序代码段、驱动程序、固件、微码、电路、数据、数据库、数据结构、表、数组和参数。由单元提供的组件和特性可组合为较少的组件和较少的单元,或可被分成更多的组件和更多的单元。另外,组件和单元可以按这样的方式被实现:它们在装置或者安全多媒体卡(MMC)中进行一个或者多个中央处理单元(CPU)(或通过一个或者多个CPU被执行)。
图5是用于解释根据本发明的示例性实施例的数据处理系统的结构的框图。
数据处理系统执行由应用代码100请求的数据库操作。
因为数据处理系统被配置为具有用于SQL的分离的数据处理逻辑,并管理数据处理系统外部的SQL语句,所以每个应用模块、数据库模式和SQL的独立可被保持。
如图5所示,数据处理系统包括数据处理代码200并管理在数据处理代码200外部的SQL语句120,从而SQL语句120可对立于对应用代码100、数据库300和数据处理代码200作出的改变。数据处理系统也包括从应用代码100和数据处理代码200分离出来的数据库300。数据处理系统管理在数据处理代码200外部的SQL语句120。
用于处理数据库300的数据处理代码200从应用代码100分离,由于独立于应用代码100。数据处理代码200和数据库300也相互分离。数据处理代码200借助于SQL语句120和连接管理单元210,可与数据库300一起操作,由此可保持独立于数据库300。
图6是根据本发明的示例性实施例的用于解释数据处理系统的多个模块之间交互作用的框图。配置图形接口400(其设置信息接口)将提供用户接口,从而SQL语句和涉及SQL语句的设置可被存储为XML文件。可使用JavaSwing或C++实现配置图形接口400。管理员可使用配置图形接口400将数据输入到数据处理系统,并且在数据处理系统中设置参数。具体地说,管理员使用配置图形接口400在数据处理系统中可设置各种监控相关的参数,诸如用于确定是否输出用于数据处理系统的统计数据、确定输出统计数据的间隔和输出控制台消息(console message)的参数。另外,管理员使用配置图形接口400在数据处理系统中可设置各种性能相关的参数,诸如关于在预定的时间周期中可被激活的处理对象的数量的参数。此外,管理员使用配置图形接口400可编辑将被处理的SQL语句。
设置XML文件存在于数据处理系统的外部,因而需要适合的安全策略。包括在配置图形接口400中的XML加密/解密处理单元453在将设置信息存储为XML文件之前对配置图形接口400进行设置信息加密。如果在设置信息没有被XML加密/解密处理单元453处理的情况下被存储为XML文件,则未授权方可容易地发现甚至调整存储在数据库300中的数据。因此,当处理数据库300时,所有的设置信息为了防止错误被加密/解密。XML文件在不借助于XML加密/解密处理单元453的情况下作为未知类型的文件被输出。另外,即使当XML文件改变时,改变的XML文件可不会以如下方式被存储:即XML文件可在没有使用XML加密/解密处理单元453的情况下被数据处理代码200识别出。因此,可阻止未授权对数据库300的访问。
XML加密/解密处理单元453可使用Java加密扩展(JCE)1.2或者使用基于数据加密标准(DES)算法的对称密钥加密/解密算法来实现,如下:
<beau id="configinfobean"class="com.url.infra.co.dao.ConfigBean">
<property name="jndi">
<value>hpZi83aRi4Sa=</value>
</property>
<property name="dbserver">
<value>OUgdi9gjdl2=</value>
</property>
<property name="audit">
<value>6Oam93g2HQ=</value>
</property>
<property name="auditInterval">
<value>UF9Q0o8gkfuP=</value>
</property>
<property name="print">
<value>6mOPH2kdg=</value>
</property>
<property name="numOfActiveObjects">
<value>1Yk9kldWThfi=</value>
</property>.
用于数据处理系统的缺省值都是被加密的。因此,使用除XML加密/解密处理单元453之外的典型的文本编辑器不能正确地读出缺省值。
通过将缺省值和SQL语句转换为参数来创建XML文件251。详细地,通过把标识符附加到各个SQL语句并连同SQL语句写标识符,可将SQL语句转换为参数。由非加密的纯文本组成的XML语句的示例如下:<sqldata>
<sqlid>select_address_by_name</sqlid>
<sqltemplate>select address from personal_table where name=?</sqltemplate></sqldata>.
因此,为了从personal_table表中读取预定个人的地址,应用100可能够使用标识符“select_address_by_name”调用SQL语句。为了返回所述预定个人的名字,必须根据JDBC的准备好的语句的格式写SQL语句,从而应用可在运行时间里返回名字。
然后,即使用于人名的数据库300的列名从“name”变为“name_val”,也可通过简单地改变XML文件251保持应用100对于数据库300的独立。因而,应用代码100不需要被另一个代替。
数据处理代码200包括:XML处理单元252、XML加密/解密处理单元253、SQL信息单元260、对象池230、调度程序240和连接管理单元210。XML处理单元252将所有XML文件设置信息加载到服务器。当数据处理代码200基于Java系统时,使用由Spring Framework提供的BeanFactory将XML文件设置信息转换为JavaBeans,从而所述XML文件设置信息可用作类,因此,接收XML文件设置信息的服务器可使用XML文件设置信息作为对象。
XML加密/解密处理单元253,如同在配置图形接口400中的XML加密/解密处理单元453,加密或解密XML文件设置信息。XML文件一般是被加密的。因此,XML加密/解密处理单元253解密XML文件,从而获得可被执行的SQL语句。
SQL信息单元260包括多个SQL语句,并且可高速缓存到服务器的SQL语句。因为SQL语句一般可被所有服务器使用,所以SQL信息单元260可告诉缓存到服务器的SQL语句作为全局信息。
对象池230包括一个或多个处理对象231,其中的每个都按照应用100的请求执行数据操作。
每个处理对象231通过SQL处理单元220被连接到数据库300,执行操作,并且提供操作结果。
当外部系统发出用于处理对象的请求到数据处理系统时,调度程序240通过调度智能地分配处理对象之一到外部系统。
稍后将详细描述调度程序240和对象池230中的处理对象231之间的关系。
连接管理单元210,如同JDBC,提供数据处理代码200到数据库300的连接。换句话说,连接管理单元210提供用于使数据处理代码200能够与数据库300一起操作的应用编程接口(API)。
SQL处理单元200包括用于处理询问和选择实现方法的接口。
现在将详细描述数据处理代码200的操作。
关于数据库300的类型、到数据库300的连接的类型(例如,直接连接)或Java命名和目录接口(JNDI)的信息通过配置图形接口400在数据处理代码200中被设置。另外,用于数据处理代码200与数据库300一起操作的参数,诸如驱动名称、统一资源定位符(URL)、标识符和口令,可通过配置图形接口400在数据处理代码200中被设置。另外,监控相关的信息,诸如指示是否输出统计数据的信息、关于统计数据的输出间隔的信息和指示是否输出控制台消息的信息,可通过配置图形接口400在数据处理代码200中被设置。此外,在对象池230中将被产生的处理对象的数量可使用配置图形接口400在数据处理代码200中被设置,并且应用100可使用的询问语句(即,SQL语句)可作为XML参数被存储。所有这些设置通过XML加密/解密单元453加密,并且加密的结果被存储在XML文件251中。
数据处理代码200产生处理对象231并处理由外部应用发出的对于执行数据库操作的请求。这里,数据处理代码200可仅产生一个处理对象231,从而处理对象231可由多个外部应用共享。稍后将参照图7更详细地描述由数据处理代码200产生的处理对象231。XML处理单元252打开并读取XML文件251,从而处理对象231可读取XML文件251。尽管由XML处理单元252读出XML文件251,但是可使用由Spring Framework提供的BeanFactory将SQL语句和所有XML设置信息转换为JavaBeans,所述Spring Framework是开源框架的一种。当作为JavaBeans加载SQL语句和XML设置信息时比当作为参数加载SQL语句和XML设置信息时更能提高SQL语句和XML设置信息的可重用性。
XML加密/解密处理单元253解密包括在XML文件251中的加密数据,因此检索原始的XML设置信息。SQL信息单元260从XML文件251中提取SQL相关的信息,并且将提取的SQL相关的信息加载到服务器。同时,可建立Java收集对象“Map”。
数据处理代码200可使用询问标识符搜索期望的SQL语句。
应用100发出对于处理对象的请求到用于处理数据的数据处理代码200。调度程序240将当前对于应用100是可用的处理对象的信息发送到应用100。应用100为了完成预定的操作发出对于处理数据的请求。同时,应用100没有将SQL语句输入到数据处理代码200,而是将询问标识符发送到处理对象231。例如,为了搜索地址表寻找预定的人的地址,应用100可将标识符“select_address_by_name”和预定的人的名字发送到处理对象231。数据处理代码200管理关于询问标识符和SQL语句之间相应的信息。因此,数据处理代码200可找到然后执行与应用100发送的询问标识符相应的SQL语句。因此,即使SQL语句改变了,只要与SQL语句相应的询问标识符没有改变,不需要将数据处理代码200由另一个数据处理代码代替,应用100可使用数据处理代码200。因此,应用100独立于SQL语句的转换。
此外,当应用100请求预定的询问时,数据处理代码200可产生关于预定询问的统计数据。由应用100请求的询问通过将处理对象231连接到SQL处理单元220的连接管理单元210被SQL处理单元220处理。
连接管理单元210使用诸如JDBC接口的接口处理(连接)数据库300,并且将处理(连接)结果发送到处理对象231。然后,应用100从处理对象231接收处理(连接)结果。
处理对象231将询问发送到数据库300,并且从数据库300接收询问结果。因此,处理对象231必须连接到数据库300。但是,连接处理对象231到数据库300比将询问发送到数据库300并从数据库300接收询问结果花费更多的时间。因此,处理对象231需要被设计成容易连接到数据库300。因此,可使用比连接池化方法提供更大池化单元的对象池化方法,从而可建立处理对象231和数据库300之间的连接,然后处理对象231可被分配给应用。
同时,执行上下文切换以及在处理对象231和数据库300之间建立连接花费相当多的时间。因此,为了减少上下文切换时间,工作线程可被再次分配给先前的请求者。因此,调度程序240保持关于先前请求者的信息,从而先前请求者最近使用的对象可被再次分配给先前请求者。如图6所示的SQL处理单元220位于数据处理代码200的外部。但是,SQL处理单元220可明显地位于数据处理代码200的内部。
图7是根据本发明的示例性实施例的用于解释调度程序240的操作,即,处理对象的选择和对于执行由应用发出的数据库操作的请求的处理的框图。
为了执行预定的数据库操作,应用101发出对于处理对象的分配的请求到调度程序240。调度程序240分配响应于最近由应用101发出的请求而执行数据库操作的处理对象到应用101,由此防止上下文切换。由于这个原因,仅产生一个处理对象,从而其通过在数据库上执行由N个应用中的每一个请求的数据库操作可服务N个应用。当大于处理对象的容量被请求时,产生另一个处理对象,从而其可处理除了N个应用之外的应用发出的请求。
例如,假设,在处理对象232处理由2个应用101和102发出的请求的同时,应用103发出对于执行数据库操作的请求到处理对象232,调度程序240可分配另外一个新的处理对象233到应用103,从而由应用103发出的请求可由新的处理对象233处理。
图8是根据本发明的示例性实施例的用于解释使用包括在XML文件中的SQL语句和SQL语句的识别信息来发出对于数据库操作的请求的方法的流程图。
在操作S401,数据处理代码分析XML文件的元素并提取SQL语句和SQL语句的识别信息。在操作S402,如果XML文件的元素被加密或XML文件本身被加密,则数据处理代码解密XML文件的元素或XML文件。在操作S403,SQL语句和SQL语句的识别信息被加载到存储器装置。在操作S403,如果数据处理代码是基于Java系统的,则SQL语句和SQL语句的识别信息可被转换为JavaBeans,并且可将JavaBeans加载到存储器装置。其后,产生处理对象,从而处理对象可处理由应用发出的请求。
在操作S410,数据处理代码可进入备用模式直到对于执行数据库操作的请求(以下指的是当前请求)由应用发出。在操作S411,当从应用接收SQL语句识别信息时,将其发送到处理对象。更具体地说,如上所述,调度程序保持关于应用的信息,因而搜索先前处理由应用最近发出的请求的处理对象。其后,调度程序将接收的SQL语句识别信息发送到发现的处理对象,因此减少上下文切换需要的时间。发现的处理对象参照在操作S403加载到存储器装置的SQL语句和SQL语句的识别信息,搜索与接收的SQL语句识别信息相应的SQL语句。在操作S412,发现的处理对象将发现的SQL语句发送到数据库,并且发出对于执行发现的SQL语句的请求到数据库。在操作S420,发现的处理对象从数据库接收执行结果。执行结果可包括表的多个记录或指定发现的SQL语句的执行是否已经成功的信息。在操作S421,发现的处理对象将执行结果发送到应用。如果应用稍后再次请求数据库操作,则调度程序可立刻将从应用接收的SQL语句识别信息发送到发现的处理对象。
图9是用于比较本发明的性能和现有技术的性能的图表。本发明的执行使用ANSI SQL标准延展性与移植性(AS3AP,ANSI SQL Standard Scalableand Portable Benchmark)来测试,所述AS3AP是数据库基准程序的一种。如果使用本发明实现软件模块,则软件模块的独立性可提高,但是包括软件模块的系统的性能会恶化,为了防止系统性能的显著恶化,可使用对象池化方法(代替连接池化方法)和能够减少上下文切换的处理对象调度方法,并且Java系统的数组表和对象可分别被选为SQLResultSet行和列。
参照图9,在S0的情况下,本发明提供更短的响应时间,因此具有比现有技术更好的性能。在S1至S9的情况下,本发明提供几乎和现有技术一样短的响应时间。因此,在整个S0至S9中,本发明一般具有比现有技术更好的性能。
图10是用于比较本发明的性能和现有技术的性能的图表。即使线程的数量增加,通过选择地应用本发明也可防止每秒处理的操作数量大幅度减少。
如上所述,根据本发明,可以防止一个软件模块的改变影响其它的软件模块。系统可保证软件模块的独立和开发数据库应用的灵活性、减少软件程序的开发和维持成本并确保软件程序的独立。
在不脱离本发明的范围和精神的情况下,对其进行的各种修改和改变对于本领域的技术人员是明显的。因此,可以理解上述示例性实施例不是限制性的,而是对本发明的各种方面的说明。本发明的范围由附加的权利要求限定而不是由本发明的详细说明书限定。源于权利要求的范围和精神的所有修改和改变和其等同物应该解释为被包括在本发明的范围内。
Claims (8)
1、一种系统包括:
XML处理单元,分析XML文件的元素及提取SQL语句和SQL语句的识别信息;
SQL信息单元,将SQL语句和SQL语句的识别信息加载到存储器装置;
对象池,包括一个或多个处理对象,所述处理对象从应用接收SQL语句识别信息,搜索与接收的SQL语句识别信息相应的SQL语句,发送发现的SQL语句,从数据库接收执行发现的SQL语句的结果,并将执行结果发送到所述应用;和
调度程序,从应用接收第一SQL语句识别信息,从对象池选择先前从应用接收第二SQL语句识别信息的处理对象,并将第一SQL语句识别信息发送到选择的处理对象。
2、如权利要求1所述的系统,其中,XML文件包括执行从XML文件提取的SQL语句必需的数据库信息。
3、如权利要求1所述的系统,其中,XML文件或XML文件的元素是加密的,并且XML处理单元包括解密XML文件或XML文件的元素的XML加密/解密处理单元。
4、如权利要求1所述的系统,其中,处理对象还接收执行与接收的SQL语句识别信息相应的SQL语句需要的参数。
5、在确保软件模块的独立的同时实现数据库应用的方法,包括:
分析XML文件的元素及提取SQL语句和SQL语句的识别信息;
将SQL语句和SQL语句的识别信息加载到存储器装置;
从应用接收第一SQL语句识别信息,选择先前从应用接收第二SQL语句识别信息的处理对象,并将第一SQL语句识别信息发送到选择的处理对象;和
使选择的处理对象搜索并发现与第一SQL语句识别信息相应的SQL语句,将发现的SQL语句发送到数据库,从数据库接收执行发现的SQL语句的结果,将执行结果发送到所述应用。
6、如权利要求5所述的方法,其中,XML文件包括执行从XML文件提取的SQL语句必需的数据库信息。
7、如权利要求5所述的方法,其中所述提取包括:如果XML文件或XML文件的元素是加密的,则解密XML文件或XML文件的元素。
8、如权利要求5所述的方法,其中,第一SQL语句识别信息的发送包括发送执行与第一SQL语句识别信息相应的SQL语句需要的参数。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020050048470 | 2005-06-07 | ||
KR1020050048470A KR100714693B1 (ko) | 2005-06-07 | 2005-06-07 | 소프트웨어 모듈의 독립성을 보장하는 데이터베이스어플리케이션을 구현하는 시스템 및 방법 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1877579A true CN1877579A (zh) | 2006-12-13 |
CN100437584C CN100437584C (zh) | 2008-11-26 |
Family
ID=36950118
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100885941A Expired - Fee Related CN100437584C (zh) | 2005-06-07 | 2006-06-06 | 在确保软件模块独立的同时实现数据库应用的系统和方法 |
Country Status (5)
Country | Link |
---|---|
US (1) | US20060277158A1 (zh) |
EP (1) | EP1732003A2 (zh) |
JP (1) | JP2006344213A (zh) |
KR (1) | KR100714693B1 (zh) |
CN (1) | CN100437584C (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968333A (zh) * | 2011-06-30 | 2013-03-13 | 国际商业机器公司 | 使本机程序被主程序调用时继承事务上下文的方法和系统 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9361400B2 (en) * | 2007-10-12 | 2016-06-07 | Asml Netherlands B.V. | Method of improved hierarchical XML databases |
CN103098048A (zh) * | 2010-07-22 | 2013-05-08 | 惠普发展公司有限责任合伙企业 | Sql枚举器 |
KR101564639B1 (ko) | 2013-05-03 | 2015-10-30 | 주식회사 엘지유플러스 | 데이터 처리 방법 및 장치 |
US9164740B2 (en) | 2013-05-16 | 2015-10-20 | Toshiba Global Commerce Solutions Holdings Corporation | System and method for replacing java beans |
WO2014204989A1 (en) * | 2013-06-18 | 2014-12-24 | Ciambella Ltd. | Method and apparatus for code virtualization and remote process call generation |
CN103677975A (zh) * | 2013-12-09 | 2014-03-26 | 北京恒华伟业科技股份有限公司 | 一种访问应用系统内部对象的系统和方法 |
US9619122B2 (en) | 2014-01-10 | 2017-04-11 | Ciambella Ltd. | Method and apparatus for automatic device program generation |
CA2984106C (en) | 2015-05-08 | 2021-12-21 | Ciambella Ltd. | Method and apparatus for automatic software development for a group of controller-based devices |
US10067490B2 (en) | 2015-05-08 | 2018-09-04 | Ciambella Ltd. | Method and apparatus for modifying behavior of code for a controller-based device |
WO2018170079A1 (en) | 2017-03-14 | 2018-09-20 | Ciambella Ltd. | Method and apparatus for automatically generating and incorporating code in development environments |
US10289409B2 (en) | 2017-03-29 | 2019-05-14 | The Travelers Indemnity Company | Systems, methods, and apparatus for migrating code to a target environment |
US10592391B1 (en) | 2017-10-13 | 2020-03-17 | State Farm Mutual Automobile Insurance Company | Automated transaction and datasource configuration source code review |
US10585663B1 (en) | 2017-10-13 | 2020-03-10 | State Farm Mutual Automobile Insurance Company | Automated data store access source code review |
JP6866270B2 (ja) * | 2017-10-17 | 2021-04-28 | 株式会社日立システムズ | Sql文抽出装置、sql文抽出方法及びプログラム |
US10318412B1 (en) * | 2018-06-29 | 2019-06-11 | The Travelers Indemnity Company | Systems, methods, and apparatus for dynamic software generation and testing |
CN110471763B (zh) * | 2019-07-29 | 2023-07-25 | 平安科技(深圳)有限公司 | 基于共享对象池的调度方法、系统、介质及电子设备 |
CN110609782B (zh) * | 2019-09-19 | 2022-07-12 | 四川长虹电器股份有限公司 | 基于大数据的微服务优化系统及方法 |
CN111274269B (zh) * | 2020-01-17 | 2023-07-07 | 广州至真信息科技有限公司 | 一种数据处理的方法及装置 |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5687362A (en) * | 1995-01-30 | 1997-11-11 | International Business Machines Corporation | Enumerating projections in SQL queries containing outer and full outer joins in the presence of inner joins |
US6237003B1 (en) * | 1998-11-30 | 2001-05-22 | Platinum Technology Ip, Inc. | Method and apparatus for supporting dynamic run-time object definition in a relational database management system |
JP2002132551A (ja) | 2000-10-18 | 2002-05-10 | Nec Corp | データベースシステム |
US7107255B2 (en) * | 2001-06-21 | 2006-09-12 | International Business Machines Corporation | Self join elimination through union |
US7133864B2 (en) * | 2001-08-23 | 2006-11-07 | Syngenta Participations Ag | System and method for accessing biological data |
US20030140068A1 (en) * | 2001-11-26 | 2003-07-24 | Peter Yeung | Arrangement, system and method relating to exchange of information |
KR100420103B1 (ko) * | 2002-01-24 | 2004-03-02 | (주) 자이오넥스 | 엑스엠엘 기반의 웹 어플리케이션 구현 시스템 및 방법 |
US7058890B2 (en) * | 2002-02-13 | 2006-06-06 | Siebel Systems, Inc. | Method and system for enabling connectivity to a data system |
KR100484138B1 (ko) * | 2002-05-08 | 2005-04-18 | 삼성전자주식회사 | 관계형 데이터베이스에서 정규 경로식 질의를 처리하는xml 인덱싱 방법과 자료구조 |
US6917935B2 (en) * | 2002-06-26 | 2005-07-12 | Microsoft Corporation | Manipulating schematized data in a database |
KR100405164B1 (ko) * | 2003-03-06 | 2003-11-12 | 재단법인 충남대학교 산학연교육연구재단 | 산업폐기물 및 폴리머를 이용한 상호연결 복층형 고기능포러스 식생블록의 제조방법 |
EP1467289A1 (en) * | 2003-04-07 | 2004-10-13 | Deutsche Thomson-Brandt Gmbh | database model for hierarchical data formats |
JP4289022B2 (ja) | 2003-05-22 | 2009-07-01 | 日本電信電話株式会社 | 構造化文書処理方法及び装置及び構造化文書処理プログラム及び構造化文書処理プログラムを格納した記憶媒体 |
US20050015368A1 (en) * | 2003-07-15 | 2005-01-20 | International Business Machines Corporation | Query modelling tool having a dynamically adaptive interface |
US20050097128A1 (en) * | 2003-10-31 | 2005-05-05 | Ryan Joseph D. | Method for scalable, fast normalization of XML documents for insertion of data into a relational database |
-
2005
- 2005-06-07 KR KR1020050048470A patent/KR100714693B1/ko not_active IP Right Cessation
-
2006
- 2006-05-25 JP JP2006145279A patent/JP2006344213A/ja active Pending
- 2006-06-01 EP EP06252844A patent/EP1732003A2/en not_active Withdrawn
- 2006-06-06 CN CNB2006100885941A patent/CN100437584C/zh not_active Expired - Fee Related
- 2006-06-07 US US11/447,972 patent/US20060277158A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102968333A (zh) * | 2011-06-30 | 2013-03-13 | 国际商业机器公司 | 使本机程序被主程序调用时继承事务上下文的方法和系统 |
CN102968333B (zh) * | 2011-06-30 | 2016-02-17 | 国际商业机器公司 | 使本机程序被主程序调用时继承事务上下文的方法和系统 |
US9449030B2 (en) | 2011-06-30 | 2016-09-20 | International Business Machines Corporation | Method for native program to inherit same transaction content when invoked by primary program running in separate environment |
US9760583B2 (en) | 2011-06-30 | 2017-09-12 | International Business Machines Corporation | Method for native program to inherit same transaction context when invoked by primary program running in separate environment |
Also Published As
Publication number | Publication date |
---|---|
KR20060127468A (ko) | 2006-12-13 |
JP2006344213A (ja) | 2006-12-21 |
KR100714693B1 (ko) | 2007-05-04 |
CN100437584C (zh) | 2008-11-26 |
US20060277158A1 (en) | 2006-12-07 |
EP1732003A2 (en) | 2006-12-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1877579A (zh) | 在确保软件模块独立的同时实现数据库应用的系统和方法 | |
CN100337235C (zh) | 访问数据库的方法及装置 | |
CN101034990A (zh) | 权限管理方法及装置 | |
CN1567310A (zh) | 使用元数据索引的元数据搜索方法及设备 | |
US11893462B2 (en) | Machine learning using secured shared data | |
CN1359068A (zh) | 文件管理方法和存储信息记录重放装置及存储信息记录媒体 | |
CN1761923A (zh) | 加密数据库列的方法和设备 | |
CN1745375A (zh) | 内容管理系统及过程 | |
CN1484168A (zh) | 链接处理装置和链接处理方法 | |
US11423081B1 (en) | Accessing files in a database stage using a user defined function | |
CN1662011A (zh) | 使用元数据定义映射来构建组件应用程序的系统和方法 | |
CN101060539A (zh) | 采用统一入口网站地址集成和推送多网站内容的方法及系统 | |
CN1991870A (zh) | 数据删改防止方法及数据删改防止系统 | |
US20240168834A1 (en) | Invoking specified functionality within a sandbox process | |
CN1831826A (zh) | 内容发布系统、内容发布方法、及其计算机可读存储介质 | |
CN100473150C (zh) | 通过url的数字项目适应系统 | |
US20240176763A1 (en) | Accessing data objects using user defined function (UDF) streams | |
CN1457585A (zh) | 客户端整体健康状况检查 | |
CN116257671A (zh) | 一种基于标识解析的数字化档案管理方法、设备及介质 | |
CN1607497A (zh) | 独立装置驱动器 | |
CN1414492A (zh) | 基于移动Agent的资源封装和网络化集成方法 | |
CN1317638C (zh) | 数据库驱动程序的装载方法 | |
CN1251716A (zh) | 数字通信系统、发送装置和数据选择装置 | |
CN1834961A (zh) | 一种词典类数据的检索方法 | |
US11809425B1 (en) | Function memoization in query processing system |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20081126 Termination date: 20190606 |
|
CF01 | Termination of patent right due to non-payment of annual fee |