CN107943927B - 一种分布式存储系统中多维数据的存储模式转换方法 - Google Patents
一种分布式存储系统中多维数据的存储模式转换方法 Download PDFInfo
- Publication number
- CN107943927B CN107943927B CN201711168592.8A CN201711168592A CN107943927B CN 107943927 B CN107943927 B CN 107943927B CN 201711168592 A CN201711168592 A CN 201711168592A CN 107943927 B CN107943927 B CN 107943927B
- Authority
- CN
- China
- Prior art keywords
- keyset
- multidimensional data
- line
- data
- current
- 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.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Telephonic Communication Services (AREA)
Abstract
本发明提供一种分布式存储系统中多维数据的存储模式转换方法,该方法包括:S1,根据当前数据表的当前行键集合和目标数据表的目标行键集合,获取公共行键集合和原始行键集合;S2,对原始行键集合中所有维度的所有取值进行分区,并对所有分区并行扫描,以读取每一个分区中的所有取值;S3,根据所有分区中的每一个取值,逐条读取当前数据表中对应的多维数据;S4,根据目标行键集合,将读取出的每一条多维数据,写入目标数据表中。本发明提供的方法,在读取多维数据之时,避免了节点之间的网络传输,提高了多维数据的读取效率,减少了多维数据存储模式转换过程中的开销,进而提升了多维数据存储模式转换效率。
Description
技术领域
本发明涉及计算机数据管理技术领域,更具体地,涉及一种分布式存储系统中多维数据的存储模式转换方法。
背景技术
多维数据是指某些维度具有顺序关系的数据集合,以这种数据为基础的应用广泛存在。例如,在气象预报中,用户需要使用预报模式、物理量类型、预报时刻、预报时效、地理高度等五个维度共同刻画一个气象预报数据。在将海量的多维数据存储在分布式存储系统中时,可以选取多维数据中的某些维度作为键(Key),根据键值将数据分布到分布式存储系统之中,这样就能快速地通过行键对数据进行各种操作。
分布式计算系统是处理海量数据的有效工具,而分布式存储系统作为整个分布式系统中最底层的架构,起着非常重要的作用。现在新兴的分布式存储系统中,以HBase,Cassandra为代表的基于键值的分布式存储系统广泛应用于海量数据处理的场景。一个典型的分布式存储系统由N个节点组成,通过列族名(ColumnFamily)确定一张表,行键(RowKey)和列名(ColumnName)唯一的映射到表中的一个值(Value),数据会根据行键被系统分布到不同的节点之上。分布式存储系统是一种面向行的存储系统,弱化了表的结构,用户可以自由的向列族中添加数据,而不必拘泥于事先定义好的表结构。
不同的大数据应用对数据的访问模式有不同的要求,多维数据存储在分布式存储系统中的不同存储模式会对大数据应用的效率产生巨大的影响。而数据量很大的时候,数据在不同的存储模式之下的转换效率非常低下,因此对此问题进行优化非常有必要。
多维数据在存储到分布式存储系统之时需要选取一部分维度作为行键进行存储,这就导致一个问题:多维数据选取不同的维度作为行键进行存储,将会直接影响数据的查询速度,这可能与具体的业务有关。因此需要将数据的模式进行转换,即将分布式存储系统中的多维数据转化为以另外某些维度作为行键进行存储。利用分布式计算系统从分布式存储系统中进行读取数据转换之后存入另一张新表之中,在数据量非常大的情况之下,分布式计算系统将会产生大量的读取请求,与分布式存储系统之间建立会话进行读取数据。这一操作极其耗时,难以接受。而实质上,大量会话的建立是非常冗余的,极大地降低了多维数据的存储模式转换效率。
发明内容
本发明提供一种克服现有的对于多维数据的存储模式转换效率极低的问题的分布式存储系统中多维数据的存储模式转换方法。
根据本发明的一个方面,提供一种分布式存储系统中多维数据的存储模式转换方法,所述转换方法包括:
S1,根据当前数据表的当前行键集合和目标数据表的目标行键集合,获取公共行键集合和原始行键集合;所述公共行键集合为所述当前行键集合和所述目标行键集合中共有的维度集合;所述原始行键集合为存在于所述当前行键集合中,但不存在于所述目标行键集合中的维度集合;
S2,对所述原始行键集合中所有维度的所有取值进行分区,并对所有分区并行扫描,以读取每一个分区中的所有取值;
S3,根据所有分区中的每一个取值,逐条读取所述当前数据表中对应的多维数据;
S4,根据所述目标行键集合,将读取出的每一条多维数据,写入所述目标数据表中。
优选地,步骤S1之前还包括:
S0,定义所述当前数据表中多维数据的维度集合,并根据所述维度集合,确定所述当前数据表的当前行键集合和所述目标数据表的目标行键集合。
优选地,步骤S1具体包括:
对所述当前行键集合和所述目标行键集合作交集运算,将所述当前行键集合和所述目标行键集合中共有的维度集合,作为所述公共行键集合;
在所述当前行键集合中,剔除所述公共行键集合的维度,将所述当前行键集合中的剩余维度集合,作为所述原始行键集合。
优选地,步骤S2具体包括:
S21,根据所述分布式存储系统的分区信息,对所述原始行键集合中所有维度的所有取值进行分区;
S22,对于每一个分区,建立所述分区与所述分布式存储系统的通信会话;
S23,根据所有的通信会话,对所有分区并行扫描,以读取所述每一个分区中的所有取值。
优选地,步骤S3具体包括:
若所述公共行键集合为空,则根据所述所有分区中的每一个取值,逐条读取所述当前数据表中对应的多维数据;
若所述公共行键集合非空,则枚举所述公共行键集合中所有维度的所有维度值;在所有分区的所有取值中,选取与所述公共行键集合中每一个维度值对应的取值,并将所述公共行键集合中每一个维度值与所述对应的取值组成行键,逐条读取所述当前数据表中对应的多维数据。
优选地,步骤S4具体包括:
S41,在所述目标行键集合中,剔除所述公共行键集合的维度,将所述目标行键集合中的剩余维度集合,作为所述新增行键集合;
S42,对所述新增行键集合中所有维度的每一个取值,建立集合;
S43,根据读取出的多维数据中新增行键集合的维度的取值,将所述多维数据存入对应的集合中;
S44,将所述集合中的数据,写入所述目标数据表中。
根据本发明的另一个方面,提供一种分布式存储系统中多维数据的存储模式转换设备,所述转换设备包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述的转换方法。
根据本发明的再一个方面,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述的转换方法。
本发明提供的一种分布式存储系统中多维数据的存储模式转换方法,在对多维数据的存储模式进行转换时,首先确定多维数据的当前行键集合和目标行键集合,并根据当前行键集合和目标行键集合,对不同行键集合中的各种维度的不同作用进行了梳理,能有效进行多维数据的存储模式转换操作。同时,通过对原始行键集合中所有维度的所有取值进行分区,并对所有分区并行扫描,充分利用分布式存储系统的本地计算特性,在读取多维数据之时,避免了节点之间的网络传输,提高了多维数据的读取效率,减少了多维数据存储模式转换过程中的开销。本方法适用于所有对不同数据访问类型采取不同数据存储模式的场景,性能高效,易于部署。
附图说明
图1为根据本发明实施例提供的一种分布式存储系统中多维数据的存储模式转换方法的流程图;
图2为根据本发明另一实施例提供的一种分布式存储系统中多维数据的存储模式转换方法的流程图。
具体实施方式
下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施例用于说明本发明,但不用来限制本发明的范围。
多维数据是通过特定的存储模式存放在数据表中的,其中,存储模式是通过行键进行体现的。也就是说,不同的行键代表了多维数据的不同存储模式。在实际应用中,经常需要将多维数据的存储模式进行转换,然而在现有技术中,多维数据的存储模式转换效率特别低。本发明为了提高多维数据的存储模式转换效率,提供了一种分布式存储系统中多维数据的存储模式转换方法。
图1为根据本发明实施例提供的一种分布式存储系统中多维数据的存储模式转换方法的流程图,如图1所示,该方法包括以下几个步骤:
S1,根据当前数据表的当前行键集合和目标数据表的目标行键集合,获取公共行键集合和原始行键集合;所述公共行键集合为所述当前行键集合和所述目标行键集合中共有的维度集合;所述原始行键集合为存在于所述当前行键集合中,但不存在于所述目标行键集合中的维度集合。
其中,多维数据存放于数据表中,由于要将多维数据从当前存储模式转换为目标存储模式,所以要将以当前存储模式存储在当前数据表中的多维数据读取出来,并将多维数据以目标存储模式写入至目标数据表中。由于将多维数据从当前数据表转移到目标数据表的过程中,多维数据的存储模式经过了转换,因此,也可以说,当前数据表与目标数据表对于存储多维数据的模式不同。
S2,对所述原始行键集合中所有维度的所有取值进行分区,并对所有分区并行扫描,以读取每一个分区中的所有取值。
S3,根据所有分区中的每一个取值,逐条读取所述当前数据表中对应的多维数据。
S4,根据所述目标行键集合,将读取出的每一条多维数据,写入所述目标数据表中。
本实施例提供的一种分布式存储系统中多维数据的存储模式转换方法,在对多维数据的存储模式进行转换时,首先确定多维数据的当前行键集合和目标行键集合,并根据当前行键集合和目标行键集合,对不同行键集合的不同作用进行了梳理,能有效进行多维数据的存储模式转换操作。同时,通过对原始行键集合中所有维度的所有取值进行分区,并对所有分区并行扫描,充分利用分布式存储系统的本地计算特性,在读取多维数据之时,避免了节点之间的网络传输,提高了多维数据的读取效率,减少了多维数据存储模式转换过程中的开销,进而提升了多维数据存储模式转换效率。
基于上述实施例,本实施例在步骤S1之前还包括:
S0,定义所述当前数据表中多维数据的维度集合,并根据所述维度集合,确定所述当前数据表的当前行键集合和所述目标数据表的目标行键集合。
具体地,定义当前数据表中多维数据的维度集合为Dim,Dim={D1,D2,...,Dk},其中,D1,D2,...,Dk为多维数据的多个维度。对于多维数据的每一个维度Di(1≤i≤k)都可能有多个取值,即Di={K1,K2,K3,...,Km},其中,K1,K2,K3,...,Km为多维数据的一个维度的多个取值。
根据当前数据表中多维数据的维度集合,确定当前数据表的当前行键集合为Dcurrent,Dcurrent={D1,D2,...,Dp},其中,D1,D2,...,Dp为当前数据表的当前行键集合中的多个维度。同时,确定目标数据表的目标行键集合为Dtarget,Dtarget={D1,D2,...,Dq},其中,D1,D2,...,Dq为目标数据表的目标行键集合中的多个维度。
需要说明的是,当前行键集合和目标行键集合均为当前数据表中多维数据的维度集合的子集,并且,当前行键集合中的维度和目标行键集合中的维度可能会有交集。
基于上述实施例,本实施例对步骤S1进行具体说明。步骤S1具体包括:
对所述当前行键集合和所述目标行键集合作交集运算,将所述当前行键集合和所述目标行键集合中共有的维度集合,作为所述公共行键集合。
在所述当前行键集合中,剔除所述公共行键集合的维度,将所述当前行键集合中的剩余维度集合,作为所述原始行键集合。
具体地,公共行键集合为Dcommon=Dcurrent∩Dtarget,原始行键集合为Dold=Dcurrent\Dcommon。
基于上述实施例,本实施例对步骤S2进行具体说明,步骤S2具体包括:
S21,根据所述分布式存储系统的分区信息,对所述原始行键集合中所有维度的所有取值进行分区。
S22,对于每一个分区,建立所述分区与所述分布式存储系统的通信会话。
S23,根据所有的通信会话,对所有分区并行扫描,以读取所述每一个分区中的所有取值。
具体地,利用分布式存储系统的分区信息,将原始行键集合Dold中的所有维度的所有取值进行分区,得到分区集合Kpartition。其中,不同的分区分布在不同的节点中。
对Kpartition中的每一个分区,建立一个该分区与分布式存储系统之间进行通信的通信会话,每一个分区中的所有维度的取值都能通过这个共享的通信会话,从分布式存储系统的当前数据表中进行对应多维数据的读取。
在需要对分布式存储系统中的当前数据表进行多维数据的读取时,可通过所有的通信会话,对所有分区并行扫描,以读取所述每一个分区中的所有取值。进而,根据所有分区中的每一个取值,逐条读取当前数据表中对应的多维数据。
本实施例提供的一种分布式存储系统中多维数据的存储模式转换方法,通过对原始行键集合中所有维度的所有取值进行分区,对于每一个分区,建立该分区与分布式存储系统的通信会话,每一个分区中的所有单个取值都能通过这个共享的通信会话,从分布式存储系统的当前数据表中进行多维数据的读取,而不必再为每一个单个取值单独建立通信会话,极大地减少了通信会话的创建与维护开销。同时,可以并行地对所有分区进行扫描,充分利用分布式存储系统的本地计算特性,在读取多维数据之时,避免了节点之间的网络传输,提高了多维数据的读取效率,减少了多维数据存储模式转换过程中的开销。在使用Spark和Cassandra的分布式系统中,采用该方法对多维数据的存储模式进行转换时,转换速度提升了30倍。
基于上述实施例,由于原始行键集合和目标行键集合可能没有共有的维度集合,因此,本实施例根据公共行键集合是否为空集,分两种情况来对步骤S3进行说明。步骤S3具体包括:
若所述公共行键集合为空,则根据所述所有分区中的每一个取值,逐条读取所述当前数据表中对应的多维数据。
若所述公共行键集合非空,则枚举所述公共行键集合中所有维度的所有维度值;在所有分区的所有取值中,选取与所述公共行键集合中每一个维度值对应的取值,并将所述公共行键集合中每一个维度值与所述对应的取值组成行键,逐条读取所述当前数据表中对应的多维数据。
具体地,当公共行键集合为空时,原始行键集合相当于当前行键集合,对原始行键集合中所有维度的所有取值进行分区,在对当前数据表中的多维数据进行读取时,仅通过所有分区中的每一个取值,就可索引到当前数据表中对应的多维数据。
具体地,当公共行键集合非空时,枚举公共行键集合中所有维度的所有维度值;对于公共行键集合中所有维度的任一个维度值,在原始行键集合的所有维度的所有取值中,寻找与该维度值对应的取值,并将该维度值与对应的取值组成完整行键,通过该完整行键,索引当前数据表中对应的一条多维数据。执行上述操作,直至公共行键集合中所有维度的所有维度值都与原始行键集合中对应的取值匹配成完整行键,这样就能读取出当前数据表中所有的多维数据。
需要说明的是,对于在原始行键集合的所有维度的所有取值中,寻找与公共行键集合中所有维度的任一个维度值对应的取值这个过程,是通过上述实施例中对原始行键集合进行分区并对所有分区并行扫描来执行的,此处不再赘述。
本实施例提供的一种分布式存储系统中多维数据的存储模式转换方法,通过对原始行键集合中所有维度的所有取值进行分区,对于每一个分区,建立该分区与分布式存储系统的通信会话,每一个分区中的所有单个取值都能通过这个共享的通信会话,从分布式存储系统的当前数据表中进行多维数据的读取,而不必再为每一个单个取值单独建立通信会话,极大地减少了通信会话的创建与维护开销,进而提高了完整行健的匹配速度,使得多维数据的读取速度得以提高。
基于上述实施例,本实施例对多维数据写入目标数据表的过程进行说明,也即是对步骤S4进行说明,步骤S4具体包括:
S41,在所述目标行键集合中,剔除所述公共行键集合的维度,将所述目标行键集合中的剩余维度集合,作为所述新增行键集合。
S42,对所述新增行键集合中所有维度的每一个取值,建立集合。
S43,根据读取出的多维数据中新增行键集合的维度的取值,将所述多维数据存入对应的集合中。
S44,将所述集合中的数据,写入所述目标数据表中。
具体地,新增行键集合为Dnew=Dtarget\Dcommon,Dnew中的维度需要作为目标数据表中的行键,从当前数据表中读取到的多维数据需要根据Dnew中维度的取值进行分类之后,才能存入目标数据表。
对Dnew中每个维度取值为Knew={K1,K2,...Kn},对Knew中的每个取值建立相应的集合S,即新建集合S={s1,s2,...,sn},其中,每一个si(1≤i≤n)为一个空集,代表新增的行键的对应取值为si的多维数据的集合。多维数据读取之后,根据数据中的Knew的取值进行分类,分类之后,写入目标数据表中。
需要说明的是,若公共行键集合为空,则将多维数据中新增行键集合的维度的取值作为多维数据的目标行键集合。若公共行键集合非空,则将多维数据的公共行键集合的维度的取值与新增行键集合的维度的取值,作为多维数据的目标行键集合。
本实施例提供的一种分布式存储系统中多维数据的存储模式转换方法,由于在读取多维数据之时,避免了节点之间的网络传输,提高了多维数据的读取效率,进而减少了多维数据存储模式转换过程中的开销,加快了多维数据存储模式转换的速度。
基于上述实施例,作为一个优选的实施例,本实施例以广泛使用的分布式计算系统Spark和分布式存储系统的典型代表Cassandra为例,结合附图,对本发明提供的一种分布式存储系统中多维数据的存储模式转换方法进行进一步详细的说明。
为了方便对后续步骤的解释,首先将数据表的格式进行如下说明。本实施例中数据为多维度的气象预报数据,气象数据的格式如下表所示:
该数据表的行键有两个,分别是,物理量/层次,时效。所有的数据都可以通过(物理量/层次,时效)的方式进行索引,每一个Data内部还有其它维度的数据(经纬度,即站点地理位置)。现在需要将上述的多维数据转换为以站点和时效进行索引的方式,即通过(经纬度,时效)来索引所需要的数据。
图2为根据本发明另一实施例提供的一种分布式存储系统中多维数据的存储模式转换方法的流程图,如图2所示:
1)对多维数据的各种维度进行定义,即定义多维数据的维度集合Dim,对于以上的多维数据,Dim={物理量/层次,时效,站点}。
2)定义多维数据存储模式转换前后的各种行键集合,即确定Dcurrent={物理量/层次,时效}为当前数据表中多维数据的当前行键集合,确定Dtarget={站点,时效}为目标数据表中多维数据的目标行键集合。
根据Dcurrent和Dtarget,获取公共行键集合Dcommon=Dcurrent∩Dtarget={时效}、Dold=Dcurrent\Dcommon={物理量/层次}和Dnew=Dtarget\Dcommon={站点}。
以下将枚举Dcommon和Dold中所有维度的所有取值,将Dcommon中某一维度的某一个取值与Dold中某一维度的某一个取值匹配成完整行键,通过该完整行键读取分布式存储系统中当前数据表中对应的多维数据,并转换其存储模式之后,写入目标数据表。
需要说明的是,Dcommon中行键的取值直接进行枚举,Dold中行键的取值需要进行分区之后,并行地进行遍历读取,以加快完整行键的匹配速度,进而加快多维数据的读取速度。具体过程如下:
3)枚举需要保留的行健集合取值,即枚举Dcommon中所有维度的所有取值。Dcommon中的维度仍然会作为目标数据表的行键,将其作为最外层的循环读取分布式存储系统之中的数据。需要说明的是,循环次数根据Dcommon中的所有维度的取值的个数而定,本实施例中将Dcommon集合中的所有维度的取值的个数为10,那么,该流程循环10次。并且,每一次循环相当于枚举了Dcommon集合中的一个维度的一个取值。
4)初始化新加入行健数据分类集合,即初始化新增行健集合的取值对应的集合。对Dnew中每个维度取值为Knew={K1,K2,...Kn},对Knew中的每个取值建立相应的集合S,即新建集合S={s1,s2,...,sn},其中,每一个si(1≤i≤n)为一个空集,代表新增的行键的对应取值为si的多维数据的集合。
5)枚举不需要保留的行健集合取值,即枚举Dold集合中所有维度的所有取值。Dold集合中的维度将不再作为行键,利用分布式存储系统的分区信息,将Dold中的维度的所有取值进行分区,得到分区之后的取值集合Kpartition,在本实施例中即是将物理量的所有可能取值的集合进行分区,并将每一个分区分布到对应的节点中以进行多维数据的读取。
将Dcommon中某一维度的某一个取值与Dold中某一维度的某一个取值匹配成完整行键,通过该完整行键读取分布式存储系统中当前数据表中对应的多维数据,并转换其存储模式之后,从当前数据表中读取到的多维数据需要在根据Dnew中维度的取值进行分类之后,才能写入目标数据表。
若循环次数小于10,则循环次数每增加一次,都跳转至步骤4)。
综上所述,本发明提供的一种分布式存储系统中多维数据的存储模式转换方法,在对多维数据的存储模式进行转换时,首先确定多维数据的当前行键集合和目标行键集合,并根据当前行键集合和目标行键集合,对不同行键集合的不同作用进行了梳理,能有效进行多维数据的存储模式转换操作。同时,通过对原始行键集合中所有维度的所有取值进行分区,并对所有分区并行扫描,充分利用分布式存储系统的本地计算特性,在读取多维数据之时,避免了节点之间的网络传输,提高了多维数据的读取效率,减少了多维数据存储模式转换过程中的开销,进而提升了多维数据存储模式转换效率。本方法适用于所有对不同数据访问类型采取不同数据存储模式的场景,性能高效,易于部署。
基于上述实施例,本发明另一实施例公开一种网络节点的时钟频率同步设备,该设备包括:至少一个处理器;以及与所述处理器通信连接的至少一个存储器,其中:所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行上述各方法实施例所提供的同步方法,例如包括:根据当前数据表的当前行键集合和目标数据表的目标行键集合,获取公共行键集合和原始行键集合;所述公共行键集合为所述当前行键集合和所述目标行键集合中共有的维度集合;所述原始行键集合为存在于所述当前行键集合中,但不存在于所述目标行键集合中的维度集合;对所述原始行键集合中所有维度的所有取值进行分区,并对所有分区并行扫描,以读取每一个分区中的所有取值;根据所有分区中的每一个取值,逐条读取所述当前数据表中对应的多维数据;根据所述目标行键集合,将读取出的每一条多维数据,写入所述目标数据表中。
本领域普通技术人员可以理解:实现上述设备实施例或方法实施例仅仅是示意性的,其中所述处理器和所述存储器可以是物理上分离的部件也可以不是物理上分离的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
基于上述实施例,本发明再一实施例提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行上述各方法实施例所提供的方法,例如包括:根据当前数据表的当前行键集合和目标数据表的目标行键集合,获取公共行键集合和原始行键集合;所述公共行键集合为所述当前行键集合和所述目标行键集合中共有的维度集合;所述原始行键集合为存在于所述当前行键集合中,但不存在于所述目标行键集合中的维度集合;对所述原始行键集合中所有维度的所有取值进行分区,并对所有分区并行扫描,以读取每一个分区中的所有取值;根据所有分区中的每一个取值,逐条读取所述当前数据表中对应的多维数据;根据所述目标行键集合,将读取出的每一条多维数据,写入所述目标数据表中。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后,本发明的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种分布式存储系统中多维数据的存储模式转换方法,其特征在于,包括:
S1,根据当前数据表的当前行键集合和目标数据表的目标行键集合,获取公共行键集合和原始行键集合;所述公共行键集合为所述当前行键集合和所述目标行键集合中共有的维度集合;所述原始行键集合为存在于所述当前行键集合中,但不存在于所述目标行键集合中的维度集合;
S2,对所述原始行键集合中所有维度的所有取值进行分区,并对所有分区并行扫描,以读取每一个分区中的所有取值;
S3,根据所有分区中的每一个取值,逐条读取所述当前数据表中对应的多维数据;
S4,根据所述目标行键集合,将读取出的每一条多维数据,写入所述目标数据表中。
2.根据权利要求1所述的转换方法,其特征在于,步骤S1之前还包括:
S0,定义所述当前数据表中多维数据的维度集合,并根据所述维度集合,确定所述当前数据表的当前行键集合和所述目标数据表的目标行键集合。
3.根据权利要求1所述的转换方法,其特征在于,步骤S1具体包括:
对所述当前行键集合和所述目标行键集合作交集运算,将所述当前行键集合和所述目标行键集合中共有的维度集合,作为所述公共行键集合;
在所述当前行键集合中,剔除所述公共行键集合的维度,将所述当前行键集合中的剩余维度集合,作为所述原始行键集合。
4.根据权利要求1所述的转换方法,其特征在于,步骤S2具体包括:
S21,根据所述分布式存储系统的分区信息,对所述原始行键集合中所有维度的所有取值进行分区;
S22,对于每一个分区,建立所述分区与所述分布式存储系统的通信会话;
S23,根据所有的通信会话,对所有分区并行扫描,以读取所述每一个分区中的所有取值。
5.根据权利要求1所述的转换方法,其特征在于,步骤S3具体包括:
若所述公共行键集合为空,则根据所述所有分区中的每一个取值,逐条读取所述当前数据表中对应的多维数据;
若所述公共行键集合非空,则枚举所述公共行键集合中所有维度的所有维度值;在所有分区的所有取值中,选取与所述公共行键集合中每一个维度值对应的取值,并将所述公共行键集合中每一个维度值与所述对应的取值组成行键,逐条读取所述当前数据表中对应的多维数据。
6.根据权利要求1所述的转换方法,其特征在于,步骤S4具体包括:
S41,在所述目标行键集合中,剔除所述公共行键集合的维度,将所述目标行键集合中的剩余维度集合,作为新增行键集合;
S42,对所述新增行键集合中所有维度的每一个取值,建立集合;
S43,根据读取出的多维数据中新增行键集合的维度的取值,将所述多维数据存入对应的集合中;
S44,将所述集合中的数据,写入所述目标数据表中。
7.一种分布式存储系统中多维数据的存储模式转换设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至6任一所述的转换方法。
8.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至6任一所述的转换方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711168592.8A CN107943927B (zh) | 2017-11-21 | 2017-11-21 | 一种分布式存储系统中多维数据的存储模式转换方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711168592.8A CN107943927B (zh) | 2017-11-21 | 2017-11-21 | 一种分布式存储系统中多维数据的存储模式转换方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107943927A CN107943927A (zh) | 2018-04-20 |
CN107943927B true CN107943927B (zh) | 2018-10-16 |
Family
ID=61930575
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711168592.8A Active CN107943927B (zh) | 2017-11-21 | 2017-11-21 | 一种分布式存储系统中多维数据的存储模式转换方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107943927B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11182356B2 (en) * | 2019-05-23 | 2021-11-23 | International Business Machines Corporation | Indexing for evolving large-scale datasets in multi-master hybrid transactional and analytical processing systems |
CN110399104B (zh) * | 2019-07-23 | 2023-06-09 | 网易(杭州)网络有限公司 | 数据存储方法、数据存储装置、电子设备、存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719310B2 (en) * | 2010-12-31 | 2014-05-06 | Pitney Bowes Inc. | Systems and methods for preventing data collisions in multiple access postal system data storage systems |
CN102685221B (zh) * | 2012-04-29 | 2014-12-03 | 华北电力大学(保定) | 一种状态监测数据的分布式存储与并行挖掘方法 |
CN104199986B (zh) * | 2014-09-29 | 2017-06-06 | 国家电网公司 | 基于hbase和geohash的矢量数据空间索引方法 |
CN104408164B (zh) * | 2014-12-05 | 2018-05-18 | 北京国双科技有限公司 | 基于SSAS Tabular数据分析处理方法及装置 |
US9946752B2 (en) * | 2015-04-27 | 2018-04-17 | Microsoft Technology Licensing, Llc | Low-latency query processor |
CN106528575B (zh) * | 2015-09-14 | 2019-08-20 | 北京国双科技有限公司 | 数据对接方法和装置 |
CN105787118A (zh) * | 2016-03-25 | 2016-07-20 | 武汉工程大学 | HBase二级索引的设计方法及查询方法 |
CN105975634B (zh) * | 2016-06-22 | 2017-10-31 | 清华大学 | 分布式数据存储系统中多维有序数据的存储方法 |
-
2017
- 2017-11-21 CN CN201711168592.8A patent/CN107943927B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107943927A (zh) | 2018-04-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106209989B (zh) | 基于spark平台的空间数据并行计算系统及其方法 | |
CN100531055C (zh) | 数据同步系统及其方法 | |
CN104424229B (zh) | 一种多维度拆分的计算方法及系统 | |
CN105045932B (zh) | 一种基于降序存储的数据分页查询方法 | |
CN106528773A (zh) | 一种基于Spark平台支持空间数据管理的图计算系统及方法 | |
CN102509022B (zh) | 一种面向虚拟地球的栅格数据快速建库方法 | |
CN104850629A (zh) | 一种基于改进k-means算法的海量智能用电数据分析方法 | |
CN104881322B (zh) | 一种基于装箱模型的集群资源调度方法及装置 | |
CN102662639A (zh) | 一种基于Mapreduce的多GPU协同计算方法 | |
CN107943927B (zh) | 一种分布式存储系统中多维数据的存储模式转换方法 | |
CN106528674A (zh) | 基于Hbase行健的高性能查询方法和装置 | |
CN102985909A (zh) | 为良好分格的对象提供高扩展性网络存储的方法和设备 | |
CN105071994B (zh) | 一种海量数据监控系统 | |
CN107360202A (zh) | 一种终端的接入调度方法和装置 | |
CN104572505A (zh) | 一种保证海量数据缓存最终一致性的系统及方法 | |
CN113626550A (zh) | 基于三元组双向索引与优化缓存的影像瓦片地图服务方法 | |
CN106777387A (zh) | 一种基于HBase的物联网大数据存取方法 | |
CN106371924A (zh) | 一种最小化MapReduce集群能耗的任务调度方法 | |
CN104679966B (zh) | 基于多层次方法和离散粒子群的赋权超图优化划分方法 | |
CN103399844B (zh) | 报表的生成方法和生成装置 | |
CN104408232B (zh) | 一种高层次综合中的组合逻辑优化方法及系统 | |
CN110134695A (zh) | 一种面向流水线结构化数据查询的数据库智能分区方法 | |
CN106776810B (zh) | 一种大数据的数据处理系统及方法 | |
CN108182243A (zh) | 一种基于Spark的分布式进化算法岛模型并行化方法 | |
CN108536853A (zh) | 一种基于查询资源与精确度的自动路由数据库查询系统及方法 |
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 |