一种数据处理的方法及装置与流程

文档序号:11620596阅读:185来源:国知局
一种数据处理的方法及装置与流程

本申请涉及信息技术领域,尤其涉及一种数据处理的方法及装置。



背景技术:

随着信息技术的发展,应用程序通过网络执行业务的需求不断增长,执行业务而产生的业务数据也不断增加。这些业务数据通常采用数据库予以存储。在存储业务数据时,为保证数据存储的一致性,防止出现“脏数据”,通常采用关系型数据库存储各业务数据。

通常,由于不同应用程序使用的关系型数据库的结构不完全一致,应用对应的应用服务器需要为一个应用配置与其需求或性能相匹配的关系型数据(这里称为原有数据库)。但是,随着时间的推移,该原有数据库可能不再适应该应用程序的需求或性能,这就需要使用性能更为优越的其他数据库(这里称为替换数据库)来替换该原有数据库。

在现有技术中,替换原有数据库的做法通常是:将该原有数据库在预定时间点后一段时间内产生的业务数据,通过“异步双写”的数据处理方式备份至该替换数据库(即先写到原关系型数据库,再写入替换数据库),从而实现原有数据库中的数据到替换数据库的数据“迁移”。

但是,由于这种“异步双写”的过程仅仅在数据库层面进行,而与应用程序以及应用服务器没有特别的关系,可能导致数据迁移后的替换数据库不能支持应用程序的正常运行。为防止这种情形的出现,在该应用或应用服务器使用该替换数据库内的数据之前,必须对该替换数据库中数据的准确性进行验证,但目前的各种验证方法不具有通用性,需要进行验证方法、验证工具、验证环境等的专门设计,导致验证过程相当繁复,耗时较长,从而大大增加了关系数据库的替换成本。



技术实现要素:

本申请实施例提供一种数据处理方法,用于解决现有技术中,在更换数据库进行数据处理后,还需要对数据库中数据的准确性进行验证,验证时间长,耗费资源多,导致替换成本高的问题。

本申请实施例提供一种数据处理装置,用于解决现有技术中,在更换数据库进行数据处理后,还需要对数据库中数据的准确性进行验证,验证时间长,耗费资源多,导致替换成本高的问题。

本申请实施例采用下述技术方案:

一种数据处理方法,包括:

接收对关系型数据库的业务请求;

根据所述业务请求以及预先配置的第一转换规则,生成所述业务请求对应的第一sql语句,以及根据所述业务请求以及预先配置的第二转换规则,生成第二sql语句;

通过所述第一sql语句对第一关系型数据库执行对应的操作,以及通过第二sql语句对第二关系型数据库执行对应的操作。

一种数据处理装置,包括:

接收模块,接收对关系型数据库的业务请求;

生成模块,根据所述业务请求以及预先配置的第一转换规则,生成所述业务请求对应的第一sql语句,以及根据所述业务请求以及预先配置的第二转换规则,生成第二sql语句;

执行模块,通过所述第一sql语句对第一关系型数据库执行对应的操作,以及通过第二sql语句对第二关系型数据库执行对应的操作。

本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:

由于预先配置有第一转换规则以及第二转换规则,所以在接收到业务请求后,可先通过该业务请求以及该第一转换规则生成对第一数据库进行操作的第一sql语句,之后再根据该第二转换规则以及该业务请求生成对第二数据库进行操作的第二sql语句,并通过该第一以及第二sql语句分别执行对应的操作,其中,该第一数据库为原有数据库,该第二数据库为替换数据库。可见,通过本申请提供的方法,可根据业务请求对该第一以及第二数据库进行操作,使得该第二数据库中的数据实际上是根据执行该应用的业务请求生成的,进而使得无需在数据库层面将该第一数据库中的数据备份至该第二数据库中,避免了后续需要对该第二数据库中数据进行验证的过程,降低了数据库替换的成本。

附图说明

此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是本申请实施例提供一种数据处理过程;

图2为本申请实施例提供的应用服务器、该第一数据库以及该第二数据库的结构关系示意图;

图3为本申请实施例提供的应用服务器、该第一数据库以及该第二数据库的详细结构关系示意图。

图4为本申请实施例提供的在该第一数据库以及该第二数据库中分别执行该第一sql语句以及该第二sql语句过程的示意图;

图5是本申请实施例提供一种数据处理装置的结构示意图。

具体实施方式

为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

在本申请实施例中提供的数据处理过程为,需要对应用程序使用的第一数据库替换为第二数据库时,将该第一数据库在预定时点后一段时间内执行业务请求时产生的业务数据“迁移”至该第二数据库中的过程。其中,该第一数据库为该应用程序使用的原有数据库,该第二数据库为替换该原有数据库的替换数据库。

通常,该预定时间点可为工作人员确定的时间点,该预定时间点后一段时间所对应的时长也可由工作人员确定,即,该“迁移”过程的结束时间也可由工作人员确定。并且,由于该预定时间点以及该一段时间的时长与本申请的数据处理过程没有关系,所以本申请对此并不做具体限定。也就是说,本申请所述的数据处理过程为在该预定时间点之后直至该一段时间的时长结束时,该应用执行业务请求时的数据处理方法,并不涉及该数据处理方法何时开始以及何时结束。

以下结合附图,详细说明本申请各实施例提供的技术方案。

图1为本申请实施例提供的数据处理过程,具体包括以下步骤:

s101:接收对关系型数据库的业务请求。

在现有技术中,一个业务在执行的过程中,通常可由应用服务器接收该业务对应的业务请求,并由该应用服务器根据该业务请求,确定后续步骤的操作。

同理,在本申请实施例中,也可由应用服务器接收业务请求,其中,由于本申请对应的是对数据库中数据如何进行数据处理的过程,所以该业务请求还可以是针对关系型数据库的业务请求。又由于该数据处理过程为对该第一数据库中的数据“迁移”至该第二数据库中的过程,所以该应用服务器可对应该第一数据库以及该第二数据库,并且,该第一数据库为该应用服务器使用的原有数据库,该第二数据库为该应用服务器预计在该“迁移”过程结束后,使用的替换该第一数据库的替换数据库,该第一数据库以及该第二数据库均可为关系型数据库,可如图2所示。

图2为本申请实施例提供的应用服务器、该第一数据库以及该第二数据库的结构关系示意图。可见,该应用服务器与该第一数据库和该第二数据库对应。

其中,该应用服务器可以是单独的一台设备,也可以是由多台设备组成的系统(即,分布式应用服务器),该第一数据库与该第二数据库均可以是单独的一台设备,也可以是由多台设备组成的系统(即,分布式数据库),本申请对此并不做限定。

另外,由于应用程序通常执行的是面对对象的语言(如,java语言),所以该应用服务器接收到的该业务请求通常也是由该面对对象的语言生成的,但是若该业务请求涉及到对该应用服务器对应的数据库中数据的增加、查询、更改、删除(create、retrieve、update、delete,crud)操作,则因为对关系型数据库进行操作的语言为结构化查询语言(structuredquerylanguage,sql),与该面对对象的语言并不一致,所以在本申请实施例中,该应用服务器在接收到该对关系型数据库的业务请求时,还可通过预先配置的对象关系映射(objectrelationmapping,orm)框架,将该业务请求转换为可以对关系型数据库进行操作的sql语句,以便后续对该关系型数据库进行操作,其中,该应用服务器可该orm框架,使用数据层中间件对该关系型数据库进行操作,该orm框架具体可以是ibatis。

则图2可以继续细化为图3。图3为本申请实施例提供的应用服务器、该第一数据库以及该第二数据库的详细结构关系示意图。可见,该应用服务器通过orm框架生成sql语句,使用数据层中间件操作该第一以及该第二数据库。

并且,由于该应用服务器对应有该第一数据库以及该第二数据库,并且,该第一和第二数据库的数据库种类以及数据库大小都有可能不同,所以在该应用服务器中可以预先配置有用于将该业务请求转换为可对该第一数据库进行操作的sql语句的第一转换规则,以及将该业务请求转换为可对该第二数据库进行操作的sql语句的第二转换规则,其中,由于该转换规则通常也被称为sqlmap,所以在后续描述中将该第一转换规则称为第一sqlmap,将该第二转换规则称为第二sqlmap。

例如,假设应用服务器a对应有第一数据库b以及第二数据库c,其中,该第一数据库b和该第二数据库c均为关系型数据库,该应用服务器a对应的应用程序使用的是java语言,进一步假设该第一数据库b为mysql,该第二数据库c为oracle,则该应用服务器a中还预先配置有将java语言转换为mysql数据库对应的第一sql语句的第一sqlmap,以将java语言转换为oracle数据库对应的第二sql语句的第二sqlmap,该第一sqlmap以及该第二sqlmap均配置在该应用服务器的orm框架中,并且该应用服务器a接收到对关系型数据库的业务请求d。

s102:根据所述业务请求以及预先配置的第一转换规则,生成所述业务请求对应的第一sql语句,以及根据所述业务请求以及预先配置的第二转换规则,生成第二sql语句。

在本申请实施例中,当该应用服务器接收到对关系型数据库的业务请求后,便可确定一个空闲线程,并通过该线程执行该业务请求,其中,该线程首先可将该业务请求转换为对该第一数据库执行对应操作的第一sql语句,再转换为对该第二数据库执行对应操作的第二sql语句。

具体的,该应用服务器可先确定一个空闲线程,并使该线程通过该应用服务器的orm框架中预先配置的该第一sqlmap,根据该业务请求生成该第一sql语句,并且由于该orm框架中还预先配置有该第二sqlmap,所以该线程还可根据该业务请求生成为该第二sql语句,以便该应用服务器可通过该第一sql语句以及该第二sql语句执行分别对该第一数据库以及该第二数据执行对应的操作。

另外,由于在本申请实施例中,该第二数据库作为替换数据库,存储的数据量相对于该第一数据库存储的数据量较少,可支持该应用服务器正常运行的几率较低,所以若是任何对该关系型数据库的业务请求均分别生成该第一sql语句以及该第二sql语句,则可能造成该第二sql语句执行失败的几率增加。并且,在本申请所述的数据处理过程中,仅需使该业务请求导致的该第一数据库中数据的变化同样出现在该第二服务器中即可,即,保证在该预设的时间点之后,该第二数据库中的数据的值与该第一数据库中数据出现变更后的数据的值一致即可,所以在本申请实施例中,对该数据处理过程可以仅针对对数据的增、删、改的操作,而无需对查询操作进行本申请所述的数据处理过程(查询操作不会改变该第一数据库中存储数据的值)。

由于工作人员可以确定该应用程序的何种业务请求是需要对该第一数据库中的数据进行增、删、改的操作的,所以在本申请中,该应用服务器中还可以预先存储有由工作人员确定的业务标识列表,其中,该业务表示列表中的各业务标识,均为需要对该第一数据库进行增、删、改的操作的业务请求的业务标识,则该应用服务器还可以通过该业务请求对应的业务标识,确定是否生成该第二sql语句。

具体的,在步骤s101中该应用服务器接收的该业务请求中可携带有该业务请求对应的业务标识,于是,首先,当该应用服务器将根据该业务请求调用空闲线程时,可将该业务标识写入该线程的线程变量中。其次,在该线程根据该第一sqlmap生成该第一sql语句之后,可以使用该数据层中间件执行该第一sql语句对该第一数据库进行操作,则该数据层中间件可以通过该线程的线程变量,确定该业务标识。之后,该数据层中间件可根据预先存储的该业务标识列表,判断该业务标识是否与该业务标识列表中的任一业务标识相同,若相同,则确定需要生成该第二sql语句,则该线程还可通过该第二sqlmap生成该第二sql语句,后续执行该第一以及该第二sql语句,若不同,则确定无需生成该第二sql语句,该线程可继续执行后续操作(如,根据该第一sql语句对该第一数据库执行对应的操作)。

继续沿用上例,假设该应用服务器a确定空闲的线程x执行该业务请求,则该应用服务器可将该业务请求的业务标识y写入该线程x的线程变量中,则该线程x通过该orm框架中预先配置的该第一sqlmap生成第一sql语句后,使用该数据层中间件执行该第一sql语句时,可通过该线程x的线程变量确定该业务标识y,进一步假设该应用服务器a中预先存储的业务标识列表中包含业务标识y,则该数据层中间件在执行该第一sql语句时,可进一步确定需要生成第二sql语句,则该线程x还可通过该第二sqlmap生成第二sql语句,则该线程x可使用该数据层中间件执行该第一sql语句以及该第二sql语句。

s103:通过所述第一sql语句对第一关系型数据库执行对应的操作,以及通过第二sql语句对第二关系型数据库执行对应的操作。

在本申请实施例中,当生成该第一以及该第二sql语句之后,该应用服务器便可通过该线程使用该数据层中间件,对该第一数据库以及该第二数据库执行对应的操作。

并且,由于该第一数据库以及该第二数据库为两个独立的数据库,所以可为该第一sql语句以及该第二sql语句分别建立对应的事务,进一步地,为了保证该第二数据库中的数据能够与该第一数据库中的更改后的数据保持一致,所以在本申请中可只有当该第一和第二sql语句均执行成功时才提交该第一sql语句以及该第二sql语句分别对应的事务。

具体的,该线程使用该数据层中间件,首先,建立在该第一数据库中执行该第一sql语句的第一事务,其次,建立在该第二数据库中执行该第二sql语句的第二事务,之后,根据该第一sql语句在该第一数据库中执行该第一sql语句对应的操作,然后,根据该第二sql语句在该第二数据库中执行该第二sql语句对应的操作,并且,当该第一sql语句以及该第二sql语句,均分别执行成功时,提交该第一事务以及该第二事务,而若,该第一事务建立失败或者该第二事务建立失败或者该第一sql语句执行失败或者该第二sql语句执行失败,则该线程返回错误信息(也称抛出错误),并执行回滚操作,使该第一数据库以及该第二数据库中的数据恢复到执行步骤s103之前的状态,如图4所示。

图4为本申请实施例提供的在该第一数据库以及该第二数据库中分别执行该第一sql语句以及该第二sql语句过程的示意图。

可见,通过该第一sql语句对第一数据库执行对应的操作以及通过第二sql语句对该第二数据库执行对应的操作的过程中,只要任一步骤出现错误或者失败,该线程均会抛出错误并执行回滚操作,当该第一事务以及该第二事务均递交成功之后对应该业务请求的操作执行结束。

通过如图4所示的步骤可以保证对于该业务请求对应的操作,该第一数据库与该第二数据库中数据的改变是相同的,不会出现其中一个数据库执行成功而另一个执行失败,导致数据不一致的情况出现。

需要说明的是,如前所述,该应用服务器可以是单独的一台设备也可以是由多台设备组成的系统,所以如图1所示的本申请实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也可由不同设备作为执行主体。比如,步骤s101和步骤s102的执行主体可以为设备1,步骤s103的执行主体可以为设备2;又比如,步骤s101的执行主体可以为设备1,步骤s102和步骤s103的执行主体可以为设备2;等等。

通过如图1所示的数据处理方法,可根据该应用服务接收到的对关系型数据库的业务请求,生成分别对该第一数据库以及该第二数据库的执行的操作的该第一以及第二sql语句,使得该业务请求可以通过该第二sql语句在该第二数据库中执行对应的操作,使得该第二数据库中的数据,不再仅仅是通过数据库层面的“异步双写”的数据处理过程而得到的,而是通过应用的业务请求得到的,并且,在本申请中,只有当该第一sql语句以及该第二sql语句均执行成功时,分别对应的该第一事务以及该第二事务才会提交,使该第一数据库以及该第二数据库产生实际的数据变化,所以通过本申请提供的数据处理过程,不但可以是的对该第二数据库的操作与应用产生实际的联系,并且可以保证该第一和第二数据库中数据的一致性(具体为该预设时间点后数据的变化一致),使得该第二数据库在该一段时间的时长结束时,可以直接支持该应用的运行,避免了后续需要对该第二数据库中数据进行验证的过程,降低了数据库替换的成本。

另外,在本申请中,由于在该第二sql语句生成之前,该应用服务器中已经生成了该第一sql语句,所以该第二sqlmap也可为,根据该第一sql语句生成对该第二数据库进行操作的第二sql语句的规则,则该线程在确定需要生成该第二sql语句时,可以根据该第一sql语句以及该第二sqlmap生成该第二sql语句。

进一步地,由于对于该应用程序而言,可无需关心该应用服务器是否要根据该业务请求,对该第一数据库以及该第二数据库分别进行对应的操作,所以该业务请求的内容可以是仅针对该第一数据库的,而该应用服务器可以根据该应用请求实现后续步骤s102以及s103的操作。

另外,在本申请实施例的上述说明过程中,是以该应用服务器为执行主体进行说明的,即,该应用服务器中运行的应用程序中包含了数据层中间件,但是,该数据层中间件也可作为单独的一个程序或者系统存在,所以在本申请实施例中,也可由该数据层中间件执行上述步骤s102中的一部分和步骤s103。

具体的,当该数据层中间件作为单独的一个程序时,该应用服务器中还可运行面对用户的应用程序(为以示区别,后续称之为表层应用),该表层应用于接受用户的操作,确定业务请求,并根据预先配置的第一sqlmap生成该第一sql语句,并将该第一sql语句发送至该数据层中间件中,以使的该数据层中间件执行后续操作。

在本申请实施例中,该应用服务器根据预先存储的业务标识列表以及该业务请求中携带的该业务标识,确定需要生成对该第二关系型数据库进行操作的该第二sql语句,具体可以是:

该表层应用在接收到该业务请求后,可根据该第一sqlmap生成该第一sql语句,并将该业务请求对应的业务标识写入执行该第一sql语句的线程中,并发送至该数据层中间件。则该数据层中间件可以通过运行该线程,确定该线程变量中写入的该业务标识,并通过预先存储的业务标识列表,确定是否要生成第二sql语句,若需要,则跟据该预先配置的该第二sqlmap,生成该第二sql语句。并且,后续可由该数据层中间件执行步骤s103的全部过程,具体可如图4所示的过程一致。

进一步地,由于该应用服务器中可分为该表层应用以及该数据层中间件,并且上述两个程序可以使相互独立的,所以该预先配置的第一以及第二sqlmap可以是该表层应用以及该数据层中间件均可访问的。

更进一步地,由于该表层应用于该数据层中间件可互相独立,则该表层应用可与该数据层中间件通过应用程序编程接口(applicationprogramminginterface,api)进行数据交互,则当该表层应用第一次与该数据层中间件连通时,可通过工作人员预先在该表层应用中配置的声明文件,向该数据层中间件声明该表层应用对应该第一以及该第二数据库,其中该声明文件中包含该第一以及该第二数据库分别对应的数据库地址、数据库配置等数据库信息。

当然,该表层应用与该数据层中间件也可以位于同一个应用程序中,本申请对此并不做特别限定,当该数据层中间件为一独立的程序时,则该数据层中间件也可位于独立的一个或多个设备中,并且该数据层中间件也可与多个表层应用相连接,并对多个数据库分别进行操作。并且,由于本申请涉及数据库中数据的“迁移”过程,所以仅对存在该第一以及第二数据库的情况进行了说明,但是本申请所述的方法并不限定与该应用服务器只对应于两个数据库,该应用服务器还可对应多个数据库,只要该应用服务器中预先配置有对应的sqlmap即可。

另外,由于该数据层中间件可以直接调用预先配置的该第一以及第二sqlmap,所以在本申请中,也可由该数据层中间件对关系型数据库的业务请求,并生成该第一以及第二sql语句,最后执行该第一以及第二sql语句,需要说明的是,该数据层中间件接收的该业务请求与前述的业务请求可以不同,(为以示区别,后续称为数据请求)具体可以是由该表层应用经过处理之后发送至该数据层中间件的业务请求,具体的,该表层应用可以根据接收到的业务请求,根据业务逻辑,确定需要对数据执行的操作,并将该操作作为数据请求发送至该数据层中间件,以使得该数据层中间件执行后续操作。

需要说明的是,该应用程序使用的语言除了在图1中所述的java语言以外,还可以是c语言,c++语言等等其他语言,该orm框架除了该ibatis以外,还可以是entityejb、hibernate、toplink、ojb等等,该第一数据库以及该第二数据库的类型可以是oracle、db2、microsoftsqlserver等等,本申请对于该应用程序使用的语言、该应用服务器使用的orm框架以及该第一和第二数据库的类型并不做具体限定。

基于图1所示的数据处理过程,本申请实施例还对应提供一种数据处理装置,如图5所示。

图5是本申请实施例提供一种数据处理装置的结构示意图,包括:

接收模块201,接收对关系型数据库的业务请求;

生成模块202,根据所述业务请求以及预先配置的第一转换规则,生成所述业务请求对应的第一sql语句,以及根据所述业务请求以及预先配置的第二转换规则,生成第二sql语句;

执行模块203,通过所述第一sql语句对第一关系型数据库执行对应的操作,以及通过第二sql语句对第二关系型数据库执行对应的操作。

所述业务请求中携带有业务标识;

所述生成模块202,根据预先存储的业务标识列表以及所述业务请求中携带的所述业务标识,确定需要生成对所述第二关系型数据库进行操作的所述第二sql语句。

所述接收模块201,将所述业务标识写入执行所述第一sql语句的线程的线程变量中;

所述生成模块202,在通过所述线程执行所述第一sql语句时,根据所述线程变量确定所述业务标识,根据预先存储的业务标识列表以及所述业务标识,确定需要生成对所述第二关系型数据库进行操作的所述第二sql语句。

所述执行模块203,建立在所述第一关系型数据库中执行所述第一sql语句的第一事务,建立在所述第二关系型数据库中执行所述第二sql语句的第二事务,根据所述第一sql语句在所述第一关系型数据库中执行对应的操作,根据所述第二sql语句在所述第二关系型数据库中执行对应的操作,当所述第一sql语句以及所述第二sql语句均执行成功时,提交所述第一事务以及所述第二事务,当所述第一sql语句和/或所述第二sql语句执行失败时,返回错误信息,并执行回滚操作。

所述第一关系型数据库为原有数据库,所述第二关系型数据库为替换数据库,所述对应的操作包括增加、删除、更改中的至少一种。

具体的,上述如图4所示的数据处理装置可以位于应用服务器中,该应用服务器可以是一台设备,也可以是由多台设备组成的系统。

本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。内存是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1