海量数字资源的免路径维护存储方法

文档序号:6585992阅读:179来源:国知局
专利名称:海量数字资源的免路径维护存储方法
技术领域
本发明涉及海量数字资源的存储(存取)方法,具体地说,涉及一种海量数字资源
的免路径维护存储方法。本发明可直接用于海量数字资源的存储与维护,可用于数字图书馆和数字档案馆中的数字资源的加工,永久保存以及转储与发布。
背景技术
数字资源的存储方法是指对资源本身的数据文件的存取以及对存取路径的维护。
通常情况下,是把某一类数字资源的数据文件存放在一个海量的数据空间中,同时采用相
应的软件管理系统来维护每个数字资源的存放路径,这样的管理系统要管理数以万计的数
字资源,这些数字资源往往要占用以TB计的存储空间,这给文件路径的维护带来了困难,
也降低了文件的存取效率。目前,数字资源的存取方法主要采取以下两种方式 1.采用数据库字段存放数字资源把数据文件存放到数据库表中的BLOB字段中,
同时需要一个字段存放数字资源的标识信息。在存取资源时,通过标识信息的索引可以存
取数字资源文件。如果资源数量太大,例如上百万的条目,会降低数据库的运行效率;如果
单个资源文件比较大,例如上百M字节,也将降低数据库的运行效率。这是因为一般数据库
管理系统都是为满足最佳的数据库表之间的笛卡尔运算效果而设计的,这样的存储方案不
仅是浪费了存储服务器的资源,系统运行效率也比较低,并且一旦数据库出现故障会影响
所有的数字资源的存取。 2.采用分类文件目录方法存放数字资源对数字资源根据某种分类法(或对某种分类法进行改造)把数字资源存放到不同的与分类方法相关联的文件目录中。在这种情况下,存储管理系统需要维护文件标识和路径的对应表,系统根据对应表中提供的文件路径,即可存取数字资源本身。这也是目前比较常用的一种方式,例如国家图书馆的网上读书系统中,数字化图书影象的存储就采用这种方法,国内其它的网上读书(或网上图书馆)系统,例如超星数字图书馆、书生数字图书馆、中国知网CNKI、万方数据等也大都采用这一方案。本方案的优点是可对数字对象按类进行手工维护,例如增加一类图书或删除一类图书;缺点是检索系统必须维护每个对象的路径,存储的目录结构复杂,由于受存取效率的制约(因为目录的寻址算法往往是线性寻址)还必须对某些目录结构进行修正,如果某个资源放错了类别目录,在数据量太大后(例如上百万数据条目是很常见的),对某个目录的修改的风险太大,因为涉及的文件数量太多,以至于这种目录结构一旦生成就不能修改。
在海量数字资源存储环境中,会有数以亿计的数字资源文件,随着数字资源的变化,其存放的路径也会发生变化,对存取路径的维护关系到数字资源的完整性(数字资源的多个数据文件是完整的)和唯一性(避免数字资源文件的重复存放)。例如一般的省级图书馆会有上亿的数字资源,中国国家图书馆将有几十亿的数字资源,为了便于对资源进行资产化管理,需要对资源进行集中化管理,把这些资源存放在几个资源管理系统中,每个资源管理系统都会有几千万以上的数字资源。鉴于上述方法存在的上述问题,开发更好的海量数字资源存储方法对海量数字资源的管理具有重要的意义。

发明内容
本发明针对传统的数字资源存储方法中存在的问题,结合发明人多年来在海量数 字资源存储上的研究和实验成果,提出了一种不需要维护文件资源存放路径的数字资源存 放方法,在保证对数字资源存储完整性和唯一性的前提下,采用散列技术推算文件路径,省 掉了背景技术中的两种方法中必须的文件路径维护,同时也提高了文件的存取效率。
本发明的思路是在海量数字资源管理中,每个数字资源都必须具有一个唯一的 资源对象标识,例如可以利用资源的URI 、D0I 、 ISBN、 ISSN或MARC数据的001字段作为唯一 标识符,利用这个唯一标识符散列出一个路径,数字资源对象的标识符同时追加在这个路 径的末端作为末级目录,数字资源的数据文件或者是数据文件包就存放在这个文件目录的 路径中。这样资源管理系统只要根据数字对象的ID和散列算法即可存取数字资源,而不需 要维护有关的对应定位信息。数字资源的存取地址只是数字资源标识符的一个函数。即 〈数字资源的存取地址 > =函数(数字资源的标识符) 本发明提供的一种海量数字资源的免路径维护存储方法,包括下列步骤
步骤1,为一数字资源分配唯一的标识符; 步骤2,将所述数字资源的标识符的字符串散列到一个无符号的16位或32位整数 D ; 步骤3,将所述整数D换算为十六进制表示的字符串H ; 步骤4,将所述字符串H的值合成一路径,并将所述数字资源的标识符追加到所述 路径的末端作为末级目录,以使由不同标识符得到的目录各不相同;
步骤5,在步骤4得到的目录中存储所述数字资源。 作为优选,所述字符串H的格式可以为PPPP或PPPPPPPP,其中每个P可能的ASCI I
字符值是0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F ;所述步骤4得到的目录为〈根目录>/P/
P/P/P/〈数字资源标识符 > 或〈根目录>/P/P/P/P/P/P〈数字资源标识符 >,或者〈根目录
>\P\P\P\P\〈数字资源标识符 > 或〈根目录>\P\P\P\P\P\P〈数字资源标识符>。 作为优选,所述标识符可以为URI、D01、 ISBN、 ISSN或MARC数据的001字段。 作为优选,所述步骤2中采用的散列算法可以为MD5或SHA算法。 本发明提供的另一种海量数字资源的免路径维护存储方法,包括下列步骤 利用一数字资源的唯一的标识符散列出一路径, 将所述数字资源的标识符追加在所述路径的末端作为末级目录, 将所述数字资源存储在所述目录中。 在海量数字资源存储管理系统中,采用本发明对数字资源进行存储管理可带来如 下有益效果 1.存取路径的维护成本最小存取路径是经过一个固定公式计算而来,不需要对 存取路径进行维护更新,极大地降低了存取路径的维护成本。 2.存取路径简单、效率高在数字资源的存放路径的各级子目录,除末端目录外, 中间的子目录最多是16个(0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F),目录深度为6级或8 级,目录寻址简单,存取效率高。 3.路径容量大、分布均匀对于散列结果是16位整数的情况,其末级目录个数位1048576个,有100万的子目录容量;对于散列结果是32位整数的情况,如果只取前6位子 目录,将有256X1048576个子目录,有2. 5亿个以上的子目录容量。同时由于采用了 MD5或 者SHA等公认的散列技术,致使目录的分布非常均衡。 4.支持存于网络的动态扩充在SAN中,由于整个存储空间只是对应着一个单一 的文件目录而不是具体的物理文件,可以通过虚拟空间技术,逐步增加存储空间,而不需要 改变存储路径。 5.平台实现简单在jaVa、PHP、 PERL、 Python语言中只需要2到3个已有函数的 组合即可完成存储地址的计算,实现成本小。
具体实施例方式
下面对本发明的具体实施方式
作进一步的详细说明。对于所属技术领域的技术人 员而言,从对本发明的详细说明中,本发明的上述和其他目的、特征和优点将显而易见。
在本发明的一个实施例中,函数的计算过程如下 1.执行算列把数字资源标识符的字符串散列(例如采用MD5、SHA或其他算列算 法)到一个无符号的16位或32位整数D (但该整数D不仅现限于16位或32位,也可以为 其它位数); 2.结果转换把整数D换算为十六进制表示的字符串H,其中16位整数的格式为 PPPP, 32位整数的格式是PPPPPPPP ;每个P可能的ASCII字符值是0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F。 3.合成路径根据字符串H的值合成一个实际的目录〈根目录〉/P/P/P/P/〈数字 资源标识符 >,或者是〈根目录VP/P/P/P/P/P〈数字资源标识符 >。对于unix系列操作系 统路径的分割符是'7",对于window系列操作系统是"V'。对于16位整数的转换结果的每 一位都用在目录路径中,对于32位整数的转换结果只取用前6位的16进制表示,但不限于 此,例如也可以取8位16进制字符。例如,假设数字资源的存放根目录是d: \ziyuarA,对于 一个标识符为doi的数字资源,其存放路径就是"d:\ziyuan\0\5\8\d\doi\"的形式。
以下以脚本语言PHP为例说明本发明的一个实施例的存储路径的函数,但应了 解,其仅为示例性质,不应作为对本发明的限制。对一个标识符为id的数字资源对象,计算 其存储路径的函数如下
function getPath($id) { var$path = bin2hex(mhash_keygen_s2k(MHASH_MD5,$id, ",4)); return rooT—PATH. 〃 /〃 .$path
. 〃 /〃 .$path[l]. 〃 /〃 . $path[2]. 〃 /〃 .$path[3] 其中mhash—keygerus2k是一个系统内含的散列函数,实现了散列计算,在此是生 成一个4个字节的整数(16位的无符号整数),bin2hex函数是一个内部函数,把2进制转 换位16进制。 当采用其他编程语言实现时,也会有相应的处理函数,如果没有相应的处理函数 可以利用,也可以用开源的MD5散列函数源码来实现散列计算。
在读取依本发明的方法存储的数字资源时,只需依上面公开的方法算出该数字资
源的唯一的标识符对应的存储目录(路径),即可方便的读取。在此不再赘述。 还应了解,本发明虽然多处使用了"存储"一词,除上下文另有含义外,所属技术领
域的技术人员当可了解,该"存储"一词乃包含有储存和读取的之意。 虽然,本发明已通过以上实施例而清楚说明,然而在不背离本发明精神及其实质 的情况下,所属技术领域的技术人员当可根据本发明作出各种变型和修正,这些相应的变 型和修正都应属于本发明的权利要求的保护范围。
权利要求
一种海量数字资源的免路径维护存储方法,其特征在于,包括下列步骤步骤1,为一数字资源分配唯一的标识符;步骤2,将所述数字资源的标识符的字符串散列到一个无符号的16位或32位整数D;步骤3,将所述整数D换算为十六进制表示的字符串H;步骤4,将所述字符串H的值合成一路径,并将所述数字资源的标识符追加到所述路径的末端作为末级目录,以使由不同标识符得到的目录各不相同;步骤5,在步骤4得到的目录中存储所述数字资源。
2. 根据权利要求l所述的方法,其特征在于,所述字符串H的格式为PPPP或PPPPPPPP,其中每个P可能的ASCII字符值是0, 1,2,3,4,5,6,7,8,9, A, B, C, D, E, F ;所述步骤4得到的目录为〈根目录>/P/P/P/P/〈数字资源标识符 > 或〈根目录VP/P/P/P/P/P〈数字资源标识符 >,或者〈根目录>\P\P\P\P\〈数字资源标识符 > 或〈根目录>\P\P\P\P\P\P〈数字资源标识符>。
3. 根据权利要求l所述的方法,其特征在于,所述标识符为URI、 DOI、 ISBN、 ISSN或MARC数据的001字段。
4. 根据权利要求l所述的方法,其特征在于,所述步骤2中采用的散列算法为MD5或SHA算法。
5. 根据权利要求1至4中任一项所述的方法,其特征在于,计算存储路径的函数如下function getPath($id){var $path = bin2hex(mhash_keygen_s2k(MHASH_MD5,$id, 〃 ,4));return root—PATH. 〃 /〃如th[O]. 〃 /〃 .$path[l]. 〃 /〃 . $path[2]. 〃 /〃 $path[3]. 〃 /〃 . $id ;其中mhaSh_keygen_S2k是一个系统内含的散列函数,用于实现散列计算,在此是生成一个4字节的整数,即16位的无符号整数,bin2hex函数是一个内部函数,把2进制转换位16进制。
6. —种海量数字资源的免路径维护存储方法,其特征在于,包括下列步骤利用 一数字资源的唯一 的标识符散列出 一路径,将所述数字资源的标识符追加在所述路径的末端作为末级目录,将所述数字资源存储在所述目录中。
全文摘要
本发明涉及一种海量数字资源的免路径维护存储方法。本发明提供的海量数字资源的免路径维护存储方法包括下列步骤步骤1,为一数字资源分配唯一的标识符;步骤2,将数字资源的标识符的字符串散列到一个无符号的16位或32位整数D;步骤3,将整数D换算为十六进制表示的字符串H;步骤4,将字符串H的值合成一路径,并将数字资源的标识符追加到该路径的末端作为末级目录,以使由不同标识符得到的目录各不相同;步骤5,在步骤4得到的目录中存储所述数字资源。本发明的方法可直接用于海量数字资源的存储与维护,在提高存取效率同时可降低系统的维护成本。
文档编号G06F17/30GK101727453SQ200810171710
公开日2010年6月9日 申请日期2008年10月23日 优先权日2008年10月23日
发明者孙一钢, 朱先忠, 王安生 申请人:国家图书馆;北京邮电大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1