著录项信息
专利名称 | 一种分布式文件系统及分布式文件系统的构建方法 |
申请号 | CN201410601171.X | 申请日期 | 2014-10-30 |
法律状态 | 授权 | 申报国家 | 暂无 |
公开/公告日 | 2015-02-04 | 公开/公告号 | CN104331453A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 北京思特奇信息技术股份有限公司 | 申请人地址 | 北京市海淀区中关村南大街6号中电信息大厦16层
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京思特奇信息技术股份有限公司 | 当前权利人 | 北京思特奇信息技术股份有限公司 |
发明人 | 张奇伟 |
代理机构 | 北京轻创知识产权代理有限公司 | 代理人 | 杨立 |
摘要
本发明涉及一种分布式文件系统及分布式文件系统的构建方法,包括以下步骤:封装访问函数,定义结构体文件;将磁盘上的所有文件按照预先定义的预定数据块大小拆分为多个预定数据块大小的数据块;将拆分后的每个数据块分别以键值对的形式存储在分布式开源数据库中;根据每个数据块的键头部和文件的文件名建立文件分配表;当外部应用发起文件访问请求时,查询文件分配表,得到查询结果,对分布式开源数据库进行数据块读写同时对分布式开源数据库中的文件分配表进行修改。本发明利用HBASE对小数据块的快速访问,通过自动数据拆分和汇集,实现对任意大小文件均能按照类似传统非分布式文件系统一样快速随机存储和访问。
1.一种分布式文件系统的构建方法,其特征在于,包括以下步骤:
步骤1:封装用于进行文件访问的访问函数,定义结构体文件,所述结构体文件用于存储文件分配表的访问指针;
步骤2:将磁盘上所有文件按照预先定义的预定数据块大小拆分为多个数据块;
步骤3:将拆分后的每个数据块分别以键值对的形式存储在分布式开源数据库中,所述键值对包括键和键值,所述键包括键头部和当前数据块在被拆分的文件中的序号,所述键值用于存储数据块;
步骤4:根据每个数据块的键头部和所有被拆分文件的文件名建立文件分配表,所述文件分配表中还包括被拆分文件的扩展属性;
步骤5:当外部应用发起文件访问请求时,分布式开源数据库根据文件访问请求中携带的文件名,利用定义的结构体文件查询文件分配表,得到查询结果,根据封装的访问函数及查询结果对分布式开源数据库进行数据块读写,同时对分布式开源数据库中的文件分配表进行修改;
所述步骤5中文件访问请求具体为文件创建请求、文件复写请求或者文件删除请求;
当文件访问请求为文件创建请求时,分布式开源数据库根据文件访问请求中携带的文件名,利用定义的结构体文件查询文件分配表,得到查询结果;
如果文件分配表中存在与文件访问请求中的文件名相同的同名文件,则根据扩展属性判断此文件权限是否允许当前用户修改,如果不允许修改,则返回无权限修改的错误提示;
如果允许修改,根据文件分配表中的同名文件的键头部,删除在分布式开源数据库中与该同名文件对应的键值,然后复用此同名文件的键头部,为该键头部重新写入数据块;
如果在文件分配表中未找到同名文件,则新建一个键值对,并将键值对的键值部分存入新的数据块,将文件访问请求中的文件名和键值对的键头部分别对应存入文件分配表,并返回创建文件成功提示。
2.根据权利要求1所述的构建方法,其特征在于:所述键头部包括时间戳、主机名和流水号,所述时间戳为将磁盘上的文件拆分为数据块时所在主机的时间,所述主机名为将磁盘上的文件拆分为数据块时所在主机的主机名,所述流水号用于记录每一个数据块的序号。
3.根据权利要求1所述的构建方法,其特征在于:当文件访问请求为文件复写请求时,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果;
如果文件分配表中存在与文件访问请求中的文件名相同的同名文件,则根据扩展属性判断此文件权限是否允许当前用户修改,如果不允许修改,则返回无权限修改的错误提示;
如果允许修改,根据文件分配表中的同名文件的键头部,在分布式开源数据库中删除与该同名文件对应的键值,然后复用此同名文件的键头部,为该键头部重新写入数据块;
如果在文件分配表中未找到同名文件,则新建一个键值对,将文件访问请求中的文件名和键值对的键头部分别对应存入文件分配表,为键值对的键值部分存入新的数据块,数据块一开始写入时直接写入内存中,当内存写入数据达到预定阀值或外部的应用程序主动调用强制刷新命令要求刷新数据到磁盘时,将内存中缓存数据的当前数据偏移量拼接到键头部,将当前数据偏移量作为键值对中的键及作为键值的内存中的数据块一通写入分布式开源数据库,写入成功后,返回复写函数调用成功提示。
4.根据权利要求1所述的构建方法,其特征在于:当文件访问请求为文件删除请求时,外部的应用程序调用删除函数,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果;
如果在文件分配表中未找到同名文件,则返回删除函数调用失败提示;
如果在文件分配表中找到同名文件,从文件分配表中获取与文件删除请求携带的文件名对应的键头部和扩展属性,根据扩展属性判断此文件的权限是否允许当前用户执行删除操作,如果允许,利用获取的键头部从分布式开源数据库中删除相对应的键值,然后从文件分配表中删除与键头部对应的文件名和扩展属性,全部删除完毕后,返回删除函数调用成功。
5.一种分布式文件系统,其特征在于:包括封装定义模块(1),拆分模块(2),存储模块(3),建立模块(4)和查询修改模块(5);
所述封装定义模块(1),用于封装进行文件访问的访问函数,定义存储文件分配表的访问指针的结构体文件;
所述拆分模块(2),用于将磁盘上所有文件按照预先定义的预定数据块大小拆分为多个数据块;
所述存储模块(3),用于将拆分后的每个数据块分别以键值对的形式存储在分布式开源数据库中,所述键值对包括键和键值,所述键包括键头部和当前数据块在被拆分的文件中的序号,所述键值用于存储数据块;
所述建立模块(4),用于根据每个数据块的键头部和所有被拆分文件的文件名建立文件分配表,所述文件分配表中还包括被拆分文件的扩展属性;
所述查询修改模块(5),用于当外部应用向分布式开源数据库发起文件访问请求时,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果,根据封装的访问函数及查询结果对分布式开源数据库进行数据块读写,同时对分布式开源数据库中的文件分配表进行修改;
所述查询修改模块(5)中文件访问请求具体为文件创建请求、文件复写请求或者文件删除请求;
所述查询修改模块(5),用于当文件访问请求为文件创建请求时,分布式开源数据库根据文件访问请求中携带的文件名,利用定义的结构体文件查询文件分配表,得到查询结果;
如果文件分配表中存在与文件访问请求中的文件名相同的同名文件,则根据扩展属性判断此文件权限是否允许当前用户修改,如果不允许修改,则返回无权限修改的错误提示;
如果允许修改,根据文件分配表中的同名文件的键头部,删除在分布式开源数据库中与该同名文件对应的键值,然后复用此同名文件的键头部,为该键头部重新写入数据块;
如果在文件分配表中未找到同名文件,则新建一个键值对,并将键值对的键值部分存入新的数据块,将文件访问请求中的文件名和键值对的键头部分别对应存入文件分配表,并返回创建文件成功提示。
6.根据权利要求5所述的分布式文件系统,其特征在于:所述存储模块(3)存储的键值对的键头部包括时间戳、主机名和流水号,所述时间戳为将磁盘上的文件拆分为数据块时所在主机的时间,所述主机名为将磁盘上的文件拆分为数据块时所在主机的主机名,所述流水号用于记录每一个数据块的序号。
一种分布式文件系统及分布式文件系统的构建方法\n技术领域\n[0001] 本发明涉及一种分布式文件系统及分布式文件系统的构建方法。\n背景技术\n[0002] Hadoop是一个分布式系统基础架构,由Apache基金会开发。Hadoop实现了一个分布式文件系统(HDFS)和一种分布式计算框架(MapReduce)。\n[0003] HDFS是Hadoop Distributed File System的简称,它是一个分布式文件系统。\nHDFS有着高容错性的特点,它提供高吞吐量方法来访问应用程序的数据,适合那些有着超大数据集的应用程序,但对数据随机访问和小数据集的读写有着较大的效率瓶颈。\n[0004] HBase是一个分布式的、面向列的开源数据库,它不是关系型的数据库,数据采用Key-Value方式存储,是一个适合于非结构化数据存储的数据库。目前通用分布式文件系统对小文件(小于64MB)和普通文件随机快速访问具有处理效率低的问题。\n发明内容\n[0005] 本发明所要解决的技术问题是提供一种对小文件和普通文件随机快速访问处理效率高的分布式文件系统及分布式文件系统的构建方法。\n[0006] 本发明解决上述技术问题的技术方案如下:一种分布式文件系统的构建方法,包括以下步骤:\n[0007] 步骤1:封装用于进行文件访问的访问函数,定义结构体文件,所述结构体文件用于存储文件分配表的访问指针;\n[0008] 步骤2:将磁盘上的所有文件按照预先定义的预定数据块大小拆分为多个数据块;\n[0009] 步骤3:将拆分后的每个数据块分别以键值对的形式存储在分布式开源数据库中,所述键值对包括键和键值,所述键包括键头部和当前数据块在被拆分的文件中的序号,所述键值用于存储数据块;\n[0010] 步骤4:根据每个数据块的键头部和所有被拆分文件的文件名建立文件分配表,所述文件分配表中还包括被拆分文件的扩展属性;\n[0011] 步骤5:当外部应用向分布式开源数据库发起文件访问请求时,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果,根据封装的访问函数及查询结果对分布式开源数据库进行数据块读写和/或对分布式开源数据库中的文件分配表进行修改。\n[0012] 本发明的有益效果是:本发明利用HBASE对小数据块(HBASE的数据记录)的快速查询访问,通过自动数据拆分和汇集(Map-Reduce),实现对任意大小文件均能按照类似本地文件系统一样快速随机存储和访问,解决了目前通用分布式文件系统对小文件(小于64MB)和普通文件随机快速访问处理效率低的问题。\n[0013] 在上述技术方案的基础上,本发明还可以做如下改进。\n[0014] 进一步,所述键头部包括时间戳、主机名和流水号,所述时间戳为将磁盘上的文件拆分为数据块时所在主机的时间,所述主机名为将磁盘上的文件拆分为数据块时所在主机的主机名,所述流水号用于记录每一个数据块的序号。\n[0015] 进一步,所述步骤5中文件访问请求具体为文件创建请求、文件复写请求或者文件删除请求。\n[0016] 进一步,当文件访问请求为文件创建请求时,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果;\n[0017] 如果文件分配表中存在与文件访问请求中的文件名相同的同名文件,则根据扩展属性判断此文件权限是否允许当前用户修改,如果不允许修改,则返回无权限修改的错误提示;如果允许修改,根据文件分配表中的同名文件的键头部,删除在分布式开源数据库中与该同名文件对应的键值,然后复用此同名文件的键头部,为该键头部重新写入数据块;\n[0018] 如果在文件分配表中未找到同名文件,则新建一个键值对,并将键值对的键值部分存入新的数据块,将文件访问请求中的文件名和键值对的键头部分别对应存入文件分配表,并返回创建文件成功提示。\n[0019] 进一步,当文件访问请求为文件复写请求时,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果;\n[0020] 如果文件分配表中存在与文件访问请求中的文件名相同的同名文件,则根据扩展属性判断此文件权限是否允许当前用户修改,如果不允许修改,则返回无权限修改的错误提示;如果允许修改,根据文件分配表中的同名文件的键头部,在分布式开源数据库中删除与该同名文件对应的键值,然后复用此同名文件的键头部,为该键头部重新写入数据块;\n[0021] 如果在文件分配表中未找到同名文件,则新建一个键值对,将文件访问请求中的文件名和键值对的键头部分别对应存入文件分配表,为键值对的键值部分存入新的数据块,数据块一开始写入时直接写入内存中,当内存写入数据达到预定阀值或外部的应用程序主动调用强制刷新命令要求刷新数据到磁盘时,将内存中缓存数据的当前数据偏移量拼接到键头部,将当前数据偏移量作为键值对中的键及作为键值的内存中的数据块一通写入分布式开源数据库,写入成功后,返回复写函数调用成功提示。\n[0022] 进一步,当文件访问请求为文件删除请求时,外部的应用程序调用删除函数,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果;\n[0023] 如果在文件分配表中未找到同名文件,则返回删除函数调用失败提示;\n[0024] 如果在文件分配表中找到同名文件,从文件分配表中获取与文件删除请求携带的文件名对应的键头部和扩展属性,根据扩展属性判断此文件的权限是否允许当前用户执行删除操作,如果允许,利用获取的键头部从分布式开源数据库中删除相对应的键值,然后从文件分配表中删除与键头部对应的文件名和扩展属性,全部删除完毕后,返回删除函数调用成功。\n[0025] 进一步,一种分布式文件系统,包括封装定义模块,拆分模块,存储模块,建立模块和查询修改模块;\n[0026] 所述封装定义模块,用于封装进行文件访问的访问函数,定义存储文件分配表的访问指针的结构体文件;\n[0027] 所述拆分模块,用于将磁盘上的所有文件按照预先定义的预定数据块大小拆分为多个数据块;\n[0028] 所述存储模块,用于将拆分后的每个数据块分别以键值对的形式存储在分布式开源数据库中,所述键值对包括键和键值,所述键包括键头部和当前数据块在被拆分的文件中的序号,所述键值用于存储数据块;\n[0029] 所述建立模块,用于根据每个数据块的键头部和所有被拆分文件的文件名建立文件分配表,所述文件分配表中还包括被拆分文件的扩展属性;\n[0030] 所述查询修改模块,用于当外部应用向分布式开源数据库发起文件访问请求时,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果,根据封装的访问函数及查询结果对分布式开源数据库进行数据块读写和/或对分布式开源数据库中的文件分配表进行修改。\n[0031] 进一步,所述存储模块存储的键值对的键头部包括时间戳、主机名和流水号,所述时间戳为将磁盘上的文件拆分为数据块时所在主机的时间,所述主机名为将磁盘上的文件拆分为数据块时所在主机的主机名,所述流水号用于记录每一个数据块的序号。\n[0032] 进一步,所述查询修改模块中文件访问请求具体为文件创建请求、文件复写请求或者文件删除请求。\n附图说明\n[0033] 图1为本发明方法步骤流程图;\n[0034] 图2为本发明系统结构图。\n[0035] 附图中,各标号所代表的部件列表如下:\n[0036] 1、封装定义模块,2、拆分模块,3、存储模块,4、建立模块,5、查询修改模块。\n具体实施方式\n[0037] 以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。\n[0038] 如图1所示,为本发明方法步骤流程图;图2为本发明系统结构图。\n[0039] 实施例1\n[0040] 一种分布式文件系统的构建方法,包括以下步骤:\n[0041] 步骤1:封装用于进行文件访问的访问函数,定义结构体文件,所述结构体文件用于存储文件分配表的访问指针;\n[0042] 系统封装标准C的文件访问常用函数,如打开文件(fopen)、关闭文件(fclose)、写文件(fwrite)、读文件(fread)、文件偏移(fseek)、文件位置重置(rewind)、文件改名(rename)等,对函数的标准声明不变,重新定义结构体FILE,在此结构体中存储HBASE默认表的访问句柄;\n[0043] 步骤2:将磁盘上的所有文件按照预先定义的预定数据块大小拆分为多个预定数据块大小的数据块;\n[0044] 步骤3:将拆分后的每个数据块分别以键值对的形式存储在分布式开源数据库中,所述键值对包括键和键值,所述键包括键头部和当前数据块在被拆分的文件中的序号,所述键值用于存储数据块;\n[0045] 步骤4:根据每个数据块的键头部和所有被拆分文件的文件名建立文件分配表,所述文件分配表中还包括被拆分文件的扩展属性;\n[0046] 步骤5:当外部应用向分布式开源数据库发起文件访问请求时,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果,根据封装的访问函数及查询结果对分布式开源数据库进行数据块读写同时对分布式开源数据库中的文件分配表进行修改。\n[0047]\n字段名 字段类型 描述\nFileName Char(128) 文件名\nKeyPre Char(128) Key头部\nAddAttr Char(256) 扩展属性\n[0048] 表1.文件分配表(FAT)\n[0049] 分布式文件系统上的文件在被访问时,分布式文件系统会先根据请求的文件名从文件分配表中得到键头部,然后判断扩展属性允许访问后,从分布式开源数据库中根据键头部获取对应的数据片,并将数据片内容提供给外部应用。\n[0050] 所述键头部包括时间戳、主机名和流水号,所述时间戳为将磁盘上的文件拆分为数据块时所在主机的时间,所述主机名为将磁盘上的文件拆分为数据块时所在主机的主机名,所述流水号用于记录每一个数据块的序号。\n[0051] 流水号为从全局系统中获取的长度为8的数字,此数字在同一时刻不会重复,并且主机重启也不会造成此数字的复位。键头部在文件创建的同时生成,并唯一标识此文件,直到文件被删除,此key都不会发生变更;\n[0052] 所述步骤5中文件访问请求具体为文件创建请求、文件复写请求或者文件删除请求。\n[0053] 当文件访问请求为文件创建请求时,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果;\n[0054] 如果文件分配表中存在与文件访问请求中的文件名相同的同名文件,则根据扩展属性判断此文件权限是否允许当前用户修改,如果不允许修改,则返回无权限修改的错误提示;如果允许修改,根据文件分配表中的同名文件的键头部,删除在分布式开源数据库中与该同名文件对应的键值,然后复用此同名文件的键头部,为该键头部重新写入数据块;\n[0055] 如果在文件分配表中未找到同名文件,则新建一个键值对,并将键值对的键值部分存入新的数据块,将文件访问请求中的文件名和键值对的键头部分别对应存入文件分配表,并返回创建文件成功提示。\n[0056] 当文件访问请求为文件复写请求时,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果;\n[0057] 如果文件分配表中存在与文件访问请求中的文件名相同的同名文件,则根据扩展属性判断此文件权限是否允许当前用户修改,如果不允许修改,则返回无权限修改的错误提示;如果允许修改,根据文件分配表中的同名文件的键头部,在分布式开源数据库中删除与该同名文件对应的键值,然后复用此同名文件的键头部,为该键头部重新写入数据块;\n[0058] 如果在文件分配表中未找到同名文件,则新建一个键值对,将文件访问请求中的文件名和键值对的键头部分别对应存入文件分配表,为键值对的键值部分存入新的数据块,数据块一开始写入时直接写入内存中,当内存写入数据达到预定阀值或外部的应用程序主动调用强制刷新命令要求刷新数据到磁盘时,将内存中缓存数据的当前数据偏移量拼接到键头部,将当前数据偏移量作为键值对中的键及作为键值的内存中的数据块一通写入分布式开源数据库,写入成功后,返回复写函数调用成功提示。\n[0059] 当文件访问请求为文件删除请求时,外部的应用程序调用删除函数,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果;\n[0060] 如果在文件分配表中未找到同名文件,则返回删除函数调用失败提示;\n[0061] 如果在文件分配表中找到同名文件,从文件分配表中获取与文件删除请求携带的文件名对应的键头部和扩展属性,根据扩展属性判断此文件的权限是否允许当前用户执行删除操作,如果允许,利用获取的键头部从分布式开源数据库中删除相对应的键值,然后从文件分配表中删除与键头部对应的文件名和扩展属性,全部删除完毕后,返回删除函数调用成功。\n[0062] 一种分布式文件系统,包括封装定义模块1,拆分模块2,存储模块3,建立模块4和查询修改模块;\n[0063] 所述封装定义模块1,用于封装进行文件访问的访问函数,定义存储文件分配表的访问指针的结构体文件;\n[0064] 所述拆分模块2,用于将磁盘上的所有文件按照预先定义的预定数据块大小拆分为多个预定数据块大小的数据块;\n[0065] 所述存储模块3,用于将拆分后的每个数据块分别以键值对的形式存储在分布式开源数据库中,所述键值对包括键和键值,所述键包括键头部和当前数据块在被拆分的文件中的序号,所述键值用于存储数据块;\n[0066] 所述建立模块4,用于根据每个数据块的键头部和所有被拆分文件的文件名建立文件分配表,所述文件分配表中还包括被拆分文件的扩展属性;\n[0067] 所述查询修改模块5,用于当外部应用向分布式开源数据库发起文件访问请求时,分布式开源数据库根据文件访问请求中携带的文件名利用定义的结构体文件查询文件分配表,得到查询结果,根据封装的访问函数及查询结果对分布式开源数据库进行数据块读写和/或对分布式开源数据库中的文件分配表进行修改。\n[0068] 所述存储模块3存储的键值对的键头部包括时间戳、主机名和流水号,所述时间戳为将磁盘上的文件拆分为数据块时所在主机的时间,所述主机名为将磁盘上的文件拆分为数据块时所在主机的主机名,所述流水号用于记录每一个数据块的序号。\n[0069] 所述查询修改模块5中文件访问请求具体为文件创建请求、文件复写请求或者文件删除请求。\n[0070] 本发明针对现有的Hadoop架构下,HDFS和HBASE平台特点,通过本发明所描述的分布式虚拟文件系统(iDVFS),实现一种适合任何尺寸文件快速随机访问的文件系统。\n[0071] 首先,搭建HDFS,并在其上搭建HBASE如图一(为描述方便,图中只画出对应平台的存储节点);\n[0072] 然后,基于HBASE接口,搭建本发明软件——分布式虚拟文件系统(iDVFS)。此文件系统的主要作用在于将一个逻辑文件分解成若干等长的小块,然后以记录的方式存放在HBASE中。当外部应用发起对虚拟文件的读写访问时,iDVFS会将对文件的读写请求分解成HBASE的查询,并将查询结果返回给应用程序;\n[0073] 本发明的主要思路在于:有效利用了HBASE对小数据块(HBASE的数据记录)的快速查询访问,并通过iDVFS的自动数据拆分和汇集(Map-Reduce),实现对任意大小文件均能按照类似本地文件系统一样快速随机访问。\n[0074] 在Hadoop架构下,利用Hadoop提供的Map-Reduce方法将文件读取、写入、删除、随机定位等文件访问过程,分解成对HBASE平台的数据记录的查询、插入、删除、更新访问。\n[0075] 分布式文件系统上的文件,被自动分为固定大小的数据块,以记录的方式存储在HBASE上。\n[0076] HBASE上记录和分布式文件系统中文件的对应关系,由本专利要求的分布式文件系统管理。\n[0077] 本发明的分布式文件系统构建于HBASE之上,文件虚拟化存在于此文件系统内,文件数据实体存放于HBASE,虚拟文件与文件数据间的对应关系在文件分配表(FAT)中管理。\n[0078] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2017-10-17
- 2015-03-11
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201410601171.X
申请日: 2014.10.30
- 2015-02-04
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2012-08-22
|
2012-02-23
| | |
2
| |
2012-03-14
|
2010-08-24
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |