一种数据文件的存储和查询方法及设备技术

技术编号:14445391 阅读:97 留言:0更新日期:2017-01-15 11:18
本申请的目的是提供一种数据文件的存储和查询方法及设备,存储时,创建数据文件的元信息,元信息包含数据文件在数据表中的存储位置;将数据文件与该数据文件对应的元信息分别写入数据表中第一列簇和第二列簇的同一行中;根据第二列簇中的元信息建立指向数据文件在数据表中的存储位置的索引;查询时,获取查询条件,并在第二列簇中查找符合查询条件的元信息;根据索引,确定符合查询条件的元信息所对应的数据文件在数据表的第一列簇中的存储位置;由第一列簇中的存储位置获取数据文件。与现有技术相比,存储时数据一致性好,数据库的复杂度和维护难度较低,查询时处理的数据量较小,查询速度快。

【技术实现步骤摘要】

本申请涉及计算机领域,尤其涉及一种数据文件的存储和查询技术。
技术介绍
现有的分布式存储方案中,对于较大的数据文件进行存储时,其存储及维护的复杂度较高。以Hbase(HadoopDatabase,Hadoop数据库)为例,现有的存储方案中,一般将数据文件本身保存于独立的存储区域中,同时在Hbase的数据表(table)中将这些数据文件的地址信息作为某一单元(cell)的值(Value)进行保存。用户在查询这些数据文件时,首先在数据表中通过行键(Rowkey)、列(Column)以及时间戳(Timestamp)来找到特定的单元,然后根据单元内的值表示的地址信息由存储区域中找到数据文件。由于在存储数据时,需要分别向存储区域内写入数据文件以及向数据表中写入数据文件在存储区域中的地址信息,使得数据库的复杂性较高。由于两者的写入过程会存在一定的先后顺序,若在写入过程中,发生失电等状况,可能导致数据文件已经写入存储区域而数据表中还未写入地址信息,因此数据的一致性无法得到保证。申请内容本申请的一个目的是提供一种数据文件的存储和查询方法及设备,以解决现有技术中数据一致性无法保证的问题。为实现上述目的,本申请提供了一种数据文件的存储方法,所述方法包括:创建数据文件的元信息,所述元信息包含所述数据文件在数据表中的存储位置;将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中;根据所述第二列簇中的元信息建立指向所述数据文件在所述数据表中的存储位置的索引。进一步地,将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中之前,包括:对所述元信息进行排序;将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中,包括:根据所述排序将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中。进一步地,所述元信息包括所述数据文件在所述数据表中的行键、列和时间戳。进一步地,包括:依次根据所述元信息的行键、列和时间戳对所述元信息进行排序。进一步地,根据所述第二列簇中的元信息建立指向所述数据文件在所述数据表中的存储位置的索引,包括:根据所述元信息建立指向所述数据文件在所述数据表中的存储位置的倒排索引。进一步地,所述数据文件包括多个子文件;创建数据文件的元信息,包括:创建数据文件的各个子文件对应的元信息;将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中,包括:将包含所述子文件的所述数据文件写入所述数据表的第一列簇中,并将所述子文件对应的元信息写入所述数据表的第二列簇的同一行中。进一步地,将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中之后,还包括:当所述第二列簇的数据量达到设定阈值后,将所述数据表分裂为多个数据域,分别保存于多个服务器中。本申请还提供了一种数据文件的查询方法,用于对采用前述存储方法存储的数据文件进行查询,其中,所述方法包括:获取查询条件,并在所述第二列簇中查找符合所述查询条件的元信息;根据所述索引,确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表的第一列簇中的存储位置;由所述第一列簇中的存储位置获取所述数据文件。进一步地,当所述元信息包括所述数据文件中的行键、列和时间戳,所述查询条件至少包括所述元信息中行键的全部或者部分信息。进一步地,当所述数据文件与该数据文件对应的元信息为分别根据元信息的排序写入所述数据表中时,在所述第二列簇中查找符合所述查询条件的元信息,包括:根据所述排序在所述第二列簇中查找符合所述查询条件的元信息。进一步地,当所述元信息依次根据所述元信息的行键、列和时间戳进行排序时,根据所述排序在所述第二列簇中查找符合所述查询条件的元信息,包括:根据所述元信息的行键、列和时间戳的依次排序在所述第二列簇中查找符合所述查询条件的元信息。进一步地,当所述查询条件至少包含所述元信息中行键的起始部分的信息时,根据所述排序在所述第二列簇中查找符合所述查询条件的元信息,包括:根据所述排序以及所述元信息中行键的起始部分的信息,采用二分查找的方式在所述第二列簇中查找符合所述查询条件的元信息。进一步地,当所述索引为倒排索引时,根据所述索引确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表的第一列簇中的存储位置,包括:根据所述倒排索引确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表的第一列簇中的存储位置。进一步地,当所述数据表包含多个保存于不同服务器中的数据域时,根据所述索引,确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表的第一列簇中的存储位置,包括:根据所述索引,确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表中的数据域的第一列簇中的存储位置。进一步地,当所述数据文件包括多个子文件,所述第一列簇中保存有包含所述子文件的所述数据文件,所述第二列簇的同一行中保存有所述子文件的元信息时,根据所述索引确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表的第一列簇中的存储位置,包括:根据所述索引确定所述符合所述查询条件的元信息所对应的子文件在所述数据表的第一列簇中的存储位置;由所述第一列簇中的存储位置获取所述数据文件,包括:由所述第一列簇中的存储位置获取所述数据文件的子文件。根据本申请的另一方面,还提供了一种数据文件的存储设备,其中,该设备包括:第一装置,用于创建数据文件的元信息,所述元信息包含所述数据文件在数据表中的存储位置;第二装置,用于将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中;第三装置,用于根据所述第二列簇中的元信息建立指向所述数据文件在所述数据表中的存储位置的索引。进一步地,该设备还包括:第四装置,用于在将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中之前,对所述元信息进行排序;所述第二装置,用于根据所述排序将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中。进一步地,所述元信息包括所述数据文件在所述数据表中的行键、列和时间戳。进一步地,所述第一装置,用于依次根据所述元信息的行键、列和时间戳对所述元信息进行排序。进一步地,所述第三装置,用于根据所述元信息建立指向所述数据文件在所述数据表中的存储位置的倒排索引。进一步地,所述数据文件包括多个子文件;所述第一装置,用于创建数据文件的各个子文件对应的元信息;所述第二装置,用于将包含所述子文件的所述数据文件写入所述数据表的第一列簇中,并将所述子文件对应的元信息写入所述数据表的第二列簇的同一行中。进一步地,该设备还包括:第五装置,用于在将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中之后,当所述第二列簇的数据量达到设定阈值后,将所述数据表分裂为多个数据域,分别保存于多个服务器中。本申请还提供了一种数据文件的查询设备,用于对采用前述存储设备存储的数据文件进行查询,其中,包括:第六装置,用于获取查询条件,并在所述第二列簇中查找符合所述查询条件的元信息本文档来自技高网...
一种数据文件的存储和查询方法及设备

【技术保护点】
一种数据文件的存储方法,其中,该方法包括:创建数据文件的元信息,所述元信息包含所述数据文件在数据表中的存储位置;将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中;根据所述第二列簇中的元信息建立指向所述数据文件在所述数据表中的存储位置的索引。

【技术特征摘要】
1.一种数据文件的存储方法,其中,该方法包括:创建数据文件的元信息,所述元信息包含所述数据文件在数据表中的存储位置;将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中;根据所述第二列簇中的元信息建立指向所述数据文件在所述数据表中的存储位置的索引。2.根据权利要求1所述的方法,其中,将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中之前,包括:对所述元信息进行排序;将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中,包括:根据所述排序将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中。3.根据权利要求2所述的方法,其中,所述元信息包括所述数据文件在所述数据表中的行键、列和时间戳。4.根据权利要求3所述的方法,其中,对所述元信息进行排序,包括:依次根据所述元信息的行键、列和时间戳对所述元信息进行排序。5.根据权利要求1至4任一项所述的方法,其中,根据所述第二列簇中的元信息建立指向所述数据文件在所述数据表中的存储位置的索引,包括:根据所述元信息建立指向所述数据文件在所述数据表中的存储位置的倒排索引。6.根据权利要求1至5任一项所述的方法,其中,所述数据文件包括多个子文件;创建数据文件的元信息,包括:创建数据文件的各个子文件对应的元信息;将所述数据文件与该数据文件对应的元信息分别写入所述数据表中
\t第一列簇和第二列簇的同一行中,包括:将包含所述子文件的所述数据文件写入所述数据表的第一列簇中,并将所述子文件对应的元信息写入所述数据表的第二列簇的同一行中。7.根据权利要求1至6任一项所述的方法,其中,将所述数据文件与该数据文件对应的元信息分别写入所述数据表中第一列簇和第二列簇的同一行中之后,还包括:当所述第二列簇的数据量达到设定阈值后,将所述数据表分裂为多个数据域,分别保存于多个服务器中。8.一种数据文件的查询方法,用于对采用权利要求1至7任一项所述方法存储的数据文件进行查询,其中,所述方法包括:获取查询条件,并在所述第二列簇中查找符合所述查询条件的元信息;根据所述索引,确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表的第一列簇中的存储位置;由所述第一列簇中的存储位置获取所述数据文件。9.根据权利要求8所述的方法,其中,当所述元信息包括所述数据文件中的行键、列和时间戳,所述查询条件至少包括所述元信息中行键的全部或者部分信息。10.根据权利要求8或9所述的方法,其中,当所述数据文件与该数据文件对应的元信息为分别根据元信息的排序写入所述数据表中时,在所述第二列簇中查找符合所述查询条件的元信息,包括:根据所述排序在所述第二列簇中查找符合所述查询条件的元信息。11.根据权利要求10所述的方法,其中,当所述元信息依次根据所述元信息的行键、列和时间戳进行排序时,根据所述排序在所述第二列簇中查找符合所述查询条件的元信息,包括:根据所述元信息的行键、列和时间戳的依次排序在所述第二列簇中查找符合所述查询条件的元信息。12.根据权利要求10或11所述的方法,其中,当所述查询条件至少
\t包含所述元信息中行键的起始部分的信息时,根据所述排序在所述第二列簇中查找符合所述查询条件的元信息,包括:根据所述排序以及所述元信息中行键的起始部分的信息,采用二分查找的方式在所述第二列簇中查找符合所述查询条件的元信息。13.根据权利要求8至12中任一项所述的方法,其中,当所述索引为倒排索引时,根据所述索引确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表的第一列簇中的存储位置,包括:根据所述倒排索引确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表的第一列簇中的存储位置。14.根据权利要求8至13中任一项所述的方法,其中,当所述数据表包含多个保存于不同服务器中的数据域时,根据所述索引,确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表的第一列簇中的存储位置,包括:根据所述索引,确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表中的数据域的第一列簇中的存储位置。15.根据权利要求8至14中任一项所述的方法,其中,当所述数据文件包括多个子文件,所述第一列簇中保存有包含所述子文件的所述数据文件,所述第二列簇的同一行中保存有所述子文件的元信息时,根据所述索引确定所述符合所述查询条件的元信息所对应的数据文件在所述数据表的第一列簇中的存储...

【专利技术属性】
技术研发人员:代克刘熙吕侣
申请(专利权)人:星环信息科技上海有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1