CN104794162B - 实时数据存储与查询方法 - Google Patents
实时数据存储与查询方法 Download PDFInfo
- Publication number
- CN104794162B CN104794162B CN201510133517.2A CN201510133517A CN104794162B CN 104794162 B CN104794162 B CN 104794162B CN 201510133517 A CN201510133517 A CN 201510133517A CN 104794162 B CN104794162 B CN 104794162B
- Authority
- CN
- China
- Prior art keywords
- data
- distributed
- distributed node
- index
- node
- 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.)
- Expired - Fee Related
Links
Abstract
本发明提供一种实时数据存储与查询方法,存储时,通过采用一致性哈希分片将待存储数据进行划分,在分布式存储系统的至少一个分布式节点中得到携带有一致性哈希分片索引信息的一级索引数据,对同一个分布式节点中的至少两个一级索引数据进行归并处理,形成与该分布式节点相对应的分布式文件块,对分布式文件块内的一级索引数据建立聚簇索引,在与分布式节点对应的分布式文件块内得到携带有聚簇索引信息的二级索引数据,并将该分布式文件块内的二级索引数据写入到对应分布式节点所在的磁盘上,查询时,通过对待查询数据存储时建立的一致性哈希分片索引信息和在分布式文件块内建立的聚簇索引信息,能够准确、快速的定位到需要的结果。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种实时数据存储与查询方法。
背景技术
近几年来,随着计算机和信息技术的迅猛发展和普及应用,行业应用系统的规模迅速扩大,行业应用所产生的数据呈爆炸性增长。由于数据的价值与实时性成正相关,即越新的数据越具有价值,因此,如何有效的存储、分析、处理日益增加的大规模实时数据是现在研究的一个热点。
目前,传统方法主要采用数据库和数据仓库或者基于Hadoop/Spark的分布式文件系统的方式来完成大规模实时数据的存储和读取,进而实现对实时数据的分析和处理。具体的,采用数据库和数据仓库进行存储和读取实时数据的方式,主要是通过传统数据库构建B+树或者建立位图索引完成,但是这种方法在存储实时数据时占据的数据库内存空间比较大,并且在对实时数据查询时耗费的时间比较长,难以满足大规模实时数据存储和查询的性能要求。而基于Hadoop/Spark的分布式文件系统进行数据存储的方法则是直接堆放待存储数据,并且直接将堆放形成的数据块存储到节点中去,这样存储的数据缺乏索引的支持,在数据查询时,并不能快速查到需要的结果,难以满足实时性的要求。
因此,传统数据库和数据仓库以及基于Hadoop/Spark的分布式文件系统在进行实时数据存储与查询时都存在不足,都无法满足高实时性分析处理的要求。
发明内容
本发明提供了一种实时数据存储与查询方法,通过对待存储数据建立一致性哈希分片索引信息和聚簇索引信息,大大提高了大数据存储和查询的实时性,满足了大数据高实时性分析处理的要求。
本发明提供的一种实时数据存储方法,包括:
通过一致性哈希分片将待存储数据划分到分布式存储系统的至少一个分布式节点中,得到与所述至少一个分布式节点分别对应的一级索引数据;其中,所述一级索引数据为被划分到所述至少一个分布式节点中的、携带有一致性哈希分片索引信息的部分待存储数据;
将与所述至少一个分布式节点分别对应的所述一级索引数据存储到数据缓存系统中;所述数据缓存系统位于内存中;
通过对与所述至少一个分布式节点分别对应的至少两个所述一级索引数据进行归并处理,得到与所述至少一个分布式节点对应的至少一个分布式文件块;所述归并处理是指对同一分布式节点中至少两个所述一级索引数据进行归并、排序以及组装的过程;
通过对与所述至少一个分布式节点对应的至少一个分布式文件块内的、经过归并处理后的至少两个所述一级索引数据建立聚簇索引,得到与所述至少一个分布式节点分别对应的二级索引数据;其中,所述二级索引数据为与所述至少一个分布式节点分别对应的、位于所述至少一个分布式文件块内的、携带有聚簇索引信息的至少两个所述一级索引数据;
将与所述至少一个分布式节点分别对应的所述二级索引数据分别写入所述至少一个分布式节点所在的磁盘上。
本发明提供的实时数据存储方法,通过良好的一致性哈希分片对待存储数据进行划分,保证了大数据划分的均衡性,并在分布式节点动态增加和减少的情况下,仍然能够保证大数据划分的均衡性。进一步地,分别对待存储数据进行建立一致性哈希分片索引信息和聚簇索引信息,在很大程度上提高了大数据存储的实时性,为后续查询系统高效率的检索到大数据奠定了基础,满足了大数据高实时性分析处理的要求。
本发明提供的一种实时数据查询方法,包括:
通过对查询语句进行解析,得到待查询数据的查询参数;
根据所述待查询数据分片时建立的一致性哈希分片索引信息定位到所述待查询数据对应的至少两个一级索引数据所属的至少一个分布式节点所在的磁盘,以及所述至少一个分布式节点所对应的至少一个分布式文件块;其中,所述一级索引数据为被划分到所述至少一个分布式节点中的、携带有所述一致性哈希分片索引信息的部分待查询数据;
在所述至少一个分布式文件块内,根据所述至少一个分布式文件块内的至少两个所述一级索引数据存储时建立的聚簇索引信息定位到与所述至少一个分布式节点分别对应的、所述至少一个分布式文件块内的至少两个二级索引数据所处的位置;与所述至少一个分布式节点分别对应的、所述至少一个分布式文件块内的至少两个所述二级索引数据为位于所述至少一个分布式文件块内的、携带有所述聚簇索引信息的至少两个所述一级索引数据;
根据所述查询参数,对与所述至少一个分布式节点分别对应的、所述至少一个分布式文件块内的至少两个所述二级索引数据进行过滤、归并,得到待查询磁盘数据。
本发明提供的实时数据查询方法,通过待查询数据存储时建立的一致性哈希分片索引信息和在分布式文件块内建立的聚簇索引信息,能够准确、快速的定位到需要的结果,并且上述索引算法简单轻便,索引组织结构新颖高效,极大地提高了实时数据的查询性能。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为发明提供的实时数据存储方法实施例一的流程示意图;
图2为发明提供的实时数据存储方法实施例二的流程示意图;
图3为发明分布式文件块内聚簇索引信息的结构示意图;
图4为发明提供的实时数据查询方法实施例一的流程示意图;
图5为发明提供的实时数据查询方法实施例二的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
随着互联网信息技术的飞速发展和普及应用,行业应用系统的规模迅速扩大,出现了无法使用传统的软件技术和工具在一定时间内完成获取、管理和处理的数据集,具备该特征的数据集统称为大数据。近年来,大数据行业应用需求日益增长,必须使用大数据并行计算技术才能实现对大数据的处理,大数据技术将逐步渗透到越来越多的研究和应用领域。
针对背景技术中提到的采用数据库和数据仓库或者基于Hadoop/Spark的分布式文件系统对实时数据进行存储和查询的方法都无法满足高实时性分析处理要求的问题,本发明提供了一种实时数据存储与查询方法,克服了现有实时数据存储和查询方法的不足,能够满足大数据的实时性性能要求。
本发明提供的实时数据存储和查询方法,基于分布式存储系统实现,数据存储时,首先将待存储数据按照一致性哈希算法分片后分到分布式存储系统的至少一个分布式节点中,产生的一级索引数据存储在各个分布式节点中,随后,对每个分布式节点中的一级索引数据进行归并处理,形成对应的分布式文件块,最后,在分布式文件块内对一级索引数据建立聚簇索引,生成二级索引数据。数据查询时,根据哈希算法能够直接定位到待查询数据对应的分布式节点和分布式文件块,在分布式文件块内,根据存储时建立的聚簇索引信息可快速定位到需要的结果。
下面,首先简要介绍分布式存储系统和哈希算法的概念。
分布式存储系统是建立在网络上的软件系统,其具有高度的内聚性和透明性,也即,每一个分布式节点都高度自治,有属于自己的数据库管理系统,并且,每一个分布式节点的数据库对用户的应用来说都是透明的,因此,采用分布式存储系统能够大大的提高大数据存储和查询的能力。
由于哈希算法能够将任意长度的二进制值映射为较短的固定长度的二进制值,也即为哈希值,其是一段数据唯一且极其紧凑的数值表示形式,因此,数据的哈希值可以检验数据的完整性,一般用于数据的快速查找和加密。本发明借助于一致性哈希算法,基于分布式存储系统实现数据的存储和查询,大大提高了数据的实时性能。
图1为发明提供的实时数据存储方法实施例一的流程示意图。如图1所示,本发明提供的一种实时数据存储方法,包括:
步骤101:通过一致性哈希分片将待存储数据划分到分布式存储系统的至少一个分布式节点中,得到与所述至少一个分布式节点分别对应的一级索引数据;
具体的,对大数据进行存储,首先根据待存储数据的数据模式,采用一致性哈希分片改变待存储数据的原始分布,将经过一致性哈希分片的待存储数据分别划分到分布式存储系统的至少一个分布式节点中,在每一个分布式节点处都能够得到与之对应的一级索引数据。通常来说,良好的一致性哈希分片能够保证各个分布式节点之间分到的部分待存储数据平衡。
值得说明的是,所述一级索引数据为被划分到分布式存储系统的至少一个分布式节点处的、携带有一致性哈希分片索引信息的部分待存储数据,也即,与每个分布式节点分别对应的一级索引数据共同组成了携带有一致性哈希分片索引信息的待存储数据。
步骤102:将与所述至少一个分布式节点分别对应的一级索引数据存储到数据缓存系统中;
由上述分析可知,待存储数据经过一致性哈希分片后得到的一级索引数据分别被划分到相应的至少一个分布式节点中,为了便于后续对所述一级索引数据进行处理,故将其存储在数据缓存系统中,该数据缓存系统位于内存中,是基于内存的键值缓存系统;
步骤103:通过对与上述至少一个分布式节点分别对应的至少两个一级索引数据进行归并处理,得到与上述至少一个分布式节点对应的至少一个分布式文件块;
其中,上述归并处理是指对同一分布式节点中至少两个一级索引数据进行归并、排序以及组装的过程。本发明通过对同一个分布式节点处的至少两个一级索引数据进行归并处理操作,形成了与该分布式节点相对应的分布式文件块,为后续对各个分布式文件块内的一级索引数据进行相应处理奠定了基础。
步骤104:通过对与所述至少一个分布式节点对应的至少一个分布式文件块内的、经过归并处理后的至少两个一级索引数据建立聚簇索引,得到与上述至少一个分布式节点分别对应的二级索引数据;
具体的,所述二级索引数据为与至少一个分布式节点分别对应的、位于相应至少一个分布式文件块内的、携带有聚簇索引信息的至少两个一级索引数据;
步骤105:将与所述至少一个分布式节点分别对应的二级索引数据分别写入所述至少一个分布式节点所在的磁盘上。
当分布式文件块内的至少两个一级索引数据建立聚簇索引后,得到的是二级索引数据,所述二级索引数据位于相应的分布式文件块内,并携带有聚簇索引信息。最后,将所述二级索引数据分别写入与其对应的分布式节点所在的磁盘上,从而完成了实时数据的存储。
具体来说,本发明提供的实时数据存储方法,首先通过采用一致性哈希分片将待存储数据进行划分,在分布式存储系统的至少一个分布式节点中得到携带有一致性哈希分片索引信息的一级索引数据,随后,对同一个分布式节点中的至少两个一级索引数据进行归并处理,形成与该分布式节点相对应的分布式文件块,最后,对分布式文件块内的一级索引数据建立聚簇索引,在与分布式节点对应的分布式文件块内得到携带有聚簇索引信息的二级索引数据,并将该分布式文件块内的二级索引数据写入到对应分布式节点所在的磁盘上,从而实现了对大数据的存储。
本发明实施例提供的实时数据存储方法,通过良好的一致性哈希分片对待存储数据进行划分,保证了大数据划分的均衡性,并在分布式节点动态增加和减少的情况下,仍然能够满足大数据划分的均衡性。进一步地,分别对待存储数据进行建立一致性哈希分片索引信息和聚簇索引信息,在很大程度上提高了大数据存储的实时性,为后续查询系统高效率的检索到大数据奠定了基础,满足了大数据高实时性分析处理的要求。
图2为发明提供的实时数据存储方法实施例二的流程示意图。本发明实施例二是对上述实施例一的补充,如图2所示,在步骤103之前,还包括:
步骤201:将待存储数据从读进程读出后,对上述待存储数据进行打包处理,并按照一致性哈希分片将上述待存储数据划分到分布式存储系统的至少一个分布式节点中,得到与所述至少一个分布式节点分别对应的一级索引数据;
其中,上述打包处理是指对待存储数据进行数据字典化、二进制转化处理的过程。大规模的待存储数据源从读进程读出,经过字典化、二进制转化等处理后,按照一致性哈希分片将该待存储数据分片,并相应的划分到分布式存储系统中至少一个分布式节点中,得到与所述至少一个分布式节点分别对应的一级索引数据,所述一级索引数据携带有一致性哈希分片索引信息。
步骤202:将与所述至少一个分布式节点分别对应的一级索引数据放入数据缓存系统的至少一个数据桶中;
具体的,上述至少一个数据桶分别用于存储与所述至少一个分布式节点分别对应的一级索引数据。
上述数据桶的大小是可以设置的,若数据桶太小,会产生过多小文件,影响数据的导入性能,若数据桶太大,即意味着大量的数据暂存在内存中,降低了大数据的实时性。因此,本发明实施例将数据桶中的数据交给数据缓存系统管理,并且,所述数据缓存系统是基于内存的键值缓存系统,将数据桶中的数据写入数据缓存系统中暂存,既不会影响数据缓存系统的性能,又能够保证缓存的数据被查询系统正确、高效的读取。
步骤203:当上述至少一个数据桶达到预设值的大小后,对所述至少一个数据桶中的至少两个一级索引数据进行归并处理,得到与上述至少一个分布式节点对应的至少一个分布式文件块。
当数据缓存系统中存满一个设定大小的数据桶后,开始对该数据桶中的至少两个一级索引数据进行归并、排序和组装,得到与所述数据桶对应的分布式文件块。
本发明实施例提供的实时数据存储方法,通过将经过一致性哈希分片后的待存储数据分别放入内存中的至少一个数据桶中,并将所述数据桶中的数据写入数据缓存系统中暂存,在数据缓存系统中进行积累新数据,所述至少一个数据桶与至少一个分布式节点相对应。当数据桶达到设定的大小后,对该数据桶中的一级索引数据进行归并处理,形成与所述至少一个分布式节点分别对应的一级索引数据。利用本发明实施例的技术方案形成的分布式文件块大大提高了分布式存储系统的实时性能。
为了便于理解数据存储时各个数据之间的关系,下面简要介绍分布式节点、分布式文件块、一级索引数据、二级索引数据和数据桶之间的联系。
由上述可知,分布式存储系统包含至少一个高度自治的分布式节点,待存储数据经过一致性哈希分片后划分到分布式存储系统的至少一个分布式节点中,得到了一级索引数据,一级索引数据是与分布式节点对应的、携带有一致性哈希分片索引信息的部分待存储数据;每个分布式节点处都设置了一个数据桶,数据桶用于暂时存放划分到该分布式节点处的一级索引数据;当该数据桶中暂存的一级索引数据达到设定的大小后,对该数据桶中的至少两个一级索引数据进行归并、排序和组装,就得到了与该数据桶对应的分布式文件块;在所述分布式文件块内,对经过归并处理后的一级索引数据建立聚簇索引,得到的就是二级索引数据。优选的,分布式节点、数据桶和分布式文件块之间是一一对应的关系,一级索引数据位于分布式节点和数据桶中,其上携带有一致性哈希分片索引信息,二级索引数据位于分布式文件块内,其携带有聚簇索引信息。
进一步地,采用实施例二提供的上述实时数据存储方法对待存储数据存储的过程中,需要注意以下几点,具体为:
第一:当对待存储数据进行打包处理时,将待存储数据进行加锁处理;当待存储数据的打包处理过程结束后,将被加锁的待存储数据解锁;
第二,当对与至少一个分布式节点分别对应的至少两个一级索引数据进行归并处理时,将与所述至少一个分布式节点分别对应的至少两个一级索引数据进行加锁处理,并当上述归并处理过程结束后,将被加锁的至少两个上述一级索引数据解锁;
第三:将与至少一个分布式节点分别对应的二级索引数据写入上述至少一个分布式节点所在的磁盘上时,将与所述至少一个分布式节点分别对应的二级索引数据进行加锁处理,并当所述二级索引数据成功写入上述至少一个分布式节点所在的磁盘上之后,若数据的实时性要求小于数据桶的数据内存最小时间戳,则删除数据缓存系统中的与该分布式节点分别对应的所述二级索引数据,将被加锁的所述成功写入该分布式节点中的所述二级索引数据解锁;相应地,更新上述数据桶的内存数据最小时间戳。其中,上述内存数据最小时间戳,用于在内存中表征与上述至少一个分布式节点分别对应的至少两个二级索引数据的实时性要求。
利用本发明实施例提供的实时数据存储方法,在从对待存储数据的打包处理过程,到与分布式节点对应的至少两个一级索引数据进行的归并处理过程,再到与至少一个分布式节点分别对应的二级索引数据写入所述至少一个分布式节点所在磁盘上的过程中,与其对应的待存储数据、至少两个一级索引数据以及所述二级索引数据都被进行了加锁处理,会暂时不可读,这样能够保证读入数据的一致性。
进一步地,本发明通过维护全局内存数据最小时间戳,可高效地处理非严格意义的实时分析,当数据的实时性要求小于数据桶的数据内存最小时间戳时,说明内存中并没有用户想要的数据,因此,无需在内存中进行查询,大幅度提高了查询分析的性能。
值得说明的是,当所述二级索引数据成功写入分布式存储系统的至少一个分布式节点所在磁盘的同时,更新所述数据桶的内存数据最小时间戳,并以此来维护全局数据的内存最小时间戳,所述全局数据的内存最小时间戳是所有数据桶内存数据最小时间戳的最小值。当后续对实时数据进行查询时,查询引擎将根据用户的数据实时性要求与所述数据桶的内存数据最小时间戳的大小关系,决定是否需要访问内存中的数据。
本发明上述实施例,通过对待储存数据、与分布式节点对应的至少两个一级索引数据以及与至少一个分布式文件块内的二级索引数据进行加锁处理,维护了内存数据和分布式存储系统中数据的一致性,从而确保了查询系统在内存和分布式存储系统中查询到数据相一致。
进一步地,本发明实施例二提供的实时数据存储方法,二级索引数据为与至少一个分布式节点分别对应的、位于至少一个分布式文件块内的、携带有聚簇索引信息的至少两个所述一级索引数据。图3为发明分布式文件块内聚簇索引信息的结构示意图。如图3所示,所述聚簇索引信息中的每项由索引字段起始值和在分布式文件块中的偏移量构成,聚簇索引信息中的每项对应所述至少一个分布式文件块中的一段内容。
可选的,聚簇索引信息的项数是可配置的,通常聚簇索引信息的项数不需要太多,因为数据在磁盘上是按磁盘块(页)存储,读取时通常也是以磁盘块(页)为单位读取,索引项对应数据段的大小略小于磁盘块的大小即可,上述一致性哈希分片索引信息和聚簇索引信息保存在系统表中,系统表存储在内存中。
更进一步地,本发明上述实施例一和实施例二提供的实时数据存储方法,在分布式存储系统的至少一个分布式节点中,上述对待存储数据进行一致性哈希分片得到与至少一个分布式节点分别对应的一级索引数据、对与至少一个分布式节点分别对应的至少一个分布式文件块内的、经过归并处理后的至少两个一级索引数据建立聚簇索引得到与所述至少一个分布式节点分别对应的至少两个二级索引数据的处理过程,并行执行;
在分布式存储系统的同一个分布式节点中,上述对待存储数据进行一致性哈希分片得到与该分布式节点分别对应的一级索引数据、对与至少一个分布式节点分别对应的至少一个分布式文件块内的、经过归并处理后的至少两个一级索引数据建立聚簇索引得到与该分布式节点分别对应的、至少一个分布式文件块内的至少两个二级索引数据的处理过程,按顺序执行。
本发明实施例提供的实时数据存储方法,将待存储数据均匀的划分到分布式存储系统的至少一个分布式节点中,并且在每个分布式节点处进行的对待存储数据进行一致性哈希分片得到一级索引数据、对所述一级索引数据进行归并处理得到相应分布式文件块,以及在该分布式文件块内对一级索引数据建立聚簇索引得到二级索引数据的处理过程,上述至少一个分布式节点中进行的上述处理过程,同时并行执行,上述同一个分布式节点中的进行的上述处理过程,按照顺序依次执行。
本发明采用的上述处理方案,最大可能地提高了数据导入的吞吐量,提高了数据的导入速度,突破了性能瓶颈。
下面介绍的实时数据查询方法,介绍的是如何将存储在磁盘或分布式存储系统内存中的数据读取出来。本发明提出的实时数据查询方法,根据数据存储时建立的一致性哈希分片索引信息和聚簇索引信息,能够快速的定位到对应的分布式节点和分布式文件块,满足了大数据的实时性要求。
图4为发明提供的实时数据查询方法实施例一的流程示意图。如图4所述,本发明提供的一种实时数据查询方法,包括:
步骤401:通过对查询语句进行解析,得到待查询数据的查询参数;
查询引擎首先根据用户的实际需要,解析查询语句,得到符合待查询数据要求的查询参数。
步骤402:根据待查询数据分片时建立的一致性哈希分片索引信息定位到该待查询数据对应的至少两个一级索引数据所属的至少一个分布式节点所在的磁盘,以及上述至少一个分布式节点所对应的至少一个分布式文件块;
其中,上述一级索引数据为被划分到上述至少一个分布式节点中的、携带有一致性哈希分片索引信息的部分待查询数据。
具体的,通过待查询数据存储时建立的一致性哈希分片索引信息可快速的定位到一级索引数据所属的至少一个分布式节点所在的磁盘,并且通过记录的该一致性哈希分片索引信息可快速定位到所述至少一个分布式节点以及相应的至少一个分布式文件块。
步骤403:在上述至少一个分布式文件块内,根据所述至少一个分布式文件块内的至少两个所述一级索引数据存储时建立的聚簇索引信息定位到与上述至少一个分布式节点分别对应的、所述至少一个分布式文件块内的至少两个二级索引数据所处的位置;
其中,所述二级索引数据为与上述至少一个分布式节点分别对应的、所述至少一个分布式文件块内的、携带有聚簇索引信息的至少两个一级索引数据。由于分布式文件块内的一级索引数据是按照聚簇索引存放的,因此,通过聚簇索引信息便可在分布式文件块内实现快速查询二级索引数据。
步骤404:根据上述查询参数,对上述查询到的、与至少一个分布式节点分别对应的、至少一个分布式文件块内的至少两个二级索引数据进行过滤、归并,得到待查询磁盘数据。
本发明实施例提供的实时数据查询方法,首先通过一致性哈希分片查找到具体的至少一个分布式节点以及至少一个数据桶队列,再通过具体的查询参数定位到至少一个分布式文件块,这样将系统查询响应时间提高了20毫秒到100毫秒。另一方面,保证了数据缓存系统中的零散数据不会被写入磁盘,不但保证了数据的实时性要求,而且提高了数据的导入速度和查询性能。
本发明实施例提供的实时数据查询方法,通过对待查询数据存储时建立的一致性哈希分片索引信息和在分布式文件块内建立的聚簇索引信息,能够准确、快速的定位到需要的结果。本发明采用的上述索引算法简单轻便,索引组织结构新颖高效,极大地提高了实时数据的查询性能。
图5为发明提供的实时数据查询方法实施例二的流程示意图。本发明实时数据查询方法实施例二是对上述实施例一的补充,如图5所示,当数据的实时性要求大于数据内存最小时间戳时,上述实施例一提供的实时数据查询方法,还包括:
步骤501:在数据缓存系统中,根据待查询数据分片时建立的一致性哈希分片索引信息定位到与上述部分待查询数据分别对应的至少两个一级索引数据所在的至少一个数据桶;
其中,上述至少一个数据桶分别用于存储与所述部分待查询数据分别对应的至少两个一级索引数据。
由于一个数据桶对应于一个分布式文件块,因此,根据待查询数据存储时建立的一致性哈希分片索引信息可以快速、准确的定位到与分片后的部分待查询数据分别对应的至少两个一级索引数据所在的至少一个数据桶。
步骤502:根据上述查询参数,对上述至少一个数据桶中的至少两个所述一级索引数据进行过滤、归并,得到待查询缓存数据;
具体的,该查询参数是在实施例三中经过解析查询语句得到的,根据所述查询参数,对上述至少一个数据桶中的至少两个一级索引数据进行过滤查找,就可以得到仍然存储于数据缓存系统中的待查询数据,统称为待查询缓存数据。
步骤503:将所述待查询磁盘数据与所述待查询缓存数据进行合并,得到所述待查询数据。
最后,将实施例三中的待查询磁盘数据和本实施例中的待查询缓存数据进行合并处理,得到的待查询数据就是需要查询的结果。
本发明实施例提供的实时数据查询方法,由于数据的实时性要求大于数据内存最小时间戳,这说明用户要求的数据实时性强,该数据在存储时,只有部分数据存储到了磁盘上,仍有一部分数据还存储在数据缓存系统中,因此,本发明为了突出实时性,查询系统也将查询参数提交到数据缓存系统中,根据查询参数,在分布式节点和数据缓存系统中进行同步查找,并将同步查找到的结果进行合并,即是要查询的结果。
进一步地,本发明上述实施例提供的实时数据查询方法,存储在至少一个分布式文件块内的二级索引数据是携带有聚簇索引信息的至少两个一级索引数据,所述聚簇索引信息中的每项由索引字段起始值和在所述分布式文件块中的偏移量构成,所述聚簇索引信息中的每项对应所述至少一个分布式文件块中的一段内容。
可选的,聚簇索引信息的项数是可配置的,通常聚簇索引信息的项数不需要太多,因为数据在磁盘上是按磁盘块(页)存储,读取时通常也是以磁盘块为单位读取,索引项对应数据段的大小略小于磁盘块大小即可。值得说明的是,上述一致性哈希分片索引信息和聚簇索引信息保存在系统表中,系统表存储在内存中。
更进一步地,本发明实施例一和实施例二提供的实时数据查询方法,在分布式存储系统的至少一个分布式节点中,上述根据一致性哈希分片索引信息定位与待查询数据分别对应的至少两个一级索引数据所属的至少一个分布式节点所在的磁盘、根据上述聚簇索引信息定位与上述至少一个分布式节点分别对应的、至少一个分布式文件块内的至少两个二级索引数据所处位置的处理过程,并行执行;
在分布式存储系统的同一个分布式节点中,上述根据一致性哈希分片索引信息定位与待查询数据分别对应的至少两个一级索引数据所属的该分布式节点所在的磁盘、根据聚簇索引信息定位与该分布式节点分别对应的、所述至少一个分布式文件块内的至少两个二级索引数据所处位置的处理过程,按顺序执行。
本发明实施例提供的实时数据查询方法,定位待查询数据所在的磁盘、待查询数据所属的至少一个分布式节点、待查询数据所在的至少一个分布式文件块,以及在所述分布式文件块内定位待查询数据所处位置,在分布式存储系统的不同分布式节点之间进行的上述处理过程,同时并行执行,而在同一个分布式节点中进行的上述处理过程,按照顺序依次执行。
本发明采用的上述处理方案,最大可能地提高了数据导入的吞吐量,提高了数据的导入速度,突破了性能瓶颈。
值得说明的是,本发明提供的实时数据存储和查询方法,为了保证数据查询时的正确性和完整性,待存储数据在存储过程中添加了锁机制,当待存储数据被写入分布式节点时,查询语句不能被执行,只有在添加的锁机制被释放后,才被执行,进一步确保了不会遗漏数据或读取重复的数据。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种实时数据存储方法,其特征在于,包括:
通过一致性哈希分片将待存储数据划分到分布式存储系统的至少一个分布式节点中,得到与所述至少一个分布式节点分别对应的一级索引数据;其中,所述一级索引数据为被划分到所述至少一个分布式节点中的、携带有一致性哈希分片索引信息的部分待存储数据;
将与所述至少一个分布式节点分别对应的所述一级索引数据存储到数据缓存系统中;所述数据缓存系统位于内存中;
通过对与所述至少一个分布式节点分别对应的至少两个所述一级索引数据进行归并处理,得到与所述至少一个分布式节点对应的至少一个分布式文件块;所述归并处理是指对同一分布式节点中至少两个所述一级索引数据进行归并、排序以及组装的过程;
通过对与所述至少一个分布式节点对应的至少一个分布式文件块内的、经过归并处理后的至少两个所述一级索引数据建立聚簇索引,得到与所述至少一个分布式节点分别对应的二级索引数据;其中,所述二级索引数据为与所述至少一个分布式节点分别对应的、位于所述至少一个分布式文件块内的、携带有聚簇索引信息的至少两个所述一级索引数据;
将与所述至少一个分布式节点分别对应的所述二级索引数据分别写入所述至少一个分布式节点所在的磁盘上。
2.根据权利要求1所述的实时数据存储方法,其特征在于,在所述通过对与所述至少一个分布式节点分别对应的至少两个所述一级索引数据进行归并处理,得到所述至少一个分布式节点对应的至少一个分布式文件块之前,还包括:
将所述待存储数据从读进程读出后,对所述待存储数据进行打包处理,并按照所述一致性哈希分片将所述待存储数据划分到所述分布式存储系统的至少一个分布式节点中,得到与所述至少一个分布式节点分别对应的所述一级索引数据;所述打包处理是指对所述待存储数据进行数据字典化、二进制转化处理的过程;
将与所述至少一个分布式节点分别对应的所述一级索引数据放入所述数据缓存系统的至少一个数据桶中;所述至少一个数据桶分别用于存储与所述至少一个分布式节点分别对应的所述一级索引数据;
当所述至少一个数据桶达到预设值的大小后,对所述至少一个数据桶中的至少两个所述一级索引数据进行归并处理,得到与所述至少一个分布式节点对应的所述至少一个分布式文件块。
3.根据权利要求2所述的实时数据存储方法,其特征在于,还包括:
当对所述待存储数据进行打包处理时,将所述待存储数据进行加锁处理;当所述待存储数据的打包处理过程结束后,将被加锁的所述待存储数据解锁;
对与所述至少一个分布式节点分别对应的至少两个所述一级索引数据进行归并处理时,将与所述至少一个分布式节点分别对应的至少两个所述一级索引数据进行加锁处理;当与所述至少一个分布式节点分别对应的所述至少两个所述一级索引数据的所述归并处理过程结束后,将被加锁的与所述至少一个分布式节点分别对应的所述至少两个所述一级索引数据解锁;
将与所述至少一个分布式节点分别对应的所述二级索引数据写入所述至少一个分布式节点所在的磁盘上时,将与所述至少一个分布式节点分别对应的所述二级索引数据进行加锁处理;当与所述至少一个分布式节点分别对应的所述二级索引数据成功写入所述至少一个分布式节点所在的磁盘上之后,若数据的实时性要求小于所述数据桶的数据内存最小时间戳,删除所述数据缓存系统中的与所述至少一个分布式节点分别对应的所述二级索引数据,将被加锁的所述成功写入所述至少一个分布式节点中的所述二级索引数据解锁;
更新所述数据桶的内存数据最小时间戳,所述内存数据最小时间戳,用于在内存中表征与所述至少一个分布式节点分别对应的至少两个所述二级索引数据的实时性要求。
4.根据权利要求1所述的实时数据存储方法,其特征在于,所述聚簇索引信息中的每项由索引字段起始值和在所述分布式文件块中的偏移量构成,所述聚簇索引信息中的每项对应所述至少一个分布式文件块中的一段内容。
5.根据权利要求1~4任一项所述的实时数据存储方法,其特征在于,在所述分布式存储系统的至少一个分布式节点中,对所述待存储数据进行所述一致性哈希分片得到与所述至少一个分布式节点分别对应的所述一级索引数据、对与所述至少一个分布式节点分别对应的至少一个分布式文件块内的、经过归并处理后的至少两个所述一级索引数据建立聚簇索引得到与所述至少一个分布式节点分别对应的至少两个所述二级索引数据的处理过程,并行执行;
在所述分布式存储系统的同一个分布式节点中,对所述待存储数据进行所述一致性哈希分片得到与所述分布式节点分别对应的所述一级索引数据、对与所述至少一个分布式节点分别对应的至少一个分布式文件块内的、经过归并处理后的至少两个所述一级索引数据建立聚簇索引得到与该分布式节点分别对应的、所述至少一个分布式文件块内的至少两个所述二级索引数据的处理过程,按顺序执行。
6.一种实时数据查询方法,其特征在于,包括:
通过对查询语句进行解析,得到待查询数据的查询参数;
根据所述待查询数据分片时建立的一致性哈希分片索引信息定位到所述待查询数据对应的至少两个一级索引数据所属的至少一个分布式节点所在的磁盘,以及所述至少一个分布式节点所对应的至少一个分布式文件块;其中,所述一级索引数据为被划分到所述至少一个分布式节点中的、携带有所述一致性哈希分片索引信息的部分待查询数据;
在所述至少一个分布式文件块内,根据所述至少一个分布式文件块内的至少两个所述一级索引数据存储时建立的聚簇索引信息定位到与所述至少一个分布式节点分别对应的、所述至少一个分布式文件块内的至少两个二级索引数据所处的位置;与所述至少一个分布式节点分别对应的、所述至少一个分布式文件块内的至少两个所述二级索引数据为位于所述至少一个分布式文件块内的、携带有所述聚簇索引信息的至少两个所述一级索引数据;
根据所述查询参数,对与所述至少一个分布式节点分别对应的、所述至少一个分布式文件块内的至少两个所述二级索引数据进行过滤、归并,得到待查询磁盘数据。
7.根据权利要求6所述的实时数据查询方法,其特征在于,当数据的实时性要求大于数据内存最小时间戳时,还包括:
在数据缓存系统中,根据所述待查询数据分片时建立的所述一致性哈希分片索引信息定位到与所述部分待查询数据分别对应的至少两个所述一级索引数据所在的至少一个数据桶;所述至少一个数据桶分别用于存储与所述部分待查询数据分别对应的至少两个所述一级索引数据;
根据所述查询参数,对所述至少一个数据桶中的至少两个所述一级索引数据进行过滤、归并,得到待查询缓存数据;
将所述待查询磁盘数据与所述待查询缓存数据进行合并,得到所述待查询数据。
8.根据权利要求6所述的实时数据查询方法,其特征在于,所述聚簇索引信息中的每项由索引字段起始值和在所述分布式文件块中的偏移量构成,所述聚簇索引信息中的每项对应所述至少一个分布式文件块中的一段内容。
9.根据权利要求6~8任一项所述的实时数据查询方法,其特征在于,所述一致性哈希分片索引信息和所述聚簇索引信息保存在系统表中,所述系统表存储在内存中。
10.根据权利要求6~8任一项所述的实时数据查询方法,其特征在于,在分布式存储系统的至少一个分布式节点中,根据所述一致性哈希分片索引信息定位与所述待查询数据分别对应的至少两个所述一级索引数据所属的至少一个分布式节点所在的磁盘、根据所述聚簇索引信息定位与所述至少一个分布式节点分别对应的、所述至少一个分布式文件块内的至少两个所述二级索引数据所处位置的处理过程,并行执行;
在所述分布式存储系统的同一个分布式节点中,根据所述一致性哈希分片索引信息定位与所述待查询数据分别对应的至少两个所述一级索引数据所属的该分布式节点所在的磁盘、根据所述聚簇索引信息定位与该分布式节点分别对应的、所述至少一个分布式文件块内的至少两个所述二级索引数据所处位置的处理过程,按顺序执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510133517.2A CN104794162B (zh) | 2015-03-25 | 2015-03-25 | 实时数据存储与查询方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510133517.2A CN104794162B (zh) | 2015-03-25 | 2015-03-25 | 实时数据存储与查询方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104794162A CN104794162A (zh) | 2015-07-22 |
CN104794162B true CN104794162B (zh) | 2018-02-23 |
Family
ID=53558954
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510133517.2A Expired - Fee Related CN104794162B (zh) | 2015-03-25 | 2015-03-25 | 实时数据存储与查询方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104794162B (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105117502A (zh) * | 2015-10-13 | 2015-12-02 | 四川中科腾信科技有限公司 | 一种基于大数据的检索方法 |
CN105404679B (zh) * | 2015-11-24 | 2019-02-01 | 华为技术有限公司 | 数据处理方法和装置 |
CN105893433A (zh) * | 2015-12-09 | 2016-08-24 | 乐视云计算有限公司 | 文件存储方法、访问方法及装置 |
CN107704475B (zh) * | 2016-08-10 | 2021-12-14 | 泰康保险集团股份有限公司 | 多层分布式非结构化数据存储方法、查询方法及装置 |
CN107766380B (zh) * | 2016-08-22 | 2020-06-30 | 中国移动通信集团河北有限公司 | 一种业务数据的均衡分布及搜索方法及其装置、系统 |
CN107844483B (zh) * | 2016-09-18 | 2020-07-28 | 腾讯科技(深圳)有限公司 | 文件管理方法及装置 |
CN108572958B (zh) * | 2017-03-07 | 2022-07-29 | 腾讯科技(深圳)有限公司 | 数据处理方法及装置 |
CN109002448B (zh) * | 2017-06-07 | 2020-12-08 | 中国移动通信集团甘肃有限公司 | 一种报表统计方法、装置及系统 |
CN109947729B (zh) * | 2017-07-17 | 2021-08-03 | 普天信息技术有限公司 | 一种实时数据分析方法及装置 |
CN107423425B (zh) * | 2017-08-02 | 2020-08-14 | 德比软件(上海)有限公司 | 一种对k/v格式的数据快速存储和查询方法 |
CN107562804B (zh) * | 2017-08-08 | 2020-09-01 | 上海数据交易中心有限公司 | 数据缓存服务系统及方法、终端 |
CN108769123B (zh) * | 2018-04-27 | 2021-07-13 | 国信优易数据股份有限公司 | 一种数据系统及数据处理方法 |
CN110958211B (zh) * | 2018-09-27 | 2022-05-27 | 安徽华峪文化科技有限公司 | 一种基于区块链的数据处理系统及方法 |
CN109634917A (zh) * | 2018-12-24 | 2019-04-16 | 成都四方伟业软件股份有限公司 | 数据读取方法及装置 |
CN111241316B (zh) * | 2019-03-15 | 2021-05-18 | 临沂市建设工程施工图审查有限公司 | 建筑数据实时查询装置 |
CN111723266A (zh) * | 2019-03-19 | 2020-09-29 | 北京沃东天骏信息技术有限公司 | 海量数据处理方法和装置 |
CN110008143A (zh) * | 2019-04-11 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 一种缓存优化方法、装置、设备及计算机可读存储介质 |
CN110222209B (zh) * | 2019-06-14 | 2020-01-03 | 北京马赫谷科技有限公司 | 图片存储方法、查询方法、装置及存取系统 |
CN110532307B (zh) * | 2019-07-11 | 2022-05-03 | 北京大学 | 一种流滑动窗口的数据存储方法及查询方法 |
CN110390524B (zh) * | 2019-07-31 | 2021-10-26 | 中国工商银行股份有限公司 | 区块链中作业数据处理方法、装置、电子设备及存储介质 |
CN112783904A (zh) * | 2019-11-07 | 2021-05-11 | 北京沃东天骏信息技术有限公司 | 一种更新索引数据的方法和装置 |
CN111241134B (zh) * | 2019-12-31 | 2023-08-08 | 五八有限公司 | 一种数据处理方法及装置 |
CN113127416A (zh) * | 2020-01-15 | 2021-07-16 | 北京沃东天骏信息技术有限公司 | 数据查询方法和装置 |
CN111611258B (zh) * | 2020-05-27 | 2023-09-19 | 杭州海康威视系统技术有限公司 | 流数据的恢复方法和存储设备 |
CN113010526A (zh) * | 2021-04-19 | 2021-06-22 | 星辰天合(北京)数据科技有限公司 | 基于对象存储服务的存储方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102737131A (zh) * | 2012-06-21 | 2012-10-17 | 广州从兴电子开发有限公司 | 一种针对数据库重做日志的处理方法及系统 |
CN103384878A (zh) * | 2011-02-25 | 2013-11-06 | 数创株式会社 | 分布式数据库系统和分布式数据库的数据结构 |
CN103902617A (zh) * | 2012-12-28 | 2014-07-02 | 华为技术有限公司 | 分布式数据库同步方法和系统 |
CN104050270A (zh) * | 2014-06-23 | 2014-09-17 | 成都康赛信息技术有限公司 | 一种基于一致性哈希算法的分布式存储方法 |
CN104424229A (zh) * | 2013-08-26 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 一种多维度拆分的计算方法及系统 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9235621B2 (en) * | 2013-01-30 | 2016-01-12 | Oracle International Corporation | Data-aware scalable parallel execution of rollup operations |
US9311359B2 (en) * | 2013-01-30 | 2016-04-12 | International Business Machines Corporation | Join operation partitioning |
US9305074B2 (en) * | 2013-06-19 | 2016-04-05 | Microsoft Technology Licensing, Llc | Skew-aware storage and query execution on distributed database systems |
-
2015
- 2015-03-25 CN CN201510133517.2A patent/CN104794162B/zh not_active Expired - Fee Related
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103384878A (zh) * | 2011-02-25 | 2013-11-06 | 数创株式会社 | 分布式数据库系统和分布式数据库的数据结构 |
CN102737131A (zh) * | 2012-06-21 | 2012-10-17 | 广州从兴电子开发有限公司 | 一种针对数据库重做日志的处理方法及系统 |
CN103902617A (zh) * | 2012-12-28 | 2014-07-02 | 华为技术有限公司 | 分布式数据库同步方法和系统 |
CN104424229A (zh) * | 2013-08-26 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 一种多维度拆分的计算方法及系统 |
CN104050270A (zh) * | 2014-06-23 | 2014-09-17 | 成都康赛信息技术有限公司 | 一种基于一致性哈希算法的分布式存储方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104794162A (zh) | 2015-07-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104794162B (zh) | 实时数据存储与查询方法 | |
CN103810224B (zh) | 信息持久化和查询方法及装置 | |
CN103544077B (zh) | 数据处理方法及装置、共享存储设备 | |
EP3702932A1 (en) | Method, apparatus, device and medium for storing and querying data | |
CN102725753B (zh) | 优化数据访问的方法及装置、优化数据存储的方法及装置 | |
CN103246749B (zh) | 面向分布式计算的矩阵数据库系统及其查询方法 | |
CN108255958A (zh) | 数据查询方法、装置和存储介质 | |
CN104408159B (zh) | 一种数据关联、加载、查询方法及装置 | |
CN103927331B (zh) | 数据查询方法、装置及系统 | |
CN104881466B (zh) | 数据分片的处理以及垃圾文件的删除方法和装置 | |
CN104850572A (zh) | HBase非主键索引构建与查询方法及其系统 | |
CN102725739A (zh) | 虚拟单一存储装置上的元信息共享型分布式数据库系统 | |
CN105117417A (zh) | 一种读优化的内存数据库Trie树索引方法 | |
CN105677904B (zh) | 基于分布式文件系统的小文件存储方法及装置 | |
CN103294702A (zh) | 一种数据处理方法、装置及系统 | |
CN107004013A (zh) | 用于使用基于硬件的处理来提供分布式树遍历的系统和方法 | |
KR101400214B1 (ko) | Hybrid C 인터페이스를 지원하는 장치 | |
CN106599040A (zh) | 一种面向云存储的分层索引方法与检索方法 | |
CN102591855A (zh) | 一种数据标识方法及系统 | |
CN104871153A (zh) | 用于灵活的分布式大规模并行处理(mpp)数据库的系统和方法 | |
CN107784103A (zh) | 一种访问hdfs分布式存储系统的标准接口 | |
CN109597829B (zh) | 一种实现可搜索加密关系型数据库缓存的中间件方法 | |
CN103077208A (zh) | 统一资源定位符匹配处理方法及装置 | |
CN106682042A (zh) | 一种关系数据缓存及查询方法及装置 | |
CN108021333A (zh) | 随机读写数据的系统、装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180223 Termination date: 20190325 |