CN117931796A - 用于分布式存储的数据处理方法、装置、设备及介质 - Google Patents
用于分布式存储的数据处理方法、装置、设备及介质 Download PDFInfo
- Publication number
- CN117931796A CN117931796A CN202311775863.1A CN202311775863A CN117931796A CN 117931796 A CN117931796 A CN 117931796A CN 202311775863 A CN202311775863 A CN 202311775863A CN 117931796 A CN117931796 A CN 117931796A
- Authority
- CN
- China
- Prior art keywords
- mapping
- data
- key value
- updated
- target
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 41
- 238000013507 mapping Methods 0.000 claims abstract description 578
- 230000011218 segmentation Effects 0.000 claims abstract description 164
- 238000000034 method Methods 0.000 claims abstract description 51
- 238000012545 processing Methods 0.000 claims description 74
- 238000004891 communication Methods 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 8
- 239000002131 composite material Substances 0.000 claims description 6
- 230000014509 gene expression Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 abstract description 30
- 101000608734 Helianthus annuus 11 kDa late embryogenesis abundant protein Proteins 0.000 description 15
- 238000010586 diagram Methods 0.000 description 13
- 238000012986 modification Methods 0.000 description 13
- 230000004048 modification Effects 0.000 description 13
- 238000013500 data storage Methods 0.000 description 11
- 230000004044 response Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 230000018109 developmental process Effects 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本公开涉及一种用于分布式存储的数据处理方法、装置、设备及介质,上述方法包括:接收基于目标字段和目标字段值的查询请求;在预先构建的至少一个映射表中确定目标字段值对应的目标映射表;映射表包含原数据表中切分键的取值与映射键的取值之间的映射关系,映射键包含目标字段;在目标映射表中确定与目标字段值对应的目标切分键取值;根据用于切分原数据表的第一预设分布式存储路由算法,确定目标切分键取值对应的目标分表;向目标分表查询目标切分键取值对应的目标数据对象。这一查询过程中能够实现目标分表的精确定位,无需遍历原数据表拆分后的所有数据分表,极大地提升了在分布式存储场景下基于非切分键进行数据查询时的数据查询效率。
Description
技术领域
本公开涉及数据库技术领域,尤其涉及一种用于分布式存储的数据处理方法、装置、设备及介质。
背景技术
随着数据存储规模越来越大且数据存储需求的多样化,对数据库的性能要求越来越高。为了满足数据库的高并发性能和实时响应效率等需求,相关技术中提出了分库分表的方案,即通过对数据库或数据表至少之一进行拆分,以解决单一数据库和单一数据表的性能瓶颈问题。例如,可以把包含订单数据、用户数据和商品数据的单个数据库拆分成多个数据库,诸如订单数据库、用户数据库和商品数据库,可以缓解在响应数据处理请求过程中的读写压力。针对一个数据规模较大的数据表,在进行数据查询过程中查询效率低下,相应会影响业务响应效率,因此通常也需要进行数据表拆分,将单一数据表的数据按照一些拆分策略拆分至多个数据表中。
在实现本公开构思的过程中,发明人发现相关技术中至少存在如下技术问题:一般用于数据库或数据表拆分的字段描述为切分键,在对分布式存储数据进行查询的过程中,经常会存在对非切分键进行查询的需求,这种情况下一般都需要扫描全部的分表,查询效率低下。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本公开的实施例提供了一种用于分布式存储的数据处理方法、装置、设备及介质。
第一方面,本公开的实施例提供一种用于分布式存储的数据处理方法。上述数据处理方法包括:接收基于目标字段和目标字段值的查询请求;在预先构建的至少一个映射表中确定上述目标字段值对应的目标映射表;上述映射表包含原数据表中切分键的取值与映射键的取值之间的映射关系,上述映射键包含上述目标字段;在上述目标映射表中确定与上述目标字段值对应的目标切分键取值;根据用于切分原数据表的第一预设分布式存储路由算法,确定上述目标切分键取值对应的目标分表;向上述目标分表查询上述目标切分键取值对应的目标数据对象。
根据本公开的实施例,上述数据处理方法还包括:预先构建映射表。上述预先构建映射表,包括:将原数据表中的至少一个待查询字段确定为映射键;根据上述原数据表中切分键的取值与上述映射键的取值之间的映射关系,构建初始映射表;根据上述初始映射表的数据量规模或查询效率设定指标,确定是否需要对上述初始映射表进行分布式存储处理;在需要对上述初始映射表进行分布式存储处理的情况下,将上述映射键作为切分键,基于第二预设分布式存储路由算法对上述初始映射表进行分布式存储处理,得到多个分布式映射表,上述多个分布式映射表作为构建好的映射表;在不需要对上述初始映射表进行分布式存储处理的情况下,上述初始映射表作为构建好的映射表。
根据本公开的实施例,上述映射表为多个分布式映射表,上述分布式映射表是由上述映射键基于第二预设分布式存储路由算法进行数据切分得到的。其中,在预先构建的至少一个映射表中确定上述目标字段值对应的目标映射表,包括:根据第二预设分布式存储路由算法,在预先构建的多个分布式映射表中确定上述目标字段值对应的目标分布式映射表。
根据本公开的实施例,上述数据处理方法还包括:接收数据更新信息;根据上述数据更新信息,确定待更新映射表和待更新分表,并对上述待更新映射表和上述待更新分表进行数据更新处理。
根据本公开的实施例,上述数据更新信息包括:新增第一数据的第一操作指令。根据上述数据更新信息,确定待更新映射表和待更新分表,并对上述待更新映射表和上述待更新分表进行数据更新处理,包括:解析上述第一操作指令,得到上述第一数据中的第一切分键取值和第一映射键取值;根据第一预设分布式存储路由算法,确定上述第一切分键取值对应的第一待更新分表,并在上述第一待更新分表中写入上述第一数据;根据第二预设分布式存储路由算法,确定上述第一映射键取值对应的第一待更新映射表,并在上述第一待更新映射表中写入上述第一切分键取值和上述第一映射键取值,得到上述第一切分键取值和上述第一映射键取值之间的映射关系;其中,上述第二预设分布式存储路由算法用于进行映射表的分布式存储切分。
根据本公开的实施例,上述数据更新信息包括:将第二数据修改为第三数据的第二操作指令。根据上述数据更新信息,确定待更新映射表和待更新分表,并对上述待更新映射表和上述待更新分表进行数据更新处理,包括:解析上述第二操作指令,得到上述第二数据对应的第二切分键取值和第二映射键取值与上述第三数据对应的第三切分键取值和第三映射键取值;比较上述第二切分键取值与上述第三切分键取值是否存在差异,并比较上述第二映射键取值和上述第三映射键取值是否存在差异;在上述第二切分键取值与上述第三切分键取值存在差异、且上述第二映射键取值与上述第三映射键取值无差异的情况下,根据第一预设分布式存储路由算法,确定上述第二切分键取值对应的第二待更新分表,并在上述第二待更新分表中删除上述第二数据;根据第一预设分布式存储路由算法,确定上述第三切分键取值对应的第三待更新分表,并在上述第三待更新分表中写入上述第三数据;根据第二预设分布式存储路由算法,确定上述第二映射键取值对应的第二待更新映射表,并在上述第二待更新映射表中将上述第二切分键取值替换为上述第三切分键取值,得到上述第三切分键取值和上述第二映射键取值之间的映射关系;其中,上述第二预设分布式存储路由算法用于进行映射表的分布式存储切分。
根据本公开的实施例,根据上述数据更新信息,确定待更新映射表和待更新分表,并对上述待更新映射表和上述待更新分表进行数据更新处理,还包括:在上述第二切分键取值与上述第三切分键取值存在差异、且上述第二映射键取值与上述第三映射键取值存在差异的情况下,根据第一预设分布式存储路由算法,确定上述第二切分键取值对应的第二待更新分表,并在上述第二待更新分表中删除上述第二数据;根据第一预设分布式存储路由算法,确定上述第三切分键取值对应的第三待更新分表,并在上述第三待更新分表中写入上述第三数据;根据上述第二预设分布式存储路由算法,确定上述第二映射键取值对应的第二待更新映射表,并在上述第二待更新映射表中删除上述第二映射键取值和上述第二切分键取值;根据上述第二预设分布式存储路由算法,确定上述第三映射键取值对应的第三待更新映射表,并在上述第三待更新映射表中写入上述第三映射键取值和上述第三切分键取值,得到上述第三映射键取值和上述第三切分键取值之间的映射关系。
根据本公开的实施例,根据上述数据更新信息,确定待更新映射表和待更新分表,并对上述待更新映射表和上述待更新分表进行数据更新处理,还包括:在上述第二切分键取值与上述第三切分键取值无差异、且上述第二映射键取值与上述第三映射键取值存在差异的情况下,根据第一预设分布式存储路由算法,确定上述第二切分键取值对应的第二待更新分表,并在上述第二待更新分表中将上述第二数据替换为上述第三数据,其中包含:将上述第二映射键取值替换为上述第三映射键取值;根据第二预设分布式存储路由算法,确定上述第二映射键取值对应的第二待更新映射表,并在上述第二待更新映射表中删除上述第二映射键取值和上述第二切分键取值;根据第二预设分布式存储路由算法,确定上述第三映射键取值对应的第三待更新映射表,并在上述第三待更新映射表中写入上述第三映射键取值和上述第三切分键取值,得到上述第三映射键取值和上述第三切分键取值之间的映射关系。
根据本公开的实施例,上述数据更新信息包括:删除第四数据的第三操作指令。根据上述数据更新信息,确定待更新映射表和待更新分表,并对上述待更新映射表和上述待更新分表进行数据更新处理,包括:解析上述第三操作指令,得到上述第三数据对应的第四切分键取值和第四映射键取值;根据第一预设分布式存储路由算法,确定上述第四切分键取值对应的第四待更新分表,并在上述第四待更新分表中删除上述第四数据;根据第二预设分布式存储路由算法,确定上述第四映射键取值对应的第四待更新映射表,并在上述第四待更新映射表中删除上述第四映射键取值和上述第四切分键取值。
根据本公开的实施例,在上述待更新映射表为上述目标映射表的情况下,在数据更新处理后的目标映射表中确定与上述目标字段值对应的目标切分键取值;在上述待更新分表为上述目标分表的情况下,向数据更新处理后的目标分表查询上述目标切分键取值对应的目标数据对象。
根据本公开的实施例,上述映射表中,映射键的取值包含以下表示方式至少一种:采用映射字段取值的形式进行表示;采用映射字段名称和映射字段取值组合的形式进行表示;采用多个查询字段逻辑组合后的复合查询字段取值的形式进行表示。
第二方面,本公开的实施例提供一种用于分布式存储的数据处理装置。上述数据处理装置包括:请求接收模块、映射表定位模块、切分键确定模块、分表定位模块和查询模块。上述请求接收模块用于接收基于目标字段和目标字段值的查询请求。上述映射表定位模块用于在预先构建的至少一个映射表中确定上述目标字段值对应的目标映射表;上述映射表包含原数据表中切分键的取值与映射键的取值之间的映射关系,上述映射键包含上述目标字段。上述切分键确定模块用于在上述目标映射表中确定与上述目标字段值对应的目标切分键取值。上述分表定位模块用于根据用于切分原数据表的第一预设分布式存储路由算法,确定上述目标切分键取值对应的目标分表。上述查询模块用于向上述目标分表查询上述目标切分键取值对应的目标数据对象。
第三方面,本公开的实施例提供了一种电子设备。上述电子设备包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;存储器,用于存放计算机程序;处理器,用于执行存储器上所存放的程序时,实现如上所述的用于分布式存储的数据处理方法。
第四方面,本公开的实施例提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的用于分布式存储的数据处理方法。
本公开实施例提供的上述技术方案至少具有如下优点的部分或全部:
本公开实施例提供的数据处理方法中,原数据表是指进行分布式存储处理(例如为分库分表处理)前的数据表,通过构建原数据表中切分键的取值与映射键的取值之间的映射关系,由于映射键包含作为查询字段的目标字段,映射键可以是原数据表中的非切分键(在特例情况下也可以是切分键),那么在接收到查询请求之后,能够通过确定目标字段值对应的目标映射表,并根据目标映射表中切分键的取值与映射键的取值之间的映射关系查找到与目标字段值对应的目标切分键取值,并根据用于切分原数据表的第一预设分布式存储路由算法,定位到目标切分键取值对应的目标分表;向目标分表查询目标切分键取值对应的目标数据对象,这一查询过程中能够实现目标分表的精确定位,无需遍历原数据表拆分后的所有数据分表,极大地提升了在分布式存储场景下基于非切分键进行数据查询时的数据查询效率;而且映射表也支持分库分表存储,在数据量规模越来越大的场景下有助于提升并发查询响应性能。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。
为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示意性地示出了适用于本公开实施例的用于分布式存储的数据处理方法的系统架构;
图2示意性地示出了根据本公开一实施例的用于分布式存储的数据处理方法的流程图;
图3示意性地示出了根据本公开一实施例的(a)关于订单数据的原数据表DS1和基于订单号作为切分键进行分布式存储切分后得到的(b)一个数据分表DS11和(c)另一个数据分表DS12的示例;
图4A示意性地示出了根据本公开一实施例的关于订单数据的映射表的一种示例;
图4B示意性地示出了根据本公开一实施例的关于订单数据的映射表的另一种示例;
图5示意性地示出了根据本公开另一实施例的用于分布式存储的数据处理方法的流程图;
图6示意性地示出了根据本公开又一实施例的用于分布式存储的数据处理方法的流程图;
图7示意性地示出了根据本公开一实施例的(a)对待更新分表进行数据新增处理后的结果示意图和(b)对待更新映射表进行数据新增处理后的结果示意图;
图8示意性地示出了根据本公开一实施例的(a1)对待更新分表进行数据修改处理过程中删除其中一个分表中的数据和(a2)在另一个分表中新增数据的过程示意图;(b)对待更新映射表进行数据修改处理的过程示意图;
图9示意性地示出了根据本公开一实施例的(a1)对待更新分表进行数据修改处理过程中删除其中一个分表中的数据和(a2)在另一个分表中新增数据的过程示意图;(b1)对待更新映射表进行数据修改处理的过程中对其中一个分布式映射表中的映射关系删除和(b2)在新定位的分布式映射表中新增映射关系的过程示意图;
图10示意性地示出了根据本公开一实施例的(a)对待更新分表进行数据修改处理过程中进行数据修改替换的过程示意图;(b1)对待更新映射表进行数据修改处理的过程中对其中一个分布式映射表中的映射关系删除和(b2)在新定位的分布式映射表中新增映射关系的过程示意图;
图11示意性地示出了根据本公开实施例的用于分布式存储的数据处理装置的结构框图;
图12示意性地示出了本公开实施例提供的电子设备的结构框图。
具体实施方式
为使本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于本公开中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
图1示意性地示出了适用于本公开实施例的用于分布式存储的数据处理方法的系统架构。
参照图1所示,适用于本公开实施例的用于分布式存储的数据处理方法的系统架构100,包括:数据存储需求端110和存储服务端120。
数据存储需求端110与存储服务端120之间通过网络进行数据通信。
数据存储需求端110为具有数据存储需求的各种电子设备,诸如:安装有各类应用的终端设备、为各类应用提供数据处理服务的应用服务器等。上述应用包含但不限于是:购物类应用、网页浏览器应用、视频播放类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件、软件开发类应用、运维类工具、网络安全防护类应用等等。
存储服务端120用于为数据存储需求端110提供数据存储服务。存储服务端120可以是各种类型的数据服务器,也可以是分布式服务集群,还可以是分布式服务集群中的主服务节点。可以是基于物理机来构建存储服务端,或者由云服务作为存储服务端、或由虚拟主机作为提供数据存储服务的存储服务端等。
在一些实施例中,参照图1中单点划线所示,示意了分布式存储集群的一种示例性的架构,在该分布式存储集群的架构中,存储服务端120可以作为对接至上述分布式存储集群的接口和管理层;分布式存储集群内存储有映射表和原数据表进行分库分表存储后的数据分表,存储服务端120对分布式存储集群中的映射表和数据分表具有设定访问权限,例如具有增(新增数据)、删(删除数据)、查(查询数据)、改(修改数据)等至少一种权限。
上述映射表是由上述存储服务端120预先构建得到的。原数据表中的数据是进行分库分表存储的。
上述映射表包含原数据表中切分键的取值与映射键的取值之间的映射关系;上述映射键为上述原数据表中的非切分键且包含作为查询字段的目标字段,这里以映射表也是按照分库分表进行存储的方式进行示例,例如图1中示意的分布式映射表Map11和分布式映射表Map12;在其他实施例中,在映射表的数据量较小的情况下,可以通过一张映射表来存储上述映射关系对应的数据。
上述原数据表是指进行分布式存储处理(例如为分库分表处理)前的数据表,这一数据表本身可以是未经过拆分的原始数据表,或者经过拆分后又需要进行二次拆分前的数据分表。
分库分表的含义可以是仅进行数据库拆分,或者仅进行数据表拆分,或者同时进行数据库和数据表的拆分,参照图1所示,以原数据表K拆分至数据库1和数据库2中、以及拆分为三个数据分表K1~K3作为示例;以原数据表S拆分至数据库2和数据库3中、以及拆分为两个数据分表S1~S2作为示例。可以理解的是,有的数据表可以不进行拆分,例如数据库3中的数据表R,未进行分库分表操作。
在一些实施例中,参照图1中双点划线所示,示意了分布式存储集群的另一种示例性的架构,在该分布式存储集群的架构中,存储服务端120作为分布式存储集群的一个存储节点,该存储节点自身可以用于进行数据存储,还可以作为其他存储节点的管理节点,例如存储服务端为分布式存储集群中的主节点,用于管理其他从节点。分布式存储集群用于存储映射表和各个数据分表,映射表和数据分表可以存储于存储服务端、分散存储于存储服务端和其他存储节点、或者分散存储于存储服务端之外的其他存储节点中。
本公开的第一个示例性实施例提供一种用于分布式存储的数据处理方法。本实施例提供的用于分布式存储的数据处理方法可以由上述系统架构100中的存储服务端120执行。在其他实施例中,由能够对分布式存储数据进行数据访问(例如执行数据查询操作、或者除了进行数据查询还可以执行数据更新操作)的主体来实现上述数据处理方法。
图2示意性地示出了根据本公开一实施例的用于分布式存储的数据处理方法的流程图。
参照图2所示,本公开实施例提供的用于分布式存储的数据处理方法,包括以下步骤:S210、S220、S230、S240和S250。
在步骤S210,接收基于目标字段和目标字段值的查询请求。
在一些实施例中,上述目标字段为原数据表的非切分键。在一些特例情况下,上述目标字段也可以是原数据表中的切分键,这种情况下,构建的映射表中映射关系的两个对象是相同的对象,属于特例情况,下文主要介绍映射关系中两个对象是不同对象的情形,即目标字段为非切分键的情形。
上述原数据表是指进行分布式存储处理(例如为分库分表处理)前的数据表,这一数据表本身可以是未经过拆分的原始数据表,或者经过拆分后又需要进行二次拆分前的数据分表。
分库分表的含义可以是仅进行数据库拆分,或者仅进行数据表拆分,或者同时进行数据库和数据表的拆分。
图3示意性地示出了根据本公开一实施例的(a)关于订单数据的原数据表DS1和基于订单号作为切分键进行分布式存储切分后得到的(b)一个数据分表DS11和(c)另一个数据分表DS12的示例。
参照图3中(a)所示,示例了关于订单数据的原数据表DS1,该原数据表DS1包含多个字段,诸如A~D等,以A表示订单号、B表示商品ID(标识,可以是商品名称、商品编号等)、C表示买家ID、D表示卖家ID作为示例。为了简要说明,以原数据表DS1包含4条数据作为示例,实际上原数据表的数据规模可以达几百万甚至亿级以上的级别。
每条数据对应为上述原数据表DS1的一行,具体可以包含A~D等字段的取值。
例如,第一条订单数据T11为:{订单号-A1(例如为OD123456780),商品ID-B1(例如为sp_0001),买家ID-C1(例如为by_0001),卖家ID-D1(例如为sel_0001),……}。
第二条订单数据T12为:{订单号-A2(例如为OD123456781),商品ID-B2(例如为sp_0002),买家ID-C2(例如为by_0002),卖家ID-D2(例如为sel_0002),……}。
第三条订单数据T13为:{订单号-A3(例如为OD123456782),商品ID-B3(例如为sp_0003),买家ID-C1(例如为by_0001),卖家ID-D1(例如为sel_0001),……}。
第四条订单数据T14为:{订单号-A4(例如为OD123456783),商品ID-B1(例如为sp_0001),买家ID-C3(例如为by_0003),卖家ID-D3(例如为sel_0003),……}。
将订单号(字段A)作为进行分布式存储的切分键,在图3中(a)以虚线框选取了切分键和对应的切分键取值,按照预设的分布式存储路由算法,对原数据表DS1进行分库分表处理,参照图3中(a)的虚线框引出的单点划线和双点划线两个分支箭头所示,得到图3中(b)和(c)分别示意的两个数据分表DS11和DS12。本公开的实施例中,为了区别描述用于进行原数据表切分的分布式存储路由算法和用于进行映射表切分的分布式存储路由算法,将用于进行原数据表切分的分布式存储路由算法描述为第一预设分布式存储路由算法,将用于进行映射表切分的分布式存储路由算法描述为第二预设分布式存储路由算法。
上述第一预设分布式存储路由算法和第二预设分布式存储路由算法可以是基于取值范围进行路由、或者基于哈希算法进行路由等。例如,在第一预设分布式存储路由算法中,根据订单号(原数据表的切分键的一种示例)所处的不同范围对应路由至不同的数据分表进行存储;或者,计算订单号的哈希值结果,该哈希值结果即为数据分表的表序号,则通过确定订单号的哈希值可以路由到对应的数据分表。例如,订单号取值A1和A2对应的订单数据划分至数据分表DS11,订单号取值A3和A4对应的订单数据划分至数据分表DS12。
类似的,在第二预设分布式存储路由算法中,根据买家ID(映射表的切分键的一种示例)所处的不同范围对应路由至不同的分布式映射表进行存储;或者,计算买家ID的哈希值结果,该哈希值结果即为分布式映射表的表序号,则通过确定买家ID的哈希值可以路由到对应的分布式映射表。需要说明的是,只要能够实现数据切分的分布式存储路由算法都在本公开的保护范围之内。
参照图3中(b)和(c)所示,数据分表DS11包含上述第一条订单数据和上述第二条订单数据;数据分表DS12包含上述第三条订单数据和上述第四条订单数据。
在查询场景中,上述查询请求中的目标字段作为查询字段,可以是一个目标字段或多个目标字段,即通过查询与一个目标字段的目标字段值相匹配的目标数据对象,或者查询同时与多个目标字段的目标字段值相匹配的目标数据对象。作为示例,参照图3中(a)的虚线椭圆所示,示意了将原数据表DS1中的买家ID(即为字段C)作为查询请求中的目标字段。例如,查询请求中携带的是:目标字段C和目标字段值C1,即该查询请求为查询买家C1对应的订单数据。
在步骤S220,在预先构建的至少一个映射表中确定上述目标字段值对应的目标映射表;上述映射表包含上述原数据表中切分键的取值与映射键的取值之间的映射关系,上述映射键为上述原数据表中的非切分键且包含上述目标字段。
在一些实施例中,映射表可以是由一张数据表进行映射关系的存储,也可以是进行分布式存储。
图4A示意性地示出了根据本公开一实施例的关于订单数据的映射表的一种示例。
参照图4A所示,以映射表为单一的一张数据表进行上述映射关系的数据存储进行示例,映射表Map101中存储有原数据表中切分键的取值与映射键的取值之间的映射关系,这里以字段A(订单号)作为切分键、字段C(买家ID)作为映射键进行示例,映射表Map101存储的映射关系的数据包括:A1-C1,A2-C2,A3-C1,A4-C3。
由于该实施例中映射表并未进行分布式存储,则可以确定上述目标字段值C1对应的目标映射表即为映射表Map101。
图4B示意性地示出了根据本公开一实施例的关于订单数据的映射表的另一种示例。
在另一些实施例中,考虑到随着原数据表中的数据规模逐步变大,映射表所存储的数据规模也会随之增加,因此设置映射表也支持分库分表存储,在数据量规模越来越大的场景下有助于提升并发查询响应性能。本实施例中,上述映射表为进行分布式存储得到的多个分布式映射表,上述分布式映射表是由上述映射键基于第二预设分布式存储路由算法进行数据切分得到的。参照图4B所示,示意了基于映射键(字段C)进行映射表数据的分布式存储得到两个分布式映射表的情形,例如基于字段C这一映射键进行映射表的数据切分,将映射键取值为C1和C2的映射关系存储至分布式映射表Map111;将映射键取值为C3的映射关系存储至分布式映射表Map112。
在本实施例中,由于映射表是基于分布式存储进行切分得到的多个分布式映射表,则在预先构建的至少一个映射表中确定上述目标字段值对应的目标映射表,包括:根据第二预设分布式存储路由算法,在预先构建的多个分布式映射表中确定上述目标字段值对应的目标分布式映射表,上述目标分布式映射表即为目标映射表。
例如,基于第二预设分布式存储路由算法,可以确定上述目标字段值C1对应的目标分布式映射表为Map111。
在步骤S230,在上述目标映射表中确定与上述目标字段值对应的目标切分键取值。
针对图4A示例的单一映射表的情形,在映射表Map101中查询买家C1(即映射键取值为C1)所对应的映射关系数据,得到包含目标字段值C1的映射关系有两组:A1-C1和A3-C1,由此确定与目标字段值C1对应的目标切分键取值有两个:A1和A3。这里的目标切分键取值是指针对原数据表的切分键的取值。
针对图4B示例的分布式映射表的情形,在目标分布式映射表Map111中查询买家C1(即映射键取值为C1)所对应的映射关系数据,得到包含目标字段值C1的映射关系有两组:A1-C1和A3-C1,由此确定与目标字段值C1对应的目标切分键取值有两个:A1和A3。
在步骤S240,根据用于切分原数据表的第一预设分布式存储路由算法,确定上述目标切分键取值对应的目标分表。
根据第一预设分布式存储路由算法,可以确定目标切分键取值A1对应的目标分表为数据分表DS11,目标切分键取值A3对应的目标分表为数据分表DS12。
在步骤S250,向上述目标分表查询上述目标切分键取值对应的目标数据对象。
例如,向数据分表DS11查询目标切分键取值A1对应的目标数据对象为第一条订单数据T11;向数据分表DS12查询目标切分键取值A3对应的目标数据对象为第三条订单数据T13。
在包含步骤S210~S250的实施例中,通过构建原数据表中切分键的取值与映射键的取值之间的映射关系,由于映射键包含作为查询字段的目标字段,映射键可以是原数据表中的非切分键(在特例情况下也可以是切分键),那么在接收到查询请求之后,能够通过确定目标字段值对应的目标映射表,并根据目标映射表中切分键的取值与映射键的取值之间的映射关系查找到与目标字段值对应的目标切分键取值,并根据用于切分原数据表的第一预设分布式存储路由算法,定位到目标切分键取值对应的目标分表;向目标分表查询目标切分键取值对应的目标数据对象,这一查询过程中能够实现目标分表的精确定位,无需遍历原数据表拆分后的所有数据分表,极大地提升了在分布式存储场景下基于非切分键进行数据查询时的数据查询效率;而且映射表也支持分库分表存储,在数据量规模越来越大的场景下有助于提升并发查询响应性能。
图5示意性地示出了根据本公开另一实施例的用于分布式存储的数据处理方法的流程图。
根据本公开的实施例,参照图5所示,用于分布式存储的数据处理方法除了包括上述步骤S210~S250之外,还包括虚线框示意的步骤S500:预先构建映射表。该步骤S500在步骤S220之前执行。
上述步骤S500包括以下具体执行步骤:S510、S520、S530、S541和S542。
在步骤S510,将原数据表中的至少一个待查询字段确定为映射键。
例如,将待查询字段(字段C):买家ID,确定为映射键。在一些实施例中,待查询字段为非切分键。一般而言,上述映射关系中存储的均是两个不同字段对象的取值之间的对应关系。
在一些特例中,如果待查询字段为切分键,则进行查询时可以直接基于切分键所对应的第一预设路由算法确定对应的目标分表。这种特例情况下,也可以应用构建映射表的思路进行查询,作为一种映射键与切分键为相同对象(均为切分键)的特例。
在一些实施例中,映射表主要字段包括映射键(mp_key)和切分键(pr_key)。映射表可以分库分表存储,映射表的切分键是映射键(mp_key)。
在一些实施例中,映射表中的映射键的字段取值采用字段名称+“#”+字段值的形式进行表示;在一个映射键下可以对应多个类型的字段名称(可以对应于多个待查询字段进行查询的场景)。在待查询字段的个数为1个的情况下,映射表的具体形式可以参照图4A和图4B所示的映射表形式所示,或者以字段名称+“#”+字段值的形式进行表示。在待查询字段为多个的情况下,将买家ID(采用buyer_no表示)和卖家ID(采用seller_no)同时作为待查询字段,订单号(order_no)作为切分键,可以在映射键下以字段名称+“#”+字段值的形式来表示映射键取值,具体可以采用下面表1所示的映射表中映射键的字段取值形式。可以理解的是,#是一种连接对应符号的示例,可以替换成其他合理的符号。只要映射键的取值采用:映射字段名称和映射字段取值进行表示的形式均可。
表1映射表中映射键的字段取值的一种示例形式,支持单一字段和多字段查询
基于上述映射表的形式设置,在基于多个待查询字段(例如多个待查询字段的组合查询逻辑为AND逻辑)进行数据查询的过程中,基于每个待查询字段定位到对应的目标映射表,并在目标映射表中查询与当前待查询字段(映射键的一个取值)对应的目标切分键取值;将所有的待查询字段的查询结果进行求交集运算。作为示例,如果查询的是买家C1在卖家D1中消费的订单数据;通过上述表1形式的映射表来分别查询命中buyer_no#by_0001、seller_no#sel_0001的数据所对应的切分键取值,之后将这两个部分查询命中的切分键取值求取交集。例如,根据表1,命中buyer_no#by_0001的切分键取值为:OD123456780、OD123456782;命中seller_no#sel_0001的切分键取值为:OD123456780、OD123456782;二者取交集,即为同时满足buyer_no#by_0001和seller_no#sel_0001的目标切分键取值,具体为OD123456780和OD123456782。
在上述实施例的基础上,为了进一步使得映射表灵活支持各种形式的查询,例如基于一个查询字段的查询、基于多个查询字段的查询等多种场景,比如同时支持多个待查询字段的命中查询,为了提升多字段查询的效率,可以设置映射表中映射键的取值包含以下形式:单一查询字段取值(可以是一个查询字段对应的情形,也可以是多个查询字段拆分后的情形,与表1类似)和多个查询字段逻辑组合后的复合查询字段取值,参照表2所示。通过设置复合查询字段取值,能够有效提升多查询字段的查询效率。
下面以表2进行映射表中映射键的字段取值形式的示例。
表2映射表中映射键的字段取值的另一种示例形式,支持单一和多字段的高效查询
通过设置最后四行示例的映射键的取值采用复合查询字段取值的形式,如果查询的是买家C1在卖家D1中消费的订单数据,则能够在映射表中定位到buyer_no#by_0001&seller_no#sel_0001所对应的目标切分键取值为:OD123456780和OD123456782,不需要分别针对每个待查询字段在映射表(可能位于同一个映射表或位于不同的分布式映射表中)中各自查询后并求取交集,有效提升多字段查询的查询效率。
在一些实施例中,如果该系统仅支持通过复合查询字段进行查询,则可以将映射键的取值仅设置为复合查询字段取值的形式,例如对应于表2中最后四行的示例。
通过设置表2中同时包含单一查询字段取值和多个查询字段逻辑组合后的复合查询字段取值,能够灵活适配于各种查询场景,适用性广泛。
在步骤S520,根据上述原数据表中切分键的取值与映射键的取值之间的映射关系,构建初始映射表。
例如,根据原数据表DS1中切分键(字段A)的取值与映射键(字段C)的取值之间的映射关系,构建得到初始映射表,该初始映射表包含所有映射关系的数据。
在步骤S530,根据上述初始映射表的数据量规模或查询效率设定指标,确定是否需要对上述初始映射表进行分布式存储处理。
在一些实施例中,初始映射表的数据量规模较小或者查询效率符合设定指标,则不需要对初始映射表进行拆分,执行步骤S542,将初始映射表作为构建好的映射表,例如参照图4A示例的单张映射表Map101的情形所示。
在一些实施例中,初始映射表的数据量规模较大会影响读写效率或拖慢订单数据处理效率、或者查询效率不符合设定指标,则需要对初始映射表进行拆分,执行步骤S541,将初始映射表进行拆分处理,得到多个分布式映射表,例如参照图4B示例的分布式映射表Map111和分布式映射表Map112的情形所示。
在步骤S541,在需要对上述初始映射表进行分布式存储处理的情况下,将上述映射键作为切分键,基于第二预设分布式存储路由算法对上述初始映射表进行分布式存储处理,得到多个分布式映射表,上述多个分布式映射表作为构建好的映射表。
在步骤S542,在不需要对上述初始映射表进行分布式存储处理的情况下,上述初始映射表作为构建好的映射表。
在包含步骤S510~S542的实施例中,通过将属于非切分键的待查询字段确定为映射键,根据原数据表中切分键的取值与映射键的取值之间的映射关系来构建初始映射表,并根据实际需求对初始映射表进行数据拆分或数据不拆分,得到多个分布式映射表或单张映射表,能够在分布式存储场景下基于非切分键查询时通过查询上述映射表实现用于查询的非切分键取值到原数据表的切分键取值的切换,从而根据切分键取值快速定位到目标分表实现目标数据对象的高效率查询,无需遍历原数据表的全部数据分表。
图6示意性地示出了根据本公开又一实施例的用于分布式存储的数据处理方法的流程图。
根据本公开的实施例,用于分布式存储的数据处理方法,除了包括上述步骤S210~S250之外,或者包括上述步骤S210~S250和S500之外,还包括以下步骤:S610和S620。为了简化示意,在图6中仅示意了步骤S610和S620。
在步骤S610,接收数据更新信息。
上述数据更新信息可以是从接收的更新请求中获取得到的。
根据本公开的实施例,上述数据更新信息包括以下至少一种:新增第一数据的第一操作指令(例如对应后续描述的场景X1)、将第二数据修改为第三数据的第二操作指令(例如对应后续描述的场景X2,包含X21~X23)、删除第四数据的第三操作指令(例如对应后续描述的场景X3)。
在步骤S620,根据上述数据更新信息,确定待更新映射表和待更新分表,并对上述待更新映射表和上述待更新分表进行数据更新处理。
在一些实施例中,对映射表中数据的更新是与原数据表的更新操作同步的;例如原数据表插入(Insert)一条记录,通过解析其中的映射键,转换成上述映射表的值,组装为映射表的Insert SQL(新增数据的操作指令),此映射表的Insert SQL与原数据表的InsertSQL在同一个数据库事务中执行。例如原数据表删除(Delete)一条记录,通过解析其中的映射键,转换成上述映射表的值,组装为映射表的Delete SQL(删除数据的操作指令),在同一个事务中同时执行原数据表和映射表的删除SQL。
在一些示例性场景X1中,上述数据更新信息包括:新增第一数据的第一操作指令。
上述步骤S620中,根据上述数据更新信息,确定待更新映射表和待更新分表,并对上述待更新映射表和上述待更新分表进行数据更新处理,包括:
解析上述第一操作指令,得到上述第一数据中的第一切分键取值和第一映射键取值;
根据第一预设分布式存储路由算法,确定上述第一切分键取值对应的第一待更新分表,并在上述第一待更新分表中写入上述第一数据;
根据第二预设分布式存储路由算法,确定上述第一映射键取值对应的第一待更新映射表,并在上述第一待更新映射表中写入上述第一切分键取值和上述第一映射键取值,得到上述第一切分键取值和上述第一映射键取值之间的映射关系。其中,上述第二预设分布式存储路由算法用于进行映射表的分布式存储切分,第二预设分布式存储路由算法的具体实现方式在上文已经示例,这里不再赘述。
图7示意性地示出了根据本公开一实施例的(a)对待更新分表进行数据新增处理后的结果示意图和(b)对待更新映射表进行数据新增处理后的结果示意图。
例如,接收到的数据更新信息包括:在订单数据表中新增(Insert)订单数据T15(订单数据T15作为第一数据的示例)的第一操作指令,例如订单数据T15为:{订单号-A5(例如为OD123456784),商品ID-B4(例如为sp_0004),买家ID-C4(例如为by_0004),卖家ID-D4(例如为sel_0004),……}。
接收到的更新请求中第一操作指令对应的SQL指令语句例如为:Insert intoorder-datasheet(订单数据表)and set order_no(订单号),shop_no(商品ID),buyer_no(买家ID),seller_no(卖家ID)……(省略号表示更多的字段)Values OD123456784,sp_0004,by_0004,sel_0004,……(这里的省略号表示更多的字段所对应的字段设置值)。
通过对第一操作指令进行解析,得到订单数据T15中的第一切分键取值为A5(例如为OD123456784),第一映射键取值为C4(例如为by_0004)。
根据哈希算法(作为第一预设分布式存储路由算法的示例)确定第一切分键取值A5对应划分至数据分表DS12(作为第一待更新分表的示例)中,在数据分表DS12中写入上述订单数据T15,例如参照图7中(a)中虚线框示意的新增数据所示。
根据哈希算法(第二预设分布式存储路由算法)确定上述第一映射键取值C4对应的第一待更新映射表为分布式映射表Map112,在分布式映射表Map112中写入上述第一切分键取值C4和上述第一映射键取值A5,实现在分布式映射表Map112新增一条映射关系:A5-C4,例如参照图7中(b)中虚线框示意的新增数据所示。
在一些示例性场景X2中,上述数据更新信息包括:将第二数据修改为第三数据的第二操作指令。
上述步骤S620中,解析上述第二操作指令,得到上述第二数据对应的第二切分键取值和第二映射键取值与上述第三数据对应的第三切分键取值和第三映射键取值;比较上述第二切分键取值与上述第三切分键取值是否存在差异,并比较上述第二映射键取值和上述第三映射键取值是否存在差异;根据上述差异结果可以划分为三种情况X21、X22和X23,分别具有各自相应的数据新增处理逻辑,下面详细展开介绍。
在上述第二切分键取值与上述第三切分键取值存在差异、且上述第二映射键取值与上述第三映射键取值无差异的情况X21下,根据第一预设分布式存储路由算法,确定上述第二切分键取值对应的第二待更新分表,并在上述第二待更新分表中删除上述第二数据;根据第一预设分布式存储路由算法,确定上述第三切分键取值对应的第三待更新分表,并在上述第三待更新分表中写入上述第三数据;根据第二预设分布式存储路由算法,确定上述第二映射键取值对应的第二待更新映射表,并在上述第二待更新映射表中将上述第二切分键取值替换为上述第三切分键取值,得到上述第三切分键取值和上述第二映射键取值之间的映射关系。
图8示意性地示出了根据本公开一实施例的(a1)对待更新分表进行数据修改处理过程中删除其中一个分表中的数据和(a2)在另一个分表中新增数据的过程示意图;(b)对待更新映射表进行数据修改处理的过程示意图。
作为示例,在情况X21(例如具体为更改同一家店铺的其他商品重新下单并取消原先订单,需要更新订单数据)下,第二数据例如为第二条订单数据T12,第三数据例如为以下订单数据T16:{订单号-A6(例如为OD123456785),商品ID-B5(例如为sp_0005),买家ID-C2(例如为by_0002),卖家ID-D2(例如为sel_0002),……}。
本实施例中,订单数据T12(第二数据的示例)对应的第二切分键取值为A2,第二映射键取值为C2;订单数据T16(第三数据的示例)对应的第三切分键取值为A6,第三映射键取值为C2,对应为情况X21,新增处理逻辑为:根据哈希算法,确定第二切分键取值A2对应的第二待更新分表为数据分表DS11,在数据分表DS11中删除该条订单数据T12,参照图8中(a1)所示;根据哈希算法,确定第三切分键取值A6对应的第三待更新分表例如为数据分表DS12,在数据分表DS12中写入订单数据T16,参照图8中(a2)所示。
根据哈希算法,确定上述第二映射键取值C2对应的第二待更新映射表为分布式映射表Map111,并在上述分布式映射表Map111中将上述第二切分键取值A2替换为上述第三切分键取值A6,得到上述第三切分键取值A6和上述第二映射键取值C2之间的映射关系,参照图8中(b)所示。本实施例中由于第二映射键取值与第三映射键取值相同,因此不需要进行映射表的重新定位,在原映射表中进行映射关系的对应修改即可。
在上述第二切分键取值与上述第三切分键取值存在差异、且上述第二映射键取值与上述第三映射键取值存在差异的情况X22下,根据第一预设分布式存储路由算法,确定上述第二切分键取值对应的第二待更新分表,并在上述第二待更新分表中删除上述第二数据;根据第一预设分布式存储路由算法,确定上述第三切分键取值对应的第三待更新分表,并在上述第三待更新分表中写入上述第三数据;根据上述第二预设分布式存储路由算法,确定上述第二映射键取值对应的第二待更新映射表,并在上述第二待更新映射表中删除上述第二映射键取值和上述第二切分键取值;根据上述第二预设分布式存储路由算法,确定上述第三映射键取值对应的第三待更新映射表,并在上述第三待更新映射表中写入上述第三映射键取值和上述第三切分键取值,得到上述第三映射键取值和上述第三切分键取值之间的映射关系。
图9示意性地示出了根据本公开一实施例的(a1)对待更新分表进行数据修改处理过程中删除其中一个分表中的数据和(a2)在另一个分表中新增数据的过程示意图;(b1)对待更新映射表进行数据修改处理的过程中对其中一个分布式映射表中的映射关系删除和(b2)在新定位的分布式映射表中新增映射关系的过程示意图。
作为示例,在情况X22(例如为某个卖家的同一个货物被其中一个买家取消订单后又被另一个买家下单的情况)下,第二数据例如为第二条订单数据T12,第三数据例如为以下订单数据T17:{订单号-A7(例如为OD123456786),商品ID-B2(例如为sp_0002),买家ID-C5(例如为by_0005),卖家ID-D2(例如为sel_0002),……}。
本实施例中,订单数据T12(第二数据的示例)对应的第二切分键取值为A2,第二映射键取值为C2;订单数据T17(第三数据的示例)对应的第三切分键取值为A7,第三映射键取值为C5,对应为情况X22,新增处理逻辑为:根据哈希算法,确定第二切分键取值A2对应的第二待更新分表为数据分表DS11,在数据分表DS11中删除订单数据T12,参照图9中(a1)所示;根据哈希算法,确定第三切分键取值A7对应的第三待更新分表例如为数据分表DS11,在数据分表DS11中写入订单数据T17,参照图9中(a2)所示。
根据哈希算法,确定上述第二映射键取值C2对应的第二待更新映射表为分布式映射表Map111,并在上述分布式映射表Map111中删除上述第二映射键取值C2和上述第二切分键取值A2,参照图9中(b1)所示;根据哈希算法,确定上述第三映射键取值C5对应的第三待更新映射表例如为分布式映射表Map112,并在上述分布式映射表Map112中写入上述第三映射键取值C5和上述第三切分键取值A7,得到上述第三映射键取值C5和上述第三切分键取值A7之间的映射关系,参照图9中(b2)所示。本实施例与前述情况X11相比,由于第二映射键取值与第三映射键取值有差异,因此需要进行映射表的重新定位,在原先的分布式映射表中删除原先的映射关系并在重新定位后的分布式映射表中写入新的映射关系。
在上述第二切分键取值与上述第三切分键取值无差异、且上述第二映射键取值与上述第三映射键取值存在差异的情况X23下,根据第一预设分布式存储路由算法,确定上述第二切分键取值对应的第二待更新分表,并在上述第二待更新分表中将上述第二数据替换为上述第三数据,其中包含:将上述第二映射键取值替换为上述第三映射键取值;根据第二预设分布式存储路由算法,确定上述第二映射键取值对应的第二待更新映射表,并在上述第二待更新映射表中删除上述第二映射键取值和上述第二切分键取值;根据第二预设分布式存储路由算法,确定上述第三映射键取值对应的第三待更新映射表,并在上述第三待更新映射表中写入上述第三映射键取值和上述第三切分键取值,得到上述第三映射键取值和上述第三切分键取值之间的映射关系。
图10示意性地示出了根据本公开一实施例的(a)对待更新分表进行数据修改处理过程中进行数据修改替换的过程示意图;(b1)对待更新映射表进行数据修改处理的过程中对其中一个分布式映射表中的映射关系删除和(b2)在新定位的分布式映射表中新增映射关系的过程示意图。
作为示例,在情况X23(例如具体为沿用相同的订单号仅修改购买者ID的下单情形)下,第二数据例如为第二条订单数据T12,第三数据例如为以下订单数据T18:{订单号-A2(例如为OD123456781),商品ID-B2(例如为sp_0002),买家ID-C6(例如为by_0006),卖家ID-D2(例如为sel_0002),……}。
本实施例中,订单数据T12(第二数据的示例)对应的第二切分键取值为A2,第二映射键取值为C2;订单数据T18(第三数据的示例)对应的第三切分键取值为A2,第三映射键取值为C6,对应为情况X23,新增处理逻辑为:根据哈希算法,确定第二切分键取值A2对应的第二待更新分表为数据分表DS11,在数据分表DS11中将订单数据T12替换为订单数据T18,其中包含将第二映射键取值C2替换为第三映射键取值C6(还可以包含更多其他修改值的替换),参照图10中(a)所示。
根据哈希算法,确定上述第二映射键取值C2对应的第二待更新映射表为分布式映射表Map111,并在上述分布式映射表Map111中删除上述第二映射键取值C2和上述第二切分键取值A2,参照图10中(b1)所示;根据哈希算法,确定第三映射键取值C6对应的第三待更新映射表例如为分布式映射表Map112,并在上述分布式映射表Map112中写入上述第三映射键取值C6和上述第三切分键取值A2,参照图10中(b2)所示。本实施例中,由于切分键取值在数据更新过程中不变,因此无需进行数据分表的重新定位,仅需要对发生变动的映射键取值进行重新定位并进行对应映射关系的更新即可。
在一些示例性场景X3中,上述数据更新信息包括:删除第四数据的第三操作指令。
上述步骤S620中,根据上述数据更新信息,确定待更新映射表和待更新分表,并对上述待更新映射表和上述待更新分表进行数据更新处理,包括:解析上述第三操作指令,得到上述第三数据对应的第四切分键取值和第四映射键取值;根据第一预设分布式存储路由算法,确定上述第四切分键取值对应的第四待更新分表,并在上述第四待更新分表中删除上述第四数据;根据第二预设分布式存储路由算法,确定上述第四映射键取值对应的第四待更新映射表,并在上述第四待更新映射表中删除上述第四映射键取值和上述第四切分键取值。
本实施例的处理逻辑与新增数据的处理逻辑中确定待更新分表和待更新映射表的逻辑是一致的,差异点仅在于一个是新增数据,一个是删除已有的数据,可以参照前面的示例进行理解,这里不再展开说明。
根据本公开的实施例,在上述待更新映射表为上述目标映射表的情况下,在数据更新处理后的目标映射表中确定与上述目标字段值对应的目标切分键取值;在上述待更新分表为上述目标分表的情况下,向数据更新处理后的目标分表查询上述目标切分键取值对应的目标数据对象。
通过根据数据更新请求而动态更新数据分表和映射表中的数据,能够总是基于最新数据来实现查询,提升查询过程中的数据实时性,确保查询结果的准确性。
本公开的第二个示例性实施例提供一种用于分布式存储的数据处理装置。
图11示意性地示出了根据本公开实施例的用于分布式存储的数据处理装置的结构框图。
参照图11所示,用于分布式存储的数据处理装置1100包括:请求接收模块1101、映射表定位模块1102、切分键确定模块1103、分表定位模块1104和查询模块1105。
上述请求接收模块1101用于接收基于目标字段和目标字段值的查询请求。
上述映射表定位模块1102用于在预先构建的至少一个映射表中确定上述目标字段值对应的目标映射表;上述映射表包含原数据表中切分键的取值与映射键的取值之间的映射关系,上述映射键包含上述目标字段。
上述切分键确定模块1103用于在上述目标映射表中确定与上述目标字段值对应的目标切分键取值。
上述分表定位模块1104用于根据用于切分原数据表的第一预设分布式存储路由算法,确定上述目标切分键取值对应的目标分表。
上述查询模块1105用于向上述目标分表查询上述目标切分键取值对应的目标数据对象。
根据本公开的实施例,上述数据处理装置1100还包括:映射表构建模块。
上述映射表构建模块用于预先构建映射表。上述预先构建映射表,包括:将原数据表中的至少一个待查询字段确定为映射键;根据上述原数据表中切分键的取值与上述映射键的取值之间的映射关系,构建初始映射表;根据上述初始映射表的数据量规模或查询效率设定指标,确定是否需要对上述初始映射表进行分布式存储处理;在需要对上述初始映射表进行分布式存储处理的情况下,将上述映射键作为切分键,基于第二预设分布式存储路由算法对上述初始映射表进行分布式存储处理,得到多个分布式映射表,上述多个分布式映射表作为构建好的映射表;在不需要对上述初始映射表进行分布式存储处理的情况下,上述初始映射表作为构建好的映射表。
根据本公开的实施例,上述数据处理装置1100还包括:数据更新模块。
上述数据更新模块,用于:接收数据更新信息;根据上述数据更新信息,确定待更新映射表和待更新分表,并对上述待更新映射表和上述待更新分表进行数据更新处理。
本实施例的其他细节和有益效果可以参照第一个实施例的详细描述,这里不再赘述。
上述数据处理装置1100所包含的功能模块中的任意多个可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。数据处理装置1100所包含的功能模块中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,数据处理装置1100所包含的功能模块中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
本公开的第三个示例性实施例提供了一种电子设备。
图12示意性示出了本公开实施例提供的电子设备的结构框图。
参照图12所示,本公开实施例提供的电子设备1200包括处理器1201、通信接口1202、存储器1203和通信总线1204,其中,处理器1201、通信接口1202和存储器1203通过通信总线1204完成相互间的通信;存储器1203,用于存放计算机程序;处理器1201,用于执行存储器上所存放的程序时,实现如上所述的用于分布式存储的数据处理方法。
本公开的第四个示例性实施例还提供了一种计算机可读存储介质。上述计算机可读存储介质上存储有计算机程序,上述计算机程序被处理器执行时实现如上所述的用于分布式存储的数据处理方法。
该计算机可读存储介质可以是上述实施例中描述的设备或装置中所包含的;也可以是单独存在,而未装配入该设备或装置中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
需要说明的是,本公开实施例提供的技术方案中,所涉及的用户个人信息的采集、收集、更新、分析、处理、使用、传输、存储等方面,均符合相关法律法规的规定,被用于合法的用途,且不违背公序良俗。对用户个人信息采取必要措施,防止对用户个人信息数据的非法访问,维护用户个人信息安全、网络安全和国家安全。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
Claims (14)
1.一种用于分布式存储的数据处理方法,其特征在于,包括:
接收基于目标字段和目标字段值的查询请求;
在预先构建的至少一个映射表中确定所述目标字段值对应的目标映射表;所述映射表包含原数据表中切分键的取值与映射键的取值之间的映射关系,所述映射键包含所述目标字段;
在所述目标映射表中确定与所述目标字段值对应的目标切分键取值;
根据用于切分原数据表的第一预设分布式存储路由算法,确定所述目标切分键取值对应的目标分表;
向所述目标分表查询所述目标切分键取值对应的目标数据对象。
2.根据权利要求1所述的数据处理方法,其特征在于,还包括:预先构建映射表;
所述预先构建映射表,包括:
将原数据表中的至少一个待查询字段确定为映射键;
根据所述原数据表中切分键的取值与所述映射键的取值之间的映射关系,构建初始映射表;
根据所述初始映射表的数据量规模或查询效率设定指标,确定是否需要对所述初始映射表进行分布式存储处理;
在需要对所述初始映射表进行分布式存储处理的情况下,将所述映射键作为切分键,基于第二预设分布式存储路由算法对所述初始映射表进行分布式存储处理,得到多个分布式映射表,所述多个分布式映射表作为构建好的映射表;
在不需要对所述初始映射表进行分布式存储处理的情况下,所述初始映射表作为构建好的映射表。
3.根据权利要求1所述的数据处理方法,其特征在于,所述映射表为多个分布式映射表,所述分布式映射表是由所述映射键基于第二预设分布式存储路由算法进行数据切分得到的;
其中,在预先构建的至少一个映射表中确定所述目标字段值对应的目标映射表,包括:
根据第二预设分布式存储路由算法,在预先构建的多个分布式映射表中确定所述目标字段值对应的目标分布式映射表。
4.根据权利要求1-3中任一项所述的数据处理方法,其特征在于,还包括:
接收数据更新信息;
根据所述数据更新信息,确定待更新映射表和待更新分表,并对所述待更新映射表和所述待更新分表进行数据更新处理。
5.根据权利要求4所述的数据处理方法,其特征在于,所述数据更新信息包括:新增第一数据的第一操作指令;
根据所述数据更新信息,确定待更新映射表和待更新分表,并对所述待更新映射表和所述待更新分表进行数据更新处理,包括:
解析所述第一操作指令,得到所述第一数据中的第一切分键取值和第一映射键取值;
根据第一预设分布式存储路由算法,确定所述第一切分键取值对应的第一待更新分表,并在所述第一待更新分表中写入所述第一数据;
根据第二预设分布式存储路由算法,确定所述第一映射键取值对应的第一待更新映射表,并在所述第一待更新映射表中写入所述第一切分键取值和所述第一映射键取值,得到所述第一切分键取值和所述第一映射键取值之间的映射关系;其中,所述第二预设分布式存储路由算法用于进行映射表的分布式存储切分。
6.根据权利要求4所述的数据处理方法,其特征在于,所述数据更新信息包括:将第二数据修改为第三数据的第二操作指令;
根据所述数据更新信息,确定待更新映射表和待更新分表,并对所述待更新映射表和所述待更新分表进行数据更新处理,包括:
解析所述第二操作指令,得到所述第二数据对应的第二切分键取值和第二映射键取值与所述第三数据对应的第三切分键取值和第三映射键取值;
比较所述第二切分键取值与所述第三切分键取值是否存在差异,并比较所述第二映射键取值和所述第三映射键取值是否存在差异;
在所述第二切分键取值与所述第三切分键取值存在差异、且所述第二映射键取值与所述第三映射键取值无差异的情况下,根据第一预设分布式存储路由算法,确定所述第二切分键取值对应的第二待更新分表,并在所述第二待更新分表中删除所述第二数据;根据第一预设分布式存储路由算法,确定所述第三切分键取值对应的第三待更新分表,并在所述第三待更新分表中写入所述第三数据;根据第二预设分布式存储路由算法,确定所述第二映射键取值对应的第二待更新映射表,并在所述第二待更新映射表中将所述第二切分键取值替换为所述第三切分键取值,得到所述第三切分键取值和所述第二映射键取值之间的映射关系;其中,所述第二预设分布式存储路由算法用于进行映射表的分布式存储切分。
7.根据权利要求6所述的数据处理方法,其特征在于,根据所述数据更新信息,确定待更新映射表和待更新分表,并对所述待更新映射表和所述待更新分表进行数据更新处理,还包括:
在所述第二切分键取值与所述第三切分键取值存在差异、且所述第二映射键取值与所述第三映射键取值存在差异的情况下,根据第一预设分布式存储路由算法,确定所述第二切分键取值对应的第二待更新分表,并在所述第二待更新分表中删除所述第二数据;根据第一预设分布式存储路由算法,确定所述第三切分键取值对应的第三待更新分表,并在所述第三待更新分表中写入所述第三数据;根据所述第二预设分布式存储路由算法,确定所述第二映射键取值对应的第二待更新映射表,并在所述第二待更新映射表中删除所述第二映射键取值和所述第二切分键取值;根据所述第二预设分布式存储路由算法,确定所述第三映射键取值对应的第三待更新映射表,并在所述第三待更新映射表中写入所述第三映射键取值和所述第三切分键取值,得到所述第三映射键取值和所述第三切分键取值之间的映射关系。
8.根据权利要求6所述的数据处理方法,其特征在于,根据所述数据更新信息,确定待更新映射表和待更新分表,并对所述待更新映射表和所述待更新分表进行数据更新处理,还包括:
在所述第二切分键取值与所述第三切分键取值无差异、且所述第二映射键取值与所述第三映射键取值存在差异的情况下,根据第一预设分布式存储路由算法,确定所述第二切分键取值对应的第二待更新分表,并在所述第二待更新分表中将所述第二数据替换为所述第三数据,其中包含:将所述第二映射键取值替换为所述第三映射键取值;根据第二预设分布式存储路由算法,确定所述第二映射键取值对应的第二待更新映射表,并在所述第二待更新映射表中删除所述第二映射键取值和所述第二切分键取值;根据第二预设分布式存储路由算法,确定所述第三映射键取值对应的第三待更新映射表,并在所述第三待更新映射表中写入所述第三映射键取值和所述第三切分键取值,得到所述第三映射键取值和所述第三切分键取值之间的映射关系。
9.根据权利要求4所述的数据处理方法,其特征在于,所述数据更新信息包括:删除第四数据的第三操作指令;
根据所述数据更新信息,确定待更新映射表和待更新分表,并对所述待更新映射表和所述待更新分表进行数据更新处理,包括:
解析所述第三操作指令,得到所述第三数据对应的第四切分键取值和第四映射键取值;
根据第一预设分布式存储路由算法,确定所述第四切分键取值对应的第四待更新分表,并在所述第四待更新分表中删除所述第四数据;
根据第二预设分布式存储路由算法,确定所述第四映射键取值对应的第四待更新映射表,并在所述第四待更新映射表中删除所述第四映射键取值和所述第四切分键取值。
10.根据权利要求4所述的数据处理方法,其特征在于,
在所述待更新映射表为所述目标映射表的情况下,在数据更新处理后的目标映射表中确定与所述目标字段值对应的目标切分键取值;
在所述待更新分表为所述目标分表的情况下,向数据更新处理后的目标分表查询所述目标切分键取值对应的目标数据对象。
11.根据权利要求1所述的数据处理方法,其特征在于,所述映射表中,映射键的取值包含以下表示方式至少一种:
采用映射字段取值的形式进行表示;
采用映射字段名称和映射字段取值组合的形式进行表示;
采用多个查询字段逻辑组合后的复合查询字段取值的形式进行表示。
12.一种用于分布式存储的数据处理装置,其特征在于,包括:
请求接收模块,用于接收基于目标字段和目标字段值的查询请求;
映射表定位模块,用于在预先构建的至少一个映射表中确定所述目标字段值对应的目标映射表;所述映射表包含原数据表中切分键的取值与映射键的取值之间的映射关系,所述映射键包含所述目标字段;
切分键确定模块,用于在所述目标映射表中确定与所述目标字段值对应的目标切分键取值;
分表定位模块,用于根据用于切分原数据表的第一预设分布式存储路由算法,确定所述目标切分键取值对应的目标分表;
查询模块,用于向所述目标分表查询所述目标切分键取值对应的目标数据对象。
13.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-11中任一项所述的数据处理方法。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1-11中任一项所述的数据处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311775863.1A CN117931796A (zh) | 2023-12-21 | 2023-12-21 | 用于分布式存储的数据处理方法、装置、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311775863.1A CN117931796A (zh) | 2023-12-21 | 2023-12-21 | 用于分布式存储的数据处理方法、装置、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117931796A true CN117931796A (zh) | 2024-04-26 |
Family
ID=90763853
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311775863.1A Pending CN117931796A (zh) | 2023-12-21 | 2023-12-21 | 用于分布式存储的数据处理方法、装置、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117931796A (zh) |
-
2023
- 2023-12-21 CN CN202311775863.1A patent/CN117931796A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10628449B2 (en) | Method and apparatus for processing database data in distributed database system | |
US11281793B2 (en) | User permission data query method and apparatus, electronic device and medium | |
US9411840B2 (en) | Scalable data structures | |
CN107085570B (zh) | 数据处理方法、应用服务器和路由器 | |
US8996502B2 (en) | Using join dependencies for refresh | |
CN111459985B (zh) | 标识信息处理方法及装置 | |
US7636731B2 (en) | Approximating a database statistic | |
CN107704202B (zh) | 一种数据快速读写的方法和装置 | |
CN104794123A (zh) | 一种为半结构化数据构建NoSQL数据库索引的方法及装置 | |
US20140019454A1 (en) | Systems and Methods for Caching Data Object Identifiers | |
JP2009217426A (ja) | 情報処理装置、リソース同定プログラム、リソース同定方法 | |
JP2020123320A (ja) | インデックスを管理するための方法、装置、設備及び記憶媒体 | |
CN113568924A (zh) | 一种数据处理方法、装置、电子设备及存储介质 | |
CN114840487A (zh) | 分布式文件系统的元数据管理方法和装置 | |
CN116719822B (zh) | 一种海量结构化数据的存储方法及系统 | |
CN117171161A (zh) | 数据查询方法及装置 | |
CN116450607A (zh) | 数据处理方法、设备及存储介质 | |
CN117931796A (zh) | 用于分布式存储的数据处理方法、装置、设备及介质 | |
CN112148728A (zh) | 用于信息处理的方法、设备和计算机程序产品 | |
US20210042328A1 (en) | Partitioning data in a clustered database environment | |
CN105095283A (zh) | 网络社交系统中准好友的推荐方法和系统 | |
CN112527900A (zh) | 一种数据库读多副本一致性的方法、装置、设备及介质 | |
CN114048219A (zh) | 图数据库更新方法及装置 | |
CN113934729A (zh) | 一种基于知识图谱的数据管理方法、相关设备及介质 | |
CN117762963A (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 |