一种海量非结构化数据的数据存储方法

文档序号:8412531阅读:371来源:国知局
一种海量非结构化数据的数据存储方法
【技术领域】
[0001]该发明涉及一种海量非结构化数据的数据存储方法,特别涉及一种在分布式存储场景下,支持按照时间间隔(Interval)和散列(Hash)两级划分规则策略进行非结构化数据组织的、按照数据量进行动态调整的海量数据管理模型和方法,并支持在该数据组织基础上进行数据索引创建,以实现更高效的检索速率。属于海量数据存储管理研宄领域。
【背景技术】
[0002]计算机应用的不断发展导致了数据量的急剧增加,由于数据结构化过程受限于人工处理速度,导致了非结构化数据的增长速度远远大于结构化数据。对于目前不断增加以致达到TB、PB级的大规模数据,需要更好的工具或技术来对文件进行组织和管理,高效的数据组织方法能够帮助人们在需要时迅速地从后台大规模数据中获取自己想要的数据。
[0003]文件系统作为本地存储系统的数据组织管理者,它在不同操作系统平台下有不同的组织结构和操作形式。基于多种主机文件系统和分布式文件系统的研宄成果,适用于大规模数据组织的文件系统,例如Cluster File System的Lustre,Google的GFS,以及基于语义的文件系统等在海量数据组织上都提供了良好的性能。
[0004]Cluster File System公司Lustre是面向下一代存储的分布式文件系统。Lustre对于文件管理采取的是数据与元数据分离,元数据集中管理的机制。它采取单一的元数据服务器来对元数据进行存储和管理。这种分离机制可以更好的利用各自存储设备和传输网络的特性,提高系统的性能,有效降低系统的成本。
[0005]由于很多的小文件在实际存储的时候都是通过汇聚的方式形成一个较大的文件存储在磁盘上的,这样做可以避免很多小文件导致的元数据规模变大的问题,也可以有效降低磁盘寻址的时间消耗,并且可以使用缓存技术进行数据预存储,但是,上述场景的技术实现难度主要是数据(数据:单个小文件)来源、数据大小、数据在某个时间段内的总量均不可预期,无法使用一个固定模式设定数据存储规则,即无法保证数据汇集的这个大文件能有效控制在一定范围,因为如果汇聚的文件过大会导致加载困难,太小又没什么用。

【发明内容】

[0006]针对现有技术中存在的技术问题,本发明提出了一种按照时间间隔(Interval)和散列(Hash)两级划分的方式进行非结构化数据存储组织的数据模型,支持先按照不同时间粒度进行数据分区,再对不同时间粒度下的数据分成不同的散列区进行存储,实现非结构化数据的有效组织,并在此基础上支持数据索引的创建,提升了数据检索效率,解决了数据按照热点访问的提取难题,同时支持灵活调整时间粒度和散列区的大小,针对不同的业务场景进行自由变更,结合分布式环境下多节点、每个节点多盘位的现状,减少数据合并和迀移的场景,有效提升了数据访问的并发度和读取效率,进一步降低了系统扩容的复杂度。
[0007]本发明是通过时间间隔进行数据汇总,因此就可以记录一个时间指标,因为数据访问有一个特点,即最近的数据会被经常访问,时间越久,数据访问的频率会越低,所以本发明设定一个热点时间范围,比如最近7天为最热,再往前7天次之,依次类推,然后按照热度缓存数据,比如最近7天的数据全部缓存,再往前7天的数据只缓存索引,该缓存策略可以根据业务场景进行动态调整,提示数据检索效率。
[0008]本发明所采用的技术方案如下:
[0009]一种海量非结构化数据的数据存储方法,其步骤为:
[0010]I)设定一时间间隔T,将数据存储集群划分为多个分区,用于将同一时间间隔T内的记录存储到同一分区内;同时将每一分区划分为η个散列区;
[0011]2)对于每条非结构化记录,提取其产生的时间t以及一个或多个唯一表示该记录的关键?目息key ;
[0012]3)根据每条记录的时间t,确定其要存储到的分区,然后根据该记录的关键信息key计算该记录在该分区中对应的散列区值;
[0013]4)根据步骤3)的计算结果,将属于同一个时间间隔且散列区值相同的记录写入同一个文件F中并统计该文件F的记录数,如果记录数大于设定阈值K,则在当前散列区中创建另一文件进行存储。
[0014]进一步的,对于每一文件,提取其元数据信息并保存到元数据文件中;其中,所述元数据信息包括:文件所在的存储节点信息、文件所在的盘位信息、文件所在的分区信息和散列区信息、文件中的记录数信息、文件的创建时间。
[0015]进一步的,所述散列区信息的表示方法为:n-n’,其中,η’为散列区值。
[0016]进一步的,每一分区的散列区数量值η可调,当η值调整后,η-η’中的散列区值η’保持不变。
[0017]进一步的,根据公式abs (hash(key)) % η = n>计算所述散列区值η ;即取所述关键信息key的哈希值的绝对值,再对绝对值取模操作,得到的余数作为η’。
[0018]进一步的,所述关键信息key为记录所在源文件的文件名。
[0019]进一步的,对每一文件创建一个或多个索引,然后将所建索引文件所在位置标记到该文件上。
[0020]进一步的,设定一热点时间范围,对于属于该热点时间范围内的文件进行缓存,对于该热点时间范围之前的文件只缓存对应的索引文件。
[0021 ] 进一步的,当输入检索请求进行查询时,检索引擎根据检索请求中的时间间隔、散列区信息从所述元数据文件中查询符合输入信息的元数据信息,然后将属于同一个存储节点的文件发到对应的存储节点上并行执行检索请求,返回命中的记录。
[0022]进一步的,每一所述文件具有一生命周期。
[0023]根据本发明的第一个方面,提供了一种支持时间间隔和散列两级划分方法的海量非结构化数据组织模型。该数据模型主要描述如何进行统一数据组织的方法。首先,提取业务场景中的每条非结构化记录(数据)产生的时间或其他有效时间转换为标准Unix时间戳t,同时提取一个或多个可以唯一表示该条记录关键信息作为key,比如如果非结构化数据的文件名字是唯一的,则该处的key就是文件名,如果文件本身是唯一的,则可以使用其hash+size的组合作为key ;第二步,选定初始时间间隔(Interval)为T,散列区数量为η ;第三步,计算每条记录所属的分区信息,不仅包括时间分区,还包括在时间间隔内的哪个散列区中,即分区信息包含两个:时间间隔和对应间隔的hash分区,同一条记录需要计算两次;本发明中时间粒度分区规定为左闭右开,T!<t< = T2,其中1\、1~2与T的模为O,即T2-T1=T,散列区的大小记为abs (hash(key)) % η = n’,即取key的哈希值的绝对值,再对绝对值取模操作,即除以n,得到的余数就是η’(即其所在散列分区的值),此处的哈希函数可以取MD5或其他任意哈希函数,保持一致即可;第四步,将t属于同一个时间区间(T1, T2),且散列区值(η-η’)相同的数据写入同一个文件中F1,匕若不存在则创建,记录数为1,如果已经存在,则F1的记录数加1,并将时间区间信息(T1, T2)和散列区间信息(η-η’ )作为划分规则信息写入该文件元数据中;第五步:当文件F的记录数k超过设定值K后,则新建另一个文件F/。本模型中的文件元数据需要记录节点信息、文件(包括F,F’)所在盘位信息、划分规则信息、F文件中的记录数信息、文件创建时间。
[0024]根据本发明的第二个方面,提供了一种划分规则动态调整机制,在当前划分规则(interval = T,hash = η)下,如果产生了较多的文件或者仅有一个文件,但是记录数远小于合理值K,则需要动态进行划分规则的调整,根据具体的场景,主要包括如下两个调整逻辑:1)调大划分规则粒度:将划分规则粒度调大是将时间区间或散列区间的范围调大,使得新的划分规则下可以容纳更多的数据记录;2)调小划分规则粒度:将划分规则粒度调小是将时间区间或散列区间的范围调小,使得新的划分规则下存储更少的数据记录。不论是调大还是调小划分规则,都是使每个文件中的记录数尽可能接近记录数的合理值K,以保证每个文件的大小在合理范围,便于迀移或容错时的恢复。划分规则的调整步骤如下:
[0025]I)收集初始划分规则产生的文件信息,主要观察文件记录数和文件数量;
[0026]2)当文件记录数过低或相同划分规则下的文件数量较多时,根据需要调整划分规贝IJ,包括调大或调小划分规则;
[0027]3)新数据进入新文件中,新文件标记新的划分规则。
[0028]根据本发明的第三个方面,提供了一种基于动态文件划分规则进行数据索引和检索的方法,其中数据索引流程如下:
[0029]I)当文件写入完成关闭后,系统即对该文件进行索引的创建;
[0030]2)索引创建程序扫描待索引文件,按照设定的索引字段进行信息提取;
[0031]3)将每条记录在原始文件中的偏移量和索引关键字作为索引信息记入索引文件中;
[0032]4)扫描原始文件的所有记录后,将该文件中索引信息的最大值、最小值、总记录数、无重复记录数输出到索引文件的元数据信息中;
[0033]5)更新原始文件信息,即标记该文件的索引文件所在位置,一般情况下,索引文件和原始文件在相同节点的同一个磁盘上。
[0034]在索引基础上的数据查找流程如图4所示,其步骤如下:
[0035]I)检索引擎收到用户的包括划分规则项和索引项的检索请求,此处如果用户的请求中不包括上述存储过程中涉及的划分规则(时间间隔和散列区信息)和索
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1