数据处理方法、装置、网络设备及可存储介质与流程

文档序号:34811622发布日期:2023-07-19 13:26阅读:33来源:国知局
数据处理方法、装置、网络设备及可存储介质与流程

本技术涉及通信领域,尤其涉及一种数据处理方法、装置、网络设备及可存储介质。


背景技术:

1、随着互联网技术的兴起,非关系型的数据库(non-relational,nosql)也在不断发展。基于nosql中数据的无关系性,nosql具有非常高的读写能力,具有数据量大,高性能的特点,这解决了具有大数据量互联网的很多难题。

2、在相关技术中,一般会按照集群模型搭建数据库架构,从而方便执行各类命令。通常,一个数据库架构由代理中间件(twemproxy)和nosql类型的多个数据库分片组成。实际通过该数据库架构使用数据库分片的过程中,网络设备可以对代理中间件输入命令,之后通过代理中间件根据命令对应的所以地址操作其中一个数据库分片执行命令。

3、然而,由于其往往针对多个数据库分片中的部分数据库分片执行命令,因此,这种执行命令的方式可能会导致某个或者某几个数据库分片的数据量过大,继而造成数据倾斜,在个别数据库分片中出现数据堆积。


技术实现思路

1、本技术提供数据处理方法、装置、网络设备及可存储介质,用于解决目前nosql类型的数据库中容易出现的数据倾斜,在个别数据库分片中出现数据堆积问题。

2、为解决上述技术问题,本技术采用的一个技术方案为:在数据库对应的数据库架构包括x个数据库分片和代理中间件的情况下,接收用户端发送的命令,上述命令包括:读命令,或者,写命令,x为大于1的整数;根据上述命令的命令内容,对上述命令进行拆分,生成y个子命令,上述y个子命令与x个数据库分片中的y个数据库相对应,上述y个数据库中存储与y个子命令相关的数据信息,y小于或等于x,y为整数;在上述y个数据库分片中执行上述y个子命令。

3、本技术实施例的有益效果为:在数据库对应的数据库架构包括x个数据库分片和代理中间件的情况下,接收读命令或者写命令,然后根据命令的命令内容,对上述命令进行拆分,生成与x个数据库分片中的y个数据库相对应的y个子命令(上述y个数据库中存储与y个子命令相关的数据信息);最后,在上述y个数据库分片中执行上述y个子命令。如此,通过对命令进行拆分,使得命令无需集中在某个单独的数据库分片中执行,而是在多个数据库分片中执行,对于写命令而言,存储数据时可以分布在不同的数据库中存储,进而不会造成在单一数据库分片中存储数据带来的数据倾斜问题,提高了多个数据库分片的使用效率。

4、可选地,上述数据库包括索引表,上述索引表包括索引信息,所述索引信息包括:所述x个数据库分片中每个数据库分片中空间地址信息以及所述每个数据库分片中每个空间地址信息的数据量信息;所述空间地址信息的数据格式与与x个数据库分片中的数据格式相对应。

5、如此,相较于相关技术,由于上述空间地址信息不使用字符串的方式存储每个数据库分片中的空间地址信息,因此,在x个数据库分片中的多个数据库分片中均含有相同的空间地址信息的情况下,不会因为空间信息地址增多而导致过多占用内存,同时通过索引表可以准确的表示空间地址信息以及对应数据量信息,方便后续执行读命令和写命令。

6、可选地,上述接收用户端发送的命令之前,还包括:遍历上述x个数据库分片;生成上述x个数据库分片的索引信息;根据上述索引信息,生成上述x个数据库分片的索引表。

7、如此,在x个数据库分片中的多个数据库分片中均含有相同的空间地址信息的情况下,不会因为空间信息地址增多而导致过多占用内存,同时通过索引表可以准确的表示空间地址信息以及对应数据量信息,方便后续执行读命令和写命令。

8、可选地,在上述命令为读命令的情况下,上述对上述命令进行拆分,生成y个子命令,包括:将上述命令拆分为x个子读命令,上述x个子读命令与x个数据库分片相对应;上述在上述y个数据库分片中执行上述y个子命令之后,还包括:获取上述x个数据库分片的x个结果数据;根据上述x个结果数据,确定上述命令的命令结果。

9、如此,通过直接将读命令拆分为与x个数据库分片相对应的x个子读命令,可以快速、全面的查询到读命令所要求读取的信息,避免遗漏,提高读取信息的效率。

10、可选地,在上述命令为第一写命令的情况下,上述第一写命令为在至少两个数据库分片中写入数据的命令,上述第一写命令写入的数据为字符串或整数,在上述接收用户端发送的命令后,还包括:通过上述索引表查询上述x个数据库分片中每个数据库分片的数据量信息以及上述x个数据库分片中包含上述第一写命令的第一空间地址信息的y个数据库分片;根据上述x个数据库分片中的数据量信息,对x个数据库分片进行排序;获取x个数据库分片的排序顺序;上述根据上述命令的命令内容,对上述命令进行拆分,生成y个子命令,包括:按照上述排序顺序,对上述第一写命令进行拆分,生成y个子第一写命令,y个子第一写命令中的每个字第一写命令中包括第一空间地址信息和至少一个数据值,y个子第一写命令的数据值个数与上述y个数据库分片的排序顺序负相关;上述在上述y个数据库分片中执行上述y个子命令,包括:根据上述y个数据库分片中的数据量信息,执行y个子第一写命令。

11、如此,在执行上述第一写命令之前,先通过索引表查询每个数据库分片中的数据量信息,然后再根据数据量信息拆分第一写命令,并在多个数据库分片中写入数据,从而保证x个数据库分片中的数据量始终处于较为均衡的状态,避免发生数据倾斜等问题。

12、可选地,上述根据上述y个数据库分片中的数据量信息,执行y个子第一写命令,包括:在上述y个数据库分片的p个数据库分片中包括第一空间地址信息的情况下,使用p个写命令的上述至少一个数据值替代p个数据库分片中第一空间地址信息对应的原数据值,p为小于或者等于y的正整数;在上述p个数据库分片以外的其余数据库分片中写入y-p个子第一写命令对应的第一空间地址信息和至少一个数据值。

13、可选地,在上述根据上述y个数据库分片中的数据量信息,执行y个子第一写命令之后,还包括:按照第一预设算法计算上述y个数据库分片在索引表中的第一索引信息;根据上述第一索引信息,更新上述y个数据库分片在索引表中的索引信息;其中,上述第一预设算法为与上述数据库分片的数据结构相对应。

14、如此,在通过第一写命令写入新的数据后,每个数据库分片中的索引信息(即空间地址信息以及空间地址信息对应的数据量信息)均有可能发生变化,因此,通过上述方法,可以及时变更索引表,以便于后续更加准确、快速地在数据库分块中执行命令。

15、可选地,在上述命令为第二写命令的情况下,上述第二写命令包括第二空间地址信息和一个整数数据值,上述根据上述命令的命令内容,对上述命令进行拆分,生成y个子命令包括:根据上述第二写命令,生成x条查询命令,上述x条查询命令与上述x个数据库分片相对应,上述x条查询命令用于上述查询x个数据库分片中的第二空间地址信息;利用上述x条查询命令,在上述x个数据库分片查询第一数据库分片,上述第一数据库分片包括上述第二写命令的第二空间地址信息;上述在上述y个数据库分片中执行上述y个子命令,包括:在上述x个数据库分片中包括上述第一数据库分片的情况下,在上述第一数据库分片中执行上述第二写命令。

16、如此,在执行上述第二写命令之前,先根据第二写命令,拆分生成x条查询命令查询x个数据库分片中包括第二空间地址信息的第一数据库,从而在第一数据库中执行第二写命令。如此,通过根据第二写命令拆分生成x条查询命令,可以及时查询到可以执行第二写命令的第一数据库,保证了执行第二写命令的准确性与可靠性。

17、可选地,在上述x个数据库分片中不包括上述第二空间地址信息的情况下,还包括:通过上述索引表查询x个数据库分片中的数据量信息;根据上述x个数据库分片中的数据量信息,对x个数据库分片进行排序;获取x个数据库分片的排序顺序;筛选出x个数据库分片中数据量信息最小的第二数据库分片;在上述第二数据库分片中写入上述第二空间地址信息和上述整数数据值。

18、如此,在x个数据库分片中均不包括上述第二空间地址信息的情况下,通过获取排序顺序在x个数据库分片中数据量最小的数据库分片中写入数据,从而可以保证数据均衡,避免数据倾斜问题。

19、可选地,上述在上述第二数据库分片中写入上述第二空间地址信息和上述整数数据值之后,还包括:按照第二预设算法计算上述第二数据库分片在索引表中的第二索引信息;根据上述第二索引信息,更新上述第二数据库分片在索引表中的索引信息;其中,上述第二预设算法为与上述数据库分片的数据结构相对应。

20、如此,在通过第二写命令写入新的数据后,某个数据库分片中的索引信息(即空间地址信息以及空间地址信息对应的数据量信息)有可能发生变化,因此,通过上述方法,可以及时变更索引表,以便于后续更加准确、快速地在数据库分块中执行命令。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1