CN110825706A - 一种数据压缩的方法和相关设备 - Google Patents
一种数据压缩的方法和相关设备 Download PDFInfo
- Publication number
- CN110825706A CN110825706A CN201810893734.5A CN201810893734A CN110825706A CN 110825706 A CN110825706 A CN 110825706A CN 201810893734 A CN201810893734 A CN 201810893734A CN 110825706 A CN110825706 A CN 110825706A
- Authority
- CN
- China
- Prior art keywords
- data
- node
- copy
- storage
- replica
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种数据压缩的方法和相关装置。其中,该方法包括:存储节点获取多个数据块,其中,所述多个数据块关联存储在所述存储节点中;对所述多个数据块进行压缩,以得到压缩数据。本申请实施例通过在存储节点执行压缩任务,实现压缩功能,可以提升数据库的性能。
Description
技术领域
本申请涉及信息技术领域,尤其涉及一种数据压缩的方法和相关设备。
背景技术
主流数据库,例如BigTable,HBase,RocksDB等在组织数据布局时多选择日志结构合并树(Log Structure Merge Tree,LSM Tree)的方式,LSM Tree将随机写转换为顺序写,虽然有利于写性能优化,但会给后台带来大量的压缩操作(Compaction),需要后台将多层布局排序的数据逐步进行统一排序,以便后续高效读取数据。后台在进行Compaction时,需要将两组数据先读出,进行排序,然后再排序后的数据作为新的一组数据写入。
在存储计算分离的架构下,Compaction不仅会造成存储节点和数据库节点间的网络带宽消耗,而且还会造成存储节点间的网络带宽消耗,在分布式存储跨有效区域(Availability Zone,AZ)部署时,这种情况显得非常明显,存储节点之间存在大量的跨AZ流量。
此外,Compaction由数据库节点负责,这会占用数据库节点的中央处理器(Central Processing Unit,CPU)资源,影响数据库节点的性能,目前为了克服Compaction对于数据库节点带来的额外资源消耗问题,现有方案是通过提供专用的压缩服务器(Compaction Server)或现场可编程门阵列(Field Programmable Gate Array,FPGA)加速板卡,来专职负责Compaction任务,避免占用数据库节点的CPU资源。
但是,现有方案仍需要从存储节点读取大量数据到计算节点,并将合并(merge)完成之后的数据再写回到存储节点,存储节点和数据库节点间的网络带宽消耗和存储节点间的网络带宽消耗较高。
发明内容
本申请提供了一种数据压缩的方法和相关设备,由存储节点实行Compaction功能,能够消除后台Compaction带来的计算节点和存储节点之间的网络带宽消耗,有效提升数据库的性能的稳定性。
第一方面,提供了一种数据压缩的系统,所述系统包括数据库节点和存储节点,其中:
所述数据库节点用于,向所述存储节点发送多个数据块和压缩指令;
所述存储节点用于,获取所述多个数据块,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,其中,每个数据块与一个SSTable文件对应;将所述多个数据块存储在多个持久性存储日志PLog中,所述多个PLog属于持久性存储日志组PLog Group,其中,所述PLog Group存储在所述存储节点的存储分区中;根据所述压缩指令,对所述多个数据块进行压缩,以得到压缩数据。
实施本申请实施例,存储节点通过接收数据库节点发送的多个数据块并将其存储在PLog Group的多个PLog中,再根据压缩指令对PLog Group中的PLog进行压缩,可以减小存储节点与数据库节点之间的网络带宽消耗和存储节点与存储节点之间的网络带宽消耗。
在一个可选的实现方式中,所述存储节点还用于:
获取副本节点发送的副本特征值,其中,所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本;
获取目标特征值,其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;
将所述目标特征值和所述副本特征值进行匹配;
在匹配成功的情况下,将所述压缩数据存储在所述存储节点中。
在一个可选的实现方式中,所述存储节点还用于:
获取目标特征值,并将所述目标特征值发送给副本节点,以使所述副本节点将所述目标特征值和副本特征值进行匹配;
在匹配成功的情况下,将所述压缩数据存储在所述存储节点中;
其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本。
在一个可选的实现方式中,在匹配不成功的情况下,所述存储节点还用于:对所述多个数据块重新进行压缩。
在一个可选的实现方式中,在匹配不成功的情况下,所述存储节点还用于:
根据所述多个副本存储节点的副本特征值和所述目标特征值,按照预设规则确定所述副本特征值或所述目标特征值对应的待修复的数据;
将所述多个数据块发送给所述待修复的数据所对应的副本存储节点,以进行数据修复;或者
接收所述副本节点发送的多个数据块,以进行数据修复。
第二方面,提供了一种数据压缩的方法,所述方法包括:
存储节点获取多个数据块,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,其中,每个数据块与一个SSTable文件对应;
将所述多个数据块存储在多个持久性存储日志PLog中,所述多个PLog属于持久性存储日志组PLog Group,其中,所述PLog Group存储在所述存储节点的存储分区中;
对所述多个数据块进行压缩,以得到压缩数据。
实施本申请实施例,存储节点通过在存储分区中划分物理线性地址存储空间PLogGroup,并利用该PLog Group中的多个PLog对获取到的数据块进行存储,可以实现对获取的数据块进行关联存储,保证获取到的数据存储在同一个存储分区中,进而保证存储在同一个存储节点上。此外,对存储的数据进行合并压缩,可以减小该存储节点与数据库节点之间的网络带宽消耗,而且通过对数据进行关联存储,还可以减小存储节点与存储节点之间的网络带宽消耗。
在一个可选的实现方式中,所述方法还包括:
获取副本节点发送的副本特征值,其中,所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本;
获取目标特征值,其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;
将所述目标特征值和所述副本特征值进行匹配;
在匹配成功的情况下,将所述压缩数据存储在所述存储节点中。
实施本申请实施例,主存储节点通过获取副本节点发送的副本特征值(例如压缩得到的数据所对应的哈希值)与自身的目标特征值(哈希值)进行匹配,可以保证主存储节点和副本节点经过压缩后得到的数据在物理层面(即字节上)严格一致,并且在一致的情况下,建立存储层面的副本关系,以便于进行后续的故障处理。
在一个可选的实现方式中,所述方法还包括:
获取目标特征值,并将所述目标特征值发送给副本节点,以使所述副本节点将所述目标特征值和副本特征值进行匹配;
在匹配成功的情况下,将所述压缩数据存储在所述存储节点中;
其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本。
实施本申请实施例,主存储节点通过向副本节点发送自身的目标特征值(例如压缩得到的数据所对应的哈希值),以使与自身的目标特征值(哈希值)进行匹配,可以保证主存储节点和副本节点经过压缩后得到的数据在物理层面(即字节上)严格一致,并且在一致的情况下,建立存储层面的副本关系,以便于进行后续的故障处理。
在一个可选的实现方式中,所述方法还包括:
在匹配不成功的情况下,对所述多个数据块重新进行压缩。
在一个可选的实现方式中,所述方法还包括:
所述副本节点包括多个副本存储节点,在匹配不成功的情况下,根据所述多个副本存储节点的副本特征值和所述目标特征值,按照预设规则确定所述副本特征值或所述目标特征值对应的待修复的数据;
将所述多个数据块发送给所述待修复的数据所对应的副本存储节点,以进行数据修复;或者
接收所述副本节点发送的多个数据块,以进行数据修复。
实施本申请实施例,可以在主存储节点的目标特征值和多个副本存储节点的副本特征值不匹配的情况下,对目标特征值或副本特征值所对应的数据进行修复,可以避免再次进行压缩任务,在保证主存储节点和副本节点经过压缩后得到的数据在物理层面严格一致的同时,也提高了效率。
第三方面,提供了一种数据压缩的方法,所述方法包括:
向存储节点发送多个数据块,以使所述多个数据块存储在多个持久性存储日志PLog中,其中,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,每个数据块与一个SSTable文件对应,所述多个PLog属于持久性存储日志组PLog Group,其中,所述PLog Group存储在存储节点的存储分区中;
向所述存储节点发送压缩指令,以使所述存储节点根据所述压缩指令对所述多个数据块进行压缩,以得到压缩数据。
实施本申请实施例,数据库节点通过向存储节点发送多个数据块,以使存储节点将该多个数据块存储在PLog Group中的PLog中,可以保证该多个数据块存储在同一个存储分区中,进而保证存储在同一个存储节点上。此外,数据库节点向存储节点发送压缩指令,以使存储节点对存储在PLog Group中的PLog进行压缩,可以减小该存储节点与数据库节点之间的网络带宽消耗,而且通过对数据进行关联存储,还可以减小存储节点与存储节点之间的网络带宽消耗。
第四方面,提供了一种存储节点,所述存储节点包括:
通信模块,用于获取多个数据块,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,其中,每个数据块与一个SSTable文件对应;
处理模块,用于将所述多个数据块存储在多个持久性存储日志PLog中,所述多个PLog属于持久性存储日志组PLog Group,其中,所述PLog Group存储在存储节点的存储分区中;
所述处理模块,还用于对所述多个数据块进行压缩,以得到压缩数据。
在一个可选的实现方式中,所述通信模块还用于,获取副本节点发送的副本特征值,其中,所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本;
所述处理模块还用于,获取目标特征值,其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;将所述目标特征值和所述副本特征值进行匹配;在匹配成功的情况下,将所述压缩数据存储在所述存储节点中。
在一个可选的实现方式中,所述处理模块还用于,获取目标特征值;
所述通信模块还用于,将所述目标特征值发送给副本节点,以使所述副本节点将所述目标特征值和副本特征值进行匹配;
所述处理模块还用于,在匹配成功的情况下,将所述压缩数据存储在所述存储节点中;
其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本。
在一个可选的实现方式中,所述处理模块还用于:在匹配不成功的情况下,对所述多个数据块重新进行压缩。
在一个可选的实现方式中,所述副本节点包括多个副本存储节点,在匹配不成功的情况下,所述处理模块还用于,根据所述多个副本存储节点的副本特征值和所述目标特征值,按照预设规则确定所述副本特征值或所述目标特征值对应的待修复的数据;
所述通信模块还用于,将所述多个数据块发送给所述待修复的数据所对应的副本存储节点,以进行数据修复;或者,接收所述副本节点发送的多个数据块,以进行数据修复。
第五方面,提供了一种存储节点,所述存储节点包括:处理器、存储器和收发器,其中:
所述处理器、所述存储器和所述收发器相互连接,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行第二方面或第二方面任意一个可选的实现方式所述的方法。
第六方面,提供了一种数据库节点,所述数据库节点包括:
通信模块,用于向存储节点发送多个数据块,以使所述多个数据块存储在多个持久性存储日志PLog中,其中,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,每个数据块与一个SSTable文件对应,所述多个PLog属于持久性存储日志组PLogGroup,其中,所述PLog Group存储在存储节点的存储分区中;
处理模块,用于生成压缩指令;
所述通信模块还用于,向所述存储节点发送所述压缩指令,以使所述存储节点根据所述压缩指令对所述多个数据块进行压缩,以得到压缩数据。
第七方面,提供了一种数据库节点,所述数据库节点包括:处理器、存储器和收发器,其中:
所述处理器、所述存储器和所述收发器相互连接,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行第三方面所述的方法。
第八方面,提供了一种非瞬态的计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被存储设备的处理器执行时,使所述处理器执行上述第二方面或第二方面的任意一个可选的实现方式所描述的方法。
第九方面,提供了一种非瞬态的计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被服务器的处理器执行时,使所述处理器执行上述第三方面所描述的方法。
实施本申请实施例,存储节点通过在存储分区中划分物理线性地址存储空间PLogGroup,并利用该PLog Group中的多个PLog对获取到的数据块进行存储,可以实现对获取的数据块进行关联存储,保证获取到的数据存储在同一个存储分区中,进而保证存储在同一个存储节点上。此外,对存储的数据进行合并压缩,可以减小该存储节点与数据库节点之间的网络带宽消耗,而且通过对数据进行关联存储,还可以减小存储节点与存储节点之间的网络带宽消耗。
附图说明
图1为本申请实施例提供的一种计算存储分离的网络场景示意图;
图2为本申请实施例提供的一种数据压缩的方法的流程示意图;
图3为本申请实施例提供的一种存储逻辑映射关系示意图;
图4为本申请实施例提供的一种LSM Tree压缩逻辑示意图;
图5为本申请实施例提供的一种SSTable文件在磁盘上的组织方式示意图;
图6为本申请实施例提供的一种数据压缩示意图;
图7为本申请实施例提供的一种存储节点的结构示意图;
图8为本申请实施例提供的一种数据库节点的结构示意图;
图9为本申请实施例提供的另一种存储节点的结构示意图;
图10为本申请实施例提供的另一种数据库节点的结构示意图。
具体实施方式
首先介绍本申请实施例涉及的相关技术知识。
日志结构合并树(Log Structure Merge Tree,LSM Tree)是当前用在许多产品中的文件结构策略,例如Big Table、HBase和LevelDB等。LSM保持了日志文件写性能,以及微小的读操作性能损失,本质上让所有的操作顺序化,将随机写转换为顺序写。
数据库节点接收写入的数据并将该数据存储在数据库节点的内存中,等到内存容量达到阈值再集体写入存储节点中的磁盘内。采用LSM的数据库节点在将数据写入磁盘时,将所有的数据不组织成一个整体索引结构,而组织成有序的文件集,即将数据写入一个或几个新生成的文件,顺序写入且不能修改其它文件,存储节点的磁盘在存储写入的文件数据时,为每一个文件对应的数据分配一段线性逻辑存储空间。例如,在数据库RocksDB中,数据库节点使用内存中的memtable存储写入的数据,在该memtable达到阈值时,将其转换为immutable memtable,表示其不可更改与写入了,后台线程将该不可更改的immutablememtable以分类序列表文件(Sorted String Table File,SSTable File)的方式,将其所包含的数据刷新(flush)到磁盘上进行存储,同时新的memtable生成取代immutablememtable等待数据写入。此外,数据库通过分层次(level)管理写入的文件,即数据库在逻辑上将磁盘划分多个level来存储写入的文件数据,level与level之间互相隔离,这样就以写入时间线形成了逻辑上的层级结构,而非物理上的层级结构。
可以理解,如果一直保持生成新的文件,不仅写入会造成存储节点内的存储空间冗余,而且存储节点内的文件数目过多,查找也会变得更加困难,大大降低读的性能。所以需要高效的、周期性合并不同层级文件数据。例如RocksDB是使用LSM的键值(Key-Value)存储引擎,将所有写入的文件数据按关键值(key)排序,其key和value都是二进制流,保证能够高效合并压缩(compaction)。特别的,在将immutable memtable写入磁盘的过程中,数据库节点会做内联压缩(inline compaction),将immutable memtable提前进行数据合并的优化,这对短生命周期的数据有很大的写优化。
本申请的技术方案可以应用于计算存储分离的网络架构中,存储结构可以是分布式存储,还可以应用于其它网络架构中,本申请并不具体限定。
参见图1,图1是一种计算存储分离的网络场景示意图。在该网络架构中包括存储节点,数据库节点,以及与数据库节点进行通信的其它网络设备。数据库节点与网络中的多个设备进行通信,获取数据,并将该数据写入内存中。在写入内存的数据达到阈值后,数据库节点将数据写入存储节点中并对写入的数据进行分层管理,存储节点将该数据进行存储,存储节点可以有多个,它们在物理上可以是分离的,此外可以有多个存储节点对同一数据进行存储,进行灾难备份。
本申请实施例涉及的数据库节点,是接收数据写入并进行数据处理的设备,例如可以是服务器、个人计算机等。
本申请实施例涉及的存储节点,是对数据进行存储的设备,例如可以是服务器、存储阵列等。
本申请实施例涉及的与数据库节点进行通信的其它网络设备,是为数据库节点提供数据或获取数据的设备,例如可以是用户设备、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置。站点还可以是蜂窝电话、无绳电话、会话启动协议(session initiation protocol,SIP)电话、无线本地环路(wireless local loop,WLL)站、个人数字处理(personal digitalassistant,PDA)、具有无线通信功能的手持设备、计算设备或连接到无线调制解调器的其它处理设备、车载设备、可穿戴设备,未来5G网络中的终端设备或者未来演进的公用陆地移动通信网络(public land mobile network,PLMN)中的终端设备等,本申请实施例对此并不限定。
本申请提供一种数据压缩的方法,可以由存储节点执行压缩(compaction)功能,使compaction导致的网络流量(数据库的计算节点和存储节点以及存储节点和存储节点)变成存储节点内的磁盘数据读出和写入,可以有效减小网络带宽消耗,提升数据库的写性能以及对外性能的稳定性。
下面结合附图详细介绍本申请实施例的方法及相关装置。需要说明的是,本申请实施例的展示顺序仅代表实施例的先后顺序,并不代表实施例所提供的技术方案的优劣。
请参见图2,图2为本申请实施例提供的一种数据压缩的方法的流程示意图。如图2所示,该方法包括但不限于以下步骤:
S201:数据库节点向存储节点发送多个数据块,其中,所述多个数据块关联存储在所述存储节点中。
具体地,可以是分布式存储中的多个存储节点同时从数据库节点获取多个数据块,并将该多个数据块进行关联存储。
在一种可能的实现方式中,所述多个数据块关联为数据组,其中,所述数据组存储在所述存储节点的同一个分区中。
具体地,存储节点可以是分布式存储节点,在分布式存储中,存储节点提供相关联的多块地址空间,每一块地址空间包括多个逻辑线性地址空间,每一个逻辑线性地址空间表示一个数据块,而每一块相关联的地址空间表示一个数据组,为了叙述方便,可以将每一个逻辑线性地址空间称为存储日志(PLog),可以将相关联的每一块地址空间称为存储日志组(PLog Group),即一个PLog Group表示多个PLog关联形成的数据组,需要说明的是,同一个PLog Group中的相关联的多个PLog存储在存储节点的同一个存储分区中,而存储节点的一个存储分区可以包括一个或多个PLog Group。可以理解,该逻辑线性地址空间也可以使用其它名称,该相关联的每一块地址空间也可以使用其它名称,本申请并不对此做出限制。
由于一个PLog Group存储在存储节点的一个存储分区中,而每一个存储节点包括一个或多个存储分区,所以对于每一个存储分区来说,该存储分区上的所有数据一定存储在同一个存储节点上,即PLog Group内的所有PLog一定存储在同一个存储节点上。
在一种可能的实现方式中,所述多个数据块是根据多个SSTable文件映射得到,其中,所述多个数据块与所述多个SSTable文件存在一一对应关系。
具体地,存储节点从数据库节点获取多个SSTable文件,每一个数据块由唯一一个SSTable文件映射得到,存储节点将该SSTable文件所对应的数据存储在一个PLog中,即PLog与SSTable文件存在一一对应的关系。
进一步地,数据库节点可以通过内存中的memtable对不断写入的数据进行存储,memtable使用树结构来保持key的有序,active-memtable是当前正在提供写操作的memtable,当active-memtable写入超过阈值,会将这个memtable标记为read-only,这个read-only的memtable就是immutable memtable,表示这个memtable不可以再写入也不能更改,数据库节点会再次创建一个新的memtable以供新的写入。在immutable memtable的数量超过了阈值后,数据库节点会将其刷新到存储节点上,形成SSTable文件,值得说明的是,在刷新过程中,会对immutable memtable中的记录进行一次有序遍历,在这个过程中会去掉一些冗余的记录。存储节点将该SSTable文件映射得到一个数据块(即PLog),并将该SSTable文件所对应的数据存储在该PLog中。
参见图3,图3是一种数据压缩示意图。如图3所示,数据库节点包括两个数据库分区,每一个数据库分区对应管理一组SSTable文件,且每一个数据库分区对应的数据存储在存储节点上的一个PLog Group中,即每一个SSTable文件数据对应存储在存储节点中的一个PLog中,例如partition1中管理的SSTable1和SSTable2对应存储在存储节点的一个PLogGroup中的PLog1和PLog2上,此外一个PLog Group包含于存储节点的一个存储分区中,一个存储分区可以包含一个或多个PLog Group。存储节点包括一个主(primary)存储节点和两个副本节点,每个存储节点的结构都类似,且都对应存储了partition1所对应的数据,primary存储节点通过自身存储分区中的PLog Group中的PLog1和PLog2存储partition1所管理的SSTable1和SSTable2所对应的数据,两个副本节点通过自身存储分区中的PLogGroup中的PLog1’和PLog2’存储partition1所管理的SSTable1和SSTable2所对应的数据。数据库节点向primary存储节点发送压缩指令,primary存储节点接收到压缩指令后,本地压缩排序单元从自身内存中读取PLog1和PLog2,对其进行重新排序并压缩合并,将压缩合并后得到的数据重新写入自身内存PLog3中,并向其它两个副本节点转发该压缩指令,该两个副本节点根据该压缩指令后,本地压缩排序单元同时执行从自身内存中读取PLog1’和PLog2’,对其进行重新排序并压缩合并,将压缩合并后得到的数据重新写入自身内存PLog3’中。
为了更好的说明SSTable文件、PLog、PLog Group、存储分区和存储节点之间的映射对应关系,请参见图4,图4是一种存储逻辑映射关系示意图。如图4所示,一个数据库分区包括多个SSTable文件,一个PLog Group中包括多个PLog,数据库分区和PLog Group具有对应关系,即数据库分区中的每一个SSTable文件对应PLog Group中存储的每一个PLog,例如SSTable FileA对应存储的PLogA,SSTable FileB对应存储的PLogB,PLog Group和存储分区之间存在多对一的对应关系,即一个PLog Group存储在一个存储分区中,而一个存储分区可以包含一个或多个PLog Group,存储分区和存储节点之间也是存在多对一的对应关系,即一个存储分区一定存储在一个存储节点上,而一个存储节点可以包含一个或多个存储分区,图4中N为大于或等于1的整数。
可选地,数据库节点在接收写入的数据并生成SSTable文件时,会在该SSTable文件中携带数据库分区标识(partition ID),存储节点从数据库节点获取到多个SSTable文件,对partition ID相同的SSTable文件进行关联存储,即将partition ID相同的SSTable文件存储在同一个PLog Group中,进而保证partition ID相同的SSTable文件存储在同一个物理存储节点上。
或者是,数据库节点需要向存储节点写入SSTable文件对应的数据时,数据库节点会调用存储节点的存储写入接口,向存储节点申请获取一块地址空间(即PLog Group)以对数据库分区中的SSTable文件进行存储,存储节点会随机分配一个PLog Group的地址空间,并将该PLog Group的标识信息(group ID)返回给数据库节点,数据库节点在收到该groupID后,将该group ID加入数据库分区中的多个SSTable文件上,以使SSTable文件携带该group ID,并将其写入存储节点中。存储节点在获取到该多个SSTable文件后,根据其携带的group ID,将其存储在与该group ID相对应的PLog Group中,进而保证group ID相同的SSTable文件存储在同一个物理存储节点上。
可以看出,通过上述映射对应关系进行映射对应后,可以保证数据库节点在向存储节点写入SSTable文件对应的数据时,同一个数据库分区的SSTable文件存储在同一个PLog Group中,同时存储在同一个存储分区中,进而一定存储在同一个物理存储节点上,即数据库分区所对应的文件数据都存储在一个物理存储节点上,不会出现相关联的SSTable文件出现跨存储节点存储的情况。
S202:存储节点接收数据库节点发送的压缩指令,对所述多个数据块进行压缩以得到压缩数据。
具体地,SSTable文件在存储节点上是分层进行存储的,具体分为几层进行存储,可以根据需要进行设置,本申请对此不做限制。
值得说明的是,数据库节点在形成SSTable文件之后将该文件数据刷新到存储节点后是位于第0层(即level-0)上的。Level-0上包含的多个文件数据之间是无序的,但是单个文件内部数据是按key有序的。在其它层的文件数据之间以及文件内部数据都是按照key的大小有序排列的,而且高层的SSTable文件数据是通过低层的SSTable文件数据不断进行合并压缩得到,参见图5,图5是一种LSM Tree压缩逻辑示意图,如图5所示,level-0上的6个SSTable文件所对应的数据块之间是无序的,但每一个文件所对应的数据块内部的数据是有序排列的,对该6个数据块内的数据进行压缩(按key值排序合并),得到了level-1上的3个数据块,进一步地,对该3个数据块内的数据再进行压缩,得到level-2上的一个数据块。可以看出,通过对低层的数据块内的数据不断进行压缩,可以得到高层的数据块,而且在压缩后可以使得数据块的数量越来越少,即数据块对应的SSTable文件数量越来越少,得到的压缩后的数据块越来越大,即数据块对应的SSTable文件越来越大,可以有利于后续的查找和读取,提高系统的读性能。可以理解,图5只是示例性的对压缩过程进行了说明,对于压缩过程中所涉及的具体操作,本申请不做限制。
参见图6,图6是一种SSTable文件所对应的数据在磁盘上的组织方式示意图。可以看出,该磁盘分为两层对SSTable文件所对应的数据进行存储,分别对应level-0和level-1,其中,level-0上的文件所对应的数据之间是无序的,而且数据之间可能会有部分重叠(即key的值有交集),例如在level-0上的SSTable1的key的范围是02到18,SSTable2的key的范围是09到36,它们之间是无序且重叠的,但是level-1上的文件却是按照key的大小有序排列的,没有重叠,例如在level-1上的SSTable3的key的范围是00到25,SSTable4的key的范围是26到50,SSTable3和SSTable4之间是有序且没有重叠的,值得说明的是,图6只是在逻辑上对SSTable文件在磁盘上的组织方式进行了说明,并不代表在物理存储上,磁盘也是通过分层方式对SSTable文件所对应的数据进行物理存储。
可以理解,除了level-0,所有level上的文件所对应的数据都是整体有序,并且文件内的数据是有序排列的,若需要在某个level上查找某个key时,可以根据每个文件的开始键(start key)和结束键(end key)对所有文件数据进行二分查找来确定哪些文件数据可能包含key,再通过二分查找在候选的文件数据中定位key的准确位置。
进一步地,由于SSTable文件数据在存储节点内都是通过PLog进行存储的,即一个SSTable文件数据在存储节点通过一个PLog来进行存储,所以,对于SSTable文件数据进行压缩,实则是对存储节点内的两个PLog进行压缩,此外数据库计算节点触发压缩任务并将该压缩任务发送给存储节点,该压缩任务都是针对于PLog Group中存储的PLog,即压缩任务是具体对某一个PLog Group中的两个PLog进行压缩合并,而由于PLog Group中存储的PLog一定存储在同一个存储节点上,所以存储节点在执行压缩任务时,不需要跨节点访问需要压缩的数据,可以本地执行该压缩任务。
存储节点在接收到计算节点发送的压缩指令后,直接从内存中读取需要压缩的文件数据,对该文件数据进行压缩合并(即按照key值重新进行排序)得到压缩后的文件数据,存储节点将该压缩后的文件数据重新写入内存中,并向计算节点发送响应消息,以通知计算节点已完成压缩任务。
可选地,在分布式存储中,计算节点向主(primary)存储节点发送压缩指令,该primary存储节点本地执行压缩任务,并将该压缩指令发送给其它副本节点,通知其它副本节点也执行该压缩任务。例如,计算节点向primary存储节点发送compaction from PLogAand PLogB to PLogC,primary存储节点在本地(从自身内存)读取PLogA和PLogB对应的文件数据,对该数据进行排序合并,并将得到的结果写到PLogC上,同时primary存储节点通知其它副本节点执行同样的操作,完成压缩任务,这样,所有相关的存储节点(存储了PLogA和PLogB的存储节点)都会生成压缩之后的PLogC。
可以看出,存储节点在接收到数据库计算节点的压缩指令后,直接从本地读取待压缩数据执行压缩操作,并将压缩后的数据重新写入内存中,减小了数据库计算节点和存储节点之间的网络带宽消耗,此外,存储节点自身已经存储所有需要待压缩的数据,不会跨节点访问其它存储节点的数据,减小了存储节点之间的网络带宽消耗。
在一种可能的实现方式中,所述方法还包括:
获取副本节点发送的副本特征值,其中,所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本;
获取目标特征值,其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;
将所述目标特征值和所述副本特征值进行匹配;
在匹配成功的情况下,将所述压缩数据存储在所述存储节点中。
具体地,primary存储节点和其它副本节点完成压缩任务后,都得到了压缩后的数据并将其写入了本地内存中。由于primary存储节点和其它副本节点存储的待压缩数据一致,且执行的压缩操作也一致,故压缩后得到的数据在逻辑上应该是保持一致的,但是由于压缩后得到数据不是通过分布式存储的复制功能在各个节点达成一致性关系,所以需要在物理层面验证各个存储节点的数据是否严格一致,即验证primary存储节点和其它副本节点压缩后得到的数据是不是完全一致。
进一步地,primary存储节点向其它副本节点发送验证指令,副本节点在接收到验证指令后,对压缩后得到的数据进行读取,可以对读取到的数据利用哈希算法,例如安全散列算法(Secure Hash Algorithm,SHA),得到该数据对应的哈希值,副本节点将该哈希值发送给primary存储节点,primary存储节点通过同样的方式对自身内存中的压缩后得到的数据进行读取,并利用相同的哈希算法得到该数据的哈希值,primary存储节点对自身得到的哈希值和从副本节点处获得的哈希值进行比较,若完全一致,则表示primary存储节点和副本节点存储的数据在物理层面是严格一致的。primary存储节点将压缩后得到的数据所对应的PLog写入到分布式存储的分区映射表(partition map)中,例如PLogC->(node1,node2,node3),PLogC表示压缩后得到的数据所对应的PLog,node1、node2和node3表示不同的存储节点,这样,primary存储节点(例如node1)和其它存储了该数据的存储节点(例如node2和node3)就建立了存储层面上的副本关系,即node2和node3是node1的副本节点。在建立副本关系之后,可以利用分布式存储的追改(catchup)或重建流程来进行后续的故障处理。
在一种可能的实现方式中,所述方法还包括:
获取目标特征值,并将所述目标特征值发送给副本节点,以使所述副本节点将所述目标特征值和副本特征值进行匹配;
在匹配成功的情况下,将所述压缩数据存储在所述存储节点中;
其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本。
具体地,与上述方法类似,不同之处在于primary存储节点利用哈希算法得到压缩后的数据所对应的哈希值后,将该哈希值直接发送给副本节点,由副本节点来进行比较验证。副本节点在接收到primary存储节点发送的哈希值后,副本节点通过同样的方式,利用相同的哈希算法得到自身存储的压缩后的数据所对应的哈希值,并与primary存储节点发送的哈希值进行比较,若完全一致,则表示primary存储节点和副本节点存储的数据在物理层面是严格一致的,副本节点向primary存储节点发送确认消息,primary存储节点将压缩后得到的数据所对应的PLog写入到分布式存储的partition map中,与副本节点建立存储上的副本关系。
需要说明的是,上述方法是通过primary存储节点向副本节点发送压缩后的数据所对应的哈希值或副本节点向primary存储节点发送压缩后的数据所对应的哈希值的方式来验证primary存储节点和其它副本节点压缩后得到的数据在物理层面是不是完全一致,当然,还可以通过其它的方式来进行验证,例如,primary存储节点向副本节点发送压缩后的数据,或者是副本节点向primary存储节点发送压缩后的数据,或者是其它类似的方式,对于具体采用何种方式,本申请并不对此做出限制。
在一种可能的实现方式中,在匹配不成功的情况下,对所述多个数据块重新进行压缩,以得到新的压缩数据。
具体地,primary存储节点和副本节点得到的哈希值不一样,表示primary存储节点中的压缩后得到的数据与副本节点中的压缩后得到的数据在物理层面上是不一致的,这时primary存储节点不能将压缩后得到的数据所对应的PLog写入到分布式存储的partition map中,与副本节点建立存储上的副本关系。分布式存储系统可能会将直接将此次压缩任务认定为失败,这时primary存储节点和副本节点需要再次执行压缩任务,对待压缩的数据进行再次读取,排序合并和写入的操作,在完成之后,再次进行验证,直到primary存储节点中的压缩后得到的数据与副本节点中的压缩后得到的数据在物理层面上完成一致,primary存储节点将压缩后得到的数据所对应的PLog写入到分布式存储的partitionmap中,与副本节点建立存储上的副本关系。
在一种可能的实现方式中,所述副本节点包括多个副本存储节点,在匹配不成功的情况下,根据所述多个副本存储节点的副本特征值和所述目标特征值,按照预设规则确定所述副本特征值或所述目标特征值对应的待修复的数据;将所述多个数据块发送给所述待修复的数据所对应的副本存储节点,以进行数据修复;或者接收所述副本节点发送的多个数据块,以进行数据修复。
具体地,为了提高效率,避免再次进行压缩操作,在primary存储节点中的压缩后得到的数据与副本节点中的压缩后得到的数据在物理层面上是不一致的情况下,需要通过预设规则确定待修复的数据。预设规则可以是在所有的目标特征值和副本特征值中,与大多数不一致的值所对应的数据视为待修复数据。例如存在一个primary存储节点和4个副本存储节点,若4个副本存储节点中有一个或两个节点的哈希值与primary存储节点和余下的其它两个副本存储节点不一致,则primary存储节点将其内存中的压缩后得到的数据读取出来并将其发送给哈希值不一致的副本存储节点,该副本存储节点在接收到primary存储节点发送的数据后,直接将其写入自身内存中,以替代原来自身通过压缩后得到的数据,在替代完成后,该副本存储节点向primary存储节点发送确认消息,primary存储节点接收到该确认消息之后,将压缩后得到的数据所对应的PLog写入到分布式存储的partition map中,与副本节点建立存储上的副本关系。
或者是,若primary存储节点的哈希值与其它4个副本存储节点的哈希值不一致,则从该4个副本存储节点中任意选择一个副本存储节点,将其内存中的压缩后得到的数据读取出来并将其发送给primary存储节点,primary存储节点接收到数据之后,直接将其写入自身内存中,以替代原来自身通过压缩后得到的数据,在替代完成后,该primary存储节点向该副本存储节点发送确认消息并将压缩后得到的数据所对应的PLog写入到分布式存储的partitionmap中,与副本节点建立存储上的副本关系。
实施本申请实施例,存储节点可以执行compaction任务,能够减小数据库计算节点与存储节点之间的网络带宽消耗,此外,存储节点通过提供PLog Group对待压缩数据进行存储,可以保证不会跨节点访问其它存储节点的数据,减小了存储节点之间的网络带宽消耗,能够有效提升数据库性能的稳定性。
为了便于更好地实施本申请实施例的上述方案,相应地,下面还提供用于配合实施上述方案的相关装置。
参见图7,图7为本申请实施例提供的一种存储节点的结构示意图,该存储节点100至少包括:通信模块110和处理模块120;处理模块包括图3中所述的存储分区和本地压缩排序单元。
通信模块110,用于获取多个数据块,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,其中,每个数据块与一个SSTable文件对应;
处理模块120,用于将所述多个数据块存储在多个持久性存储日志PLog中,所述多个PLog属于持久性存储日志组PLog Group,其中,所述PLog Group存储在存储节点的存储分区中;
所述处理模块120还包括压缩排序模块130,用于对所述多个数据块进行压缩,以得到压缩数据。
在一个可选的实施例中,所述通信模块110还用于,获取副本节点发送的副本特征值,其中,所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本;
所述处理模块120还包括特征值获取模块140,用于获取目标特征值,其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;
所述处理模块120还包括匹配模块150,用于将所述目标特征值和所述副本特征值进行匹配;
所述处理模块120还包括存储模块160,用于在匹配成功的情况下,将所述压缩数据存储在所述存储节点中。
在一个可选的实施例中,所述特征值获取模块130,用于获取目标特征值;
所述通信模块110还用于,将所述目标特征值发送给副本节点,以使所述副本节点将所述目标特征值和副本特征值进行匹配;
所述存储模块160还用于,在匹配成功的情况下,将所述压缩数据存储在所述存储节点中;
其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本。
在一个可选的实施例中,所述压缩排序模块130还用于:在匹配不成功的情况下,对所述多个数据块重新进行压缩。
在一个可选的实施例中,所述副本节点包括多个副本存储节点,所述处理模块120还包括确定模块170,用于在匹配不成功的情况下,根据所述多个副本存储节点的副本特征值和所述目标特征值,按照预设规则确定所述副本特征值或所述目标特征值对应的待修复的数据;
所述通信模块110还用于,将所述多个数据块发送给所述待修复的数据所对应的副本存储节点,以进行数据修复;或者,接收所述副本节点发送的多个数据块,以进行数据修复。
参见图8,图8为本申请实施例提供的一种数据库节点的结构示意图,该数据库节点200至少包括:通信模块210和处理模块220;其中:
通信模块210,用于向存储节点发送多个数据块,以使所述多个数据块存储在多个持久性存储日志PLog中,其中,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,每个数据块与一个SSTable文件对应,所述多个PLog属于持久性存储日志组PLogGroup,其中,所述PLog Group存储在存储节点的存储分区中;
处理模块220,用于生成压缩指令;
所述通信模块210,还用于向所述存储节点发送所述压缩指令,以使所述存储节点根据所述压缩指令对所述多个数据块进行压缩,以得到压缩数据。
需要说明的是,本申请实施例中的各个功能模块还可以根据上述方法实施例中的方法具体实现,在此不再赘述。
上述各个模块可以为软件模块,存储节点和数据库节点执行代码实现各自的软件模块。
参见图9,图9为本申请实施例提供的另一种存储节点300。该存储节点300至少包括:处理器310、存储器320和收发器330,该处理器310、存储器320和收发器330通过总线340相互连接。
存储器320包括但不限于是随机存取存储器(Random Access Memory,RAM)、只读存储器(Read-Only Memory,ROM)或可擦除可编程只读存储器(Erasable ProgrammableRead-Only Mmory,EPROM或者快闪存储器),该存储器320用于存储相关指令及数据。
该收发器330可以包括一个接收器和一个发送器,例如,无线射频模块,以下描述的处理器310接收或者发送某个消息,具体可以理解为该处理器310通过该收发器330来接收或者发送。
处理器310可以是一个或多个中央处理器(Central Processing Unit,CPU),在处理器310是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
该存储节点300中的处理器310用于读取该存储器320中存储的程序代码,执行以下操作:
处理器310通过收发器330接收数据库节点发送的多个数据块,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,其中,每个数据块与一个SSTable文件对应。
处理器310将所述多个数据块存储在多个持久性存储日志PLog中,所述多个PLog属于持久性存储日志组PLog Group,其中,所述PLog Group存储在存储节点的存储分区中。
处理器310对所述多个数据块进行压缩,以得到压缩数据。
需要说明的是,各个操作的具体实现还可以根据上述方法实施例中的方法具体实现,此处不再赘述。
参见图10,图10为本申请实施例提供的另一种数据库节点400。该数据库节点400至少包括:处理器410、存储器420和收发器430,该处理器410、存储器420和收发器430通过总线440相互连接。
存储器420包括但不限于是随机存取存储器RAM、只读存储器ROM或可擦除可编程只读存储器EPROM,该存储器420用于存储相关指令及数据。
该收发器430可以包括一个接收器和一个发送器,例如,无线射频模块,以下描述的处理器410接收或者发送某个消息,具体可以理解为该处理器410通过该收发器430来接收或者发送。
处理器410可以是一个或多个中央处理器CPU,在处理器410是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
该数据库节点400中的处理器410用于读取该存储器420中存储的程序代码,执行以下操作:
处理器410通过收发器430向存储节点发送多个数据块,以使所述多个数据块存储在多个持久性存储日志PLog中,其中,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,每个数据块与一个SSTable文件对应,所述多个PLog属于持久性存储日志组PLog Group,其中,所述PLog Group存储在存储节点的存储分区中。
处理器410生成压缩指令。
处理器410通过收发器430向所述存储节点发送压缩指令,以使所述存储节点根据所述压缩指令对所述多个数据块进行压缩,以得到压缩数据。
需要说明的是,各个操作的具体实现还可以根据上述方法实施例中的方法具体实现,此处不再赘述。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机或处理器上运行时,使得计算机或处理器执行上述任一个数据压缩的方法中的一个或多个步骤。上述装置的各组成模块如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在所述计算机可读取存储介质中。
上述计算机可读存储介质可以是前述任一实施例所述的存储节点或数据库节点的内部存储单元,例如存储节点或数据库节点的硬盘或内存。上述计算机可读存储介质也可以是上述存储节点或数据库节点的外部存储设备,例如上述存储节点或数据库节点上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,上述计算机可读存储介质还可以既包括上述存储节点或数据库节点的内部存储单元也包括外部存储设备。上述计算机可读存储介质用于存储上述计算机程序以及上述存储节点或数据库节点所需的其他程序和数据。上述计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可通过计算机程序来指令相关的硬件来完成,该的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可存储程序代码的介质。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
Claims (17)
1.一种数据压缩系统,其特征在于,包括数据库节点和存储节点,其中:
所述数据库节点用于,向所述存储节点发送多个数据块和压缩指令;
所述存储节点用于,获取所述多个数据块,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,其中,每个数据块与一个SSTable文件对应;将所述多个数据块存储在多个持久性存储日志PLog中,所述多个PLog属于持久性存储日志组PLog Group,其中,所述PLog Group存储在所述存储节点的存储分区中;根据所述压缩指令,对所述多个数据块进行压缩,以得到压缩数据。
2.如权利要求1所述的系统,其特征在于,所述存储节点还用于:
获取副本节点发送的副本特征值,其中,所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本;
获取目标特征值,其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;
将所述目标特征值和所述副本特征值进行匹配;
在匹配成功的情况下,将所述压缩数据存储在所述存储节点中。
3.如权利要求1所述的系统,其特征在于,所述存储节点还用于:
获取目标特征值,并将所述目标特征值发送给副本节点,以使所述副本节点将所述目标特征值和副本特征值进行匹配;
在匹配成功的情况下,将所述压缩数据存储在所述存储节点中;
其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本。
4.如权利要求2或3所述的系统,其特征在于,在匹配不成功的情况下,所述存储节点还用于:对所述多个数据块重新进行压缩。
5.如权利要求2或3所述的系统,其特征在于,所述副本节点包括多个副本存储节点,在匹配不成功的情况下,所述存储节点还用于:
根据所述多个副本存储节点的副本特征值和所述目标特征值,按照预设规则确定所述副本特征值或所述目标特征值对应的待修复的数据;
将所述多个数据块发送给所述待修复的数据所对应的副本存储节点,以进行数据修复;或者
接收所述副本节点发送的多个数据块,以进行数据修复。
6.一种数据压缩的方法,其特征在于,包括:
存储节点获取多个数据块,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,其中,每个数据块与一个SSTable文件对应;
将所述多个数据块存储在多个持久性存储日志PLog中,所述多个PLog属于持久性存储日志组PLog Group,其中,所述PLog Group存储在所述存储节点的存储分区中;
对所述多个数据块进行压缩,以得到压缩数据。
7.如权利要求6所述的方法,其特征在于,所述方法还包括:
获取副本节点发送的副本特征值,其中,所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本;
获取目标特征值,其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;
将所述目标特征值和所述副本特征值进行匹配;
在匹配成功的情况下,将所述压缩数据存储在所述存储节点中。
8.如权利要求6所述的方法,其特征在于,所述方法还包括:
获取目标特征值,并将所述目标特征值发送给副本节点,以使所述副本节点将所述目标特征值和副本特征值进行匹配;
在匹配成功的情况下,将所述压缩数据存储在所述存储节点中;
其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本。
9.如权利要求7或8所述的方法,其特征在于,
在匹配不成功的情况下,对所述多个数据块重新进行压缩。
10.如权利要求7或8所述的方法,其特征在于,
所述副本节点包括多个副本存储节点,在匹配不成功的情况下,根据所述多个副本存储节点的副本特征值和所述目标特征值,按照预设规则确定所述副本特征值或所述目标特征值对应的待修复的数据;
将所述多个数据块发送给所述待修复的数据所对应的副本存储节点,以进行数据修复;或者
接收所述副本节点发送的多个数据块,以进行数据修复。
11.一种存储节点,其特征在于,包括:
通信模块,用于获取多个数据块,所述多个数据块包含多个分类序列表SSTable文件所对应的数据,其中,每个数据块与一个SSTable文件对应;
处理模块,用于将所述多个数据块存储在多个持久性存储日志PLog中,所述多个PLog属于持久性存储日志组PLog Group,其中,所述PLog Group存储在存储节点的存储分区中;
所述处理模块,还用于对所述多个数据块进行压缩,以得到压缩数据。
12.如权利要求11所述的存储节点,其特征在于,
所述通信模块还用于,获取副本节点发送的副本特征值,其中,所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本;
所述处理模块还用于,获取目标特征值,其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;将所述目标特征值和所述副本特征值进行匹配;在匹配成功的情况下,将所述压缩数据存储在所述存储节点中。
13.如权利要求11所述的存储设备,其特征在于,
所述处理模块还用于,获取目标特征值;
所述通信模块还用于,将所述目标特征值发送给副本节点,以使所述副本节点将所述目标特征值和副本特征值进行匹配;
所述处理模块还用于,在匹配成功的情况下,将所述压缩数据存储在所述存储节点中;
其中,所述目标特征值为所述存储节点对所述压缩数据进行特征提取得到的;所述副本特征值为对所述副本节点的副本压缩数据进行特征提取得到的,所述副本压缩数据是所述副本节点根据多个副本数据块进行压缩得到的,所述多个副本数据块是所述多个数据块的副本。
14.如权利要求12或13所述的存储设备,其特征在于,所述处理模块还用于:
在匹配不成功的情况下,对所述多个数据块重新进行压缩。
15.如权利要求12或13所述的存储设备,其特征在于,
所述副本节点包括多个副本存储节点,在匹配不成功的情况下,所述处理模块还用于,根据所述多个副本存储节点的副本特征值和所述目标特征值,按照预设规则确定所述副本特征值或所述目标特征值对应的待修复的数据;
所述通信模块还用于,将所述多个数据块发送给所述待修复的数据所对应的副本存储节点,以进行数据修复;或者,接收所述副本节点发送的多个数据块,以进行数据修复。
16.一种存储节点,其特征在于,包括:处理器、存储器和收发器,其中:
所述处理器、所述存储器和所述收发器相互连接,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求6至10任意一项所述的方法。
17.一种非瞬态的计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,使所述处理器执行如权利要求6至10任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810893734.5A CN110825706B (zh) | 2018-08-07 | 2018-08-07 | 一种数据压缩的方法和相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810893734.5A CN110825706B (zh) | 2018-08-07 | 2018-08-07 | 一种数据压缩的方法和相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110825706A true CN110825706A (zh) | 2020-02-21 |
CN110825706B CN110825706B (zh) | 2022-09-16 |
Family
ID=69533776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810893734.5A Active CN110825706B (zh) | 2018-08-07 | 2018-08-07 | 一种数据压缩的方法和相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110825706B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113688127A (zh) * | 2020-05-19 | 2021-11-23 | Sap欧洲公司 | 数据压缩技术 |
CN114780500A (zh) * | 2022-06-21 | 2022-07-22 | 平安科技(深圳)有限公司 | 基于日志合并树的数据存储方法、装置、设备及存储介质 |
CN115062567A (zh) * | 2022-07-21 | 2022-09-16 | 北京芯思维科技有限公司 | 图数据中邻接节点集合的缩合操作方法、装置及电子设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793425A (zh) * | 2012-10-31 | 2014-05-14 | 国际商业机器公司 | 用于分布式系统的数据处理方法及装置 |
CN105045917A (zh) * | 2015-08-20 | 2015-11-11 | 北京百度网讯科技有限公司 | 一种基于实例的分布式数据恢复方法和装置 |
US9633051B1 (en) * | 2013-09-20 | 2017-04-25 | Amazon Technologies, Inc. | Backup of partitioned database tables |
CN107247624A (zh) * | 2017-06-05 | 2017-10-13 | 安徽大学 | 一种面向Key‑Value系统的协同优化方法及系统 |
-
2018
- 2018-08-07 CN CN201810893734.5A patent/CN110825706B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103793425A (zh) * | 2012-10-31 | 2014-05-14 | 国际商业机器公司 | 用于分布式系统的数据处理方法及装置 |
US9633051B1 (en) * | 2013-09-20 | 2017-04-25 | Amazon Technologies, Inc. | Backup of partitioned database tables |
CN105045917A (zh) * | 2015-08-20 | 2015-11-11 | 北京百度网讯科技有限公司 | 一种基于实例的分布式数据恢复方法和装置 |
CN107247624A (zh) * | 2017-06-05 | 2017-10-13 | 安徽大学 | 一种面向Key‑Value系统的协同优化方法及系统 |
Non-Patent Citations (1)
Title |
---|
WEIXIN_34378767: "详解SSTable结构和LSMTree索引", 《HTTPS://BLOG.CSDN.NET/WEIXIN_34378767/?TYPE=BLOG》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113688127A (zh) * | 2020-05-19 | 2021-11-23 | Sap欧洲公司 | 数据压缩技术 |
CN114780500A (zh) * | 2022-06-21 | 2022-07-22 | 平安科技(深圳)有限公司 | 基于日志合并树的数据存储方法、装置、设备及存储介质 |
CN115062567A (zh) * | 2022-07-21 | 2022-09-16 | 北京芯思维科技有限公司 | 图数据中邻接节点集合的缩合操作方法、装置及电子设备 |
CN115062567B (zh) * | 2022-07-21 | 2023-04-18 | 北京芯思维科技有限公司 | 图数据中邻接节点集合的缩合操作方法、装置及电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN110825706B (zh) | 2022-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106657213B (zh) | 文件传输方法和装置 | |
US10331641B2 (en) | Hash database configuration method and apparatus | |
CN110222048B (zh) | 序列生成方法、装置、计算机设备及存储介质 | |
US9639501B1 (en) | Apparatus and methods to compress data in a network device and perform ternary content addressable memory (TCAM) processing | |
CN110825706B (zh) | 一种数据压缩的方法和相关设备 | |
CN111723148B (zh) | 数据存储方法及装置、存储介质、电子装置 | |
CN108614837B (zh) | 文件存储和检索的方法及装置 | |
CN114666212B (zh) | 配置数据下发方法 | |
CN112711612A (zh) | 数据处理方法、装置和存储介质及电子装置 | |
CN115408350A (zh) | 日志压缩、日志还原方法、装置、计算机设备和存储介质 | |
CN113434506B (zh) | 数据管理及检索方法、装置、计算机设备及可读存储介质 | |
CN116760661A (zh) | 数据存储方法、装置、计算机设备、存储介质和程序产品 | |
CN117075821A (zh) | 一种分布式存储方法、装置、电子设备及存储介质 | |
US20230199064A1 (en) | Data transmission method and system, apparatus, device, and medium | |
CN116976457A (zh) | 模型加载方法、推理系统、装置和计算机设备 | |
US20150269086A1 (en) | Storage System and Storage Method | |
CN110955496A (zh) | 内存处理方法及装置、存储介质、电子装置 | |
CN105830063B (zh) | 协调卷组中的小卷 | |
CN111274209B (zh) | 话单文件处理方法及装置 | |
CN111291230B (zh) | 特征处理方法、装置、电子设备及计算机可读存储介质 | |
CN114297196A (zh) | 元数据存储方法、装置、电子设备及存储介质 | |
CN112667607B (zh) | 一种历史数据的管理方法及相关设备 | |
CN110968267B (zh) | 数据管理方法、装置、服务器及系统 | |
CN116991812A (zh) | 文件压缩方法、装置、设备及存储介质 | |
CN112860488A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20220210 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Applicant after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Applicant before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TA01 | Transfer of patent application right | ||
GR01 | Patent grant | ||
GR01 | Patent grant |