实时数据存储与查询方法_2

文档序号:8472995阅读:来源:国知局
的待存储数据。
[0036]步骤102:将与所述至少一个分布式节点分别对应的一级索引数据存储到数据缓冲系统中;
[0037]由上述分析可知,待存储数据经过一致性哈希分片后得到的一级索引数据分别被划分到相应的至少一个分布式节点中,为了便于后续对所述一级索引数据进行处理,故将其存储在数据缓存系统中,该数据缓存系统位于内存中,是基于内存的键值缓存系统;
[0038]步骤103:通过对与上述至少一个分布式节点分别对应的至少两个一级索引数据进行归并处理,得到与上述至少一个分布式节点对应的至少一个分布式文件块;
[0039]其中,上述归并处理是指对同一分布式节点中至少两个一级索引数据进行归并、排序以及组装的过程。本发明通过对同一个分布式节点处的至少两个一级索引数据进行归并处理操作,形成了与该分布式节点相对应的分布式文件块,为后续对各个分布式文件块内的一级索引数据进行相应处理奠定了基础。
[0040]步骤104:通过对与所述至少一个分布式节点对应的至少一个分布式文件块内的、经过归并处理后的至少两个一级索引数据建立聚簇索引,得到与上述至少一个分布式节点分别对应的二级索引数据;
[0041]具体的,所述二级索引数据为与至少一个分布式节点分别对应的、位于相应至少一个分布式文件块内的、携带有聚簇索引信息的至少两个一级索引数据;
[0042]步骤105:将与所述至少一个分布式节点分别对应的二级索引数据分别写入所述至少一个分布式节点所在的磁盘上。
[0043]当分布式文件块内的至少两个一级索引数据建立聚簇索引后,得到的是二级索引数据,所述二级索引数据位于相应的分布式文件块内,并携带有聚簇索引信息。最后,将所述二级索引数据分别写入与其对应的分布式节点所在的磁盘上,从而完成了实时数据的存储。
[0044]具体来说,本发明提供的实时数据存储方法,首先通过采用一致性哈希分片将待存储数据进行划分,在分布式存储系统的至少一个分布式节点中得到携带有一致性哈希分片索引信息的一级索引数据,随后,对同一个分布式节点中的至少两个一级索引数据进行归并处理,形成与该分布式节点相对应的分布式文件块,最后,对分布式文件块内的一级索引数据建立聚簇索引,在与分布式节点对应的分布式文件块内得到携带有聚簇索引信息的二级索引数据,并将该分布式文件块内的二级索引数据写入到对应分布式节点所在的磁盘上,从而实现了对大数据的存储。
[0045]本发明实施例提供的实时数据存储方法,通过良好的一致性哈希分片对待存储数据进行划分,保证了大数据划分的均衡性,并在分布式节点动态增加和减少的情况下,仍然能够满足大数据划分的均衡性。进一步地,分别对待存储数据进行建立一致性哈希分片索引信息和聚簇索引信息,在很大程度上提高了大数据存储的实时性,为后续查询系统高效率的检索到大数据奠定了基础,满足了大数据高实时性分析处理的要求。
[0046]图2为发明提供的实时数据存储方法实施例二的流程示意图。本发明实施例二是对上述实施例一的补充,如图2所示,在步骤103之前,还包括:
[0047]步骤201:将待存储数据从读进程读出后,对上述待存储数据进行打包处理,并按照一致性哈希分片将上述待存储数据划分到分布式存储系统的至少一个分布式节点中,得到与所述至少一个分布式节点分别对应的一级索引数据;
[0048]其中,上述打包处理是指对待存储数据进行数据字典化、二进制转化处理的过程。大规模的待存储数据源从读进程读出,经过字典化、二进制转化等处理后,按照一致性哈希分片将该待存储数据分片,并相应的划分到分布式存储系统中至少一个分布式节点中,得到与所述至少一个分布式节点分别对应的一级索引数据,所述一级索引数据携带有一致性哈希分片索引信息。
[0049]步骤202:将与所述至少一个分布式节点分别对应的一级索引数据放入数据缓存系统的至少一个数据桶中;
[0050]具体的,上述至少一个数据桶分别用于存储与所述至少一个分布式节点分别对应的一级索引数据。
[0051]上述数据桶的大小是可以设置的,若数据桶太小,会产生过多小文件,影响数据的导入性能,若数据桶太大,即意味着大量的数据暂存在内存中,降低了大数据的实时性。因此,本发明实施例将数据桶中的数据交给数据缓存系统管理,并且,所述数据缓存系统是基于内存的键值缓存系统,将数据桶中的数据写入数据缓存系统中暂存,既不会影响数据缓存系统的性能,又能够保证缓存的数据被查询系统正确、高效的读取。
[0052]步骤203:当上述至少一个数据桶达到预设值的大小后,对所述至少一个数据桶中的至少两个一级索引数据进行归并处理,得到与上述至少一个分布式节点对应的至少一个分布式文件块。
[0053]当数据缓存系统中存满一个设定大小的数据桶后,开始对该数据桶中的至少两个一级索引数据进行归并、排序和组装,得到与所述数据桶对应的分布式文件块。
[0054]本发明实施例提供的实时数据存储方法,通过将经过一致性哈希分片后的待存储数据分别放入内存中的至少一个数据桶中,并将所述数据桶中的数据写入数据缓存系统中暂存,在数据缓存系统中进行积累新数据,所述至少一个数据桶与至少一个分布式节点相对应。当数据桶达到设定的大小后,对该数据桶中的一级索引数据进行归并处理,形成与所述至少一个分布式节点分别对应的一级索引数据。利用本发明实施例的技术方案形成的分布式文件块大大提高了分布式存储系统的实时性能。
[0055]为了便于理解数据存储时各个数据之间的关系,下面简要介绍分布式节点、分布式文件块、一级索引数据、二级索引数据和数据桶之间的联系。
[0056]由上述可知,分布式存储系统包含至少一个高度自治的分布式节点,待存储数据经过一致性哈希分片后划分到分布式存储系统的至少一个分布式节点中,得到了一级索引数据,一级索引数据是与分布式节点对应的、携带有一致性哈希分片索引信息的部分待存储数据;每个分布式节点处都设置了一个数据桶,数据桶用于暂时存放划分到该分布式节点处的一级索引数据;当该数据桶中暂存的一级索引数据达到设定的大小后,对该数据桶中的至少两个一级索引数据进行归并、排序和组装,就得到了与该数据桶对应的分布式文件块;在所述分布式文件块内,对经过归并处理后的一级索引数据建立聚簇索引,得到的就是二级索引数据。优选的,分布式节点、数据桶和分布式文件块之间是一一对应的关系,一级索引数据位于分布式节点和数据桶中,其上携带有一致性哈希分片索引信息,二级索引数据位于分布式文件块内,其携带有聚簇索引信息。
[0057]进一步地,采用实施例二提供的上述实时数据存储方法对待存储数据存储的过程中,需要注意以下几点,具体为:
[0058]第一:当对待存储数据进行打包处理时,将待存储数据进行加锁处理;当待存储数据的打包处理过程结束后,将被加锁的待存储数据解锁;
[0059]第二,当对与至少一个分布式节点分别对应的至少两个一级索引数据进行归并处理时,将与所述至少一个分布式节点分别对应的至少两个一级索引数据进行加锁处理,并当上述归并处理过程结束后,将被加锁的至少两个上述一级索引数据解锁;
[0060]第三:将与至少一个分布式节点分别对应的二级索引数据写入上述至少一个分布式节点所在的磁盘上时,将与所述至少一个分布式节点分别对应的二级索引数据进行加锁处理,并当所述二级索引数据成功写入上述至少一个分布式节点所在的磁盘上之后,若数据的实时性要求小于数据桶的数据内存最小时间戳,则删除数据缓存系统中的与该分布式节点分别对应的所述二级索引数据,将被加锁的所述成功写入该分布式节点中的所述二级索引数据解锁;相应地,更新上述数据桶的内存数据最小时间戳。其中,上述内存数据最小时间戳,用于在内存中表征与上述至少一个分布式节点分别对应的至少两个二级索引数据的实时性要求。
[0061]利用本发明实施例提供的实时数据存储方法,在从对待存储数据的打包处理过程,到与分布式节点对应的至少两个一级索引数据进行的归并处理过程,再到与至少一个分布式节点分别对应的二级索引数据写入所述至少一个分布式节点所在磁盘上的过程中,与其对应的待存储数据、至少两个一级索引数据以及所述二级索引数据都被进行了加锁处理,会暂时不可读,这样能够保证读入数据的一致性。
[0062]进一步地,本发明通过维护全局内存数据最小时间戳,可高效地处理非严格意义的实时分析,当数据的实时性要求小于数据桶的数据内存最小时间戳时,说明内存中并没有用户想要的数据,因此,无需在内存中进行查询,大幅度提高了查询分析的性能。
[0063]值得说明的是,当所述二级索引数据成功写入分布式存储系统的至少一个分布式节点所在磁盘的同时,更新所述数据桶的内存数据最小时间戳,并以此来维护全局数据的内存最小时间戳,所述全局数据的内存最小时间戳是所有数据桶内存数据最小时间戳的最小值。当后续对实时数据进行查询时,查询引擎将根据用户的数据实时性要求与所述数据桶的内存数据最小时间戳的大小关系,决定是否需要访问内存中的数据。
[0064]本发明上述实施例,通过对待储存数据、与分布式节点对应的至少两个一级索引数据以及与至少一个分布式文件块内的二级索引数据进行加锁处理,维护了内存数据和分布式存储系统中数据的一致性,从而确保了查询系统在内存和分布式存储系统中查询到数据相一致。
[0065]进一步地,本发明实施例二提供的实时数据存储方法,二级索引数据为与至少一
当前第2页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1