数据存储方法、装置、设备及存储介质与流程

文档序号:23651790发布日期:2021-01-15 13:48阅读:63来源:国知局
本公开实施例涉及分布式存储
技术领域
:,尤其涉及一种数据存储方法、装置、设备及存储介质。
背景技术
::相关技术中,解决数据库查询效率问题的方案一般包括两种:一种是给数据库的表单添加索引,通过索引查找数据;另一种是通过对数据进行分片处理将多个分片存储到一个存储节点上,由中间件维护数据查询的路由信息,该路由信息中包括数据所在的存储节点,以及节点中存储的数据分片的信息,通过路由信息可查询获得相应的数据。但是在第一种方案中,随着数据量的持续增大,尤其是在多条件查询时,数据库的查询效率较低,响应耗时较长;而在第二种方案中为了降低路由信息的维护成本,中间件中一般只维护部分分片上的数据的路由信息,当目标查询的数据在中间件上没有对应的路由信息时,则需要在存储节点上的每个分片上执行查询操作,同样存在查询效率低的问题。技术实现要素:为了解决上述技术问题或者至少部分地解决上述技术问题,本公开实施例提供了一种数据存储方法、装置、设备及存储介质。本公开实施例的第一方面提供了一种数据存储方法,该方法包括:获取用户数据;对所述用户数据进行分片处理,得到多个数据分片;将所述多个数据分片存储在多个存储节点上,使得一个存储节点上对应存储一个数据分片。本公开实施例的第二方面提供了一种数据存储装置,该装置包括:获取模块,用于获取用户数据。数据分片模块,用于对所述用户数据进行分片处理,得到多个数据分片。存储模块,用于将所述多个数据分片存储在多个存储节点上,使得一个存储节点上对应存储一个数据分片。本公开实施例的第三方面提供了一种电子设备,包括存储器和处理器,其中,所述存储器中存储有计算机程序,当所述计算机程序被所述处理器执行时,可以实现上述第一方面的方法。本公开实施例的第四方面提供了一种计算机可读存储介质,所述存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,可以实现上述第一方面的方法。本公开实施例提供的技术方案与现有技术相比具有如下优点:本公开实施例通过在获取到用户数据之后,对用户数据进行分片处理,得到多个数据分片,然后将多个数据分片存储在多个存储节点上,使得一个存储节点只存储多个数据分片中的一个数据分片,解决了单个存储节点被频繁访问的问题,并且通过在一个存储节点中只存储用户数据的一个数据分片,当用户的查询请求中携带的分片键与用户数据分片所采用的分片键不符时,可以同时在用户数据对应的多个存储节点中同时查询数据,且每个节点中只需要查询用户数据的一个数据分片,不需要像相关技术那样在同一存储节点中逐个查询用户数据对应的多个数据分片,提高了数据查询的效率。另外,针对每个用户数据,在一个存储节点中只存储一个用户数据的一个数据分片,只要创建单个存储节点与用户数据的一个数据分片之间的一一对应关系即可,而如果像相关技术那样将用户数据的多个数据分片存储在一个存储节点上则需要创建单个存储节点与用户数据的多个数据分片之间的对应关系,从而相较于相关技术本公开实施例能够降低存储节点与数据分片之间关系的复杂度,有利于提升数据查询的速度。附图说明此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。为了更清楚地说明本公开实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1是本公开实施例提供的一种数据存储方法的流程图;图2是本公开实施例提供的一种分布式数据存储系统的结构示意图;图3是本公开实施例提供的一种数据存储方法的流程图;图4是本公开实施例提供的一种数据存储装置的结构示意图;图5是本公开实施例提供的一种电子设备的结构示意图。具体实施方式为了能够更清楚地理解本公开的上述目的、特征和优点,下面将对本公开的方案进行进一步描述。需要说明的是,在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本公开,但本公开还可以采用其他不同于在此描述的方式来实施;显然,说明书中的实施例只是本公开的一部分实施例,而不是全部的实施例。图1是本公开实施例提供的一种数据存储方法的流程图,该方法可以由一种电子设备来执行。如图1所示,该方法包括如下步骤:步骤101、获取用户数据。步骤102、对用户数据进行分片处理,得到多个数据分片。步骤103、将用户数据对应的多个数据分片存储在多个存储节点上,使得一个存储节点上对应存储一个数据分片。示例的,图2是本公开实施例提供的一种分布式数据存储系统的结构示意图,在该分布式数据存储系统中包括用户设备、电子设备、存储节点0、存储节点1和存储节点2。其中,用户设备至少可以是如下设备中的一种:手机、智能电视、平板电脑、可穿戴设备、个人数字助理(personaldigitalassistant,简称pda)、智能汽车、服务器。用户设备用于将用户产生的用户数据发送给电子设备,由电子设备按照预设的数据分片方式,比如哈希分片、范围分片中的一种,将用户数据切分成多个数据分片,然后,按照预先设定的规则将不同数据分片存储在不同的存储节点上,使得一个存储节点上只存储该用户数据的一个数据分片。同时,电子设备建立并存储每个数据分片与相应存储节点之间的对应关系,当接收到用户设备的数据访问请求时,根据该对应关系,确定用户目标访问的数据所在的存储节点,进而在该存储节点上进行数据访问操作。举例来说,假设目标将数据(1,10),(2,20),(3,30),(4,40),(5,50),(6,60)存储到图2所示的分布式数据存储系统中,假设选择自增主键(即上述各组数据中的第一位数据1、2、3、4、5、6)作为分片键。那么电子设备可以通过对各组数据中的自增主键进行哈希计算来对数据进行分片,由于图2所示的分布式数据存储系统中包括3个存储节点,因此,可以将上述6组数据划分为3个数据分片,具体的数据分片方法为将各组数据中的自增主键对3取模,然后根据各组数据对应的模值,将数据存储到相应的存储节点上。比如,数据(1,10)对3取模,1%3=1,模为1,将数据(1,10)存放在存储节点1中,数据(2,20)对3取模,2%3=2,将(2,20)存放到存储节点2中,数据(3,30)对3取模,3%3=0,将(3,30)存放到存储节点0中,依次类推。最终存储节点0上数据为(3,30),(6,60),存储节点1上数据为(1,10),(4,40),存储节点2上数据为(2,20),(5,50)。那么(3,30),(6,60)被划分为一个数据分片,(1,10),(4,40)被划分为一个数据分片,(2,20),(5,50)被划分为一个数据分片。进一步的,电子设备在将数据分片存储到相应的存储节点的同时,还会创建并存储数据分片与存储节点之间的对应关系,在该对应关系中,数据分片的信息被存储到存储节点对应的元数据信息表中,该元数据信息表被进行持久化处理,以便能够快速的查找到数据。其中,该元数据信息表可示例性的包括如下内容:其中,table_name代表表名,db_name代表数据库的库名,type表示表类型(是普通单表还是分片表),shared_method表示数据分片的方式(如哈希分片,范围分片等),shared_key表示分片键(本例分区键为自增主键),range_start和range_offset为分片方式为范围分片时起作用,range_start表示该分片的起始值,后者表示该分片存放的数据条数,table_name和db_name为联合主键,char和int表示数据类型。当然上述仅是以图2所示的系统进行的示例说明而不是唯一限定,实际上,在实际应用中上述分布式存储系统中还可以包括其他的存储节点,在进行数据分片时,也可以采用相关技术提供的任意一种分片方式,而不必局限于某一种特定的方式,元数据信息表中的信息也可以根据需要进行设置,而不必局限于本实施例提供的内容。本实施例通过在获取到用户数据之后,对用户数据进行分片处理,得到多个数据分片,然后将多个数据分片存储在多个存储节点上,使得一个存储节点只存储多个数据分片中的一个数据分片,解决了单个存储节点被频繁访问的问题,并且通过在一个存储节点中只存储用户数据的一个数据分片,当用户的查询请求中携带的分片键与用户数据分片所采用的分片键不符时,可以同时在用户数据对应的多个存储节点中同时查询数据,且每个节点中只需要查询用户数据的一个数据分片,不需要像相关技术那样在同一存储节点中逐个查询用户数据对应的多个数据分片,提高了数据查询的效率。另外,针对每个用户数据,在一个存储节点中只存储一个用户数据的一个数据分片,只要创建单个存储节点与用户数据的一个数据分片之间的一一对应关系即可,而如果像相关技术那样将用户数据的多个数据分片存储在一个存储节点上则需要创建单个存储节点与用户数据的多个数据分片之间的对应关系,从而相较于相关技术本实施例能够降低存储节点与数据分片之间关系的复杂度,有利于提升数据查询的速度。图3是本公开实施例提供的一种数据存储方法的流程图,如图3所示,在上述实施例的基础上,本公开实施例提供的方法还可以包括如下步骤:步骤301、接收用户设备的数据查询请求,所述数据查询请求中包括待查询数据对应的分片键,所述待查询数据为所述用户数据中的数据。步骤302、基于所述分片键,确定所述待查询数据所在的目标数据分片。步骤303、基于所述目标数据分片与存储节点之间的对应关系,确定所述待查询数据所在的存储节点。步骤304、从所述存储节点中查找获得所述待查询数据。承接图1实施例中的举例,假设用户设备发送的数据查询请求中包括的分片键为1,那么数据查询请求到达电子设备后,电子设备会解析出分片键的值1,然后对分片键1进行哈希计算:1%3=1,得到分片键1对应的模值为1,根据图1实施例中的举例,模值为1的数据被划分到存储节点1存储的数据分片(即目标数据分片)中,那么该数据查询请求将被发送给存储节点1进行处理。当批量查询时,数据查询请求中可以携带分片键的一个或多个取值范围,比如,当分片键的取值范围为大于1且小于4时,通过对分片键的所有取值进行哈希计算,可获知目标查询的数据在两个数据分片(即目标数据分片)中,其中一个数据分片被存储在存储节点2中,另一数据分片被存储在存储节点0中,此时数据查询请求将被转发至存储节点2和存储节点0,由存储节点2和存储节点0并发的查询数据。存储节点2和存储节点0的查询结果以流式的方式通过电子设备发送给用户设备。由于网络原因,用户查询的数据在多个存储节点上时,每个存储节点返回数据的时间可能不同,所谓流式就是在任何一个存储节点有数据返回时,就马上将这些数据传给用户设备,而非串行的,一个一个的进行数据查询,这样就能够提高数据的查询效率。参见图1,由于图1实施例中,一个存储节点只存储一个数据分片,因此,本实施例在进行数据查询时能够根据存储节点与数据分片之间的一对一的关系,快速查找得到相应的数据,提高了数据查询效率。图4是本公开实施例提供的一种数据存储装置的结构示意图,其中,该数据存储装置可以被具体为上述实施例中所称的电子设备或者电子设备中的功能模块。如图4所示,数据存储装置40包括:获取模块41,用于获取用户数据。数据分片模块42,用于对所述用户数据进行分片处理,得到多个数据分片。存储模块43,用于将所述多个数据分片存储在多个存储节点上,使得一个存储节点上对应存储一个数据分片。在一种实施方式中,所述数据分片模块42,用于:基于如下分片方式中的一种对所述用户数据进行分片处理:哈希分片、范围分片。在一种实施方式中,数据存储装置40还包括:路由模块,用于创建所述多个数据分片与存储节点之间的对应关系,并对所述对应关系进行存储。在一种实施方式中,数据存储装置40还包括:接收模块,用于接收用户设备的数据查询请求,所述数据查询请求中包括待查询数据对应的分片键,所述待查询数据为所述用户数据中的数据.第一确定模块,用于基于所述分片键,确定所述待查询数据所在的目标数据分片。第二确定模块,用于基于所述目标数据分片与存储节点之间的对应关系,确定所述待查询数据所在的存储节点。查找模块,用于从所述存储节点中查找获得所述待查询数据。本实施例提供的装置能够执行上述图1或图3实施例的方法,其执行方式和有益效果类似,在这里不再赘述。图5是本公开实施例提供的一种电子设备的结构示意图,如图5所示,电子设备50包括:存储器51和处理器52,其中,所述存储器51中存储有计算机程序,当所述计算机程序被所述处理器52执行时,可以实现上述图1或图3实施例的方法,其执行方式和有益效果类似,在这里不再赘述。本公开实施例还提供一种计算机可读存储介质,该存储介质中存储有计算机程序,当所述计算机程序被处理器执行时,可以实现上述图1或图3实施例的方法,其执行方式和有益效果类似,在这里不再赘述。需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅是本公开的具体实施方式,使本领域技术人员能够理解或实现本公开。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本公开的精神或范围的情况下,在其它实施例中实现。因此,本公开将不会被限制于本文所述的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1