CN107622123A - 一种面向asm文件系统的文件解析方法 - Google Patents
一种面向asm文件系统的文件解析方法 Download PDFInfo
- Publication number
- CN107622123A CN107622123A CN201710897077.7A CN201710897077A CN107622123A CN 107622123 A CN107622123 A CN 107622123A CN 201710897077 A CN201710897077 A CN 201710897077A CN 107622123 A CN107622123 A CN 107622123A
- Authority
- CN
- China
- Prior art keywords
- asm
- file
- units
- unit
- disk
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种面向ASM文件系统的文件解析方法,通过从ASM实例中获取ASM元数据,进而生成ASM元数据的MAP结构,并运用ASM的条带化规则,将文件偏移量映射到元数据MAP的key,即磁盘组ID、文件ID、AU序列号组成的三元组;再通过key获取value,定位数据在ASM磁盘的具体存储位置;然后按照条带化规则,保证每次读取内容保持在一个AU单元的一个条带内,本发明通过利用Key‑Value结构,建立ASM文件单元与磁盘内存储位置的关联关系,实现直接从ASM文件中读取数据的目的,避免额外的IO操作,提高读取效率。
Description
技术领域
本发明属于数据库技术领域,具体涉及一种面向ASM文件系统的文件解析方法。
背景技术
随着业务的发展,以及对数据库数据实时捕获的强烈要求,很多企业并不满足于数据库本身提供的方案,如通过建触发器捕获变更数据,而是希望通过解析数据库日志的方式实时捕获变更数据,从而最大程度的降低数据库资源消耗。目前很多公司依然使用oracle数据库,作为商业数据库,其redo日志一般是存放在自己的ASM文件系统中,如果不能解决从ASM中读取文件的问题也就意味着无法继续解析redo日志。
ASM全称为Automated Storage Management,俗称自动存储管理系统,是自Oracle10g这个版本后,Oracle推出的新功能。ASM通过ASM CMD工具来管理,它能绕开底层操作系统的存储管理,不受操作系统层参数的影响直接处理磁盘上的数据,效率要比操作系统层高。然而,ASM并非通用的文件系统,操作系统无法访问ASM中存储的文件,只能用于Oracle数据文件、重做日志以及控制文件。
目前访问ASM读取文件的方法有两种,一种是通过调存储过程,由存储过程查询数据库,进而通过数据库获取ASM中的数据,之后把获取的数据回写到操作系统层的可读文件上;另一种是通过RMAN(也称为:恢复管理器),由RMAN从ASM中拷贝整个文件到操作系统后,再从操作系统读取文件。前者调用存储过程的方法的缺陷在于一方面强依赖于数据库,导致额外消耗数据库资源,且频繁调用可能会产生多项未知问题;而且性能差、使用复杂,且需要有额外IO操作参与;后者RMAN方法效率不高,且不支持增量读取数据。
因而,如何跨越存储过程和RMAN的管理,快速且高效地直接从ASM中读取数据是兹待解决的技术问题。
发明内容
为解决现有技术存在的问题,本发明的目的是,提出一种面向ASM文件系统的文件解析方法,最大程度地减少对数据库性能的影响,实现独立于数据库、高效地增量读取ASM文件内容。
本发明通过从ASM实例中获取ASM元数据,进而生成ASM元数据的MAP结构,并运用ASM的条带化规则,将文件偏移量映射到元数据MAP的key即磁盘组ID、文件ID、AU序列号组成的三元组,通过key获取value,定位指定数据在ASM磁盘的具体位置,然后按照条带化规则每次最多读取内容不能超过一个条带,最少读取内容不能小于一个块。
本发明技术方案如下:一种面向ASM文件系统的文件解析方法,其特征在于,通过从ASM实例中获取ASM元数据,进而生成ASM元数据的MAP结构,并运用ASM的条带化规则,将文件偏移量映射到元数据MAP的key,即磁盘组ID、文件ID、AU序列号组成的三元组;再通过key获取value,定位数据在ASM磁盘的具体存储位置;然后按照条带化规则,保证每次读取内容保持在一个AU单元的一个条带内,具体步骤包括:
步骤1:逻辑上将ASM文件均分为各个小单元,每一个小单元有自己的序号,即AU序号,大小为1M;相应地,存储ASM文件的磁盘空间也划分为多个用于数据存储的分配单元,称为AU单元;所述每一个AU单元有唯一身份识别ID号,即AUID,数据存储大小为1M;一个ASM文件的具体数据将分布在多个AU单元内;
多个磁盘组合成磁盘组,每一个磁盘组有唯一的ID号,即磁盘组ID;每一个磁盘有唯一的ID号,即磁盘ID;
针对细粒度文件类型,AU单元内将具体的数据分割成大小相同的数据块,形成多个均等大小的条带;
步骤2:将所有ASM文件的具体数据存储在磁盘组内的各个磁盘中,并记录各个AU单元的存储位置:磁盘组ID、磁盘ID、AUID;读取时以等数量的AU单元为一个读取组,待读取完一组后再继续读取下一组;其中,所述读取组是由多个AU单元组成,在读取一个读取组时,按照AU单元序号顺序读取;
读取组内的AU单元数目根据ASM文件每次计划读取的数据量提前设定,即读取组内的AU单元数=读取量/ASM文件单元的大小;
步骤3:以SQL查询的方式从ASM实例中获取ASM文件元数据,包括文件ID、磁盘组ID、磁盘ID、AU单元序号、AUID;并基于ASM文件元数据构建元数据的MAP结构(key-value结构),其中,key={磁盘组ID,文件ID,AU顺序号},value={磁盘ID,AUID};
步骤4:当有读取ASM文件的需要时,通过定位预读取文件的初始读取位置和预读取位置,获得文件逻辑偏移量;接着,利用文件逻辑偏移量计算获得文件内的位置标识,包括AU序号和AU单元内偏移量;其中,所述AU单元内偏移量,是指一个AU单元内的初始位置和读取位置的偏移距离;
步骤4所述的位置标识计算方式为:文件逻辑偏移量除以“1024K”,取整数作为AU序号;AU单元内偏移量=(文件逻辑偏移量-AU序号值*1024K)%条带空间大小;
步骤5:如果是粗粒度文件,利用已构建的MAP结构,根据key值:ASM文件ID、磁盘组ID和AU序号,获得Value值:磁盘ID和AUID;进而通过磁盘ID定位到具体磁盘,通过AUID定位到该磁盘中的数据读取位置;
针对细粒度文件,ASM文件的数据存储以条带为单位进行存储,一个ASM文件单元的具体数据分布在多个连续的AU单元的条带中;针对粗粒度文件,ASM文件的数据以AU单元为单位进行存储,一个ASM文件单元的具体数据占用一个AU单元;
步骤6:针对不同的文件类型,从数据读取位置执行不同的读取操作:如果是粗粒度文件,按照AU序号,顺序读取每一个AU单元对应的具体磁盘数据;如果是细粒度文件,以读取组为单位,按照读取组内的AU排序,先依次读取每个AU单元的第一个条带对应的磁盘数据,然后再依次读取每个AU单元的第二个条带对应的磁盘数据,按照上述规则直到读取完当前读取组内的所有AU单元的条带,然后转到下一个读取组进行读取。
本发明有益效果:与现有技术相比,(1)本发明通过利用Key-Value结构,建立ASM文件单元与磁盘内存储位置的关联关系,保证能根据ASM文件元数据映射到文件数据在磁盘中的分布位置,实现直接从ASM文件中读取数据的目的,减少对数据库的依赖和不利影响,避免额外的IO操作,提高读取效率;(2)本发明通过将AU单元内的存储数据分割成相同大小的数据块,实现利用指定文件偏移量进而确定磁盘中具体的读取位置,实现ASM文件的增量读取,提高ASM文件读取效率。
附图说明
图1为本发明实施例中直接读取ASM文件的系统结构示意图;
图2为本发明实施例中ASM文件在磁盘组的存储分布示意图;
图3为本发明实施例中基于条带规则的ASM文件的磁盘存储结构图;
图4为本发明实施例中基于条带化规则的细粒度文件读取示意图;
图5为本发明实施例中面向ASM文件系统的文件解析方法流程图;
图6为本发明实施例中基于文件偏移量定位磁盘位置的示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
图1为本发明实施例中直接读取ASM文件的系统结构示意图,该系统架构具体包含三个主体,即元数据管理模块、条带化规则控制模块、数据读取模块;所述元数据管理模块负责获取ASM元数据,提供条带化规则控制模块访问;所述条带化规则控制模块依据条带化规则控制整个文件的读取逻辑,维护读取位置;所述数据读取模块通过获取文件读取的偏移量和读取长度参数,控制模块返回具体的ASM位置给数据读取模块,读取模块从指定位置在条带规则的控制下读取数据。
图2为本发明实施例中ASM文件在磁盘组的存储分布示意图,磁盘组1中包含三个磁盘,即磁盘Disk1、磁盘Disk2和磁盘Disk3,某一个ASM文件内各个单元的具体数据分布在磁盘组1内的三个磁盘中,比如序号为auseq1的ASM文件单元的存储位置为:磁盘组1-Disk1-AU4;序号为auseq2的ASM文件单元的存储位置为:磁盘组1-Disk2-AU4;
不同于粗粒度的ASM文件在磁盘中以AU单元为单位依次存储,细粒度的ASM文件存储以条带为单位,比如在线日志文件,按照各个AU单元在磁盘组中的排序依次存储,参阅图3为本发明实施例中基于条带规则的ASM文件的磁盘存储结构图,假设以6个au单元为一个读取组(au1~au6),ASM文件连续的一段数据分布在au1~au6的第一个条带中;因而,顺序读取ASM文件这段数据时,按照au1~au6的排列顺序,依次读取第一个条带。
图4为本发明实施例中基于条带化规则的细粒度文件读取示意图,本发明实施例中以8个AU单元作为一个读取组,即图中的au0~au7;其中,au0、au3和au6在磁盘disk1中,au1、au4和au7在磁盘disk2中,au2和au5在磁盘disk3中;在读取文件时,先依次读取au0~au7的第一个条带,接着读取au0~au7的第二个条带,每一个条带的读取顺序如图4中的数字标注,直至读取完au0~au7的第八个条带,表明一组数据读取完毕,即可转至下一个读取组(au9~au16)
在本发明实施例中,设定8个au单元为读取组,每个AU单元被划为8个条带,现预读取偏移量为9217024B的ASM文件数据,具体读取步骤参阅图5为本发明实施例中面向ASM文件系统的文件解析方法流程图,包括:
步骤501:逻辑上将ASM文件均分为各个小单元,各个文件单元的大小为1M,为每个文件单元配置序号,比如auseq1、auseq2、auseq3等;相应地,磁盘空间也划分为多个分配单元,即au单元,每一个au单元有唯一的识别ID,比如au1、au2、au3等,大小均为1M;
步骤502:将ASM文件的具体数据存储在磁盘组内的各个磁盘中,记录存储位置;并利用存储位置信息,包括文件ID、磁盘组ID、磁盘ID、AU单元序号、AUID,建立MAP结构:key={磁盘组ID,文件ID,AU顺序号},value={磁盘ID,AUID},
步骤503:获取读取位置的的逻辑文件偏移量,如图6为本发明实施例中基于文件偏移量定位磁盘位置的示意图,具体包括:
(1)定位读取位置分布的au单元组,具体有:
计算获得AU顺序号和AU内部偏移量,计算依据如下:
ASM文件单元=1M=1048576B;
一个读取组的大小=1M*8=8M;
一个条带的大小=1024k/8=128k;
因为9217024B/1048576=8.79M>8M,说明ASM文件已读取到序号为9的ASM文件单元,相应地,说明磁盘中的au1~au8的数据已经读完,剩余的0.79M是分布在au9~au16中;
(2)定位单元组内的au单元,具体有:
根据文件ID、文件所在磁盘组的ID及文件单元序号,定位到读取的磁盘:并根据剩余的828416B(9217024B-8*1024*1024),计算在磁盘中的位置,计算依据如下:
按照基于条带规则的数据读取,由于一个条带的大小=1024k/8=128k=131072B,且828416B/131072B=6.32,说明读取位置位于au单元组内的第7个,即au14;
(3)根据au单元内部偏移量,最终确定读取位置,具体有:
根据828416B-6*131072B=41984B,获得au14内的偏移量为41984B;因而从磁盘中au17内偏移41984B的位置开始读取数据;
步骤504:从au14内偏移41984B处读取89088=128K*1024-41984B后,转到au15内读取131072B=128k*1024;再转到au16内读取131072B;至此,一个读取组读完;
步骤505:转到当前读取组内的第一个au单元,即au9,按照au排序,读取各个au单元内的第二个条带数据,即读取131072B=128k*1024;
步骤506:按照步骤405的读取规则,直至读取完第二个读取组内的au单元的条带;
所属领域的普通技术人员应当理解:以上所述仅为本发明的具体实施例而已,并不用于限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种面向ASM文件系统的文件解析方法,其特征在于,通过从ASM实例中获取ASM元数据,进而生成ASM元数据的MAP结构,并运用ASM的条带化规则,将文件偏移量映射到元数据MAP的key,即磁盘组ID、文件ID、AU序列号组成的三元组;再通过key获取value,定位数据在ASM磁盘的具体存储位置;然后按照条带化规则,保证每次读取内容保持在一个AU单元的一个条带内,具体步骤包括:
步骤1:逻辑上将ASM文件均分为各个小单元,每一个小单元有自己的序号,即AU序号,大小为1M;相应地,存储ASM文件的磁盘空间也划分为多个用于数据存储的分配单元,称为AU单元;所述每一个AU单元有唯一身份识别ID号,即AUID,数据存储大小为1M;一个ASM文件的具体数据将分布在多个AU单元内;
多个磁盘组合成磁盘组,每一个磁盘组有唯一的ID号,即磁盘组ID;每一个磁盘有唯一的ID号,即磁盘ID;
针对细粒度文件类型,AU单元内将具体的数据分割成大小相同的数据块,形成多个均等大小的条带;
步骤2:将所有ASM文件的具体数据存储在磁盘组内的各个磁盘中,并记录各个AU单元的存储位置:磁盘组ID、磁盘ID、AUID;读取时以等数量的AU单元为一个读取组,待读取完一组后再继续读取下一组;其中,所述读取组是由多个AU单元组成,在读取一个读取组时,按照AU单元序号顺序读取;
读取组内的AU单元数目根据ASM文件每次计划读取的数据量提前设定,即读取组内的AU单元数=读取量/ASM文件单元的大小;
步骤3:以SQL查询的方式从ASM实例中获取ASM文件元数据,包括文件ID、磁盘组ID、磁盘ID、AU单元序号、AUID;并基于ASM文件元数据构建元数据的MAP结构(key-value结构),其中,key={磁盘组ID,文件ID,AU顺序号},value={磁盘ID,AUID};
步骤4:当有读取ASM文件的需要时,通过定位预读取文件的初始读取位置和预读取位置,获得文件逻辑偏移量;接着,利用文件逻辑偏移量计算获得文件内的位置标识,包括AU序号和AU单元内偏移量;其中,所述AU单元内偏移量,是指一个AU单元内的初始位置和读取位置的偏移距离;
步骤4所述的位置标识计算方式为:文件逻辑偏移量除以“1024K”,取整数作为AU序号;AU单元内偏移量=(文件逻辑偏移量-AU序号值*1024K)%条带空间大小;
步骤5:如果是粗粒度文件,利用已构建的MAP结构,根据key值:ASM文件ID、磁盘组ID和AU序号,获得Value值:磁盘ID和AUID;进而通过磁盘ID定位到具体磁盘,通过AUID定位到该磁盘中的数据读取位置;
针对细粒度文件,ASM文件的数据存储以条带为单位进行存储,一个ASM文件单元的具体数据分布在多个连续的AU单元的条带中;针对粗粒度文件,ASM文件的数据以AU单元为单位进行存储,一个ASM文件单元的具体数据占用一个AU单元;
步骤6:针对不同的文件类型,从数据读取位置执行不同的读取操作:如果是粗粒度文件,按照AU序号,顺序读取每一个AU单元对应的具体磁盘数据;如果是细粒度文件,以读取组为单位,按照读取组内的AU排序,先依次读取每个AU单元的第一个条带对应的磁盘数据,然后再依次读取每个AU单元的第二个条带对应的磁盘数据,按照上述规则直到读取完当前读取组内的所有AU单元的条带,然后转到下一个读取组进行读取。
2.根据权利要求1所述的一种面向ASM文件系统的文件解析方法,其特征在于,在所述步骤1中,如果是针对细粒度文件类型,AU单元内将具体的数据分割成大小相同的数据块,形成多个均等大小的条带。
3.根据权利要求1所述的一种面向ASM文件系统的文件解析方法,其特征在于,在所述步骤2中,如果是针对细粒度文件的存储,ASM文件的数据存储以条带为单位进行存储,一个ASM文件单元的具体数据分布在多个连续的AU单元的条带中;如果是针对粗粒度文件,ASM文件的数据以AU单元为单位进行存储,一个ASM文件单元的具体数据占用一个AU单元。
4.根据权利要求1所述的一种面向ASM文件系统的文件解析方法,其特征在于,步骤4中所述的位置标识计算方式为:文件逻辑偏移量除以“1024K”,取整数作为AU序号;AU单元内偏移量=(文件逻辑偏移量-AU序号值*1024K)%条带空间大小。
5.根据权利要求1所述的一种面向ASM文件系统的文件解析方法,其特征在于,在所述步骤5中,若针对细粒度文件,位置的确定不能仅依靠MAP结构,具体的位置定位步骤包括:
(1)根据AU序号,判断预读取位置分布的au单元组;
(2)根据ASM文件ID、文件所在磁盘组的ID及文件单元序号,定位到要读取的磁盘,并根据“(文件逻辑偏移量-AU序号值*1024K)/条带空间大小+1”,定位单元组内的au单元;
(3)根据au单元内部偏移量,在已确定的au单元内偏移到读取位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710897077.7A CN107622123B (zh) | 2017-09-28 | 2017-09-28 | 一种面向asm文件系统的文件解析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710897077.7A CN107622123B (zh) | 2017-09-28 | 2017-09-28 | 一种面向asm文件系统的文件解析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107622123A true CN107622123A (zh) | 2018-01-23 |
CN107622123B CN107622123B (zh) | 2020-07-03 |
Family
ID=61091014
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710897077.7A Active CN107622123B (zh) | 2017-09-28 | 2017-09-28 | 一种面向asm文件系统的文件解析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107622123B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515899A (zh) * | 2019-07-31 | 2019-11-29 | 济南浪潮数据技术有限公司 | 文件定位方法及装置 |
CN111803917A (zh) * | 2020-06-30 | 2020-10-23 | 北京金山云网络技术有限公司 | 资源的处理方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050021869A1 (en) * | 2003-06-27 | 2005-01-27 | Aultman Joseph L. | Business enterprise backup and recovery system and method |
CN105677876A (zh) * | 2016-01-12 | 2016-06-15 | 国家电网公司 | 一种基于物理级的数据库日志挖掘方法 |
CN107134287A (zh) * | 2016-02-26 | 2017-09-05 | 四川效率源信息安全技术股份有限公司 | 基于cdfs文件系统的文件提取方法 |
-
2017
- 2017-09-28 CN CN201710897077.7A patent/CN107622123B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050021869A1 (en) * | 2003-06-27 | 2005-01-27 | Aultman Joseph L. | Business enterprise backup and recovery system and method |
CN105677876A (zh) * | 2016-01-12 | 2016-06-15 | 国家电网公司 | 一种基于物理级的数据库日志挖掘方法 |
CN107134287A (zh) * | 2016-02-26 | 2017-09-05 | 四川效率源信息安全技术股份有限公司 | 基于cdfs文件系统的文件提取方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110515899A (zh) * | 2019-07-31 | 2019-11-29 | 济南浪潮数据技术有限公司 | 文件定位方法及装置 |
CN111803917A (zh) * | 2020-06-30 | 2020-10-23 | 北京金山云网络技术有限公司 | 资源的处理方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107622123B (zh) | 2020-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104781810B (zh) | 将行和对象数据库活动跟踪到块级热图中 | |
CN100468402C (zh) | 一种数据存储及查询方法 | |
US20170337229A1 (en) | Spatial indexing for distributed storage using local indexes | |
CN108595664B (zh) | 一种hadoop环境下的农业数据监控方法 | |
CN104317800A (zh) | 一种海量智能用电数据混合存储系统及方法 | |
CN106874320A (zh) | 分布式流式数据处理的方法和装置 | |
CN103559323B (zh) | 数据库实现方法 | |
CN101405728B (zh) | 具有动态加载能力的关系数据库架构 | |
CN106503276A (zh) | 一种用于实时监控系统的时间序列数据库的方法与装置 | |
CN108804602A (zh) | 一种基于spark的分布式空间数据存储计算方法 | |
US20210232561A1 (en) | Data processing method and apparatus, and computer-readable storage medium | |
CN103995899A (zh) | 一种kpi的分析系统 | |
CN102779138B (zh) | 实时数据的硬盘存取方法 | |
CN101777017A (zh) | 一种连续数据保护系统的快速恢复方法 | |
CN1975772B (zh) | 整合多个系统中的信息的方法和装置 | |
CN102810116B (zh) | 一种基于数据库连接的自动路由和负载均衡的方法及系统 | |
CN106354827A (zh) | 一种媒资数据整合方法及系统 | |
CN107679125A (zh) | 一种用于云计算的配置管理数据库系统 | |
CN102682108A (zh) | 一种行列混合的数据库存储方法 | |
CN106383897B (zh) | 数据库容量计算方法和装置 | |
CN102591960A (zh) | 农业经济电子地图数据服务接口方法 | |
CN108829836A (zh) | 异构遥感大数据应用平台 | |
CN105159925B (zh) | 一种数据库集群数据分配方法及系统 | |
CN110888878A (zh) | 一种面向业务的主数据管理方法及系统 | |
CN107622123A (zh) | 一种面向asm文件系统的文件解析方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |