CN107092624B - 数据存储方法、装置及系统 - Google Patents
数据存储方法、装置及系统 Download PDFInfo
- Publication number
- CN107092624B CN107092624B CN201611237821.2A CN201611237821A CN107092624B CN 107092624 B CN107092624 B CN 107092624B CN 201611237821 A CN201611237821 A CN 201611237821A CN 107092624 B CN107092624 B CN 107092624B
- Authority
- CN
- China
- Prior art keywords
- data
- storage
- storage mode
- supporting
- data record
- 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
Images
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/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- 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
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Fuzzy Systems (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种数据存储方法、装置及系统。数据存储方法包括:从支持行式存储方式的存储节点中,获取待处理数据表,待处理数据表包含以行式存储方式存储的至少一条数据记录;从至少一条数据记录中,选择待转存数据记录;以列式存储方式,将待转存数据记录转存至至少一个支持列式存储方式的存储节点。本申请实施例可以实现行式存储方式和列式存储方式的结合,一方面充分利用行式存储支持高并发查询的优势,保证未转存数据的查询效率,另一方面基于列式存储便于对转存数据进行复杂查询,保证转存数据的查询效率。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种数据存储方法、装置及系统。
背景技术
关系型数据库以记录为单位进行存储,一般用于存储事务型数据。对使用数据库的业务方来说,理想的方式是维护一张数据表,这样不影响业务逻辑,但随着时间推移和数据量的增长,数据表会越来越大,导致查询速度越来越慢,数据库的整体性能会逐步下降。
现有技术采用分区表或分库分表方式解决上述问题。一种常用的分库分表方式为:以时间或者主键作为分表的依据,把数据表分成多个数据表,每个数据表存储部分数据。这样,可以保证热数据表的数据查询效率。
发明内容
经过分析大量业务方的诉求发现:大多数业务方经常使用的是新数据,而历史数据的使用较少,所以将大量历史数据存储到一张较大的冷数据表中,新数据存储到一张较小的热数据表中,这样可以保证热数据表的数据查询效率,缓解业务方的查询压力。
但是,业务方较少使用历史数据,并不是完全不使用历史数据。当业务方需要使用历史数据时,历史数据所在数据表仍旧较大,导致历史数据的查询效率较低,无法满足业务方对历史数据的查询需求。
针对上述技术问题,根据现有技术方案的启示,本申请发明人容易想到的是:继续分表,将历史数据存储到多张数据表中,以保证每张数据表不至于过大,从而保证历史数据的查询效率。
针对继续分表方式,本申请发明人经过进一步分析发现:如果业务方单纯查询某张数据表中的历史数据,继续分表方式可以保证历史数据的查询效率。如果业务方需要综合查询众多分表,会涉及跨表查询,继续分表方式会增加查询复杂度,整体的查询效率不一定得到保证,同时还要面临众多分表的维护问题。
基于上述分析,本申请发明人跳出现有技术方案的思路,并且在经过创造性劳动后提供一种新的解决方案,主要原理是:结合行式存储方式和列式存储方式,新数据采用行式存储,充分利用行式存储支持高并发查询的优势,保证新数据的查询效率;历史数据采用列式存储,基于列式存储便于对大量历史数据进行复杂查询,保证历史数据的查询效率,同时一定程度上也可以解决众多分表的维护问题。
为实现上述目的,本申请实施例提供一种数据存储方法,包括:
从支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录;
从所述至少一条数据记录中,选择待转存数据记录;
以列式存储方式,将所述待转存数据记录转存至至少一个支持列式存储方式的存储节点。
在一可选实施方式中,所述待转存数据记录的选择步骤,包括以下至少一种方式:
从所述至少一条数据记录中,选择存储时间符合预设时间条件的数据记录,作为所述待转存数据记录;
从所述至少一条数据记录中,选择主键符合预设主键条件的数据记录,作为所述待转存数据记录;
从所述至少一条数据记录中,选择访问频度低于频度阈值的数据记录,作为所述待转存数据记录。
在一可选实施方式中,所述待转存数据记录的转存步骤,包括:
基于水平分区策略,将所述待转存数据记录划分为至少一个数据记录段;所述至少一个数据记录段与所述至少一个支持列式存储方式的存储节点一一对应;
以列式存储方式,将所述至少一个数据记录段分别转存至对应的支持列式存储方式的存储节点。
在一可选实施方式中,所述至少一个数据记录段的转存步骤,包括:
从所述待处理数据表中,导出所述至少一个数据记录段至至少一个文件中;
将所述至少一个文件中的数据记录段,分别导入至对应的支持列式存储方式的存储节点;
在所述至少一个支持列式存储方式的存储节点中,分别分列存储对应的数据记录段。
在一可选实施方式中,在转存所述待转存数据记录的过程中,所述方法还包括:
记录所述待处理数据表中针对所述待转存数据记录的更改操作,并确定所述更改操作对应的支持列式存储方式的存储节点;
在成功转存所述待转存数据记录之后,所述方法还包括:
对所述待处理数据表加读锁;
在所述更改操作对应的支持列式存储方式的存储节点中,回放所述更改操作;
解除所述待处理数据表的读锁。
在一可选实施方式中,在成功转存所述待转存数据记录之后,所述方法还包括:
从所述待处理数据表中删除所述待转存数据记录;
设置所述至少一个支持列式存储方式的存储节点和所述待处理数据表的数据范围。
在一可选实施方式中,所述支持行式存储方式的存储节点包括:行式存储节点和/或混合式存储节点;所述至少一个支持列式存储方式的存储节点包括:列式存储节点和/或混合式存储节点。
本申请实施例还提供一种数据查询方法,包括:
根据待查询数据所属的数据范围,确定所述待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点;
将查询请求分发到所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点进行并行查询;
对所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点返回的查询结果进行合并;
输出合并后的查询结果。
在一可选实施方式中,所述支持列式存储方式的存储节点为多个。
在一可选实施方式中,所述方法还包括:
根据所述待查询数据所属的数据范围,确定所述待查询数据分布于支持行式存储方式的存储节点或支持列式存储方式的存储节点;
将查询请求分发到所述支持行式存储方式的存储节点或所述支持列式存储方式的存储节点进行查询;
输出所述支持行式存储方式的存储节点或所述支持列式存储方式的存储节点返回的查询结果。
本申请实施例还提供一种数据存储装置,包括:
获取单元,用于从支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录;
选择单元,用于从所述至少一条数据记录中,选择待转存数据记录;
转存单元,用于以列式存储方式,将所述待转存数据记录转存至至少一个支持列式存储方式的存储节点。
在一可选实施方式中,所述选择单元具体用于执行以下至少一种操作:
从所述至少一条数据记录中,选择存储时间符合预设时间条件的数据记录,作为所述待转存数据记录;
从所述至少一条数据记录中,选择主键符合预设主键条件的数据记录,作为所述待转存数据记录;
从所述至少一条数据记录中,选择访问频度低于频度阈值的数据记录,作为所述待转存数据记录。
在一可选实施方式中,所述转存单元具体用于:
基于水平分区策略,将所述待转存数据记录划分为至少一个数据记录段;所述至少一个数据记录段与所述至少一个支持列式存储方式的存储节点一一对应;
以列式存储方式,将所述至少一个数据记录段分别转存至对应的支持列式存储方式的存储节点。
在一可选实施方式中,所述转存单元具体用于:
从所述待处理数据表中,导出所述至少一个数据记录段至至少一个文件中;
将所述至少一个文件中的数据记录段,分别导入至对应的支持列式存储方式的存储节点;
在所述至少一个支持列式存储方式的存储节点中,分别分列存储对应的数据记录段。
在一可选实施方式中,所述装置还包括:
记录单元,用于在转存所述待转存数据记录的过程中,记录所述待处理数据表中针对所述待转存数据记录的更改操作,并确定所述更改操作对应的支持列式存储方式的存储节点;
回放单元,用于在成功转存所述待转存数据记录之后,对所述待处理数据表加读锁,在所述更改操作对应的支持列式存储方式的存储节点中,回放所述更改操作,解除所述待处理数据表的读锁。
在一可选实施方式中,所述装置还包括:
删除单元,用于从所述待处理数据表中删除所述待转存数据记录;
设置单元,用于设置所述至少一个支持列式存储方式的存储节点和所述待处理数据表的数据范围。
在一可选实施方式中,所述支持行式存储方式的存储节点包括:行式存储节点和/或混合式存储节点;所述至少一个支持列式存储方式的存储节点包括:列式存储节点和/或混合式存储节点。
本申请实施例还提供一种数据查询装置,包括:
确定单元,用于根据待查询数据所属的数据范围,确定所述待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点;
发送单元,用于将查询请求分发到所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点进行并行查询;
合并单元,用于对所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点返回的查询结果进行合并;
输出单元,用于输出合并后的查询结果。
在一可选实施方式中,所述确定单元还用于:根据所述待查询数据所属的数据范围,确定所述待查询数据分布于支持行式存储方式的存储节点或支持列式存储方式的存储节点;
所述发送单元还用于:将查询请求分发到所述支持行式存储方式的存储节点或所述支持列式存储方式的存储节点进行查询;
所述输出单元还用于:输出所述支持行式存储方式的存储节点或所述支持列式存储方式的存储节点返回的查询结果。
本申请实施例还提供一种分布式存储系统,包括:至少一个支持行式存储方式的存储节点、至少一个支持列式存储方式的存储节点以及访问控制装置;
所述至少一个支持行式存储方式的存储节点,用于以行式存储方式存储数据;
所述至少一个支持列式存储方式的存储节点,用于以列式存储方式存储数据;
所述访问控制装置,用于从所述至少一个支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录;从所述至少一条数据记录中,选择待转存数据记录;以列式存储方式,将所述待转存数据记录转存至所述至少一个支持列式存储方式的存储节点中的至少一个存储节点。
在一可选实施方式中,所述访问控制装置还用于:根据待查询数据所属的数据范围,确定所述待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点;将查询请求分发到所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点进行并行查询;对所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点返回的查询结果进行合并;输出合并后的查询结果。
在一可选实施方式中,所述至少一个支持行式存储方式的存储节点均为行式存储节点;所述至少一个支持列式存储方式的存储节点均为列式存储节点;或者
所述至少一个支持行式存储方式的存储节点和所述至少一个支持列式存储方式的存储节点均为混合式存储节点。
在一个可能的设计中,上述数据存储装置的结构中可以包括处理器和存储器,所述存储器用于存储支持数据存储装置执行上述实施例提供的数据存储方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。
可选的,所述数据存储装置还可以包括通信接口,用于数据存储装置与其他设备或通信网络通信。
本申请实施例还提供了一种计算机存储介质,用于储存上述数据存储装置所用的计算机软件指令,其包含用于执行上述实施例提供的数据存储方法为上述实施例提供的数据存储装置所涉及的程序。
在一个可能的设计中,上述数据查询装置的结构中可以包括处理器和存储器,所述存储器用于存储支持数据查询装置执行上述实施例提供的数据查询方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。
可选的,所述数据查询装置还可以包括通信接口,用于数据查询装置与其他设备或通信网络通信。
本申请实施例还提供了一种计算机存储介质,用于储存上述数据查询装置所用的计算机软件指令,其包含用于执行上述实施例提供的数据查询方法为上述实施例提供的数据查询装置所涉及的程序。
在本申请实施例中,基于支持行式存储方式的存储节点和支持列式存储方式的存储节点形成分布式存储系统,从支持行式存储方式的存储节点中选择部分数据记录,以列式存储方式,转存所述部分数据记录至至少一个支持列式存储方式的存储节点,实现行式存储方式和列式存储方式的结合,一方面充分利用行式存储支持高并发查询的优势,保证未转存数据的查询效率,另一方面结合分布式存储系统,可以实现分布式查询处理,基于列式存储便于对转存数据进行复杂查询,可以保证转存数据的查询效率,同时一定程度上也解决了众多分表的维护问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1a为本申请一实施例提供的分布式存储系统的结构示意图;
图1b为本申请一实施例提供的数据存储方法的流程示意图;
图1c为本申请另一实施例提供的数据存储方法的流程示意图;
图1d为本申请另一实施例提供的图1c中步骤14的流程示意图;
图2a为本申请另一实施例提供的数据存储系统的结构示意图;
图2b为本申请另一实施例提供的数据存储方法的流程示意图;
图3a为本申请又一实施例提供的数据存储系统的结构示意图;
图3b为本申请又一实施例提供的数据存储方法的流程示意图;
图4a为本申请又一实施例提供的数据查询方法的流程示意图;
图4b为本申请又一实施例提供的数据存储装置的结构示意图;
图5为本申请又一实施例提供的数据存储装置的结构示意图;
图6为本申请又一实施例提供的数据查询装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1a为本申请一实施例提供的分布式存储系统的结构示意图。如图1a所示,该分布式存储系统包括:至少一个支持行式存储方式的存储节点、至少一个支持列式存储方式的存储节点以及访问控制装置。
其中,至少一个支持行式存储方式的存储节点,用于以行式存储方式存储数据。至少一个支持列式存储方式的存储节点,用于以列式存储方式存储数据。访问控制装置用于对支持行式存储方式的存储节点和支持列式存储方式的存储节点中的数据进行访问控制。所述访问控制包括转存、存储、读取、插入、修改、删除等。
访问控制装置在转存数据记录时,用于从至少一个支持行式存储方式的存储节点中,获取待处理数据表,待处理数据表包含以行式存储方式存储的至少一条数据记录;从至少一条数据记录中,选择待转存数据记录;以列式存储方式,将待转存数据记录转存至至少一个支持列式存储方式的存储节点中的至少一个存储节点。
可选的,待处理数据表可存储于某一支持行式存储方式的存储节点上。对访问控制装置来说,可以从至少一个支持行式存储方式的存储节点中的某一存储节点中,获取待处理数据表。或者
可选的,待处理数据表可分布存储于多个支持行式存储方式的存储节点上。对访问控制装置来说,可以从至少一个支持行式存储方式的存储节点中的多个存储节点中,获取待处理数据表。
访问控制装置在查询数据时,可能会根据待查询数据所属的数据范围,确定待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点;将查询请求分发到支持行式存储方式的存储节点和支持列式存储方式的存储节点进行并行查询;对支持行式存储方式的存储节点和支持列式存储方式的存储节点返回的查询结果进行合并;输出合并后的查询结果。
进一步,访问控制装置在查询数据时,还可能会根据待查询数据所属的数据范围,确定待查询数据分布于支持行式存储方式的存储节点或支持列式存储方式的存储节点;将查询请求分发到支持行式存储方式的存储节点或支持列式存储方式的存储节点进行查询;输出支持行式存储方式的存储节点或支持列式存储方式的存储节点返回的查询结果。
下面结合具体方法实施例对上述转存数据记录和查询数据的流程进行详细说明。
图1b为本申请一实施例提供的数据存储方法的流程示意图。该方法适用于包含支持行式存储方式的存储节点和支持列式存储方式的存储节点的分布式存储系统。如图1b所示,所述方法包括:
101、从支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录。
102、从所述至少一条数据记录中,选择待转存数据记录。
103、以列式存储方式,将所述待转存数据记录转存至至少一个支持列式存储方式的存储节点。
在本实施例中,待处理数据表可以是支持行式存储方式的存储节点中的任一数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录。换句话说,数据记录是以记录为单位存储于数据表中的一行数据。
可选的,上述支持行式存储方式的存储节点可以是仅支持行式存储方式的存储节点,简称为行式存储节点。或者,上述支持行式存储方式的存储节点可以是同时支持行式存储方式和列式存储方式的存储节点,简称为混合式存储节点。相应地,待处理数据表可以是仅支持行式存储方式的行式数据表,或者是同时支持行式存储方式和列式存储方式的混合型数据表。
值得说明的是,上述支持行式存储方式的存储节点可以是一个或多个。例如,若待处理数据表存储于某一支持行式存储方式的存储节点上,则可以从所述支持行式存储方式的存储节点中,获取待处理数据表。又例如,若待处理数据表分布存储于多个支持行式存储方式的存储节点上,则可以从所述多个支持行式存储方式的存储节点中,获取待处理数据表。
随着时间推移和数据量的增长,待处理数据表中数据记录会越来越多,待处理数据表会越来越大,导致查询速度越来越慢。为解决该问题,本实施例从支持行式存储方式的存储节点中,获取待处理数据表,例如可以获取数据记录相对较多的数据表作为待处理数据表;从待处理数据表包含的至少一条数据记录中,选择全部或部分数据记录,称之为待转存数据记录;以列式存储方式,将待转存数据记录转存至至少一个支持列式存储方式的存储节点。
经过上述转存处理后,待处理数据表中数据记录的条数会减少,利用行式存储方式支持高并发查询的优势,有利于提高待处理数据表中未转存数据记录的查询效率;另外,转存数据记录以列式存储方式重新存储,基于列式存储方式的优势,便于对转存数据进行复杂查询,保证转存数据的查询效率。本实施例无需将待处理数据表拆分为众多分表,一定程度上也解决了众多分表的维护问题。
在上述实施例或下述实施例中,需要从待处理数据表包含的以行式存储方式存储的至少一条数据记录中,选择待转存数据记录。待转存数据记录可以是至少一条数据记录中的部分或全部。
在一种可选实施方式中,经分析业务方的诉求发现,业务方经常使用的是最近存储待处理数据表中的数据记录,而历史数据使用较少,因此可以根据数据记录的存储时间,选择历史数据记录进行转存。基于此,选择待转存数据记录的步骤,可以为:从至少一条数据记录中,选择存储时间符合预设时间条件的数据记录,作为待转存数据记录。所述预设时间条件可以是根据具体应用需求适应性设置。例如,所述预设时间条件可以是某个时间点,如3月31日,则可以从至少一条数据记录中,选择存储时间早于所述时间点的数据记录,作为待转存数据记录。又例如,所述预设时间条件可以是某个时间范围,如3月至10月,则可以从至少一条数据记录中,选择存储时间位于所述时间范围内的数据记录,作为待转存数据记录。
在上述可选实施方式中,对业务方来说无需改变存储逻辑,新数据仍旧以行式存储方式进行存储,新数据的使用比较频繁,一般可以覆盖业务方80%左右的查询请求,对新数据的使用一般包括插入、更新和查询等操作,利用行式存储方式支持高并发查询的优势,可以满足业务方对新数据的使用需求,保证查询效率;业务方对历史数据的使用相对较少,一般可以覆盖业务方20%左右的查询请求,对历史数据的使用一般包括更新和查询操作,以列式存储方式重新存储历史数据,支持对历史数据的复杂查询,可保证历史数据的查询效率。
在另一种可选实施方式中,经分析业务方的诉求发现,业务方使用数据记录的情况可通过数据记录的主键进行区分,经常使用某些主键标识的数据记录,而某些主键标识的数据记录使用较少,因此可以根据数据记录的主键,选择使用较少的数据记录进行转存。基于此,选择待转存数据记录的步骤,可以为:从至少一条数据记录中,选择主键符合预设主键条件的数据记录,作为待转存数据记录。所述预设主键条件可以是根据具体应用需求适应性设置。例如,所述预设主键条件可以是指定的主键,则可以从至少一条数据记录中,选择指定主键标识的数据记录,作为待转存数据记录。又例如,所述预设主键条件可以是某个主键区间,则可以从至少一条数据记录中,选择主键位于所述主键区间内的数据记录,作为待转存数据记录。
在又一可选实施方式中,经分析业务方的诉求发现,业务方使用数据记录的规律性不是很明显,则可以统计每条数据记录的访问频度,可以根据数据记录的访问频度,选择合适的数据记录进行转存。基于此,选择待转存数据记录的步骤,可以为:从至少一条数据记录中,选择访问频度低于频度阈值的数据记录,作为待转存数据记录。所述频度阈值可以是根据具体应用需求适应性设置。
在上述实施例或下述实施例中,需要以列式存储方式,将待转存数据记录转存至至少一个支持列式存储方式的存储节点。
在一可选实施方式中,转存待转存数据记录的步骤,可以为:定期地将待处理数据表中以行式存储方式存储的数据记录,转存至至少一个支持列式存储方式的存储节点中。优选的,所述转存操作可在系统相对空闲的时间完成,但并不限于此。
在一可选实施方式中,如图1c所示,一种数据存储方法的实施流程包括:
11、从支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录。
12、从所述至少一条数据记录中,选择待转存数据记录。
13、基于水平分区策略,将待转存数据记录划分为至少一个数据记录段,至少一个数据记录段与至少一个支持列式存储方式的存储节点一一对应。
14、以列式存储方式,将至少一个数据记录段分别转存至对应的支持列式存储方式的存储节点。
关于步骤11和12可参见前述实施例的描述,在此不再赘述。
上述步骤13-14实际上是将待转存数据记录转存至支持列式存储方式的存储节点的实现步骤。
步骤13主要是利用分布式存储系统支持自动的数据水平分区放置的优点,对待转存数据记录进行水平分割,以将待转存数据记录分布式转存于不同的支持列式存储方式的存储节点上,实现自动的数据水平分区放置,提供高可用性。
步骤14主要用于将步骤13划分出的数据记录段分别转存至对应的支持列式存储方式的存储节点上。
进一步,如图1d所示,步骤14的一种实施方式包括:
141、从待处理数据表中,导出至少一个数据记录段至至少一个文件中。
142、将至少一个文件中的数据记录段,分别导入至对应的支持列式存储方式的存储节点。
143、在至少一个支持列式存储方式的存储节点中,分别分列存储对应的数据记录段。
在上述步骤141-143中,考虑到数据记录的转存过程跨存储节点,于是先将待转存的数据记录段导出至外部文件中,再从外部文件中,导入至对应的支持列式存储方式的存储节点中。
其中,可以将步骤13划分出的数据记录段导出至至少一个文件。例如,可以将步骤13划分出的数据记录段导出至同一文件中,或者可以将步骤13划分出的数据记录段分别导出至不同的文件中;或者,可以将步骤13划分出的数据记录段分组,将不同分组内的数据记录段导出至不同的文件中。
在上述实施例中,至少一个支持列式存储方式的存储节点包括:列式存储节点和/或混合式存储节点。列式存储节点是指仅支持列式存储方式的存储节点。混合式存储节点是指同时支持列式存储方式和行式存储方式的存储节点。相应地,可以将待转存数据记录转存至列式存储节点和/或混合式存储节点中。
在一可选实施方式中,分布式存储系统包括行式存储节点和列式存储节点。相应地,可以将待转存数据记录转存至至少一个列式存储节点。基于此,如图2a所示,为将待转存数据记录转存至多个列式存储节点的一种系统示意图。基于图2a所示系统,一种数据存储方法的实施流程如图2b所示,包括:
201、从行式存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录。
202、从所述至少一条数据记录中,选择待转存数据记录。
203、基于水平分区策略,将待转存数据记录划分为多个数据记录段,多个数据记录段与多个列式存储节点一一对应。
204、从待处理数据表中,导出多个数据记录段至至少一个文件中。
205、将至少一个文件中的数据记录段,分别导入至对应的列式存储节点。
206、在多个列式存储节点中,分别分列存储对应的数据记录段。
关于步骤201和202可参见前述实施例的描述,在此不再赘述。
上述步骤203-206实际上是将待转存数据记录转存至多个列式存储节点的实现步骤。
可选的,参考图2a,考虑待转存数据记录的数据量以及业务方的需求等因素,可以配置多个列式存储节点,将待转存数据记录分布式转存于不同的列式存储节点上,支持自动的数据水平分区放置,提供高可用性。所述水平分区放置是指以数据记录为单位,将待转存数据记录转存至不同的列式存储节点中。
可选的,参考图2a,待处理数据表部署于行式存储节点,行式存储节点是指以行式存储方式存储数据的存储节点。行式存储节点可以采用主从配置,以提高数据安全性和查询效率。图2a中示出一个从节点,但不限于,可以部署更多的从节点。
在另一可选实施方式中,分布式存储系统包括多个混合式存储节点,每个混合式存储节点包括行式分区和列式分区;列式分区是混合式存储节点中以列式存储方式存储数据的区域,行式分区是混合式存储节点中以行式存储方式存储数据的区域。其中,在该可选实施方式中,部分混合式存储节点可作为支持行式存储方式的存储节点,部分混合式存储节点可以作为支持列式存储方式的存储节点,则可以将待转存数据记录从一个混合式存储节点的行式分区中转存至多个混合式存储节点的列式分区中。优选的,所述转存操作可在系统相对空闲的时间完成,但并不限于此。
基于上述,如图3a所示,为将待转存数据记录从一混合式存储节点的行式分区转存至多个混合式存储节点的列式分区的一种系统示意图。基于图3a所示系统,一种数据存储方法的实施流程如图3b所示,包括:
301、从第一混合式存储节点的行式分区中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录。
302、从所述至少一条数据记录中,选择待转存数据记录。
303、基于水平分区策略,将待转存数据记录划分为多个数据记录段,多个数据记录段与多个第二混合式存储节点的列式分区一一对应。
304、将多个数据记录段分别转存至对应的第二混合式存储节点的列式分区中。
可选的,上述多个第二混合式存储节点不包括第一混合式存储节点。则在步骤304中,可以从待处理数据表中,导出多个数据记录段至至少一个文件中;将至少一个文件中的数据记录段,分别导入至对应的第二混合式存储节点中的列式分区;在多个第二混合式存储节点的列式分区中,分别分列存储对应的数据记录段。
可选的,上述多个第二混合式存储节点包括第一混合式存储节点。则在步骤304中,可以将第一混合式存储节点和其它第二混合式存储节点区别对待;对于第一混合式存储节点,确定需要转存至列式分区中的数据记录段,将所述确定的数据记录段从其行式分区转存到其列式分区,属于节点内的转存过程;对于不同于第一混合式存储节点的第二混合式存储节点,可以从待处理数据表中,导出需要转存的数据记录段至至少一个文件中;将至少一个文件中的数据记录段,分别导入至对应的第二混合式存储节点中的列式分区;在多个第二混合式存储节点的列式分区中,分别分列存储对应的数据记录段。
可选的,在图3b所示实施例中,第二混合式存储节点均支持列式存储方式,其列式分区可能已经存在,也可能尚未创建。对于不存在列式分区的第二混合式存储节点,在步骤304中,可以先创建列式分区。
可选的,若第二混合式存储节点中已经存在列式分区,则可以直接将对应的数据记录段转存至其列式分区中。
基于上述,在将待转存数据记录转存至第二混合式存储节点的列式分区之后,需要从第一混合式存储节点的行式分区中,删除待转存数据记录,以减少行式分区中数据记录的条数。另外,在将待转存数据记录转存至第二混合式存储节点的列式分区之后,第二混合式存储节点的列式分区和第一混合式存储节点的行式分区中的数据都会发生变化,可以设置第二混合式存储节点的列式分区和第一混合式存储节点的行式分区的数据范围。所述数据范围表示相应列式分区或行式分区中有哪些数据。
可选的,参考图3a,待转存数据记录分布式转存至多个混合式存储节点,混合式存储节点采用无共享架构,数据水平分区冗余部署在不同节点上,以提高数据安全性和查询效率。
在上述实施例或下述实施例中,考虑到待处理数据表中的数据记录时刻都在发生变化,在转存待转存数据记录的过程,待处理数据表中可能出现引起待转存数据记录发生变化的操作,简称为更改操作,例如插入(insert)、删除(delete)或更新(update)操作。为便于转存前后数据记录的一致性,可以在转存待转存数据记录的过程中,记录待处理数据表中针对待转存数据记录的更改操作,例如插入、删除和/或更新操作,并确定更改操作对应的支持列式存储方式的存储节点。例如,在上述划分数据记录段的基础上,可以确定更改操作是针对哪个数据记录段的,将该数据记录段对应的支持列式存储方式的存储节点,作为更改操作对应的支持列式存储方式的存储节点。
在将待转存数据记录转存至支持列式存储方式的存储节点之后,可以对待处理数据表加读锁,防止待处理数据表中的数据记录发生变化;在更改操作对应的支持列式存储方式的存储节点中,回放所记录的更改操作,以更新转存至支持列式存储方式的存储节点中的待转存数据记录;最后解除待处理数据表的读锁。通过记录待处理数据表中针对待转存数据记录的更改操作并在转存后的存储节点中回放,可以保证待转存数据记录在转存前后的一致性,保证基于待转存数据记录的业务质量。
可选的,上述记录更改操作的方式可以是:在待处理数据表中创建触发器(trigger),利用触发器记录转存待转存数据记录过程中针对待转存数据记录的更改操作。触发器是数据库提供给程序员和数据分析员来保证数据完整性的一种方法,它是与数据表中的事件相关的特殊的存储过程,由事件来触发。例如,当对待处理数据表进行插入、删除或更新操作时会激活触发器,以记录待处理数据表中的这些操作。
进一步,在转存待转存数据记录之后,还需要从待处理数据表中删除待转存数据记录,以减少待处理数据表中的数据记录。另外,考虑到转存待转存数据记录之后,待处理数据表和支持列式存储方式的存储节点中的数据范围都有所变换,为便于后续能够准确定位到相应的存储节点进行数据查询,提高查询效率,还需要设置支持列式存储方式的存储节点和待处理数据表的数据范围。所述数据范围用于表示支持列式存储方式的存储节点或待处理数据表中有哪些数据。
基于上述各实施例,可以以列式存储方式,转存待处理数据表中以行式存储方式存储的数据记录,实现行式存储方式和列式存储方式的结合,一方面充分利用行式存储支持高并发查询的优势,保证未转存数据的查询效率,另一方面基于列式存储便于对转存数据进行复杂查询,保证转存数据的查询效率,同时一定程度上也解决了众多分表的维护问题。
对业务方来说,还面临查询存储于分布式存储系统中的数据的问题。基于分布式存储系统,所述查询可能会跨存储节点,有可能是在同一存储节点。基于此,本申请实施例还提供一种数据查询方法,如图4a所示,该方法包括:
401、根据待查询数据所属的数据范围,确定待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点。
402、将查询请求分发到支持行式存储方式的存储节点和支持列式存储方式的存储节点进行并行查询。
403、对支持行式存储方式的存储节点和支持列式存储方式的存储节点返回的查询结果进行合并。
404、输出合并后的查询结果。
可选的,若根据待查询数据所属的数据范围,确定待查询数据分布于支持行式存储方式的存储节点或支持列式存储方式的存储节点;则可以将查询请求分发到支持行式存储方式的存储节点或支持列式存储方式的存储节点进行查询;输出支持行式存储方式的存储节点或支持列式存储方式的存储节点返回的查询结果。
对于图2a所示分布式存储系统,若待查询数据位于行式存储节点中,业务方可以直接根据行式存储节点的索引数据块,查询行式存储节点中存储数据记录的数据块;其中,在行式存储节点中,会将数据记录存放在一个数据块中,并为该数据块设置索引。
对于图2a所示分布式存储系统,若待查询数据位于列式存储节点中,业务方可以基于水平分区策略,确定待查询数据所在的列式存储节点,查询所确定的列式存储节点。在列式存储节点中,基于不同字段类型,会应用不同的压缩策略,比如整型可以保持排序存储,以方便进行编码压缩,对于字符型可以应用字典编码压缩直接查询列式存储节点。
对于图2a所示分布式存储系统,若待查询数据分散于行式存储节点和列式存储节点中,此情况涉及跨存储节点的查询处理,可以利用视图提供一致的查询入口,业务方无需区分行式存储节点和列式存储节点,通过视图将查询请求分发到对应的行式存储节点和列式存储节点中,并将行式存储节点和列式存储节点返回的查询结果合并后输出给用户。所述视图是指一个虚拟表,其内容由查询定义,同真实数据表一样,视图包含一系列带有名称的列数据和行数据。但是,视图并不在数据库中以存储的数据集形式存在,而是在引用视图时动态生成。
对图3a所示分布式存储系统,若待查询数据位于同一混合式存储节点的同一分区(行式分区或列式分区),对业务方来说,逻辑上看到的是一张数据表,所有操作仍是针对同一数据表执行,与现有技术的查询操作没有任何变化。
对图3a所示分布式存储系统,若待查询数据位于同一混合式存储节点的不同分区,此情况的查询覆盖行式分区和列式分区,需要进行跨分区的查询处理。例如,跨分区的查询过程可以为:根据查询请求中的查询条件过滤出数据记录或列数据,然后进行后续混合查询处理并输出查询结果。以后续混合查询为连接查询为例,则可以从行式分区中过滤出数据记录,去掉数据记录中不需要参与查询的列,然后与列式分区中的列进行连接查询,最后基于查询结果再合并其它返回列。
对图3a所示分布式存储系统,若待查询数据位于不同混合式存储节点,此情况也会涉及跨存储节点的查询处理,可以利用分区信息将查询请求分发到对应的混合式存储节点中,并将不同混合式存储节点返回的查询结果合并后输出给用户。
需要说明的是,上述实施例所提供方法的各步骤的执行主体均可以是同一设备,或者,该方法也由不同设备作为执行主体。比如,步骤101至步骤103的执行主体可以为设备A;又比如,步骤101和102的执行主体可以为设备A,步骤103的执行主体可以为设备B;等等。
图4b为本申请又一实施例提供的数据存储装置的结构示意图。如图4b所示,所述装置包括:获取单元41、选择单元42和转存单元43。
获取单元41,用于从支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录。
选择单元42,用于从所述至少一条数据记录中,选择待转存数据记录。
转存单元43,用于以列式存储方式,将所述待转存数据记录转存至至少一个支持列式存储方式的存储节点。
值得说明的是,本实施例中支持行式存储方式的存储节点可以是一个或多个。例如,若待处理数据表存储于某一支持行式存储方式的存储节点上,则获取单元41可以从所述支持行式存储方式的存储节点中,获取待处理数据表。又例如,若待处理数据表分布存储于多个支持行式存储方式的存储节点上,则获取单元41可以从所述多个支持行式存储方式的存储节点中,获取待处理数据表。
在一可选实施方式中,选择单元42具体可用于执行以下至少一种操作:
从至少一条数据记录中,选择存储时间符合预设时间条件的数据记录,作为待转存数据记录;
从至少一条数据记录中,选择主键符合预设主键条件的数据记录,作为待转存数据记录;
从至少一条数据记录中,选择访问频度低于频度阈值的数据记录,作为待转存数据记录。
在一可选实施方式中,转存单元43具体用于:
基于水平分区策略,将所述待转存数据记录划分为至少一个数据记录段;所述至少一个数据记录段与所述至少一个支持列式存储方式的存储节点一一对应;
以列式存储方式,将所述至少一个数据记录段分别转存至对应的支持列式存储方式的存储节点。
进一步,转存单元43具体用于:从所述待处理数据表中,导出所述至少一个数据记录段至至少一个文件中;将所述至少一个文件中的数据记录段,分别导入至对应的支持列式存储方式的存储节点;在所述至少一个支持列式存储方式的存储节点中,分别分列存储对应的数据记录段。
在一可选实施方式中,如图5所示,所述装置还包括:记录单元51和回放单元52。
记录单元51,用于在转存待转存数据记录的过程中,记录待处理数据表中针对待转存数据记录的更改操作,并确定所述更改操作对应的支持列式存储方式的存储节点。
回放单元52,用于在成功转存待转存数据记录之后,对待处理数据表加读锁,在更改操作对应的支持列式存储方式的存储节点中,回放更改操作,以更新所述待转存数据记录,解除所述待处理数据表的读锁。
在一可选实施方式中,如图5所示,所述装置还包括:删除单元53和设置单元54。
删除单元53,用于在成功转存待转存数据记录之后,从待处理数据表中删除待转存数据记录。
设置单元54,用于在成功转存待转存数据记录之后,设置至少一个支持列式存储方式的存储节点和待处理数据表的数据范围。
在一可选实施方式中,所述支持行式存储方式的存储节点包括:行式存储节点和/或混合式存储节点;所述至少一个支持列式存储方式的存储节点包括:列式存储节点和/或混合式存储节点。
本实施例提供的数据存储装置,可用于执行上述方法实施例的流程,在此不再赘述。
本实施例提供的数据存储装置,从以行式存储方式存储的至少一条数据记录中,选择部分数据记录,以列式存储方式,转存所述部分数据记录,实现行式存储方式和列式存储方式的结合,一方面充分利用行式存储支持高并发查询的优势,保证未转存数据的查询效率,另一方面基于列式存储便于对转存数据进行复杂查询,保证转存数据的查询效率,同时一定程度上也解决了众多分表的维护问题。
图6为本申请又一实施例提供的数据查询装置的结构示意图。如图6所示,装置包括:确定单元61、发送单元62、合并单元63和输出单元64。
确定单元61,用于根据待查询数据所属的数据范围,确定待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点。
发送单元62,用于将查询请求分发到支持行式存储方式的存储节点和支持列式存储方式的存储节点进行并行查询。
合并单元63,用于对支持行式存储方式的存储节点和支持列式存储方式的存储节点返回的查询结果进行合并。
输出单元64,用于输出合并后的查询结果。
在一可选实施方式中,确定单元61还用于:根据待查询数据所属的数据范围,确定待查询数据分布于支持行式存储方式的存储节点或支持列式存储方式的存储节点。相应地,发送单元62还用于:将查询请求分发到支持行式存储方式的存储节点或支持列式存储方式的存储节点进行查询。相应地,输出单元64还用于:输出支持行式存储方式的存储节点或支持列式存储方式的存储节点返回的查询结果。
在一个可能的设计中,上述数据存储装置的结构中可以包括处理器和存储器,所述存储器用于存储支持数据存储装置执行上述实施例提供的数据存储方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序,以用于:从支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录;从所述至少一条数据记录中,选择待转存数据记录;以列式存储方式,将所述待转存数据记录转存至至少一个支持列式存储方式的存储节点。
存储器还可被配置为存储其它各种数据以支持在数据存储装置上的操作。这些数据的示例包括用于在数据存储装置上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
可选的,所述数据存储装置还可以包括通信组件,用于数据存储装置与其他设备或通信网络通信。
通信组件被配置为便于数据存储装置和其他设备之间有线或无线方式的通信。数据存储装置可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
本申请实施例还提供了一种计算机存储介质,用于储存上述数据存储装置所用的计算机软件指令,其包含用于执行上述实施例提供的数据存储方法为上述实施例提供的数据存储装置所涉及的程序。
在一个可能的设计中,上述数据查询装置的结构中可以包括处理器和存储器,所述存储器用于存储支持数据查询装置执行上述实施例提供的数据查询方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序,以用于:根据待查询数据所属的数据范围,确定所述待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点;将查询请求分发到所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点进行并行查询;对所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点返回的查询结果进行合并;输出合并后的查询结果。
存储器还可被配置为存储其它各种数据以支持在数据查询装置上的操作。这些数据的示例包括用于在数据查询装置上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。
存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。
可选的,所述数据查询装置还可以包括通信组件,用于数据查询装置与其他设备或通信网络通信。
通信组件被配置为便于数据查询装置和其他设备之间有线或无线方式的通信。数据查询装置可以接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合。在一个示例性实施例中,通信组件经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
本申请实施例还提供了一种计算机存储介质,用于储存上述数据查询装置所用的计算机软件指令,其包含用于执行上述实施例提供的数据查询方法为上述实施例提供的数据查询装置所涉及的程序。
本申请实施例公开A1,一种数据存储方法,包括:
从支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录;
从所述至少一条数据记录中,选择待转存数据记录;
以列式存储方式,将所述待转存数据记录转存至至少一个支持列式存储方式的存储节点。
A2、如A1所述的方法中,所述待转存数据记录的转存步骤,包括:
基于水平分区策略,将所述待转存数据记录划分为至少一个数据记录段;所述至少一个数据记录段与所述至少一个支持列式存储方式的存储节点一一对应;
以列式存储方式,将所述至少一个数据记录段分别转存至对应的支持列式存储方式的存储节点。
A3、如A2所述的方法中,所述至少一个数据记录段的转存步骤,包括:
从所述待处理数据表中,导出所述至少一个数据记录段至至少一个文件中;
将所述至少一个文件中的数据记录段,分别导入至对应的支持列式存储方式的存储节点;
在所述至少一个支持列式存储方式的存储节点中,分别分列存储对应的数据记录段。
A4、如A1-A3任一项所述的方法中,在转存所述待转存数据记录的过程中,所述方法还包括:
记录所述待处理数据表中针对所述待转存数据记录的更改操作,并确定所述更改操作对应的支持列式存储方式的存储节点;
在成功转存所述待转存数据记录之后,所述方法还包括:
对所述待处理数据表加读锁;
在所述更改操作对应的支持列式存储方式的存储节点中,回放所述更改操作;
解除所述待处理数据表的读锁。
A5、如A1-A3任一项所述的方法中,在成功转存所述待转存数据记录之后,所述方法还包括:
从所述待处理数据表中删除所述待转存数据记录;
设置所述至少一个支持列式存储方式的存储节点和所述待处理数据表的数据范围。
A6、如A1-A3任一项所述的方法中,所述支持行式存储方式的存储节点包括:行式存储节点和/或混合式存储节点;
所述至少一个支持列式存储方式的存储节点包括:列式存储节点和/或混合式存储节点。
本申请实施例公开B7,一种数据查询方法,包括:
根据待查询数据所属的数据范围,确定所述待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点;
将查询请求分发到所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点进行并行查询;
对所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点返回的查询结果进行合并;
输出合并后的查询结果。
B8、如B7所述的方法中,还包括:
根据所述待查询数据所属的数据范围,确定所述待查询数据分布于支持行式存储方式的存储节点或支持列式存储方式的存储节点;
将查询请求分发到所述支持行式存储方式的存储节点或所述支持列式存储方式的存储节点进行查询;
输出所述支持行式存储方式的存储节点或所述支持列式存储方式的存储节点返回的查询结果。
本申请实施例还公开C9、一种数据存储装置,包括:
获取单元,用于从支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录;
选择单元,用于从所述至少一条数据记录中,选择待转存数据记录;
转存单元,用于以列式存储方式,将所述待转存数据记录转存至至少一个支持列式存储方式的存储节点。
C10、如C9所述的装置中,所述转存单元具体用于:
基于水平分区策略,将所述待转存数据记录划分为至少一个数据记录段;所述至少一个数据记录段与所述至少一个支持列式存储方式的存储节点一一对应;
以列式存储方式,将所述至少一个数据记录段分别转存至对应的支持列式存储方式的存储节点。
C11、如C10所述的装置中,所述转存单元具体用于:
从所述待处理数据表中,导出所述至少一个数据记录段至至少一个文件中;
将所述至少一个文件中的数据记录段,分别导入至对应的支持列式存储方式的存储节点;
在所述至少一个支持列式存储方式的存储节点中,分别分列存储对应的数据记录段。
本申请还公开D12、一种数据查询装置,包括:
确定单元,用于根据待查询数据所属的数据范围,确定所述待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点;
发送单元,用于将查询请求分发到所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点进行并行查询;
合并单元,用于对所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点返回的查询结果进行合并;
输出单元,用于输出合并后的查询结果。
D13、如D12所述的装置中,所述确定单元还用于:根据所述待查询数据所属的数据范围,确定所述待查询数据分布于支持行式存储方式的存储节点或支持列式存储方式的存储节点;
所述发送单元还用于:将查询请求分发到所述支持行式存储方式的存储节点或所述支持列式存储方式的存储节点进行查询;
所述输出单元还用于:输出所述支持行式存储方式的存储节点或所述支持列式存储方式的存储节点返回的查询结果。
本申请实施例还公开一种E14、一种分布式存储系统,包括:至少一个支持行式存储方式的存储节点、至少一个支持列式存储方式的存储节点以及访问控制装置;
所述至少一个支持行式存储方式的存储节点,用于以行式存储方式存储数据;
所述至少一个支持列式存储方式的存储节点,用于以列式存储方式存储数据;
所述访问控制装置,用于从所述至少一个支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录;从所述至少一条数据记录中,选择待转存数据记录;以列式存储方式,将所述待转存数据记录转存至所述至少一个支持列式存储方式的存储节点中的至少一个存储节点。
E15、如E14所述的系统中,所述访问控制装置还用于:
根据待查询数据所属的数据范围,确定所述待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点;
将查询请求分发到所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点进行并行查询;
对所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点返回的查询结果进行合并;
输出合并后的查询结果。
E16、如E14或E15所述的系统中,所述至少一个支持行式存储方式的存储节点均为行式存储节点;所述至少一个支持列式存储方式的存储节点均为列式存储节点;或者
所述至少一个支持行式存储方式的存储节点和所述至少一个支持列式存储方式的存储节点均为混合式存储节点。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (7)
1.一种数据存储方法,其特征在于,包括:
从支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录;
从所述至少一条数据记录中,选择待转存数据记录;
以列式存储方式,将所述待转存数据记录转存至至少一个支持列式存储方式的存储节点;
记录所述待处理数据表中针对所述待转存数据记录的更改操作,并确定所述更改操作对应的支持列式存储方式的存储节点;
在成功转存所述待转存数据记录之后,对所述待处理数据表加读锁,在所述更改操作对应的支持列式存储方式的存储节点中,回放所述更改操作;
解除所述待处理数据表的读锁;
其中,所述待转存数据记录的转存步骤,包括:
基于水平分区策略,将所述待转存数据记录划分为至少一个数据记录段;所述至少一个数据记录段与所述至少一个支持列式存储方式的存储节点一一对应;以及,以列式存储方式,将所述至少一个数据记录段分别转存至对应的支持列式存储方式的存储节点;
所述至少一个数据记录段的转存步骤,包括:
从所述待处理数据表中,导出所述至少一个数据记录段至至少一个文件中;将所述至少一个文件中的数据记录段,分别导入至对应的支持列式存储方式的存储节点;在所述至少一个支持列式存储方式的存储节点中,分别分列存储对应的数据记录段。
2.根据权利要求1所述的方法,其特征在于,在成功转存所述待转存数据记录之后,所述方法还包括:
从所述待处理数据表中删除所述待转存数据记录;
设置所述至少一个支持列式存储方式的存储节点和所述待处理数据表的数据范围。
3.根据权利要求1所述的方法,其特征在于,所述支持行式存储方式的存储节点包括:行式存储节点和/或混合式存储节点;
所述至少一个支持列式存储方式的存储节点包括:列式存储节点和/或混合式存储节点。
4.一种数据存储装置,其特征在于,包括:
获取单元,用于从支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录;
选择单元,用于从所述至少一条数据记录中,选择待转存数据记录;
转存单元,用于以列式存储方式,将所述待转存数据记录转存至至少一个支持列式存储方式的存储节点;
记录单元,用于在转存待转存数据记录的过程中,记录待处理数据表中针对待转存数据记录的更改操作,并确定所述更改操作对应的支持列式存储方式的存储节点;
回放单元,用于在成功转存待转存数据记录之后,对待处理数据表加读锁,在更改操作对应的支持列式存储方式的存储节点中,回放更改操作,以更新所述待转存数据记录,解除所述待处理数据表的读锁;
其中,所述转存单元具体用于:
基于水平分区策略,将所述待转存数据记录划分为至少一个数据记录段;所述至少一个数据记录段与所述至少一个支持列式存储方式的存储节点一一对应;以及,以列式存储方式,将所述至少一个数据记录段分别转存至对应的支持列式存储方式的存储节点;
所述转存单元具体用于:
从所述待处理数据表中,导出所述至少一个数据记录段至至少一个文件中;将所述至少一个文件中的数据记录段,分别导入至对应的支持列式存储方式的存储节点;在所述至少一个支持列式存储方式的存储节点中,分别分列存储对应的数据记录段。
5.一种分布式存储系统,其特征在于,包括:至少一个支持行式存储方式的存储节点、至少一个支持列式存储方式的存储节点以及访问控制装置;
所述至少一个支持行式存储方式的存储节点,用于以行式存储方式存储数据;
所述至少一个支持列式存储方式的存储节点,用于以列式存储方式存储数据;
所述访问控制装置,用于从所述至少一个支持行式存储方式的存储节点中,获取待处理数据表,所述待处理数据表包含以行式存储方式存储的至少一条数据记录;从所述至少一条数据记录中,选择待转存数据记录;以列式存储方式,将所述待转存数据记录转存至至少一个支持列式存储方式的存储节点;记录所述待处理数据表中针对所述待转存数据记录的更改操作,并确定所述更改操作对应的支持列式存储方式的存储节点;在成功转存所述待转存数据记录之后,对所述待处理数据表加读锁,在所述更改操作对应的支持列式存储方式的存储节点中,回放所述更改操作;解除所述待处理数据表的读锁;
其中,所述待转存数据记录的转存步骤,包括:基于水平分区策略,将所述待转存数据记录划分为多个数据记录段,所述多个数据记录段与多个列式存储节点一一对应;从所述待处理数据表中,导出所述多个数据记录段至至少一个文件中;将所述至少一个文件中的数据记录段,分别导入至对应的列式存储节点;在所述多个列式存储节点中,以列式存储方式,分别分列存储对应的数据记录段。
6.根据权利要求5所述的系统,其特征在于,所述访问控制装置还用于:
根据待查询数据所属的数据范围,确定所述待查询数据同时分布于支持行式存储方式的存储节点和支持列式存储方式的存储节点;
将查询请求分发到所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点进行并行查询;
对所述支持行式存储方式的存储节点和所述支持列式存储方式的存储节点返回的查询结果进行合并;
输出合并后的查询结果。
7.根据权利要求5或6所述的系统,其特征在于,所述至少一个支持行式存储方式的存储节点均为行式存储节点;所述至少一个支持列式存储方式的存储节点均为列式存储节点;或者
所述至少一个支持行式存储方式的存储节点和所述至少一个支持列式存储方式的存储节点均为混合式存储节点。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611237821.2A CN107092624B (zh) | 2016-12-28 | 2016-12-28 | 数据存储方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611237821.2A CN107092624B (zh) | 2016-12-28 | 2016-12-28 | 数据存储方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107092624A CN107092624A (zh) | 2017-08-25 |
CN107092624B true CN107092624B (zh) | 2022-08-30 |
Family
ID=59646067
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611237821.2A Active CN107092624B (zh) | 2016-12-28 | 2016-12-28 | 数据存储方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107092624B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108062378B (zh) * | 2017-12-12 | 2018-12-11 | 清华大学 | 一种列式存储下多时间序列的连接查询方法及系统 |
CN108093047B (zh) * | 2017-12-15 | 2021-07-27 | 北京星选科技有限公司 | 数据发送方法、装置、电子设备及中间件系统 |
CN110196847A (zh) | 2018-08-16 | 2019-09-03 | 腾讯科技(深圳)有限公司 | 数据处理方法和装置、存储介质及电子装置 |
CN109582682B (zh) * | 2018-11-02 | 2024-04-09 | 中国平安人寿保险股份有限公司 | 数据处理方法、装置及存储介质、计算机设备 |
CN111723089B (zh) * | 2019-03-21 | 2024-09-20 | 北京沃东天骏信息技术有限公司 | 一种基于列式存储格式处理数据的方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495905A (zh) * | 2011-12-23 | 2012-06-13 | 天津神舟通用数据技术有限公司 | 一种基于行存数据库引擎的列存方法 |
CN102609492A (zh) * | 2012-01-21 | 2012-07-25 | 东华大学 | 一种支持表模式可变的元数据管理方法 |
CN105488231A (zh) * | 2016-01-22 | 2016-04-13 | 杭州电子科技大学 | 一种基于自适应表维度划分的大数据处理方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE3312161C1 (de) * | 1983-04-02 | 1984-09-13 | Telefonbau Und Normalzeit Gmbh, 6000 Frankfurt | Verfahren zum Steuern des Verbindungsauf- und -abbaus in einer zeitmultiplexen Fernmelde-,insbesondere Fernsprechvermittlungsanlage |
US8768927B2 (en) * | 2011-12-22 | 2014-07-01 | Sap Ag | Hybrid database table stored as both row and column store |
CN104424287B (zh) * | 2013-08-30 | 2019-06-07 | 深圳市腾讯计算机系统有限公司 | 数据查询方法和装置 |
CN104750727B (zh) * | 2013-12-30 | 2019-03-26 | 沈阳亿阳计算机技术有限责任公司 | 一种列式内存存储查询装置及列式内存存储查询方法 |
WO2015139193A1 (zh) * | 2014-03-18 | 2015-09-24 | 华为技术有限公司 | 一种数据存储格式的转换方法及装置 |
-
2016
- 2016-12-28 CN CN201611237821.2A patent/CN107092624B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102495905A (zh) * | 2011-12-23 | 2012-06-13 | 天津神舟通用数据技术有限公司 | 一种基于行存数据库引擎的列存方法 |
CN102609492A (zh) * | 2012-01-21 | 2012-07-25 | 东华大学 | 一种支持表模式可变的元数据管理方法 |
CN105488231A (zh) * | 2016-01-22 | 2016-04-13 | 杭州电子科技大学 | 一种基于自适应表维度划分的大数据处理方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107092624A (zh) | 2017-08-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107092624B (zh) | 数据存储方法、装置及系统 | |
KR102564170B1 (ko) | 데이터 객체 저장 방법, 장치, 및 이를 이용한 컴퓨터 프로그램이 저장되는 컴퓨터 판독가능한 저장 매체 | |
CN106484906B (zh) | 一种分布式对象存储系统闪回方法及装置 | |
CN111737265B (zh) | 区块数据访问方法、区块数据存储方法及装置 | |
CN101315628A (zh) | 内存数据库系统及实现内存数据库的方法和装置 | |
CN102495894A (zh) | 重复数据查找方法、装置及系统 | |
US10108690B1 (en) | Rolling subpartition management | |
CN107391544B (zh) | 列式存储数据的处理方法、装置、设备及计算机储存介质 | |
US6745198B1 (en) | Parallel spatial join index | |
CN104598652B (zh) | 一种数据库查询方法及装置 | |
US11829377B2 (en) | Efficient storage method for time series data | |
CN116894041B (zh) | 数据存储方法、装置、计算机设备及介质 | |
CN116756253B (zh) | 关系型数据库的数据存储、查询方法、装置、设备和介质 | |
CN117633105A (zh) | 基于时间分区索引的时序数据存储管理方法及系统 | |
KR20120082176A (ko) | 데이터베이스 관리 시스템의 데이터 처리 방법 및 시스템 | |
CN113190563B (zh) | 索引生成方法、设备及存储介质 | |
CN112464049B (zh) | 号码详单下载方法、装置和设备 | |
CN117171209A (zh) | 一种缓存数据清理方法、装置、存储介质和电子设备 | |
CN114461635A (zh) | 一种MySQL数据库数据存储方法、装置和电子设备 | |
US20170357691A1 (en) | Managing Data Obsolescence in Relational Databases | |
CN108415982B (zh) | 数据库的处理方法和装置 | |
CN108073596B (zh) | 一种olap数据库的数据删除方法及装置 | |
CN111274410A (zh) | 一种数据存储方法、装置及数据查询方法、装置 | |
CN117216059A (zh) | 数据表合并方法、装置、设备及介质 | |
CN114297273B (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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: No. 222, second floor, building 12, No. 27, Jiancai Chengzhong Road, Haidian District, Beijing 100089 Applicant after: Beijing Xingxuan Technology Co.,Ltd. Address before: Room 202, 2 floors, 1-3 floors, No. 11 Shangdi Information Road, Haidian District, Beijing 100085 Applicant before: Beijing Xiaodu Information Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |