应用和数据服务器的动态桥接的制作方法

文档序号:6500491阅读:180来源:国知局
应用和数据服务器的动态桥接的制作方法
【专利摘要】本文描述了一种便于应用服务器和数据服务器的动态桥接的技术。根据其一方面,在应用服务器处产生基于应用的源代码的查询脚本。查询脚本可以包括表示在应用的源代码中的动态项的至少一个占位符。通过用基于在应用执行期间接收的一个或者多个值而产生的静态项替代占位符,来处理查询脚本。然后执行查询脚本,以管理在数据服务器处的数据。
【专利说明】应用和数据服务器的动态桥接

【技术领域】
[0001]本公开大体上涉及数据库,并且更具体地,涉及应用和数据服务器的动态桥接。

【背景技术】
[0002]数据库典型地包括用于存储数据值的一个或者多个数据库表格。为了访问在数据库中的数据,应用典型地向数据库管理系统(DBMS)发出数据库查询,其从数据库中检索数据。DBMS可以被构造为支持来自请求应用服务器的不同类型的操作以检索、添力卩、修改和/或删除正被存储在数据库中的数据。然后,应用解释从数据服务器中检索的数据,并且将数据变换为可以通过应用处理的格式。
[0003]通常地,在应用和数据服务器中不同地表示和操作数据。可以使用高级的编程语言来编写应用,其提供适合于开发商业应用的高级抽象,例如,开发自定义的报告和接口。该种高级编程语言可以允许在运行期间,动态地选择用于数据库访问的值和条件。可以在运行期间通过用户来提供动态的选择,以定义要执行的查询。
[0004]另一方面,数据服务器被典型地构造为支持使用静态查询语言来编程的操作,其要求所有的变量和条件在汇编(在运行时间之前)被定义或者已知。该种静态查询语言的一个示例是静态结构化查询语言(“SQL”),其已经进化为数据库系统用于解释在哪里如何存储并操作什么数据的标准语言。静态SQL语句不会在执行之间发生变化。静态SQL语句的全文在汇编时已知。
[0005]为了整合应用和数据服务器,可能需要将应用代码翻译为与数据库服务器相兼容的查询语言。然而,由于在应用中被编码的现有的商业逻辑的复杂性而导致很难执行该种翻译。此外,将以应用的自定义数据类型和结构来存储的数据转换为数据库的原本的数据类型和结构也是不容易的。
[0006]整合应用和数据库服务器的一种普通方法是使用动态SQL。动态SQL是SQL的扩展,其通过数据库服务器来执行,并且在构造SQL查询语句中,允许数据服务器考虑在运行时间期间接收的用户输入。与静态SQL相比,其提供了更高的灵活性,并且允许使用静态SQL可能不支持的变量。
[0007]然而,在数据服务器中执行动态SQL可能对安全性具有不良的影响。因为在汇编期间没有获知变量,所以确保查询语句参考有效的数据库对象或者确保必要的特许操作已就位来访问数据库对象的验证没有得到执行。此外,用于最优化的机会受到限制,并且查询语句可能会在每次执行语句时被重新编译。
[0008]因此,需要用于解决上述挑战的改善的整合框架。


【发明内容】

[0009]在本文中,描述了一种用于便于应用和数据服务器的动态桥接的计算机实施技术。根据一方面,在应用服务器处产生基于应用的源代码的查询脚本。查询脚本可以包括至少一个占位符,其表示在应用的源代码中的动态项(term)。可以通过用基于在应用的执行期间接收的一个或者多个值而产生的静态项来替代占位符而处理查询脚本。然后,可以执行查询脚本以在数据服务器处管理数据。
[0010]利用在下文中将变得显而易见的这些或者其他的优点和特征,通过参考以下的详细描述和所附的权利要求,以及所附的附图可以获得更多地信息。

【专利附图】

【附图说明】
[0011]在所附附图中示出了一些实施例,在其中,相同的参考标号表示相同的部件,并且其中:
[0012]图1是示出了示例性系统的框图;
[0013]图2示出了示例性的方法;
[0014]图3a示出了用于在运行时间期间获得用户输入的示例性用户界面;
[0015]图3b示出了示例性的动态数据结构。

【具体实施方式】
[0016]在以下的描述中,出于解释的目的,特定数字、材料、和配置被阐述以提供对于本框架和方法的完整的理解,并且用于满足按法定书写说明书、充分公开、以及最佳实施方式的要求。然而,对于本领域的技术人员显而易见的是,本框架和方法可以在没有这些特定示例性细节的情况下实现。在其他情况下,公知的特征被省略或者被简化,以阐明本框架和方法的示例性实施方法的描述,并且由此更好地解释本框架和方法。此外,为了便于理解,将某些方法步骤描述为单独的步骤;然而,这些单独描述的步骤不应该被理解为与其性能相关的必须的次序。
[0017]在此描述了用于便于应用和商业服务器的动态桥接的框架。本框架的一个方面提供了在应用服务器内的动态桥接。动态桥接从应用的源代码中产生查询脚本。应用可以以高级编码语言来进行编码,其允许在运行时间期间对变量和条件的动态选择,而查询脚本可以以与数据服务器相兼容的静态查询语言来编码。
[0018]在一些实施方式中,查询脚本通过利用占位符来解释在应用源代码中遇到的任何动态项而产生。例如,动态项可以是仅仅在应用的运行时间期间定义的条件和变量。例如,占位符可以是一个或者多个符号的预定的串。在应用的执行期间接收与动态项相关的实际值之后,动态桥接可以通过利用基于实际值而产生的静态项替代它,从而进一步处理查询脚本。静态项的值被固定,并且在运行时间期间没有发生变化。动态桥接可以进一步对查询脚本进行验证和格式化。然后,最后的查询脚本可以经由数据库接口,而通过应用服务器直接执行,以检索来自数据服务器的结果。
[0019]通过在应用服务器处准备查询脚本,查询脚本的数据库特定的最优化可以在应用服务器端执行,以充分地利用(leverage)数据服务器的能力,并且增强性能。查询脚本可以被存储作为在应用服务器存储器中的功能模块,使得应用开发者能根据需要而更加方便地验证、释放、和固定查询脚本。此外,通过避免使用例如,在数据服务器端执行的动态SQL,与动态SQL相关的性能损失和安全性风险得到避免和最小化。将在以下的描述中更加详细地描述这些和其他的优点和方面。
[0020]在此描述的框架可以被实现为方法、计算机控制的装置、计算机进程、计算系统、或者作为诸如计算机可用介质的制造的物件。这些和其他的特征将在以下的描述中变得显而易见。
[0021]图1显示了示出示例性系统100的框图,其可以被用于实现在此描述的框架。系统100可以包括计算机系统106,其可以与输入装置102 (例如,键盘、触摸板、麦克风、相机等)以及输出装置104 (例如,显示装置、监视器、打印机、扬声器等)通信地耦合。计算机系统106还可以包括通信卡或者装置116 (例如,调制解调器和/或网络适配器),其用于使用通信链路130 (例如,电话线、无线网络链路、有线网络链路、或者电缆网络)来与网络132交换数据。网络132可以是局域网(LAN)或者是广域网(WAN)。计算机系统106可以经由网络132而通信地耦合到一个或者多个其他计算机系统154。例如,计算机系统106可以作为服务器,并且使用到一个或者多个到客户端计算机150的逻辑连接来在网络环境下进行操作。
[0022]计算机系统106包括中央处理单元(CPU) 114、输入/输出(I/O)单元110、以及存储器模块112。诸如缓存器、电源、时钟电路、以及通信总线的其他支持电路也可以被包括在计算机系统106中。此外,上述的任何一个都可以通过专用集成电路来进行补充或者可以被集成到专用集成电路中。计算机系统106的示例包括能够以限定的方式来响应和执行指令的手持装置、移动装置、个人数字助理(PDA)、工作站、服务器、便携式膝上型计算机、其他便携式装置、迷你计算机、大型机、存储系统、专用数字设备、装置、组件、其他设备、或者这些装置的一些组合。
[0023]存储器模块112可以是任何形式的非临时性计算机可读介质,包括,但不限于动态随机存取存储器(DRAM)、静态随机存取存储器(SRAM)、可擦除可编程只读存储器(EPR0M)、电可擦除可编程只读存储器(EEPR0M)、闪速存储器装置、磁盘、内部硬盘、可移动盘、磁光盘、光盘只读存储器(CD-ROM)、任何其他易失性或非易失性存储器、或其组合。
[0024]存储器模块112用于存储机器可执行指令、数据、和用于实现本文描述的技术的各种软件组件,所有这些都可以由CPUl 14处理。因此,计算机系统106是通用计算机系统,其在执行机器可执行指令时成为专用计算机系统。可选地,这里所描述的各种技术可以被实现作为通过应用服务器120而执行的软件产品的一部分。每个计算机程序可以以高级程序或面向对象的编程语言(例如,C、C++、Java等)来实现,或者根据需要而以汇编语言或机器语言来实现。该语言可以是编译或解释语言。机器可执行指令不打算受限于任何特定的编程语言和其实施方式。应理解的是,多种编程语言及其编码可被用于实施在本文中公开的教导。
[0025]在一个实施方式中,计算机系统106的存储器模块112包括应用服务器120与数据服务器127。应用服务器120可以存储应用122,包括源代码和可执行的机器码,以执行应用的功能。例如,应用122可能是被设计成执行各种商业功能的商业应用,诸如,客户关系管理(CRM)、企业资源管理(ERP)应用、人力资源管理、企业内容管理(ECM)、商业流程管理(BPM)、产品生命周期管理、商业智能等等。可以使用诸如Java、C++、来自S.\P、R AG的高级商业应用编程(ABAP?)等的允许在运行时间期间动态选择变量和条件的高级编程语言来对应用122进行编码。其他类型的编程语言也是有用的。
[0026]应用122可以将数据存储在应用存储器123中。应用存储器123可以包括,例如,内部表格或其他自定义或标准的数据结构,以用于保持和操作应用122所使用的数据。此夕卜,数据可以具有对于应用122原生的各种标准类型(例如,浮点型,整数型等)或者自定义类型。例如,应用122可以包括用于存储数据的内部表格。内部表格可以包含自定义的数据结构和自定义的数据类型。
[0027]应用服务器120可进一步包括动态桥接器124。动态桥接器124便于应用服务器120以及数据服务器127的集成。更特别地,动态桥接器124可以基于应用122的源代码而准备查询脚本。查询脚本可以包括一个或多个占位符,其表示应用122的源代码中的动态项(例如,条件、变量等)。当在运行时间中执行应用122时,这些动态项的实际值可以例如,从用户输入中确定。然后,基于这些值,动态桥接器124可以以与数据服务器127兼容的语言来生成静态项。然后,对查询脚本进行处理,以利用相应的静态项来取代占位符。查询脚本可以进一步验证,以最小化安全风险,和/或将其格式化,以提高可读性。处理的查询脚本可以直接通过应用服务器120来执行,以管理存储在数据服务器127中的数据(例如,发送、检索、更新等)。这些示例性特征的更多细节将在以下描述中提供。
[0028]数据服务器127可以包括数据库管理系统(DBMS) 128和数据库129。DBMS128可包括一套程序来定义、管理、和处理数据库129。在客户端计算机150的用户可以与用户界面152交互,以通过应用服务器120和DBMS128而与数据库129进行通信。
[0029]在一个实施例中,数据库129是存储器内的数据库,其主要依靠系统的主要存储器,以用于高效的计算机数据存储。更具体地说,在存储器内数据库中的数据驻留在易失性存储器中,而不是永久地存储在硬盘驱动器中,从而允许数据以几兆字节每毫秒的速度被立即访问和扫描。存储器内数据库129允许实时地无缝访问和传播高容量的数据。通过结合存储器内数据库129来使用多核处理器114,可以进一步实现并行处理。存储器内数据库技术包括诸如SAP HANA (高性能分析设备)存储器内计算引擎的系统。
[0030]在存储器内数据库129中可以进一步实现基于列的数据存储,其中,在压缩的存储器块中,数据表格被顺序地存储作为数据列。这可能有助于在对单个列执行计算时,更快的数据集合。或者,基于行的数据存储也是可以的。在一些实施方式中,替代更新整个行,将仅仅更新已经改变的字段。这样就避免了在更新期间锁定整个数据表格,从而防止对于一组数据的冲突修改。可以实现高水平的并行化,这对于实时数据流的实时处理,以及执行恒定和基本同时更新而言是极其重要的。
[0031]应当理解的是,计算机系统106的不同组件可以位于不同的机器上。例如,应用服务器120和数据服务器127可以被实现在不同的物理机器或计算机系统上。还应当理解的是,客户端计算机150的不同组件也可以位于在计算机系统106上。
[0032]图2示出了动态地桥接应用服务器120以及数据服务器127的示例性方法。方法200可以通过如之前参考图1所描述的系统100来实现。应当指出,在下面的讨论中,将使用相同的标号来标识在图1中所描述的特征。
[0033]在204,应用服务器120的动态桥接器124基于应用122来准备查询脚本的起草版本。正如前面讨论的,可以使用诸如Java、C++、来自SAP AG&的高级商业应用编程(ABAP?)等的允许在运行时间期间动态选择变量和条件的高级编程语言来对应用122进行编码。在一些实施方式中,动态桥接器124将应用122的独立于数据库的源代码翻译或者解释为对于DBMS128而言原生或者可以被其理解的查询脚本中的相当的查询语句。查询脚本可以基于SQL语言或其扩展(即SQLScript),或者被设计为用于管理数据库129中的数据的任何其他的查询语言。该翻译可以自动地进行,或者在开发人员的帮助下半自动地进行。通过将应用源代码翻译成对于DBMS128而言原生的查询脚本,数据服务器127的能力(例如,存储器内计算)可以被充分利用,以提供增强的性能。
[0034]查询脚本可以被存储在应用服务器120中作为功能模块,例如,作为无格式或常数串。这有利地允许应用开发人员访问查询脚本,以用于修改。此外,查询脚本的版本控制可以按照应用的代码发行过程。
[0035]起草的查询脚本可以包括一个或多个嵌入在其中的占位符。占位符表示稍后将被从在应用122的运行时间期间获得的实际值产生的静态项替换的动态项。这种占位符可以包括一个或多个符号的预定义串。不同的占位符可以被用于解释在查询脚本中的不同类型的动态项。占位符的使用允许在保持商业逻辑的流的同时并入动态项。
[0036]在一些实施方式中,占位符代表动态条件。例如,在ABAP应用122中,示例性动态条件包括WHERE筛选条件,其比较持久化类的属性与在运行时间期间声明的自由参数或值。在步骤204的转换期间,原始的应用源代码中的动态条件可以由特定的占位符(例如:WHERE_XX_C0NDIT10N)取代,并且被嵌入到起草的查询脚本中。
[0037]动态条件也可以被存储在数据结构中,诸如,在内部表格中。例如,在ABAP应用122的情况下,内部表格可以是范围表格(或选择表格),其具有四个组成部分(SIGN(标记),OPT1N (选项),LOff (低),HIGH (高)),以指定在ABAP的很多语句中的复杂条件。在步骤204的转换期间,这样的数据结构也可以由特定的占位符(例如:WHERE_XX_C0NDIT10N)来解释,并且嵌入起草的查询脚本中。
[0038]在一些实施方式中,占位符可以表示在原始的应用122的源代码中的动态变量。变量是命名的数据对象,其在应用存储器123中在特定的名称下存储可变数据,并且其可以表示在原始应用代码中的一些商业逻辑。动态变量是具有在应用122被运行时所动态声明的值的变量。变量的值可以响应于,例如,用户通过用户界面进行选择(例如,复选框、单选按钮、下拉菜单、文本框等)而被声明。在步骤204的转换期间,在原始应用源代码中的动态变量可以通过起草的查询脚本中的特定占位符(例如:XX)来代替,以表明其在运行时间期间将由静态项来替换。
[0039]在206中,起草的查询脚本可以通过利用基于应用122在运行期间获得的实际值而产生静态项来替换嵌入的占位符而进行处理。如前面所讨论的,占位符可以表示动态项,诸如动态条件和/或变量。与该动态项相关联的实际值可以通过用户经由用户界面提供。然后,静态项可以基于实际值而生成,以取代动态项。例如,表示范围表格的“:WHERE_XX_CONDIT1N”占位符可以通过包括具有实际值的WHERE条件的串来代替。
[0040]在208中,查询脚本被验证。执行验证以最小化安全风险。例如,在SQL查询脚本的情况下,脚本可以验证,以防止SQL注入。SQL注入是一种代码注入技术,其通常通过在输入字段中包括SQL语句的部分,以试图使应用服务器120将新成立的恶意SQL命令传递到数据服务器127,从而被用于攻击数据驱动的应用。通过识别作为安全隐患的指示的一个或多个敏感词,诸如“删除表”、“删除格式”、“创建用户”、“创建角色”等,而可以在查询脚本中检测该种代码注入。敏感词可以是预定义的,并存储在黑名单中或者在任何其他数据结构中。当检测到一个或多个敏感词时,将其从查询脚本中移除,以阻止这样的恶意命令的执行。此外,可以通过用户界面152来显示警告消息,以通知和提示用户来修改输入。
[0041]在210中,为了开发者的可读性而将查询脚本格式化,以方便调试和跟踪。查询脚本可以通过在查询脚本中添加或删除换行、空格、缩进等而被格式化。通过例如,基于诸如WHERE (何处)、GROUP BY (通过……分组)、HAVING (具有)等的关键字,将代码的逻辑相关段分组来进一步组织查询脚本。
[0042]在212中,通过数据库接口来执行查询脚本。数据库接口用来建立与数据服务器127的连接,以便执行查询脚本。比如,ADBC可用于建立在ABAP应用服务器120与数据服务器127之间的数据库连接。ADBC是用于基于ABAP对象的AS ABAP的原生SQL接口的API。由ADBC提供的方法使得可以发送数据库额定的SQL命令到数据服务器127和访问到数据服务器127的SQL功能。
[0043]在214中,在数据服务器127上执行查询脚本。DBMS128可以解析查询脚本,并且产生用于执行查询语句的计划。然后,DBMS128可以执行该计划,并从数据库129取回结果。
[0044]在216处,通过动态桥接器214来接收数据库查询结果,并对其格式化。例如,结果可以被格式化为对于应用服务器120而言原生的数据结构(例如,ABAP内部表格)。包括标准数据结构的数据结构的其他类型也可以被使用。利用格式化的结果,应用122的剩余的非翻译部分可以继续被执行。
[0045]图3a_b示出了根据本框架的一个实施方式,用户输入如何被翻译成查询脚本的示例。更具体地说,图3a示出了用于在运行时间期间获得用户输入的示例性的用户界面152。用户界面152可以在ABAP应用122被执行时被显示。它允许用户选择要被输入到包含动态条件的数据结构中的值 304。例如,用户可以在范围表格中选择单个值或值的范围,或者可以排除单个值或值的范围。值或值的范围可以是预定义的,并且可以显示在滚动列表中。或者,用户也可输入自定义的值或值的范围。
[0046]图3b示出了可以通过用户界面152来显示的示例性数据结构306。如图所示,数据结构306是在ABAP应用中使用的范围表格。如前所述,范围表格是内部表格,其具有四个组成部分(SIGN (标记)、OPT1N (选项)、L0W (低)、HIGH (高)),以用于在ABAP的许多语句中指定复杂的标准或条件。范围表格306可以在ABAP应用代码中被定义为如下的选择标准,其中p_matnr是对应于用户输入的范围表格306:
[0047]Select*from XX where MATNR in p_matnr-----(I)
[0048]在起草的SQL查询脚本中在ABAP应用代码中的动态“选择”项可以通过“Where”条件占位符(例如,“:where_matnr”)来代替。在运行时间期间,用户选择填补范围表格306中的字段所需的值304。然后,在起草的查询脚本中嵌入的“Where”条件占位符可以利用在运行时间的实际用户选择值304而通过静态项来代替,如下所示:
[0049]Where(MATNR= ‘HANA::PERF00009’ AND MATNR=
[0050]iHANA::PERF00500’ )OR(MATNR)= iHANA::HDR:06001’ AND MATNR
[0051]<= ‘HANA:: HDR:06600 ’)AND (MATNRO ‘ 124133-100’)AND (MATNR〈
[0052]‘ HANA:: HDR: 06800 ’ OR MATNR> ‘ HANA:: HDR: 06908 ’)-------(2)
[0053]在一些实施方式中,通用的功能模块可以被用来将在范围表格中存储的“选择”标准(例如,项(I))转换为具有在运行时间获取的用户选择值的“Where (何处)”条件串(例如,项(2))。可以以与应用122 (例如,ABAP)相同的语言来编程功能模块,并且将其存储在应用存储器123中。在功能模块生成静态的“Where (何处)”条件串之后,则在起草的查询脚本中的占位符(例如,“:where_matnr”)可以通过产生的“Where ”条件串(例如,项(2 ))来替代。
[0054]在一些实施方式中,另一个功能模块可以被用来提供在应用服务器120和数据服务器127之间的数据库接口。ADBC类可用于建立与数据服务器的连接,执行查询脚本,检索结果到内部表格,并且当抛出异常时报告错误。其他类型的数据接口类也是有用的。功能模块可以接受三个输入参数:PV_QUERY,PV_SCHEMA 和 PV_D0NT_CL0SE_C0NN。PV_QUERY 表示已经从应用代码中翻译的查询脚本。PV_SCHEMA表示用于改变默认的数据库方案的可选的参数。最后,PV_D0NT_CL0SE_C0NN表示指示在执行查询脚本和检索数据库结果之后是否需要关闭连接的标志。缺省情况下,该标志可以被设置为,例如,“”(空格),其指示连接需要被关闭。该标志也可以被设置为,例如,“X”,其指示该连接要保持打开。例如,当需要在连接级将数据存储在数据服务器127的临时表格中并且随后进行检索的情况下,这可能有用。然后,连接可以在最终的数据检索之后关闭。然后,功能模块可以输出诸如用来存储从数据库129中检索的数据的通用表格的数据结构。任何其他数据结构也可以使用,只要其与在查询脚本中定义的返回的数据结构是相同的即可。
[0055]虽然已经以特定于结构特征和/或方法步骤的语言来描述了上述的一个或多个实施方式,但是应该理解的是,也可以在没有所描述的特定特征和步骤的情况下来实施其他实施方式。而是,公开特定的特征和步骤来作为一种或者多种实施方式的优选形式。
【权利要求】
1.一种动态桥接应用服务器和数据服务器的方法,包括: 应用服务器生成基于应用的源代码的查询脚本,其中,所述查询脚本包括表示在源代码中的动态项的至少一个占位符; 应用服务器通过用基于在应用执行期间接收的一个或者多个值而产生的静态项来替代占位符,来处理查询脚本; 应用服务器验证查询脚本,以最小化安全风险;以及 应用服务器经由数据库接口来执行查询脚本,以管理在数据服务器处的数据。
2.一种动态桥接应用服务器和数据服务器的方法,包括: 应用服务器生成基于应用的源代码的查询脚本,其中,所述查询脚本包括表示在源代码中的动态项的至少一个占位符; 应用服务器通过用基于在应用执行期间接收的一个或者多个值而产生的静态项来替代占位符,来处理查询脚本;以及 执行查询脚本,以管理在数据服务器处的数据。
3.根据权利要求2所述的方法,其中,所述源代码包括ABAP?码。
4.根据权利要求2所述的方法,其中,所述数据服务器包括存储器内数据库。
5.根据权利要求2所述的方法,其中,生成所述查询脚本包括将应用的独立于数据库的源代码解释为对于数据服务器而言原生的等价查询语句。
6.根据权利要求5所述的方法,其中,所述查询语句基于SQL语言或者其扩展。
7.根据权利要求2所述的方法,进一步包括将查询脚本存储为在应用服务器中的功能模块。
8.根据权利要求2所述的方法,其中,所述动态项包括动态条件。
9.根据权利要求8所述的方法,其中,所述动态条件包括WHRER条件。
10.根据权利要求8所述的方法,其中,所述动态条件被存储在内部表格中。
11.根据权利要求10所述的方法,其中,所述内部表格包括范围表格。
12.根据权利要求2所述的方法,其中,所述动态项包括动态变量。
13.根据权利要求2所述的方法,其中,响应于用户经由用户界面进行选择而接收一个或者多个值。
14.根据权利要求2所述的方法,进一步包括验证查询脚本,以最小化安全风险。
15.根据权利要求14所述的方法,其中,验证所述查询脚本包括在所述查询脚本中检测一个或者多个预定义的词。
16.根据权利要求2所述的方法,进一步包括出于可读性而将所述查询脚本格式化。
17.根据权利要求2所述的方法,进一步包括经由建立与数据服务器的连接的数据库接口,在应用服务器处执行查询脚本。
18.根据权利要求2所述的方法,进一步包括应用服务器从数据服务器接收查询结果,以及将所述查询结果格式化为对于应用服务器而言原生的数据结构。
19.一种在其上存储有程序代码的非临时性计算机可读介质,所述程序代码能够通过计算机来执行,用以: 在应用服务器处,生成基于应用的源代码的查询脚本,其中,所述查询脚本包括表示在源代码中的动态项的至少一个占位符;通过用基于在应用执行期间接收的一个或者多个值而产生的静态项来替代占位符,在应用服务器处处理查询脚本;以及 执行查询脚本,以管理在数据服务器处的数据。
20.—种系统,包括: 非临时性存储器装置,用于存储计算机可读程序代码;以及 与所述存储器装置通信的处理器,所述处理器被利用计算机可读程序代码来操作,以用于: 在应用服务器处,生成基于应用的源代码的查询脚本,其中,所述查询脚本包括表示在源代码中的动态项的至少一个占位符; 通过用基于在应用执行期间接收的一个或者多个值而产生的静态项来替代占位符,在应用服务器处处理查询脚本;以及 执行查询脚本,以管理 在数据服务器处的数据。
【文档编号】G06F17/30GK104050161SQ201310075685
【公开日】2014年9月17日 申请日期:2013年3月11日 优先权日:2013年3月11日
【发明者】刘晓伟, 陈颖宇 申请人:Sap股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1