一种基于链接机制的资源管理方法

文档序号:6622819阅读:217来源:国知局

专利名称::一种基于链接机制的资源管理方法
技术领域
:本发明涉及资源管理技术,特别涉及一种基于链接机制的资源管理方法。
背景技术
:目前,在通信、金融等各个领域均广泛应用了资源管理技术。通常,应用资源管理技术的资源存储系统包括三类对象存储系统、文件系统、和数据库系统。但是,由于各种原因经常会有一种资源在多种不同的场合大量重复出现的情况,这样将造成大量资源的浪费。其中,在对象存储方面,为了减小系统资源的占用,对于大量相同对象的管理往往采用一种链接(Link)机制。具体来说就是如果有多个对象相同,则仅保存这些对象原始数据的一份拷贝,再将每个对象创建为能够引用所保存的这份原始数据拷贝的链接。这样,引用原始数据的链接占用的资源要比原始数据占用的资源小得多,可见采用链接机制可以节省大量系统存储资源。这里,所述引用原始数据的链接又被称为链接资源,所述原始数据可被称为原始资源,也就是说在采用链接机制存储对象时,需要处理两类资源,包括原始资源和链接资源。上述链接机制目前仅出现在内存对象的存储系统中,通常由各个链接资源直接链接原始资源,各原始资源和链接资源之间的链接关系单一,对任何链接资源的修改都会造成其所链接的原始资源、以及同样链接该原始资源的链接资源的改变。但是对于数据库系统、文件系统等大型资源存储系统来说,其所存储的各个资源之间的链接关系比较复杂。举个简单的例子,资源1和资源2相同,资源1和资源2的链接关系是改变资源2时,应对资源1没有任何影响;但应用现有对象存储中的链接机制时,资源2可以为资源1的一个链接,且资源2改变时必将改变资源1,因此现有的链接机制无法建立上述资源1和资源2之间的链接关系。可见,现有的链接机制无法应用于大型、复杂的资源存储系统。所以,目前的数据库系统和文件系统中并未使用任何链接机制的资源管理技术,数据库系统和文件系统中保存的资源还都是原始资源。当数据库系统和文件系统中保存的大量数据都相同时,系统不得不重复保存大量相同数据,这无疑是对系统资源的巨大浪费。综上所述,现有的资源存储系统,尤其是数据库系统和文件系统,亟待一种资源管理方法来解决大量相同资源存储时系统资源浪费的问题。
发明内容有鉴于此,本发明的主要目的在于提供一种基于链接机制的资源管理方法,能够在各种资源存储系统中实现灵活的链接机制的资源管理,有效利用系统存储资源。为达到上述目的,本发明的技术方案是这样实现的本发明公开了一种基于链接机制的资源管理方法,包括创建原始资源,按标识读取或修改已创建的原始资源的值;在资源存储系统中设置用于记录链接资源的信息的存储空间;该方法还包括创建、读取、修改链接资源;所述创建链接资源为在所设置的存储空间中记录用于链接已创建的原始资源的链接资源的信息,所述链接资源的信息包括链接资源的标识、以及该链接资源链接的原始资源的标识;所述读取或修改链接资源为根据当前读取或修改的链接资源的标识查询所记录的链接资源的信息,确定该链接资源链接的原始资源的标识,再根据所确定的原始资源的标识读取或修改该链接资源的资源值。其中,当修改链接资源时,所述根据所确定的原始资源的标识修改该链接资源的资源值为修改所确定的原始资源的标识对应的原始资源的值。其中,当修改链接资源时,所述根据所确定的原始资源的标识修改该链接资源的资源值为复制得到所确定的原始资源标识对应的原始资源拷贝,将该原始资源拷贝的标识设置为该链接资源标识,删除该链接资源的信息,修改该链接资源标识当前对应的该原始资源拷贝的值;当所修改的原始资源被链接资源链接时,所述按标识修改原始资源的值之前,进一步包括按标识复制得到当前修改的原始资源的拷贝,将该原始资源拷贝的标识设置为链接该原始资源的链接资源的标识,删除链接该原始资源的链接资源的信息。其中,当修改链接资源时,所述根据所确定的原始资源的标识修改该链接资源的资源值为复制得到所确定的原始资源标识对应的原始资源拷贝,将该链接资源的信息中该链接资源链接的原始资源的标识修改为该原始资源拷贝的标识,修改该链接资源的标识当前对应的该原始资源拷贝的值;当所修改的原始资源被链接资源链接时,所述按标识修改原始资源的值之前,进一步包括按标识复制得到当前修改的原始资源拷贝,将链接当前修改的原始资源的链接资源的信息中该链接资源链接的原始资源的标识修改为该原始资源拷贝的标识。其中,使用链接方式来指示链接资源与其所链接资源之间的链接关系,所能使用的链接方式包括可写方式、快照方式、和重定向方式;在创建链接资源时,进一步包括从所能使用的链接方式中任选一种作为该链接资源的链接方式并记录;当修改链接资源时,所述根据所确定的原始资源的标识修改链接资源对应的原始资源值为判断该链接资源的链接方式,如果是可写方式,则修改所确定的原始资源的标识对应的原始资源值;如果是快照方式,则复制得到所确定的原始资源标识对应的原始资源拷贝,将该原始资源拷贝的资源标识设置为该链接资源标识,删除该链接资源的信息,修改该链接资源标识当前对应的该原始资源拷贝的值;如果是重定向方式,则复制得到所确定的原始资源标识对应的原始资源拷贝,将该链接资源的信息中该链接资源链接的原始资源的标识修改为该原始资源拷贝的标识,修改该链接资源的标识当前对应的该原始资源拷贝的值;当所修改的原始资源被链接资源链接时,所述按标识修改原始资源的值之前,进一步包括判断链接该原始资源的链接资源的链接方式,如果是可写方式,则继续处理;如果是快照方式,则按标识复制得到当前修改的原始资源的拷贝,将该原始资源拷贝的资源标识设置为链接该原始资源的链接资源的标识,删除链接该原始资源的链接资源的信息;如果是重定向方式,则按标识复制得到当前修改的原始资源拷贝,将链接当前修改的原始资源的链接资源的信息中该链接资源链接的原始资源的标识修改为该原始资源拷贝的标识。其中,所能使用的链接方式进一步包括只读方式;当修改链接资源时,在判断链接方式之前,进一步包括判断该链接资源的链接方式是否为只读方式,如果是,拒绝修改,结束当前处理;否则继续处理。其中,当所创建的链接资源链接已创建的链接资源时,所述创建链接资源进一步包括在所述存储空间中记录当前创建的链接资源的信息,该链接资源的信息包括当前创建的链接资源的标识及其对应的当前创建的链接资源所链接的链接资源的标识;所述读取或修改链接资源为查询所记录的链接资源的信息,根据当前读取或修改的链接资源的标识确定该链接资源链接直接或间接链接的原始资源的标识,并根据所确定的原始资源的标识读取或修改该链接资源直接或间接链接的原始资源值。其中,所述确定链接资源直接或间接链接的原始资源的标识为1)将该链接资源置为当前操作资源;2)读取记录在所述存储空间的当前操作资源的信息;判断当前操作链接资源所链接的资源是否为原始资源,如果是,则确定当前操作资源所链接的原始资源的标识为步骤1)所述链接资源直接或间接链接的原始资源的标识,结束当前处理;否则将该链接资源所链接的资源作为当前操作资源,重新执行步骤2)。其中,使用链接方式来指示链接资源与其所链接资源之间的链接关系,所能使用的链接方式包括可写方式、快照方式、和重定向方式;在创建链接资源时,进一步包括从所能使用的链接方式中任选一种作为该链接资源的链接方式并记录;所述修改链接资源或原始资源为A1.将当前准备修改的资源作为当前操作资源;A2.判断是否有未被标识为已处理状态的链接资源链接当前操作资源,如果有,执行步骤A3;否则执行步骤A6;A3.提取一个链接当前操作资源的未被标识为已处理状态的链接资源,标识该链接资源状态为已处理,按与当前所取链接资源相差链接层次的大小,将当前所取链接资源、以及所有直接或间接链接当前所取链接资源的链接资源组成队列;A4.从所组成的队列中提取链接层次相差最大的链接资源并置为当前操作资源,确定当前操作资源为链接资源;判断当前操作资源的链接方式,如果是可写方式,则执行步骤A5;如果是快照方式,则确定当前操作资源直接或间接链接的原始资源的标识,并复制得到当前操作资源直接或间接链接的原始资源拷贝,将该原始资源拷贝的标识设置为当前操作资源的标识,删除记录在所述存储空间的当前操作资源的信息;如果是重定向方式,则确定当前操作资源直接或间接链接的原始资源的标识,并复制得到当前操作资源直接或间接链接的原始资源拷贝,将记录在所述存储空间的当前操作资源的信息中当前操作资源所链接的链接资源的标识设置为该原始资源拷贝的标识;A5.判断所述队列中是否还存在资源,如果是,则返回步骤A4;否则将当前操作资源所链接的资源置为当前操作资源,返回步骤A2;A6.判断当前操作资源是否是链接资源,如果是,则执行步骤A7;否则执行步骤A8;A7.确定当前操作资源为链接资源,判断当前操作资源的链接方式,如果是可写方式,则标识当前操作资源的状态为已处理,将当前操作资源所链接的资源置为当前操作资源,返回步骤A2;如果是快照方式,则确定当前操作资源直接或间接链接的原始资源的标识,并复制得到当前操作资源直接或间接链接的原始资源拷贝,将该原始资源拷贝的标识设置为当前操作资源的标识,删除记录在所述存储空间的当前操作资源的信息;如果是重定向方式,则确定当前操作资源直接或间接链接的原始资源的标识,并复制得到当前操作资源直接或间接链接的原始资源拷贝,将记录在所述存储空间的当前操作资源的信息中当前操作资源所链接的链接资源的标识设置为该原始资源拷贝的标识;A8.确定当前准备修改的资源对应的原始资源的标识,按所确定的原始资源的标识修改当前准备修改的资源对应的原始资源值。其中,所能使用的链接方式进一步包括只读方式;当修改链接资源时,步骤A1之前进一步包括判断该链接资源的链接方式是否为只读方式,如果是,则结束当前处理;否则继续执行步骤A1。步骤A8中,当前准备修改的资源为原始资源时,所述当前准备修改的资源自身的标识为该准备修改的资源对应的原始资源的标识;当前准备修改的资源为链接资源时,所述当前准备修改的资源直接或间接链接的原始资源的标识为该准备修改的资源对应的原始资源的标识;步骤A4、步骤A7、和步骤A8中,所述确定链接资源直接或间接链接的原始资源的标识为A11.将该链接资源置为当前操作资源;A12.读取记录在所述存储空间的当前操作资源的信息;判断当前操作链接资源所链接的资源是否为原始资源,如果是,则确定当前操作资源所链接的原始资源的标识为步骤A11所述链接资源直接或间接链接的原始资源的标识,结束当前处理;否则将该链接资源所链接的资源作为当前操作资源,重新执行步骤A12。其中,该方法进一步包括删除资源的处理,其包括B1.判断是否有链接资源链接当前准备删除的资源,如果有,则执行步骤B2;否则执行步骤B3;B2.判断所述准备删除的资源的状态是否已被标识为等待删除,如果是,结束当前处理;否则标识该准备删除的资源的状态为等待删除,结束当前处理;B3.删除所述准备删除的资源,判断所删除的资源是否为链接资源,如果是,则执行步骤B4;否则结束当前处理;B4.判断步骤B3所删除的链接资源所链接的资源的状态是否为等待删除,如果是,则置该状态为等待删除的资源为当前准备删除的资源,返回步骤B1;否则结束当前处理。其中,当所述资源存储系统为数据库系统时,所述存储空间为数据库的表;当所述资源存储系统为文件系统时,所述存储空间为可结构化存储数据的文件。由上述方案可以看出,本发明的关键在于在资源存储系统中设置专门用于记录链接资源的信息的存储空间;创建链接资源时,在所设置的存储空间中记录链接已创建的原始资源的链接资源的信息,该链接资源的信息包括该链接资源的标识及其对应的该链接资源链接的原始资源的标识;查询所记录的链接资源的信息,根据当前读取或修改的链接资源的标识确定该链接资源链接的原始资源的标识,并根据所确定的原始资源的标识读取或修改该链接资源对应的原始资源值。因此,本发明所提供的基于链接机制的资源管理方法,能够在各种资源存储系统中实现链接机制的资源管理,从而节约系统存储资源。本发明还进一步提供多种链接方式来建立资源之间不同链接关系。此外,本发明不仅提供了多种链接方式在单级链接系统的实现方法,还提供了多种链接方式在多级链接系统中的实现流程。应用本发明方法能够极大提高资源链接关系较为复杂、多样的大型资源存储系统的资源利用率。图1为本发明方法中确定链接资源直接或间接链接的原始资源的标识一较佳实施例处理流程示意图;图2为本发明方法中各种链接方式下的资源状态变化示意图;图3为本发明方法中修改资源方法一较佳实施例处理流程示意图;图4为应用图3所述实施例修改资源时的资源状态变化示意图;图5为本发明方法中删除资源一较佳实施例处理流程示意图。具体实施例方式下面结合附图及具体实施例对本发明再作进一步详细的说明。本发明公开了一种基于链接机制的资源管理方法,该方法主要应用于数据库系统、文件系统等大型资源存储系统,其主要设计思想为在资源存储系统中设置专门用于记录链接资源的信息的存储空间,在创建链接资源时,在所开辟的存储空间中记录当前创建的链接已创建的原始资源的链接资源的信息,这样,当读取或修改链接资源时,就可按所记录的信息确定该链接资源链接的原始资源,从而对该链接资源链接的原始资源进行读取或修改操作。其中,当本发明应用于数据库系统时,所设置的存储空间即为数据库中的表,该数据库表可称为链接资源信息表;当本发明应用于文件系统时,所设置的存储空间即为文件系统中的文件,由于在对链接资源进行操作时要读取各个信息项,因此,这里所述文件为可结构化存储数据的文件,这样,可按预先设定的结构存储链接资源的各个信息项、再按此结构来读取所存储的各个信息项。目前,主流的资源存储方式为数据库存储,因此,以下仅以数据库系统为例,对本发明方法的处理加以详细阐述。当本发明应用于文件系统时,处理流程与应用于数据库系统相同,只不过记录链接资源信息的存储空间的具体载体不同,因此本文对于本发明在文件系统中的处理不再描述。在数据库系统中,链接资源的信息以记录的形式存储在链接资源信息表中,每一条链接资源信息记录包含链接资源标识、该链接资源所链接的资源的标识等信息项。当创建一个链接资源时,要在链接资源信息表中添加一条记录,该记录包含当前创建的链接资源的标识、以及该链接资源所链接的资源的标识。当要读取或修改某一链接资源时,可根据该链接资源标识查询链接资源信息表得到该链接资源的信息记录,根据其中记录的所链接资源的标识等信息确定该链接资源直接或间接链接的原始资源,从而可以读取或修改该链接资源直接或间接链接的原始资源。其中,链接资源所链接的资源可以为原始资源也可以为链接资源。对于一个简单的资源存储系统来说,单级链接就可满足其资源管理需要,即链接资源仅链接原始资源,此时,当前链接资源的信息中,该链接资源所链接的原始资源的标识就是该链接资源直接链接的原始资源。但对于大多数资源存储系统来说,各个链接资源之间也可能相关,因此,链接资源也可能链接至链接资源,也就是实现多级链接。此时,确定当前链接资源直接或间接链接的原始资源的方法较为复杂。图1为本发明方法中确定链接资源直接或间接链接的原始资源一较佳实施例处理流程示意图。如图1所示,具体处理包括步骤101置当前链接资源为当前操作资源。步骤102根据当前操作资源的标识查询链接资源信息表得到该链接资源的信息记录,从中读取到当前操作资源所链接的资源的标识等信息。这里,当对资源进行操作时,用户至少会通知资源存储系统该资源的标识,因此,本步骤中可以知道当前操作资源的标识。步骤103根据步骤102读取到的资源标识等信息,判断当前操作资源所链接的资源是否为原始资源,如果是,执行步骤105;否则执行步骤104。步骤104置当前操作资源所链接的链接资源为当前操作资源,返回步骤102。步骤105确定当前操作资源所链接的原始资源即为步骤101所述链接资源直接或间接链接的原始资源,从而可以对该原始资源进行读取、修改等操作。另外,本发明的链接资源还可实现多种方式的链接。根据
背景技术
可知,传统对象存储系统中实现的链接方式为如果资源2是资源1的一个链接资源,即资源2链接至资源1,则当修改资源1时,资源2将相应发生改变,当修改资源2时,资源1也会随之变化,也就是说资源1和资源2一旦建立了链接关系那么它们就是等同的两个资源。本发明不仅能够提供上述这种传统的链接方式,还能提供其它链接方式,使两个建立链接的资源并非永久等同的资源,比如两个资源在创建时相同,但当其中一个资源修改时,另一资源并不随之改变。本发明方法使用链接方式来指示链接资源与其所链接的资源之间的链接关系,进而实现多种方式的链接。这样,在创建链接资源时还要进一步记录该链接资源的链接方式,从而修改原始资源或链接资源时,可进一步根据链接方式对相关资源进行处理。这里,需要强调一个基本概念所谓对链接资源的读取或修改,并非读取或修改该链接资源记录在所述链接资源信息表中的内容,而是根据该链接资源信息表记录的信息读取或修改该链接资源当前直接或间接链接的原始资源的值。举例来说就是当资源A链接原始资源B时,链接资源信息表中记录的资源A的信息包括资源A的标识和资源B的标识,那么读取或修改资源A时,读取或修改的并不是包括资源A和资源B的标识的资源A的信息记录,而是根据该资源A的信息记录中资源B的标识寻址到资源B的原始资源值,在对资源B的原始资源值进行读取或修改操作。以下不再对此概念多加赘述。下面以资源1和资源2为例,结合图2对这些链接方式加以说明。图2为本发明方法中各种链接方式下的资源状态变化示意图。由于存在单级链接和多级链接这两种资源存储系统,为方便说明,图2中仅以单级链接为例对各种链接方式进行说明。其中,资源2为资源1的链接资源,资源1是值为A的原始资源;在初始状态时,资源1和资源2对应的原始资源值均为A。本发明所提供的链接方式包括四种可写(Writable)方式、只读(Readonly)方式、快照(Snapshot)方式、和重定向(Redirector)方式,下面逐一对各个链接方式进行说明。一、Writable方式,该方式下资源1和资源2为等同资源。如图2所示,初始状态为资源2以Writable方式链接至资源1,资源1和资源2对应的原始资源值为A。如果修改资源1的值A,并将A修改为A’,则修改资源1后的状态为资源1和资源2对应的原始资源值均为A’;如果修改资源2的值A,并将A修改为A’,则修改资源2后的状态为资源1和资源2对应的原始资源值为A’。二、Readonly方式,该方式下资源1和资源2相当于等同资源,但资源2的修改是不被允许的,而资源1可被修改。如图2所示,初始状态为资源2以Readonly方式链接至资源1,资源1和资源2对应的原始资源值为A。如果修改资源1的值A,并将A修改为A’,则修改资源1后的状态为资源1和资源2对应的原始资源值均为A’;但修改资源2是被禁止的,则修改资源2后的状态为资源1和资源2对应的原始资源值仍为A。这里可见,Readonly方式是用于指示链接资源的修改权限的,当链接资源的链接方式为Readonly时,则说明该链接资源不能被修改。三、Snapshot方式,该方式下资源1和资源2相互独立,其中一个资源发生改变时,另一资源并不随之改变。如图2所示,初始状态为资源2以Snapshot方式链接至资源1,资源1和资源2对应的原始资源值为A。当修改资源1时,要首先复制得到原始资源1的一份拷贝,该原始资源1的拷贝的标识置为资源2的标识,删除资源2在链接资源信息表中的记录,再将资源1的原始资源值A修改为A’,则修改资源1后的状态为资源1和资源2对应的原始资源值分别为A’和A。当修改资源2时,也要首先复制得到一份资源2对应的原始资源1的一份拷贝,将该原始资源1的拷贝的标识置为资源2的标识,删除资源2在链接资源信息表中的记录,再将资源2即该原始资源1的拷贝的值A修改为A’,则修改资源2后的状态为资源1和资源2对应的原始资源值分别为A和A’。这里,将该原始资源1的拷贝的标识置为资源2的标识并删除资源2在链接资源信息表中的记录,表明资源2从链接资源变为原始资源,且所变成的原始资源为该原始资源1的拷贝。四、Redirector方式,该方式下,资源1和资源2也相互独立,只是实现方式与所述Snapshot方式有所不同。如图2所示,初始状态为资源2以Redirector方式链接至资源1,资源1和资源2对应的原始资源值为A。当修改资源1时,要首先复制得到原始资源1的一份拷贝,将资源2的信息中资源2所链接的原始资源的标识修改为该原始资源1拷贝的标识,再将资源1的原始资源值A修改为A’,则修改资源1后的状态为资源1和资源2对应的原始资源值分别为A’和A。当修改资源2时,也要首先复制得到一份资源2对应的原始资源1的一份拷贝,将资源2的信息中资源2所链接的原始资源的标识修改为该原始资源1拷贝的标识,此时资源2链接的原始资源为该原始资源1的拷贝,则将资源2当前链接的原始资源1的拷贝的值A修改为A’,则修改资源2后的状态为资源1和资源2对应的原始资源值分别为A和A’。这里,将资源2的信息中资源2所链接的原始资源的标识修改为该原始资源1拷贝的标识,表明使资源2所链接的原始资源变为该原始资源1的拷贝。各种资源存储系统可根据需要,从以上四种链接方式中任选一种或一种以上的方式来使用。比如在软件测试的过程中,软件发布的每一个版本都需要测试,对于测试来说对应于开发的每个版本都有一个测试版本与之对应,每个测试版本有大量的测试用例,而由于软件每个版本的功能不会有大的变化所以每个测试版本的用例大部分是相同的,这正符合了链接资源的适用环境,具体的说当第一个测试版本中有一个测试用例的描述信息,而以后的版本也包含了这个测试用例的时候,就可以采用Writable或者Snapshot方式来关联这两个测试用例。而当一个资源需要实现类似可视化资源安全(VisualSourceSafe)的历史信息管理时,就可以采用Redirector方式来链接资源,使当前最新资源永远指向最新的那一份历史信息的拷贝。当资源存储系统中能够使用一种以上的链接方式时,在创建链接资源时,还要进一步在链接资源信息表中记录当前创建的链接资源的链接方式;在修改原始资源或链接资源时,还要进一步判断与当前准备修改资源相关的链接方式,从而确定如何进行修改。由于,Readonly方式的链接比较特殊,则当系统可使用一个以上种链接方式,且包括Readonly方式时,在修改链接资源时,要首先判断其链接方式,如果为指示不允许修改的Readonly方式,就不必进行修改操作,结束当前处理;否则按图2所示的链接方式进行处理。图2中详细描述了单级链接系统中,修改原始资源或链接资源时,各种链接方式的不同处理。对于单级链接系统来说,实现一种以上的链接方式时,处理方法并不复杂,如果修改的是原始资源,则判断该原始资源的每个链接资源的链接方式,再分别按所判断链接方式如图2所述进行操作;如果修改的是链接资源,则判断该链接资源自身的链接方式,再按此链接方式如图2所述进行处理。但是,对于多级链接系统来说,实现一种以上链接方式的处理相对复杂。通常对于资源存储来说,每个资源应对应各自唯一的原始资源值,因此每个链接资源只链接唯一的资源,但一个资源可以被一个以上的链接资源链接。所以,一个原始资源、以及与其相关的链接资源之间应形成一种树型结构,其中,与原始资源相关的一个或一个以上链接资源包括直接链接该原始资源的链接资源、以及间接通过一个或一个以上的其它链接资源链接该原始资源的链接资源。在该树型结构中,原始资源就是树的根节点,链接某一资源的链接资源就是该某一资源的孩子节点,其中没有被任何其它链接资源链接的资源就是叶子节点。在对多级链接系统的资源进行处理时,将根据各个资源之间的链接关系建立树型结构模型,然后参考此模型进行处理。在树型结构中,各节点具备自身的层次,根节点的层次为1,根节点的孩子节点的层次为2,如果某节点的层次为N,则其孩子节点的层次为N+1。另外,树的深度就是该树各节点的最大层次数,如果将树中任一节点作为根节点,则该根节点对应子树的深度可用来表示该节点的深度。基于上述对树型结构基本概念的了解,下面结合图3对多级链接系统中实现多种链接方式的方法加以详细描述。图3为本发明方法中修改资源方法一较佳实施例处理流程示意图。本实施例中,所能使用的链接方式包括Writable、Snapshot和Redirector方式,如图3所示,具体处理步骤包括步骤301置当前准备修改的资源为当前操作资源。步骤302判断是否有链接资源链接当前操作资源,且这些链接资源的状态未被标识为已处理,如果是,则执行步骤303;否则执行步骤309。步骤303从所有链接当前操作资源的且状态未被标识为已处理的链接资源中提取一个链接资源,将其状态标识为已处理,按与当前所取链接资源相差链接层次的大小,将当前所取链接资源、以及所有直接或间接链接当前所取链接资源的链接资源组成队列。这里,如果将各个资源组成树型结构,则所述当前所取链接资源、以及所有直接或间接链接当前所取链接资源的链接资源为以当前所取链接资源为根节点的子树中各个节点对应的资源,所述链接层次相当于各资源所对应节点的层次。步骤304从所组成的队列中提取链接层次相差最大的链接资源作为当前操作资源,同时从该队列中删除当前操作资源。其中,业界实现步骤303所述将各资源组成队列、以及步骤304所述提取链接资源的方式有很多,比较通用的就是步骤303中,按深度优先原则遍历当前所提取的链接资源、以及所有直接或间接链接至当前所取链接资源的链接资源,并在遍历的同时压栈;步骤304为使栈顶资源出栈,并将该栈顶资源作为当前操作资源。这里,所谓深度优先原则压栈为按树型结构中各资源对应节点的深度,由大到小依次将各个资源压栈。步骤305判断当前操作资源的链接方式,如果是Writable,则执行步骤307;如果是Snapshot或Redirector,则执行步骤306。步骤306确定当前操作资源直接或间接链接的原始资源的标识,并按此原始资源的标识复制得到当前操作资源直接或间接链接的原始资源拷贝,使当前操作资源对应的原始资源为该原始资源拷贝。其中,可按图1所述方法确定当前操作资源直接或间接链接的原始资源的标识,并可按所确定的原始资源的标识复制得到该原始资源拷贝。另外,根据所判断的链接方式是Snapshot还是Redirector,所述使当前操作资源对应的原始资源为该原始资源拷贝的处理会有不同如果链接方式为Snapshot,则将当前操作资源置为该原始资源拷贝;如果链接方式为Redirector,则将当前操作资源所链接的资源置为该原始资源拷贝。这里,所述将当前操作资源置为该原始资源拷贝,包括将该原始资源拷贝的标识设置为当前操作资源的标识,删除记录在所述存储空间的当前操作资源的信息;所述将当前操作资源所链接的资源置为该原始资源拷贝,包括将记录在所述存储空间的当前操作资源的信息中当前操作资源所链接的链接资源的标识设置为该原始资源拷贝的标识。步骤307判断所组成的队列中是否还有链接资源,如果有,返回步骤304;否则执行步骤308。这里,如果步骤303和步骤304中采用将各个资源压栈的方式来处理,则本步骤的判断为判断栈内是否还要链接资源。步骤308置当前操作资源所链接的资源为当前操作资源,返回步骤302步骤309判断当前操作资源是否为链接资源,如果是,则执行步骤310;否则执行步骤313。步骤310判断当前操作资源的链接方式,如果是Writable,则执行步骤311;如果是Snapshot或Redirector,则执行步骤312。步骤311标识当前操作资源的状态为已处理,再将当前操作资源所链接的资源置为当前操作资源,返回步骤302。步骤312确定当前操作资源直接或间接链接的原始资源的标识,并按此原始资源的标识复制得到当前操作资源对应的原始资源拷贝,使当前操作资源对应的原始资源为该原始资源拷贝。这里,根据所判断的链接方式是Snapshot还是Redirector,所述使当前操作资源对应的原始资源为该原始资源拷贝的处理会有不同如果链接方式为Snapshot,则将当前操作资源置为该原始资源拷贝;如果链接方式为Redirector,则将当前操作资源所链接的资源置为该原始资源拷贝。步骤313确定当前准备修改资源对应的原始资源的标识,按所确定的原始资源的标识修改该原始资源的值。其中,如果当前准备修改的资源为原始资源,则所述当前准备修改的资源自身的标识即为该准备修改的资源对应的原始资源的标识;如果当前准备修改的资源为链接资源时,则所述当前准备修改的资源直接或间接链接的原始资源的标识即为该准备修改的资源对应的原始资源的标识,此时,可采用图1所述的方法来确定当前准备修改的资源直接或间接链接的原始资源的标识,这里不再详述。如果所能使用的链接方式除了包括Writable、Snapshot和Redirector方式以外,还包括Readonly方式,则在准备修改链接资源时,要首先判断该链接资源的链接方式是否为Readonly,如果是,则执行上述步骤301,从而进行图3所示的处理;否则拒绝当前修改操作,结束当前处理。为便于理解图3所示流程的处理原理,下面结合图4对采用图3所述流程修改资源时,各资源的状态变化过程加以具体说明。图4为应用图3所述实施例修改资源时的资源状态变化示意图。图4中,状态1为各个资源的初始状态示意图,该状态1表明了原始资源和各个链接资源之间的树型结构关系。其中,资源AAA为原始资源即树的根节点,其只有一个链接资源AA,该链接资源AA以Snapshot方式链接资源AAA;资源AA被两个链接资源链接,包括资源A和资源B,它们的链接方式均为Writable;资源A被两个链接资源链接,包括资源A1和资源A2,它们的链接方式分别为Snapshot和Redirector;资源A1被链接资源A11链接,且资源A11以Writable方式链接资源A1。以上各资源中,资源B、资源A2和资源A11没有被任何其它资源链接。根据前面所述树型结构的基本概念可知,图4中各资源在树型结构中的层次分别为资源AAA为1、资源AA为2、资源A和资源B为3、资源A1和资源A2为4、资源A11为5。各节点的深度依次为资源AAA为5、资源AA为4、资源A为3、资源A1为2,资源B、资源A2和资源A11的深度均为1。图4实例中,设定当前准备修改的资源为资源A。如图4的状态1所示,首次执行步骤301和步骤302时,当前操作资源为资源A,链接资源A的链接资源包括资源A1和资源A2,并且状态均未标识为已处理,从中提取资源A1,标识资源A1状态为已处理。然后记录与资源A1相关的所有资源,这里与资源A1相关的所有资源包括资源A1本身和资源A11,按深度优先原则依次遍历资源A1和资源A11并同时压栈,此时资源A11位于栈顶。然后首次执行步骤304取栈顶的资源A11作为当前操作资源,此时栈内只剩资源A1。图4中,将状态标识为已处理的资源用斜线表示,下面标号表示第几个被标识为已处理,资源A1被表示为第一个被标识为已处理的资源。如图4的状态2所示,首次执行步骤305时,判断当前操作资源A11的链接方式为Writable,则执行步骤307,并第二次执行步骤304,取栈顶的资源A1作为当前操作资源。第二次执行步骤305时,判断当前操作资源A1的链接方式为Snapshot,则执行步骤306复制得到资源A1对应的原始资源AAA的拷贝,并将资源A1置为该原始资源AAA的拷贝。此后执行步骤307时,判断栈内没有资源,则执行步骤308置当前操作资源A1所链接的资源A为当前操作资源,再返回步骤302。如图4的状态3所示,第二次执行步骤302时,链接当前操作资源A的链接资源中,状态未被标识为已处理的仅剩资源A2,所以执行步骤303提取资源A2,标识资源A2状态为已处理,然后记录与资源A2相关的所有资源,这里与资源A2相关的资源仅有资源A2本身,按深度优先原则遍历资源A2并同时压栈,此时资源A2位于栈顶。然后执行步骤304取栈顶的资源A2作为当前操作资源,此时栈内已无资源。随后执行步骤305时,判断当前操作资源A2的链接方式为Redirector,则执行步骤306复制得到资源A2对应的原始资源AAA的拷贝,并使资源A2所链接的资源置为该原始资源AAA的拷贝,然后执行步骤307和步骤308,资源A成为当前操作资源,再返回步骤302。这里,资源A2成为第二个被标识为已处理状态的资源。如图4的状态4所示,本次执行步骤302时,当前操作资源A已无状态未被标识为已处理的链接资源了,则执行步骤309,判断结果为当前操作资源A是链接资源,执行步骤310。步骤310的执行结果为资源A的链接方式为Writable,则执行步骤311标识当前操作资源A的状态为已处理,并将资源A所链接的资源AA置为当前操作资源,返回步骤302。本次执行步骤302时,判断链接当前操作资源AA的链接资源中,状态未被置为已处理的只有资源B,则执行步骤303标识资源B状态为已处理,将资源B压栈,再执行步骤304。本次执行步骤304时,栈顶为资源B,资源B出栈并被置为当前操作资源,此时栈内已空。这里,资源A和资源B分别成为第三个和第四个被标识为已处理的资源。如图4的状态5所示,此次执行步骤305时,判断当前操作资源B的链接方式为Writable,因此执行步骤307。步骤307的执行结果为栈内已空,则执行步骤308将当前操作资源B所链接的资源AA置为当前操作资源,然后返回步骤302。本次执行步骤302时,链接资源AA的链接资源中已没有状态未被标识为已处理的链接资源了,因此执行步骤309。步骤309中,判决资源AA是链接资源,则执行步骤310判断当前操作资源AA的链接方式为Snapshot,则执行步骤312。步骤312中,复制得到资源AA对应的原始资源AAA的拷贝,并将资源AA置为该原始资源AAA的拷贝,然后执行步骤313。步骤313中,直接修改当前准备修改的资源A对应的原始资源AA,将其原来的原始资源值AAA修改为AAA’,完成全部修改资源处理。由以上对图4的五个状态的描述可见,对资源A的修改仅造成资源B和资源AA的改变,而资源AAA、资源A1、资源A11和资源A2对应的原始资源值均未发生变化。以上详细描述了应用本发明方法的资源存储系统中,创建、读取、修改资源的操作过程。由于采用链接机制管理资源,因此,在删除资源时,并不能简单的直接将资源删除,比如删除原始资源时,如果该原始资源的链接资源不需删除,则该原始资源也不能删除,应等到该原始资源的所有链接资源都需要删除时才能删除该原始资源删除。图5为本发明方法中删除资源一较佳实施例处理流程示意图。如图5所示,当准备删除某一资源时,具体处理包括步骤501判断是否有链接资源链接当前准备删除的资源,如果是,则执行步骤502;否则执行步骤503。步骤502判断当前当前准备删除的资源的状态是否为等待删除,如果是,则标识该准备删除的资源的状态为等待删除,结束当前处理;否则结束当前处理。步骤503删除当前准备删除的资源,并判断当前删除的资源是否为链接资源,如果是,则执行步骤504;否则结束当前处理。步骤504判断步骤503所删除的链接资源所链接的资源的状态是否为等待删除,如果是,则执行步骤505;否则结束当前处理。步骤505置步骤504所述状态为等待删除的资源为当前准备删除的资源,返回步骤501。根据以上所述可见,应用本发明方法能够在数据库系统、文件系统等大型资源存储系统中实现链接机制的资源管理,还能实现多种方式的链接,从而满足各种资源链接关系的需要。此外,所述多种方式的链接资源的管理不仅能实现于单级链接系统,还能在多级链接系统中实现。依照本发明方法,能够实现资源存储系统中各级链接资源、以及各种链接方式资源的创建、读取、修改、删除等操作。不仅能使各个资源相互关联起来、减少冗余操作,还能节约存储空间、提高系统存储资源利用率,改善大型、复杂的资源存储系统的性能。以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。权利要求1.一种基于链接机制的资源管理方法,包括创建原始资源,按标识读取或修改已创建的原始资源的值;其特征在于,在资源存储系统中设置用于记录链接资源的信息的存储空间;该方法还包括创建、读取、修改链接资源;所述创建链接资源为在所设置的存储空间中记录用于链接已创建的原始资源的链接资源的信息,该链接资源的信息包括该链接资源的标识、以及该链接资源链接的原始资源的标识;所述读取或修改链接资源为根据当前读取或修改的链接资源的标识查询所记录的链接资源的信息,确定该链接资源链接的原始资源的标识,并根据所确定的原始资源的标识读取或修改该链接资源的资源值。2.根据权利要求1所述的方法,其特征在于,当修改链接资源时,所述根据所确定的原始资源的标识修改该链接资源的资源值为修改所确定的原始资源的标识对应的原始资源的值。3.根据权利要求1所述的方法,其特征在于,当修改链接资源时,所述根据所确定的原始资源的标识修改该链接资源的资源值为复制得到所确定的原始资源标识对应的原始资源拷贝,将该原始资源拷贝的标识设置为该链接资源标识,删除该链接资源的信息,修改该链接资源标识当前对应的该原始资源拷贝的值;当所修改的原始资源被链接资源链接时,所述按标识修改原始资源的值之前,进一步包括按标识复制得到当前修改的原始资源的拷贝,将该原始资源拷贝的标识设置为链接该原始资源的链接资源的标识,删除链接该原始资源的链接资源的信息。4.根据权利要求1所述的方法,其特征在于,当修改链接资源时,所述根据所确定的原始资源的标识修改该链接资源的资源值为复制得到所确定的原始资源标识对应的原始资源拷贝,将该链接资源的信息中该链接资源链接的原始资源的标识修改为该原始资源拷贝的标识,修改该链接资源的标识当前对应的该原始资源拷贝的值;当所修改的原始资源被链接资源链接时,所述按标识修改原始资源的值之前,进一步包括按标识复制得到当前修改的原始资源拷贝,将链接当前修改的原始资源的链接资源的信息中该链接资源链接的原始资源的标识修改为该原始资源拷贝的标识。5.根据权利要求1所述的方法,其特征在于,使用链接方式来指示链接资源与其所链接资源之间的链接关系,所能使用的链接方式包括可写方式、快照方式、和重定向方式;在创建链接资源时,进一步包括从所能使用的链接方式中任选一种作为该链接资源的链接方式并记录;当修改链接资源时,所述根据所确定的原始资源的标识修改链接资源对应的原始资源值为判断该链接资源的链接方式,如果是可写方式,则修改所确定的原始资源的标识对应的原始资源值;如果是快照方式,则复制得到所确定的原始资源标识对应的原始资源拷贝,将该原始资源拷贝的资源标识设置为该链接资源标识,删除该链接资源的信息,修改该链接资源标识当前对应的该原始资源拷贝的值;如果是重定向方式,则复制得到所确定的原始资源标识对应的原始资源拷贝,将该链接资源的信息中该链接资源链接的原始资源的标识修改为该原始资源拷贝的标识,修改该链接资源的标识当前对应的该原始资源拷贝的值;当所修改的原始资源被链接资源链接时,所述按标识修改原始资源的值之前,进一步包括判断链接该原始资源的链接资源的链接方式,如果是可写方式,则继续处理;如果是快照方式,则按标识复制得到当前修改的原始资源的拷贝,将该原始资源拷贝的资源标识设置为链接该原始资源的链接资源的标识,删除链接该原始资源的链接资源的信息;如果是重定向方式,则按标识复制得到当前修改的原始资源拷贝,将链接当前修改的原始资源的链接资源的信息中该链接资源链接的原始资源的标识修改为该原始资源拷贝的标识。6.根据权利要求5所述的方法,其特征在于,所能使用的链接方式进一步包括只读方式;当修改链接资源时,在判断链接方式之前,进一步包括判断该链接资源的链接方式是否为只读方式,如果是,拒绝修改,结束当前处理;否则继续处理。7.根据权利要求1所述的方法,其特征在于,当所创建的链接资源链接已创建的链接资源时,所述创建链接资源进一步包括在所述存储空间中记录当前创建的链接资源的信息,该链接资源的信息包括当前创建的链接资源的标识及其对应的当前创建的链接资源所链接的链接资源的标识;所述读取或修改链接资源为查询所记录的链接资源的信息,根据当前读取或修改的链接资源的标识确定该链接资源链接直接或间接链接的原始资源的标识,并根据所确定的原始资源的标识读取或修改该链接资源直接或间接链接的原始资源值。8.根据权利要求7所述的方法,其特征在于,所述确定链接资源直接或间接链接的原始资源的标识为1)将该链接资源置为当前操作资源;2)读取记录在所述存储空间的当前操作资源的信息;判断当前操作链接资源所链接的资源是否为原始资源,如果是,则确定当前操作资源所链接的原始资源的标识为步骤1)所述链接资源直接或间接链接的原始资源的标识,结束当前处理;否则将该链接资源所链接的资源作为当前操作资源,重新执行步骤2)。9.根据权利要求8所述的方法,其特征在于,使用链接方式来指示链接资源与其所链接资源之间的链接关系,所能使用的链接方式包括可写方式、快照方式、和重定向方式;在创建链接资源时,进一步包括从所能使用的链接方式中任选一种作为该链接资源的链接方式并记录;所述修改链接资源或原始资源为A1.将当前准备修改的资源作为当前操作资源;A2.判断是否有未被标识为已处理状态的链接资源链接当前操作资源,如果有,执行步骤A3;否则执行步骤A6;A3.提取一个链接当前操作资源的未被标识为已处理状态的链接资源,标识该链接资源状态为已处理,按与当前所取链接资源相差链接层次的大小,将当前所取链接资源、以及所有直接或间接链接当前所取链接资源的链接资源组成队列;A4.从所组成的队列中提取链接层次相差最大的链接资源并置为当前操作资源,确定当前操作资源为链接资源;判断当前操作资源的链接方式,如果是可写方式,则执行步骤A5;如果是快照方式,则确定当前操作资源直接或间接链接的原始资源的标识,并复制得到当前操作资源直接或间接链接的原始资源拷贝,将该原始资源拷贝的标识设置为当前操作资源的标识,删除记录在所述存储空间的当前操作资源的信息;如果是重定向方式,则确定当前操作资源直接或间接链接的原始资源的标识,并复制得到当前操作资源直接或间接链接的原始资源拷贝,将记录在所述存储空间的当前操作资源的信息中当前操作资源所链接的链接资源的标识设置为该原始资源拷贝的标识;A5.判断所述队列中是否还存在资源,如果是,则返回步骤A4;否则将当前操作资源所链接的资源置为当前操作资源,返回步骤A2;A6.判断当前操作资源是否是链接资源,如果是,则执行步骤A7;否则执行步骤A8;A7.确定当前操作资源为链接资源,判断当前操作资源的链接方式,如果是可写方式,则标识当前操作资源的状态为已处理,将当前操作资源所链接的资源置为当前操作资源,返回步骤A2;如果是快照方式,则确定当前操作资源直接或间接链接的原始资源的标识,并复制得到当前操作资源直接或间接链接的原始资源拷贝,将该原始资源拷贝的标识设置为当前操作资源的标识,删除记录在所述存储空间的当前操作资源的信息;如果是重定向方式,则确定当前操作资源直接或间接链接的原始资源的标识,并复制得到当前操作资源直接或间接链接的原始资源拷贝,将记录在所述存储空间的当前操作资源的信息中当前操作资源所链接的链接资源的标识设置为该原始资源拷贝的标识;A8.确定当前准备修改的资源对应的原始资源的标识,按所确定的原始资源的标识修改当前准备修改的资源对应的原始资源值。10.根据权利要求9所述的方法,其特征在于,所能使用的链接方式进一步包括只读方式;当修改链接资源时,步骤A1之前进一步包括判断该链接资源的链接方式是否为只读方式,如果是,则结束当前处理;否则继续执行步骤A1。11.根据权利要求9或10所述的方法,其特征在于,步骤A8中,当前准备修改的资源为原始资源时,所述当前准备修改的资源自身的标识为该准备修改的资源对应的原始资源的标识;当前准备修改的资源为链接资源时,所述当前准备修改的资源直接或间接链接的原始资源的标识为该准备修改的资源对应的原始资源的标识;步骤A4、步骤A7、和步骤A8中,所述确定链接资源直接或间接链接的原始资源的标识为A11.将该链接资源置为当前操作资源;A12.读取记录在所述存储空间的当前操作资源的信息;判断当前操作链接资源所链接的资源是否为原始资源,如果是,则确定当前操作资源所链接的原始资源的标识为步骤A11所述链接资源直接或间接链接的原始资源的标识,结束当前处理;否则将该链接资源所链接的资源作为当前操作资源,重新执行步骤A12。。12.根据权利要求1至10任一项所述的方法,其特征在于,该方法进一步包括删除资源的处理,其包括B1.判断是否有链接资源链接当前准备删除的资源,如果有,则执行步骤B2;否则执行步骤B3;B2.判断所述准备删除的资源的状态是否已被标识为等待删除,如果是,结束当前处理;否则标识该准备删除的资源的状态为等待删除,结束当前处理;B3.删除所述准备删除的资源,判断所删除的资源是否为链接资源,如果是,则执行步骤B4;否则结束当前处理;B4.判断步骤B3所删除的链接资源所链接的资源的状态是否为等待删除,如果是,则置该状态为等待删除的资源为当前准备删除的资源,返回步骤B1;否则结束当前处理。13.根据权利要求1所述的方法,其特征在于,当所述资源存储系统为数据库系统时,所述存储空间为数据库的表;当所述资源存储系统为文件系统时,所述存储空间为可结构化存储数据的文件。全文摘要本发明公开了一种基于链接机制的资源管理方法,包括创建原始资源,按标识读取或修改已创建的原始资源的值;在资源存储系统中设置存储空间;该方法还包括创建、读取、修改链接资源;所述创建链接资源为在所设置的存储空间中记录链接已创建的原始资源的链接资源的信息,该链接资源的信息包括该链接资源的标识及其对应的该链接资源链接的原始资源的标识;所述读取或修改链接资源为查询所记录的链接资源的信息,根据当前读取或修改的链接资源的标识确定该链接资源链接的原始资源的标识,并根据所确定的原始资源的标识读取或修改该链接资源对应的原始资源值。应用本发明方法能够在各种资源存储系统中实现链接资源存储。文档编号G06F9/46GK1877574SQ20051007696公开日2006年12月13日申请日期2005年6月9日优先权日2005年6月9日发明者王会军,刘小刚申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1