文件管理方法

文档序号:6476747阅读:157来源:国知局
专利名称:文件管理方法
文件管理方法
技术领域
本发明涉及数字文件管理领域,尤其涉及在记录介质上对数字文件的
记录、读取和修改。更确切地,本发明涉及与电脑操作系统(operating system)所专有的文件系统(file system)相互作用的数据文件管理方法 和系统。
通常,才艮据存储器空间的可用性,将新的数据文件记录在存储器(例 如硬盘)的位置中。在用硬盘进行记录的情况下,硬盘在格式化时被组织 成初始化的块。这些块在格式化时被分配到存储器的物理扇区上。
计算机上的数据文件管理是通过计算机操作系统的文件系统来实现的。
操作系统的文件系统使用记录介质上的一个或多个分区。分区包括用 于记录任意数据文件的存储空间,以及记录存储空间的特征、尤其是文件 在存储空间中的地址的索引空间。
某些文件构成目录,将与数据文件和属于同一分区的目录相关的特征 的列表集中在一起。
对于存储容量较大(例如几千兆字节)的记录介质,当要被记录、读 取或修改的数据文件的数量在同一目录中变得较大时,文件系统的索引系 统的性能恶化。实际上,目录类文件的组织包括^^有大量待处理事件的列 表,i^数据文件的数量达到数万时会以造成严重阻碍的方式增加存取文 件的时间。在数据文件必须重命名或删除时引起的目录类文件的碎片化现 象加剧了所述性能恶化。
通过Linux EXT3文件系统已知的另 一组织方式,提出了 一种目录类 文件的组织,包括B-树类型的内部索引系统,以及针对每个数据文件, 基于哈希函数(fonction de hachage)的结果来计算数据文件名的摘要, 以4更在^^有大量lt据文件的目录中加速搜索。该解决方案允许在同一目录 中操作十多万数据文件。然而,超过某一阈值,哈希函数的极限使得不再 能够避免引起为不同名字的两个数据文件分配相同摘要的沖突。对于 EXT3文件系统,对于Linux 2.6内核版本, 一旦同一目录中的数据文件 的数量达到约500000,该极限出现。在现有技术中已知专利US5742817,描述了一种文件服务器,提出了 目的在于简化寻址处理的文件查询方法。该文献提出通过由文件管理系统 自动分配的INODE识别处理来加速存取文件。该处理包括从该识别码中 提取文件系统中的子目录所对应的三组十六进制数据。
美国专利申请US2004/0236761描述了将文件记录在一系列目录和子 目录中的系统。在树形图的最后一层,可进行包括以下步骤的处理根据 文件名计算摘要以确定记录了所述文件的"HASH SLOT (哈希时隙)" 子目录。
换言之,以传统的树形图形式组织存储器空间,在树形图的最后一层, 一个处理在单一层次的集合中确定子目录。
该方案限制了可以被记录的文件的数量。文件管理系统的寻址方式限 制了子目录的数量,例如对于UNIX类型的管理系统为65536。
此外,上述各子目录内部的文件的数量也由同样的界限所限制。
总之,容量受到限制,为了充分使用容量,必须使子目录的数量最大 化。而在单一 "耙形"层子目录中,子目录数量限制了文件管理系统的性 能。
本发明的目的在于通过提出一种稳定耐用而快速的文件管理方法来 克服该缺点,从而允许操作的数据文件的数量仅受可用的存储空间P艮制, 而不受由文件系统对数据文件名称执行的处理的限制。因此根据本发明的 方案不限制4吏用大容量存储器的能力,这是由于唯一的限制是这些存储器 的物理容量,而不再是文件系统要求的操作模式,对于例如文件服务器应 用,该方案允许管理很大数量的数据文件。
^l据最广泛的含义,本发明涉及一种文件管理方法,包括组织数据文 件库的第一步骤,该第一步骤包括创建M层目录的树形图,每个目录包 含N个目录,M是大于1的整数,该方法还包括记录数据文件的记录步 骤,该记录步骤包括
-对待记录的数据文件Fi的识别码应用哈希函数,
-根据前一步骤的结果,在具有多个层的树形图中,确定目标目录 Rdi的路径,
-在由所述哈希函数确定的所述目录Rdi中,在由数据文件的识别码 决定的位置,记录数据文件,
6该方法还包^^取数据文件的读取步骤,该读取步骤包括
-对待读取的数据文件Fj的识别码应用同 一哈希函数,
-棉^据前一步骤的结果,在树形图中确定目标目录Rcj的路径,
-在由所述哈希函数确定的所述目录Rej中,在由数据文件的识别码 决定的位置,读取数据文件。
为了并行使用存储单元并改进性能(存M度和/或存储器容量),根 据一个具体实施方式
,本发明涉及根据上述权利要求所述的一种文件管理 方法,其特征在于,数据文件分布在Q个存储单元中,每个存储单元对 应于P层目录,每个目录包含N个目录。
与专利申请US2004/0236761的教导相反,该方案导致缩减了树形图 的各层的目录的数量,这允许改进性能(尤其是在二维树形图中存取数据 文件的速度)并使得可被记录的数据文件的数量能够几乎不受限制。该限 制不再取决于文件管理系统的限制,而仅受存储装置的物理容量限制。
与现有技术的方案相反,本发明通过应用哈希函数,不再在给定的目 录中分配地址,而是在具有多个层的树形图中分配路径。在最后一层的子 目录中的位置不再由哈希函数分配,而是由与数据文件的识别码相关联的 名称分配。
优选地,N等于16,哈希函lblSHAl函数。
文件管理的一个补充问题涉及在两个应用同时存取同一数据文件的 情况下保护数据的完整性。
在大多数操作系统中,已知在文件系统层次上锁定数据文件,从而允 许在写入或读取过程中暂时禁止存取数据文件。这些方案由文件系统通常 基于驻留在存储器中的锁定表来管理。这些方案的缺点在于,在通过网络 存取文件的情况下,从多个远程计算M取同一文件时,可能产生干扰或 躲。
专利US6850969提出允许避免使用锁定的一种特别方案。该专利提 出经验性监控一个应用在打开的数据文件中记录修改的可能性,并保证在 称为原子IMt的所述IMt期间,没有任何其他应用介入同一数据文件。在 本专利的意义上,原子操作是指以连续方式执行的不可分割的任务集,在 称为原子操作的全部任务结束之前,没有被中断和受第三方^Ht干扰的可 能。该方案令人不满意,因为当多个应用同时对公共文件集进行处理时, 该方案阻止某些操作完成。尽管该方案允许避免改变现有的数据文件,但 会有损于并发的安全的存取。实际上,该方案要求每个处理都在上一处理
完成之后介入。因此该方案确实不适于对包含例如XML格式的数据的文 件进行处理,所述文件可能在任何时间被不同的并发应用所使用。
为此,本发明还涉及一种文件管理方法,其特征在于,每个数据文件 包括头部和主体。头部包括数据文件在文件管理系统中的状态M。主体
包括文件的可修改内容。该方法包括存取目标数据文件的步骤,使所述状 态M更改为禁止新的存取的状态。
对所述数据文件的管理独立于计算^M^作系统的文件系统。
通过阅读下面与非限定性实施例相对应的描述,并参照附图
,可更好 地理解本发明,在附图中
-图l示出根据本发明的文件管理方法实施的树形图的示意图,
-图2至图8示出文件管理的功能示意图,
-图9示出与客户-服务器模式相对应的、通过网^f吏用文件管理系 统的示意图。
图l示出根据本发明的文件管理方法实施的树形图的示意图。
在所描述的示例中,按照细分为M-5层(l至5)的结构来组织数 据文件。除最后一层5之外,每层(l至4)的每个目录都包舍N-16个 目录(10至12)、 (20至25)、 (30至35)、 (40至45)。 16个目录中每一 个的名称对应于0和f之间的十六进制数字。结构中包含的目录的总数为 16 + 162 + 163 +……+ 16M。
在所描述的示例中,树形图包括
-层1到4的69904个目录,不包含数据文件,而仅包含上层的目录;
-层5的1048576个目录(50至55 );每个目录包含允许存储数据文 件的文件。
最后一层5的各目录(50至55 )可以包含数量L受限的数据文件, L被选为较小,例如约为1000,以便允许快速的存取时间,无论何种计 算机操作系统的文件系统都可适用。
为数据文件分配存储器位置当创建由字符串形成的独特使用名称所表示的新数据文件时,本方法
包括对代表了使用名称的该字符串应用哈希函数Hi,该步骤的结果由以 十六进制形式表示的值构成。对于哈希函数SHA1,十六进制形式的结果 包括40个0和f之间的十六进制数字。
本方法包括,在前面限定的目录的树形图的情况下,基于来自哈希函 数的所述结果来在所述树形图中确定目录的路径。
来自哈希函数的结果的起始M个数字的每个数字的值(rang)对应 于目录树形图的层次。
如果以^吏用名称"myfile"为例,则应用SHA1函数返回值 "b3580ab45cb088ba47ff070aa81c2daelbe56ca2"。
层1的目录是带有名称"b"的目录,对应于SHA1值的第一个字符, 层2的目录是"3",对应于第二个字符,对于5个层(l至5)以此类推。 在最后一层目录5中的位置由构成使用名称的各个字符的八位字节的具 有两个数字的十六进制表示构成。对于名称"myfile",文件的位置和名 称是"6d7966696c65", "6d"对应于字符"m"的具有两个数字的十六进 制表示,"79"对应于字符"y"的具有两个数字的十六进制表示,"66"对 应于字符"f*的具有两个数字的十六进制表示,以此类推。
对于需要用多个八位字节来编码的字符,八位字节的^^脊农次以这
种形式表示o
由于数据文件的使用名称的独特性,文件的表示必然是独特的,这是 因为该表示产生于基于哈希函数计算出的位置与以独特的方式基于使用 名称计算出的数据文件名称的组合。
该方案允许以等概率的方式并且以最大离散度将数据文件分配到目
录树形图的层M的目录中。只有层M包含数据文件,中间层不包含数据 文件并仅用于将文件分配到层M的目录中。
在层M的各目录内部,数据文件的数量是适当的,例如约为1000, 这导致了快速的存取时间。可以在层M的树形图中创建的数据文件的最 大数量等于1000 x 16M。例如,对于M-5,可以在层M的目录树形图中 创建、写入或读取约十亿个数据文件。
数据文件的创建、写入、读取和删除
笫一步骤包括,通过应用前面提到的哈希函数以及基于使用名称计算文件名称,来基于文件的使用名称确定文件在树形图中的存M径及其相
关的文件名称。该步骤允许确定文件被记录在层M的哪一目录中及文件 在该目录中的位置。
对同 一数据文件的并发存取
为了允许安全地管理对数据文件的存取,数据文件中每一个都包括头 部和主体。主体包括文件的可以以直接存取的方式或以压缩或加密的方式 修改的内容。该主体前面置有头部,该头部包含文件在文件管理系统中的 状态M。
系统性地,为了进行一系列任意^Mt (写入、读取、修改或删除),
由处理对文件的存M现为第一获取步骤,该第一获取步骤包括由另一个 处理将头部的所述状态参数修改为禁止新的存取的状态。
当然,当文件处于由一个处理进行存取或使用过程中时,另一个处理 在执行该初始获取步骤时将遇到禁止或等待提示。
另一个处理反复执行该初始获取步骤,直到目标文件重新处于允许存 取的状态,或直到预定的期限引^^存取尝试的中断。
一旦由处理完成了 一系列操作,最后一个释放步骤将头部中的经修改 的^t恢复为初始状态,从而允许另一个处理对数据文件进行存取。
图2至图8示出由本发明实施的功能结构。 获^L有数据文件的功能
图2示出用于获,有数据文件所需的任务序列。 该功能采用如上所述基于使用名称而计算出的文件名称作为输入
150。
笫一任务ioo包括尝试在^Mt系统的文件系统层次上同时打开和锁 定文件,通过要求打开和锁定文件阻止后面的处理打开和锁定该文件,直 到关闭和解锁该文件。
该功能I^进行测试101以^文件的打开和锁定如果文件未被打 开和锁定,则测试101的结果是否定的并且该功能进行第二测试102,第 二测试102lHi在进行尝试100时文件是否存在。在否定的回答的情况下, 该功能送回餘溪103, M 103指示文件不存在。
在肯定的回答的情况下,测试104 mt尝试100的次lbl否超过阈值,或是否超过了时间期限,在否定的回答的情况下,在延时149之后进員 的尝试100;否则,该功能发回系统4^105。
如果测试101的结果是肯定的,则该功能在任务106中在文件头部的 状态参数中读取文件的可用性状态。
该功能^根据状态^t的值来进行文件可用性的测试107。
如果测试107的结果是否定的,il)it应于不可用状态,则该功能执行 在操作系统的文件系统层次上同时关闭和解锁文件的任务108。
该功能1^#进行测试109,测试109 JiHiE尝试100的次fcl否超过阈 值,或是否超过了时间期限,在否定的回答的情况下,在延时149之后进 行新的尝试100;否则,该功能发回餘蔽IIO,餘溪110指示文件仍由当 前处理占用。
如果测试107的结果是肯定的,则该功能执行将文件的不可用状态写 入文件的头部的状态M中的任务lll,然后,执行计算文件获取识别码 的任务112,将该识别码写入文件的头部的状态^lt中的任务113,以及 读取文件主体的任务114。任务115对应于对文件的主体的处理,以<更提 取文件的可修改内容。该处理根据文件的头部的状态^lt来执行。该处理 例如对应于对文件的可修改内容的解压或解密。最后的任务116包括在操 作系统的文件系统层次上同时关闭和解锁文件。
该功能在结束151时作为输出送回对数据文件获取的确认、文件获取 识别码以及文件的可修改内容。
获取新的数据文件的功能
图3示出用于获取新的数据文件所需的任务序列。 该功能采用如上所述基于使用名称而计算出的文件名称作为输入
250。
第一任务200包括尝试在操作系统的文件系统层次上同时创建、打开 和锁定新的文件,通过要求创建、打开和锁定文件阻止后面的处理打开和 锁定该文件,直到关闭和解锁该文件。
该功能l^进行测试201以IHE文件的创建、打开和锁定如果文件 未被创建、打开和锁定,则测试201的结果是否定的并且该功能进行第二 测试202,第二测试202 !Hi在尝试200时文件是否存在。
在肯定的回答的情况下,该功能发回错误204,指示文件已经存在。在否定的回答的情况下,该功能发回指示系统餘溪的错误203。
如果测试201的结果是肯定的,则该功能执行创建和写入具有空文件 主体的文件的头部的任务205,然后执行在文件的头部的状态M中写入 文件的不可用状态的任务206,然后执行计算文件获取识别码的任务207, 将该识别码写入文件的头部的状态^lt中的任务208。最后的任务209包 括在操作系统的文件系统层次上同时关闭和解锁文件。
该功能在结束251时,作为输出送回对数据文件获取的确i人和文件获 取识别码。
获取现有数据文件(如果所述lt据文件不存在则创建数据文件)的功

图4示出用于获取现有数据文件(如果不存在则创建数据文件)所需 的任务序列。
该功能采用如上所述基于使用名称而计算出的文件名称作为输入
350。
第一任务300包括尝试在IMt系统的文件系统层次上同时打开和锁
定文件,如果文件不存在则创建文件,通过要求打开和锁定文件阻止后面 的处理打开和锁定该文件,直到关闭和解锁该文件。
该功能I^进行测试301以IHE文件的打开和锁定如果文件未被打 开和锁定,则测试301的结果是否定的并且该功能进行笫二测试302,第 二测试302 lHt在尝试300时文件是否存在。在否定的回答的情况下,该 功能发回系统错误303。
在肯定的回答的情况下,测试304發汪尝试300的次lbl否超过阈值, 或是否超过了时间期限,在否定的回答的情况下,在延时349之后进* 的尝试300;否则,该功能发回系统^:305。
如果测试301的结果是肯定的,则该功能I^进行测试306以J^ii在 尝试300中是否创建了文件如果未创造文件,则测试306的结果是否定 的并且该功能在执行任务307时在文件的头部的状态^lt中读取文件的 可用性状态。
该功能^根据状态M的值来进行文件可用性的测试308。
如果测试308的结果是否定的,il^应于不可用状态,则该功能执行 在 作系统的文件系统层次上同时关闭和解锁文件的任务309。该功能l^进行测试310,测试310验证尝试300的次ltA否超过阈值,或是否超过了时间期限,在否定的回答的情况下,在延时349之后进行新的尝试300;否则,该功能发回餘溪3U, 4t^311指示文件仍由当前处理占用。
如果测试308的结果是肯定的,则该功能执行将文件的不可用状态写入文件的头部的状态M中的任务312,然后执行计算文件获取识别码的任务313,将该识别码写入文件的头部的状态^lt中的任务314,以及读取文件主体的任务315。任务316对应于对文件主体的处理,以便提取文件的可修改内容。该处理根据文件的头部的状态参数来进行。该处理例如对应于对文件的可修改内容的解压或解密。任务317包括在操作系统的文件系统层次上同时关闭和解锁文件。
该功能在结束351时,作为输出送回对数据文件获取的确认、表示未创建文件的通知、文件获取识别码以及文件的可修改内容。
如果测试306的结果是肯定的,则该功能执行创建和写入具有空文件主体的文件的头部的任务318,然后执行将文件的不可用状态写入文件的头部的状态^lfc中的任务319,然后执行计算文件获取识别码的任务320,将该识别码写入文件的头部的状态W:中的任务321。最后的任务322包括在操作系统的文件系统层次上同时关闭和解锁文件。
该功能在结束352时作为输出送回对数据文件获取的确认、表示创建了文件的通知以及文件获取的识别码。
在不l务改^t据的情况下j^放获取的数据文件的功能
图5示出用于在不改变数据的情况下释放获取的数据文件所需的任务序列。
该功能采用如上所述基于使用名称而计算出的文件名称以及在前述获取数据文件时送回的获取识别码作为输入450。
第一任务400包括尝试在操作系统的文件系统层次上同时打开和锁定文件,通过要求打开和锁定文件阻止后面的处理打开和锁定该文件,直到关闭和解锁该文件。
该功能f^进行测试401以aiiE文件的打开和锁定如果文件未被打开和锁定,则测试401的结果是否定的并且该功能进行第二测试402,第二测试402Ui在尝试400时文件是否存在。在否定的回答的情况下,该功能送回错误403, M 403指示文件不存在。在肯定的回答的情况下,测试404验证尝试400的次ltA否超过阈值,或是否超过了时间期限,在否定的回答的情况下,在延时449之后进M的尝试400;否则,该功能送回系统错误405。
如果测试401的结果是肯定的,则该功能在执行任务406时在文件的头部的状态参数中读取文件的可用性状态。
该功能I^根据状态M的值来进行文件可用性的测试407。
如果测试407的结果是肯定的,则该功能执行在操作系统的文件系统层次上同时关闭和解锁文件的任务408,并送回错误409, 4^409表示未获取文件。
如果测试407的结果是否定的,这对应于不可用状态,则该功能在执行任务410时,读取文件的头部中的获取识别码。
该功能I^进行测试411,测试411检查该识别码是否不同于作为输入提交的识别码。在肯定的回答的情况下,该功能执行在操作系统的文件系统层次上同时关闭和解锁文件的任务412,并且送回错误413, M413表示作为输入提交的获取识别码无效。
在否定的回答的情况下,该功能执行删除文件的头部的状态^中的获取识别码的任务414,然后执行将可用性状态写入文件的头部中的任务415。最后的任务416包括在操作系统的文件系统层次上同时关闭和解锁文件。
该功能在结束451时作为输出送回对数据文件释放的确认。
在修改数据的情况下释放获取的数据文件的功能
图6示出用于在修改数据的情况下释放获取的数据文件所需的任务序列。
该功能采用如上所述基于使用名称而计算出的文件名称、在前述获取数据文件时送回的获取识别码以及文件的可修改内容作为输入550 。
第一任务500包括尝试在^作系统的文件系统层次上同时打开和锁定文件,通过要求打开和锁定文件阻止后面的处理打开和锁定该文件,直到关闭和解锁该文件。
该功能l^进行测试501以,文件的打开和锁定如果文件未被打开和锁定,则测试501的结果是否定的并且该功能进行第二测试502,第二测试502 ^£在尝试500时文件是否存在。在否定的回答的情况下,该功能送回错误503, M 503指示文件不存在。
在肯定的回答的情况下,测试504 !Hit尝试500的次ltA否超过阈值,或是否超过了时间期限,在否定的回答的情况下,在延时549之后进W的尝试500;否则,该功能送回系统错溪505。
如果测试501的结果是肯定的,则该功能在执行任务506时在文件的头部的状态M中读取文件的可用性状态。
该功能IC^根据状态^L的值来进行文件可用性的测试507。
如果测试507的结果是肯定的,则该功能执行在操作系统的文件系统层次上同时关闭和解锁文件的任务508,并且送回错误509, 4T^509指示未获取文件。
如果测试507的结果是否定的,it)it应于不可用状态,则该功能在执行任务510时,读取文件的头部中的获取识别码。
该功能f^进行测试511,测试511检查该识别码是否不同于作为输入提交的识别码。在肯定的回答的情况下,该功能执行在操作系统的文件系统层次上同时关闭和解锁文件的任务512,并且送回错误513,错误513表示作为输入提交的获取识别码无效。
在否定的回答的情况下,该功能执行删除文件的头部的状态M中的获取识别码的任务514,然后执行将可用性状态写入文件的头部中的任务515,然后执行与对文件主体的处理相对应的任务516,以l更将文件的可修改内容插入到文件主体中。该处理是根据文件的头部的状态^来进行
的并Jjtt应于例如对文件的可修改内容的压缩或加密。该功能l^进行写入文件主体的任务517,最后的任务518包括在操作系统的文件系统层次上同时关闭和解锁文件。
该功能在结束551时作为输出送回对数据文件的释放的确认以;M"
文件内容的修改的确认。
在删除获取的lt据文件的情况下释放所述数据文件的功能
图7示出用于在删除获取的数据文件的情况下释放所述数据文件所需的任务序列。
该功能采用如上所述基于使用名称而计算出的文件名称以及在前述获取数据文件时送回的获取识别码作为输入650。
笫一任务600包括尝试在操作系统的文件系统层次上同时打开和锁定文件,通过要求打开和锁定文件阻止后面的处理打开和锁定该文件,直 到关闭和解锁该文件。
该功能IC^进行测试601以!Hi文件的打开和锁定如果文件未被打 开和锁定,则测试601的结果是否定的并且该功能进行第二测试602,第 二测试602 !Hi在尝试600时文件是否存在。在否定的回答的情况下,该 功能送回餘溪603,603指示文件不存在。
在肯定的回答的情况下,测试604验证尝试600的次ltA否超过阈值, 或是否超过了时间期限,在否定的回答的情况下,在延时649之后进^^t 的尝试600;否则,该功能送回系统错误605。
如果测试601的结果是肯定的,则该功能在执行任务606时在文件的 头部的状态^lt中读取文件的可用性状态。
该功能l^根据状态^:的值来进行文件可用性的测试607。
如果测试607的结果是肯定的,则该功能执行在操作系统的文件系统 层次上同时关闭和解锁文件的任务608,并且送回错误609, 4t"^609指 示未获取文件。
如果测试607的结果是否定的,这对应于不可用状态,则该功能在执 行任务610时读取文件的头部中的获取识别码。
该功能^ii行测试611,测试611检查该识别码是否不同于作为输 入提交的识别码。在肯定的回答的情况下,该功能执行在操作系统的文件 系统层次上同时关闭和解锁文件的任务612,并且送回错误613,错误613 表示在输入处提交的获取识别码无效。
在否定的回答的情况下,该功能执行删除文件的头部的状态^lfc中的 获取识别码的任务614,然后执行将可用性状态写入文件的头部中的任务 615。最后的任务616包括在操作系统的文件系统层次上同时关闭、解锁 和删除文件。
该功能在结束651时作为输出送回对数据文件释放的确认以及对数 据文件删除的确认。
在不获取现有lt据文件的情况下简单读取现有数据文件的功能
图8示出用于在不获取现有数据文件的情况下简单读取现有数据文 件所需的任务序列。
该功能采用如上所述基于使用名称而计算出的文件名称作为输750。
第一任务700包括尝试在操作系统的文件系统层次上同时打开和锁 定文件,通过要求打开和锁定文件阻止后面的处理打开和锁定该文件,直 到关闭和解锁该文件。
该功能l^进行测试701以m^文件的打开和锁定如果文件未被打 开和锁定,则测试701的结果是否定的并且该功能进行笫二测试702,第 二测试702验证在尝试700时文件是否存在。在否定的回答的情况下,该 功能送回餘溪703, 703指示文件不存在。
在肯定的回答的情况下,测试704验证尝试700的次数是否超过阈值, 或是否超过了时间期限,在否定的回答的情况下,在延时749之后进M 的尝试700;否则,该功能送回系统餘溪705。
如果测试701的结果是肯定的,则该功能在执行任务706时在文件的 头部的状态^lt中读取文件的可用性状态。
该功能l^根据状态^t的值来进行文件可用性的测试707。
如果测试707的结果是否定的,i^t应于不可用状态,则该功能执行 在操作系统的文件系统层次上同时关闭和解锁文件的任务708。
该功能l^进行测试709,测试709發汪尝试700的次lbl否超过阈 值,或是否超过了时间期限,在否定的回答的情况下,在延时749之后进 行新的尝试700;否则,该功能送回错误710,餘溪710指示文件仍由当 前处理占用。
如果测试707的结果是肯定的,则该功能执行读取文件主体的任务 711, 1^执行处理文件主体的任务712,以便提取文件的可修改内容。 该处理是根据文件的头部的状态^lt来进行的。该处理对应于例如对文件 的可修改内容的解压或解密。最后的任务713包括在操作系统的文件系统 层次上同时关闭和解锁文件。
该功能在结束751时作为输出送回对数据文件的简单读取的确认以 及文件的可修改内容。
其它的功能允许便于管理树形图,尤其是
-读取数据文件的头部的状态^lt,包括文件的可用性状态,
—强制釋,放未由处理^^放的^t据文件,
17—通过树形图的子集列出树形图中包含的数据文件。 客户服务器模式
图9涉及一种特别的和优选的应用场合。图9示出用于通过网络使用 根据本发明的文件管理系统(该模式对应于客户服务器模式)所需的任务 序列。
在该场合中,文件管理系统安装在包括服务器软件801的服务器计算 机800上。服务器计算机可由多个客户计算机802至804访问,所i^户 计算机每个都包括客户软件805至807。客户软件和服务器软件之间的交 互使用已知类型的网^fl"输协议,例如HTTP或优选为HTTPS类型的安 全协议。
在该场合中,本发明^吏用应用协i义808,应用协i义808允^午通过"文 件获取"或"文件释放"类型的指令来调用符合本发明的文件管理系统的 功能。文件以多个子集809至811的形式分布在服务器计算机上,每个子 集对应于根据本发明的称为"表"的树形图。数据文件的使用名称在协议 中表示为"键"。
通过客户端软件在客户计算机中的一台上执行第一任务812。第一任 务812包括调用针对表和键的获取、释放或简单读取的功能。
通itJi艮务器软件在服务器计算机上执行第二任务813。第二任务813 包括执行由客户^L件所请求的功能。
通itJJ艮务器软件在服务器计算机上执行第三任务814。第三任务包括 向客户软件发回所请求的功能的结果。
可选地,系统包括多个服务器,从而允许分配数据的存储负荷和容量。 在该场合中,客户软件805至807包括根据表和键来选择服务器的规则。
服务器软件801还可以包括对执行过的IMt的日志功能,以便允许在 a服务器上增量重构服务器计算机的树形图,而无需在M服务器上对 树形图进行完整的复制。
18
权利要求
1.一种文件管理方法,包括组织数据文件库的第一步骤,所述第一步骤包括创建M层目录的树形图,每个目录包含N个目录,M是大于1的整数,该方法还包括记录所述数据文件的记录步骤,所述记录步骤包括-对待记录的数据文件Fi的识别码应用哈希函数,-根据前一步骤的结果,在具有多个层的所述树形图中,确定目标目录Rdi的路径,-在由所述哈希函数确定的所述目录Rdi中,在由所述数据文件的识别码决定的位置,记录所述数据文件,该方法还包括读取数据文件的读取步骤,所述读取步骤包括-对待读取的数据文件Fj的识别码应用同一哈希函数,-根据前一步骤的结果,在所述树形图中确定目标目录Rcj的路径,-在由所述哈希函数确定的所述目录Rcj中,在由所述数据文件的识别码决定的位置,读取所述数据文件。
2. 根据前述权利要求所述的文件管理方法,其特征在于,所述数据 文件分布在Q个存储单元中,每个存储单元对应于P层目录,每个目录 包含N个目录。
3. 根据前i^5L利要求中任一项所述的文件管理方法,其特征在于,N 等于16,以及所述哈希函fclSHAl函数。
4. 根据前述权利要求中任一项所述的文件管理方法,其特征在于, 每个数据文件都包括头部和主体,所述主体包括文件的可修改内容,所述 主体前面置有头部,该头部包括所述文件在文件管理系统中的状态参数, 所述方法包括通过对一 系列操作的处理来获取目标文件的预先获取步骤, 该获取引起所述头部的^lt中至少一个的状态改变,所述状态改变阻止另 一处理进行获取,直到释放目标文件。
5. 根据前述权利要求中任一项所述的文件管理方法,其特征在于, 所述获取、读取和释放操作由客户软件控制,相应的步骤由服务器软件执 行。
6. 根据前述权利要求中任一项所述的文件管理方法,其特征在于, 包括获取现有数据文件的步骤,该步骤采用基于使用名称而计算出的文件名称作为输入(150),所述步骤包括第一任务(IOO),所述笫一任务(IOO)包括尝试在IMt系统的文件系统层次上同时打开和锁定所述文件,通过要求打开和锁定所述文件阻止后面的处理打开和锁定所述文件,直到关闭和 解锁所述文件。
7. 根据前述权利要求中任一项所述的文件管理方法,其特征在于, 包括获取新的数据文件的步骤,该步骤釆用基于使用名称而计算出的文件 名称作为输入(250),所述第一任务(200)包括尝试在操作系统的文件 系统层次上同时创建、打开和锁定新的文件,通过要求创建、打开和锁定 所述文件阻止后面的处理打开和锁定所述文件,直到关闭和解锁所述文 件。
8. 根据前述权利要求中任一项所述的文件管理方法,其特征在于, 包括获,有数据文件,若所述文件不存在则创建所述文件的步骤,所述 功能釆用基于使用名称而计算出的文件名称作为输入(350 ),所述第 一任 务(300)包括尝试在操作系统的文件系统层次上同时打开和锁定文件, 如果所述文件不存在则创建所述文件,通过要求打开和锁定文件阻止后面 的处理打开和锁定所述文件,直到关闭和解锁所述文件。
9. 根据前述权利要求中任一项所述的文件管理方法,其特征在于, 包括在不修改数据的情况下释放获取到的数据文件的步骤,所述功能采用 如前所述基于使用名称而计算出的文件名称以及在前面获取数据文件时 送回的获取识别码作为输入(450),所述第一任务(400)包括尝试在操 作系统的文件系统层次上同时打开和锁定所述文件,通过要求打开和锁定 文件阻止后面的处理打开和锁定所述文件,直到关闭和解锁所述文件。
10. 根据前^利要求中任一项所述的文件管理方法,其特征在于, 包括在修改数据的情况下释放获取到的数据文件的步骤,所述功能采用如 前所逸基于使用名称而计算出的文件名称、在前面获取数据文件时送回的 获取识别码以及所述文件的可修改内容作为输入(550),所述第一任务(500 )包括尝试在操作系统的文件系统层次上同时打开和锁定所述文件, 通过要求打开和锁定所述文件阻止后面的处理打开和锁定所述文件,直到 关闭和解锁所述文件。
11. 根据前iii5L利要求中任一项所述的文件管理方法,其特征在于, 包括在删除获取到的数据文件的情况下释放所述数据文件的步骤,所述功 能采用如前所述基于使用名称而计算出的文件名称以及在前面获取数据 文件时送回的获取识别码作为输入(650),所述笫一任务(600)包括尝试在操作系统的文件系统层次上同时打开和锁定所述文件,通过要求打开 和锁定所述文件阻止后面的处理打开和锁定所述文件,直到关闭和解锁所 述文件。
12.根据前述权利要求中任一项所述的文件管理方法,其特征在于, 包括在不获取现有数据文件的情况下简单读取所述文件的步骤,所述功能 采用如前所逸基于使用名称而计算出的文件名称作为输入(750 ),所述第 一任务(700)包括尝试在操作系统的文件系统层次上同时打开和锁定所 述文件,通过要求打开和锁定所述文件阻止后面的处理打开和锁定所述文 件,直到关闭和解锁所述文件。
全文摘要
本发明涉及一种文件管理方法,包括组织数据文件库的第一步骤,该第一步骤包括创建M层目录的树形图,每个目录包含N个目录,M是大于1的整数,该方法还包括记录数据文件的记录步骤,该记录步骤包括对待记录的数据文件F<sub>i</sub>的识别码应用哈希函数,根据前一步骤的结果在树形图中确定目标多层目录R<sub>di</sub>的路径,在由所述哈希函数确定的所述目录R<sub>di</sub>中在由数据文件的识别码决定的位置记录数据文件,该方法还包括读取数据文件的读取步骤,该读取步骤包括对待读取的数据文件F<sub>j</sub>的识别码应用同一哈希函数,根据前一步骤的结果在树形图中确定目标目录R<sub>cj</sub>的路径,在由所述哈希函数确定的所述目录R<sub>cj</sub>中在由数据文件的识别码决定的位置读取数据文件。
文档编号G06F17/30GK101669118SQ200880010343
公开日2010年3月10日 申请日期2008年2月12日 优先权日2007年2月13日
发明者亚历克西斯·塔马斯, 阿莫里·格兰贝尔 申请人:Stg交互公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1