CN114328755B - 一种数据写入方法、数据读取方法、装置及电子设备 - Google Patents
一种数据写入方法、数据读取方法、装置及电子设备 Download PDFInfo
- Publication number
- CN114328755B CN114328755B CN202210229248.XA CN202210229248A CN114328755B CN 114328755 B CN114328755 B CN 114328755B CN 202210229248 A CN202210229248 A CN 202210229248A CN 114328755 B CN114328755 B CN 114328755B
- Authority
- CN
- China
- Prior art keywords
- sub
- data
- request
- determining
- utilized
- 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
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据写入方法、数据读取方法、装置及电子设备,应用于数据处理领域,该写入方法包括:当接收到针对目标文件的写入请求后,获取所述写入请求中携带的待写入的目标数据;基于所述目标数据中属于拆分键的第一数据,确定用于存储所述目标数据的第一子表;基于所述目标数据中属于所述隐式字段的第二数据,从所述第一子表对应的多个子表中,确定用于存储所述目标数据的子表,作为待利用子表;将所述目标数据写入所述待利用子表。通过本方案可以提升分布式数据库系统中的处理效率。
Description
技术领域
本发明涉及数据处理领域,特别是涉及一种数据写入方法、数据读取方法、装置及电子设备。
背景技术
在分布式数据库系统中,将任一文件拆分为多个子表,并将拆分后的各个子表分布地存储于多个存储节点,通过管理节点来对各个子表进行数据写入和数据读取等处理。其中,子表的拆分依赖于拆分键,该拆分键为文件中的多个字段中的一个或多个字段;并且,待写入的业务数据存储于哪个子表中,依赖于业务数据中的属于拆分键的数据内容。
但是对于电商等某些典型场景下,数据表经过拆分之后,得到的子表可能会存在数据量过大的问题,例如,大量数据集中存储于一个子表中,这样,分布式效果不佳,导致存储节点的处理效率依然无法满足业务需求。因此,如何提升分布式数据库系统的处理效率是一个亟待解决的问题。
发明内容
本发明实施例的目的在于提供一种数据写入方法、装置及电子设备,以在数据写入过程中,提升分布式数据库系统的处理效率;另外,本发明实施例还提供一种数据读取方法、装置及电子设备,以在数据读取过程中,提升分布式数据库系统的处理效率。具体技术方案如下:
第一方面,本发明实施例提供了一种数据写入方法,应用于分布式数据库系统的管理节点,所述分布式数据库系统还包括多个存储节点;所述方法包括:
当接收到针对目标文件的写入请求后,获取所述写入请求中携带的待写入的目标数据;
基于所述目标数据中属于拆分键的第一数据,确定用于存储所述目标数据的第一子表;其中,所述第一子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,所述第一子表对应的多个子表分布式地存储于各个存储节点中,所述隐式字段为除所述拆分键以外的字段;
基于所述目标数据中属于所述隐式字段的第二数据,从所述第一子表对应的多个子表中,确定用于存储所述目标数据的子表,作为待利用子表;
将所述目标数据写入所述待利用子表。
可选地,所述基于所述目标数据中属于所述隐式字段的第二数据,从所述第一子表对应的多个子表中,确定用于存储所述目标数据的子表,作为待利用子表,包括:
根据所述目标数据中属于所述隐式字段的第二数据,确定待利用的拆分参考信息;其中,不同的拆分参考信息与所述第一子表所对应的不同子表具有对应关系;
从所述第一子表对应的多个子表中,确定与所述待利用的拆分参考信息对应的子表,作为待利用子表。
可选地,所述根据所述目标数据中属于所述隐式字段的第二数据,确定待利用的拆分参考信息,包括:
计算所述目标数据中属于所述隐式字段的第二数据的哈希值,作为待利用的拆分参考信息;
或者,
从所述隐式字段对应的多个取值范围中,确定所述目标数据中属于所述隐式字段的第二数据所在的取值范围,作为待利用的拆分参考信息。
可选地,所述将所述目标数据写入所述待利用子表,包括:
确定所述待利用子表所部署于的第一存储节点;
向所述第一存储节点发送第一请求,以使所述第一存储节点响应所述第一请求;其中,所述第一请求用于将所述目标数据写入至所述待利用子表。
第二方面,本发明实施例提供了一种数据读取方法,应用于分布式数据库系统的管理节点,所述分布式数据库系统还包括多个存储节点;所述方法包括:
当接收到针对目标文件的读取请求后,获取所述读取请求中所携带的属于拆分键的第三数据;
基于所述第三数据,确定用于存储包含有所述第三数据的数据内容的第二子表;其中,所述第二子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,且所述第二子表对应的多个子表分布式地存储于各个存储节点中;
从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表;
对各个待访问子表进行针对所述读取请求的数据读取。
可选地,所述从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表,包括:
若所述读取请求中未携带有属于所述隐式字段的第四数据,将所述第二子表对应的多个子表,确定为针对所述读取请求的各个待访问子表;
若所述读取请求中携带有属于所述隐式字段的第四数据,基于所述第四数据,从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表。
可选地,所述对各个待访问子表进行针对所述读取请求的数据读取,包括:
确定各个待访问子表对应的第二存储节点,其中,任一待访问子表对应的第二存储节点为该子表所部署于的存储节点;
向各个第二存储节点发送第二请求,以使各个第二存储节点响应所接收到的第二请求,并反馈响应结果;其中,所述第二请求用于从所对应的待访问子表进行针对所述第三数据的数据读取;
基于各个第二存储节点反馈的响应结果,向所述读取请求的发出端反馈针对所述读取请求的请求结果。
第三方面,本发明实施例提供了一种数据写入装置,应用于分布式数据库系统的管理节点,所述分布式数据库系统还包括多个存储节点;所述装置包括:
第一获取模块,用于当接收到针对目标文件的写入请求后,获取所述写入请求中携带的待写入的目标数据;
第一确定模块,用于基于所述目标数据中属于拆分键的第一数据,确定用于存储所述目标数据的第一子表;其中,所述第一子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,所述第一子表对应的多个子表分布式地存储于各个存储节点中,所述隐式字段为除所述拆分键以外的字段;
第二确定模块,用于基于所述目标数据中属于所述隐式字段的第二数据,从所述第一子表对应的多个子表中,确定用于存储所述目标数据的子表,作为待利用子表;
写入模块,用于将所述目标数据写入所述待利用子表。
可选地,所述第二确定模块包括:
第一确定子模块,用于根据所述目标数据中属于所述隐式字段的第二数据,确定待利用的拆分参考信息;其中,不同的拆分参考信息与所述第一子表所对应的不同子表具有对应关系;
第二确定子模块,用于从所述第一子表对应的多个子表中,确定与所述待利用的拆分参考信息对应的子表,作为待利用子表。
可选地,所述第一确定子模块具体用于:
计算所述目标数据中属于所述隐式字段的第二数据的哈希值,作为待利用的拆分参考信息;
或者,
从所述隐式字段对应的多个取值范围中,确定所述目标数据中属于所述隐式字段的第二数据所在的取值范围,作为待利用的拆分参考信息。
可选地,所述写入模块具体用于:
确定所述待利用子表所部署于的第一存储节点;
向所述第一存储节点发送第一请求,以使所述第一存储节点响应所述第一请求;其中,所述第一请求用于将所述目标数据写入至所述待利用子表。
第四方面,本发明实施例提供了一种数据读取装置,应用于分布式数据库系统的管理节点,所述分布式数据库系统还包括多个存储节点;所述装置包括:
第二获取模块,用于当接收到针对目标文件的读取请求后,获取所述读取请求中所携带的属于拆分键的第三数据;
第三确定模块,用于基于所述第三数据,确定用于存储包含有所述第三数据的数据内容的第二子表;其中,所述第二子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,且所述第二子表对应的多个子表分布式地存储于各个存储节点中;
第四确定模块,用于从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表;
读取模块,用于对各个待访问子表进行针对所述读取请求的数据读取。
可选地,所述第四确定模块具体用于:
若所述读取请求中未携带有属于所述隐式字段的第四数据,将所述第二子表对应的多个子表,确定为针对所述读取请求的各个待访问子表;
若所述读取请求中携带有属于所述隐式字段的第四数据,基于所述第四数据,从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表。
可选地,所述读取模块具体用于:
确定各个待访问子表对应的第二存储节点,其中,任一待访问子表对应的第二存储节点为该子表所部署于的存储节点;
向各个第二存储节点发送第二请求,以使各个第二存储节点响应所接收到的第二请求,并反馈响应结果;其中,所述第二请求用于从所对应的待访问子表进行针对所述第三数据的数据读取;
基于各个第二存储节点反馈的响应结果,向所述读取请求的发出端反馈针对所述读取请求的请求结果。
第五方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现任一数据写入方法或数据读取方法。
第六方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现数据写入方法或数据读取方法。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一所述的数据写入方法或数据读取方法。
本发明实施例有益效果:
本发明实施例所提供的数据写入方法中,在基于待写入的目标数据中的属于拆分键的第一数据,确定出用于存储目标数据的第一子表后,并非直接将目标数据写入第一子表,而是基于目标数据中属于隐式字段的第二数据,从预先基于隐式字段所拆分得到的、第一子表对应的多个子表中,确定出用于存储目标数据的子表,作为待利用子表;最终,将目标数据写入待利用子表。可见,相对于现有技术而言,通过该数据写入方法,可以将针对第一子表的待写入的数据进一步分散存储于不同的存储节点中,达到数据打散的效果,分布式效果更好,因此,在数据写入过程中,可以提升分布式数据库系统的处理效率。
另外,本发明实施例所提供的数据读取方法中,在基于读取请求中所携带的属于拆分键的第三数据,确定出用于存储包含有所述第三数据的数据内容的第二子表后,并非直接从第二子表中读取数据;而是从第二子表对应的多个子表中,确定针对读取请求的各个待访问子表;对各个待访问子表进行针对读取请求的数据读取。可见,相对于现有技术而言,通过该数据读取方法,可以分散地从第二子表对应的待访问子表中进行数据读取,分布式效果更好,因此,在数据读取过程中,可以提升分布式数据库系统的处理效率。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
图1为本发明实施例提供的一种分布式数据库系统的原理示意图;
图2为本发明实施例提供的一种数据降序分布图;
图3为本发明实施例提供的一种数据写入方法的流程示意图;
图4为本发明实施例提供的一种数据读取方法的流程示意图;
图5为本发明实施例提供的一种分布式数据库系统的又一原理示意图;
图6为本发明实施例提供的一种数据写入装置的结构示意图;
图7为本发明实施例提供的一种数据读取装置的结构示意图;
图8为本发明实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
相关技术中,在分布式数据库系统中,通常采用数据拆分的方式,把一张数据表按照指定规则拆分成若干子表,其中,子表也可以称为物理子表。这样,通过降低单个子表的大小,来提升单机引擎(即单个存储节点)的处理效率,最终提升分布式数据库系统的处理效率。具体而言,在分布式数据库系统中,将任一文件,即数据表,拆分为多个子表,并将拆分后的各个子表分布地存储于多个存储节点,通过管理节点来对各个子表进行数据写入和数据读取等处理。其中,子表的拆分依赖于拆分键,该拆分键为文件中的多个字段中的一个或多个字段;并且,待写入的业务数据存储于哪个子表中,依赖于业务数据中的属于拆分键的数据内容。
示例性的,如图1所示,DD1(存储层)、DD2(存储层)为分布式数据库系统中的两个存储节点,各个存储节点中包含被拆分后的子表TableA_1、TableA_2、TableA_3…TableC_6;DS(计算层)为分布式数据库系统中的管理节点。这样,在业务SQL(结构化查询语言,Structured Query Language)到来时,DS(计算层),可以确定出关于业务SQL的待写入数据存储于哪个子表,或者,关于业务SQL的待读取数据存储于哪个子表,从而对所确定出的子表进行数据写入或数据读取。通过这种分布式的方式,可以保证一定的数据处理效率。
在遇到大用户场景下,前述方案依然不能有效的满足业务需求:
比如类似电商平台的订单表,如果按照商户名称和订单时间进行数据表的拆分,也就是,以商户名称和订单是时间作为拆分键,可能把某个商户的某一天的订单数据拆分到一张物理子表上。那么,对于头部客户(指一些有价值的、能够吸引一些价值观类似且有共鸣人群的人,例如:可以创造出价值的商户),其某一天的订单数据是大量的,均会存储在某一子表(例如table_x)。这样,导致还是会有大量的数据集中存储在分布式数据库系统的某一个存储节点上,显然分布式效果不佳,最终单机引擎的处理效率依然无法满足业务需求。
为了进一步理解大量的数据集中会存储在某一存储节点,下面结合图2进行说明:如图2所示,图2为商户数据的分布图(即按照商户或商品名称对订单量进行降序的分布图),横坐标表征商户或商品的名称,数字代表编号或序号,纵坐标代表订单量,数字代表订单的数量。通过图2可以看到,对于编号或序号为1的商户或商品,其某一天的订单量很大,导致其某一天的订单数据也会很大,若按照现有技术对数据表进行拆分,得到的子表还是会含有大量的订单数据,分布式效果不佳。
另外,需要说明的是,如果按照传统的拆分方式,也就是按照拆分键对数据表继续拆分,当需要解决上述提出的数据仍存在集中存储导致处理效率低的问题时,在数据写入过程和数据读取过程,需要业务侧发出的请求中必须携带额外的拆分键,从而实现对拆分后还是存在大量数据的子表,进行再次拆分。这种对于业务方有感的方式,无疑会对业务方造成不友好问题,影响业务方的使用体验。
基于此,本发明实施例提供了一种数据写入方法,以在数据写入过程中,提升分布式数据库系统的处理效率。
本发明实施例提供的一种数据写入方法可以应用于分布式数据库系统的管理节点。该分布式数据库系统还包括多个存储节点。其中,分布式数据库系统中的管理节点可以对各个存储节点进行管理以及数据访问等处理操作,各个存储节点用于存储数据。
下面首先对本发明提供的一种数据写入方法进行介绍。
其中,本发明实施例提供的一种数据写入方法,可以包括如下步骤:
当接收到针对目标文件的写入请求后,获取所述写入请求中携带的待写入的目标数据;
基于所述目标数据中属于拆分键的第一数据,确定用于存储所述目标数据的第一子表;其中,所述第一子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,所述第一子表对应的多个子表分布式地存储于各个存储节点中,所述隐式字段为除所述拆分键以外的字段;
基于所述目标数据中属于所述隐式字段的第二数据,从所述第一子表对应的多个子表中,确定用于存储所述目标数据的子表,作为待利用子表;
将所述目标数据写入所述待利用子表。
本发明实施例所提供的数据写入方法中,在基于待写入的目标数据中的属于拆分键的第一数据,确定出用于存储目标数据的第一子表后,并非直接将目标数据写入第一子表,而是基于目标数据中属于隐式字段的第二数据,从预先基于隐式字段所拆分得到的、第一子表对应的多个子表中,确定出用于存储目标数据的子表,作为待利用子表;最终,将目标数据写入待利用子表。可见,相对于现有技术而言,通过该数据写入方法,可以将针对第一子表的待写入的数据进一步分散存储于不同的存储节点中,达到数据打散的效果,分布式效果更好,因此,在数据写入过程中,可以提升分布式数据库系统的处理效率。
下面结合附图,对本发明实施例提供的一种数据写入方法进行具体说明。
图3为本发明实施例提供的一种数据写入方法的流程示意图,如图3所示,该方法可以包括如下步骤S301-S304:
S301:当接收到针对目标文件的写入请求后,获取写入请求中携带的待写入的目标数据;
当接收到针对目标文件的写入请求后,可以获取写入请求中所携带的待写入的目标数据,以便对目标数据进行之后的写入处理,其中,目标数据的数量可以一个或多个,针对每一个目标数据的处理过程均相同,所谓的一个目标数据可以包含目标文件所涉及的全部或部分字段的字段内容。可以理解的是,本发明实施例所提及的写入请求,可以是用于向数据表中新增数据内容的请求,即插入数据的请求,也可以是对于数据表中已存在的数据内容进行修改的请求,即修改数据的请求。
需要说明的是,针对目标文件的写入请求可以为任一有数据写入需求的业务方发出的,该业务方可以为电商商户、某一考试的组织管理者等;该目标文件可以为任一种有存储需求的数据文件,例如电商数据表单、考试成绩单等;并且当满足针对目标文件的写入需求时,可以通过分布式数据库系统提供的操作界面发送针对目标文件的写入请求,从而将目标文件的数据保存至分布式数据库系统中;针对目标文件的写入需求可以为达到指定的时间、文件大小达到指定规模等,本发明实施例对此不作限定。
另外,由于需要针对目标文件的写入请求进行写入处理,因此写入请求中会携带待写入的目标数据,可以获取写入请求中的目标数据从而执行后续的数据写入的步骤。可以理解的是,获取写入请求中携带的待写入的目标数据的方式可以存在多种,本发明实施例对此并不做限定。示例性的,在一种实现方式中,可以获取写入请求中的所有数据作为待写入的目标数据;在另一种实现方式中,可以获取写入请求中含有指定的写入需求的数据作为目标数据。需要说明的是,在一些情况下,写入请求中所携带的数据并不都是待写入的目标数据,此时需要对写入请求中携带的数据进行分辨,可以获取含有指定的写入需求的数据作为目标数据。例如:写入请求中所携带的数据包含历史成绩和本次成绩,但是本次写入请求只须将本次成绩写入即可,此时,可以根据时间对数据进行筛选,并完成对本次成绩的写入。另外,指定的写入需求可以通过特定的数据格式,特定时间段的数据等进行分辨。
S302:基于目标数据中属于拆分键的第一数据,确定用于存储目标数据的第一子表;
其中,所述第一子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,所述第一子表对应的多个子表分布式地存储于各个存储节点中,所述隐式字段为除所述拆分键以外的字段;并且,第一子表为按照拆分键对目标文件进行拆分后所形成的子表。
当获取到目标数据后,为了完成分布式的对数据进行存储,需要根据目标数据中属于拆分键的数据,即第一数据,确定用于存储目标数据的第一子表。其中,拆分键为业务方能够感知的拆分字段,通过以拆分字段作为拆分依据,可以将目标文件拆分为多个子表,第一子表为将目标文件所拆分成的多个子表中的一个子表。可以理解的是,拆分键的选定可以根据实际情况选定,本发明实施例不做限定,示例性的,针对商户的数据表而言,可以选定商户ID作为拆分键,或者,选定商户ID和订单时间作为拆分键。其中,属于拆分键的第一数据可以为:商户A、商户B,或者,商户A第T天、商户B第T天;从而得到商户A的数据、商户B的数据,或者,商户A第T天的数据、商户B第T天的数据。
另外,所谓的基于目标数据中属于拆分键的第一数据,确定用于存储目标数据的第一表,即基于第一数据,从目标文件的多个子表中选择用于存储目标数据的第一子表。示例性的,在一种实现方式中,根据第一数据,确定用于进行数据拆分的目标参考信息,然后,利用目标参考信息,从目标文件的多个子表中,确定出第一子表,其中,不同的参考信息对应目标文件的不同的子表。其中,根据第一数据,确定用于进行数据拆分的目标参考信息的方式可以包括:对第一数据进行哈希运算,所得到的哈希值,作为目标参考信息,其中,不同的哈希值对应于目标文件的不同子表;或者,从拆分键对应的多个取值范围中,确定第一数据属于的取值范围,作为目标参考信息,其中,不同的取值范围对应目标文件的不同子表。
需要说明的是,为了解决技术问题,本发明所提供的实施例中,各个存储节点中并非真正存储按照拆分键所形成的的目标文件的多个子表,而是,预先按照设定的隐式字段,对目标文件的每个子表进行进一步拆分,这样,目标文件的每一子表存在有数据量较小的多个子表,并且,目标文件的每一子表而言,所对应的数据量较小的多个子表,分布式地存储于各个存储节点中。由于第一子表为按照拆分键所形成的目标文件的多个子表中的一个,因此,第一子表为关于目标文件的子表且预先按照隐式字段被拆分为多个子表。可以理解的是,所谓预先按照隐式字段被拆分为多个子表,为业务方无感知的情况下,分布式数据库系统按照除拆分键以外的其他字段所进行的数据拆分。例如,假设目标文件为针对电商的数据表,对于业务方可知的拆分键为商户ID,此时,针对电商的数据表可以依据商户ID拆分形成数据表的多个子表;以及为了解决技术问题,可以设定对于业务方无感知的隐式字段为:收货地区,此时,针对数据表的每一子表,可以继续以收货地区作为拆分依据,对该子表进行进一步拆分,并分布式地存储于各个存储节点中。那么,在接收到针对电商的数据表的写入请求后,可以将该写入请求所携带的目标数据中的商户ID的ID值,作为首次的数据拆分依据,从而基于目标数据中的商户ID的ID值,从以商户ID作为拆分键所形成的数据表的多个子表中,确定出用于存储目标数据的第一子表;并且,后续依据隐式字段,来确定出第一子表对应的多个子表中的待利用子表。
需要强调的是,通过拆分键所形成的目标文件的多个子表,为第一层表;而通过隐式字段所形成的子表,为第一层表的下一层表。本发明实施例所提及的目标文件的多个子表均为第一层表,即按照拆分键所形成的子表,而第一子表对应的多个子表为:针对属于第一层表的第一子表,以隐式字段作为依据进行再次拆分所形成的第二层表。
S303:基于目标数据中属于隐式字段的第二数据,从第一子表对应的多个子表中,确定用于存储目标数据的子表,作为待利用子表;
本方案中,第一子表预先按照隐式字段被拆分为多个子表,但是并不是各个子表中都会写入目标数据;因此需要基于目标数据中属于隐式字段的第二数据,从第一子表对应的多个子表中,确定哪些或哪个子表是用于存储目标数据的子表,作为待利用子表。例如,目标数据为某一次考试的学生成绩,可以将学号位于某一范围的学生成绩写入至一子表中,将学号位于另外范围的学生成绩写入另外一子表中,但是仍会存在按照另外的隐式字段拆分而得的各个子表,因此需要从第一子表对应的多个子表中,确认用于存储学生成绩的子表,作为待利用子表;从而执行后续的数据写入的步骤。
为了方案清楚以及布局清晰,基于目标数据中属于隐式字段的第二数据,从第一子表对应的多个子表中,确定用于存储目标数据的子表,作为待利用子表的具体实现方式将在后续实施例中进行详细介绍。
S304:将目标数据写入待利用子表;
在得到用于存储目标数据的子表,即待利用子表后,可以将数据写入对应的待利用子表中,从而完成数据写入步骤。
另外,将目标数据写入待利用子表的包括如下步骤:A1-A2
步骤A1,确定所述待利用子表所部署于的第一存储节点;
步骤A2,向所述第一存储节点发送第一请求,以使所述第一存储节点响应所述第一请求;其中,所述第一请求用于将所述目标数据写入至所述待利用子表。
其中,各个子表位于哪个存储节点是预先建立有映射关系的;因此可以先根据子表与存储节点的映射关系,确定待利用子表所部署的第一存储节点,然后执行后续的步骤。当确定待利用子表所部署的第一存储节点后,可以向该第一存储节点发送用于将目标数据写入至待利用子表的请求,以使得该第一存储节点相应第一请求,从而将目标数据写入至待利用子表。
需要说明的是,以上对目标数据写入待利用子表方式的说明,仅仅作为示例,并不应构成对本发明的限定。
本发明实施例所提供的数据写入方法中,在基于待写入的目标数据中的属于拆分键的第一数据,确定出用于存储目标数据的第一子表后,并非直接将目标数据写入第一子表,而是基于目标数据中属于隐式字段的第二数据,从预先基于隐式字段所拆分得到的、第一子表对应的多个子表中,确定出用于存储目标数据的子表,作为待利用子表;最终,将目标数据写入待利用子表。可见,相对于现有技术而言,通过该数据写入方法,可以将针对第一子表的待写入的数据进一步分散存储于不同的存储节点中,达到数据打散的效果,分布式效果更好,因此,在数据写入过程中,可以提升分布式数据库系统的处理效率。尤其是写入请求并行量较大或者同一写入请求中所携带的目标数据的数量较多时,分布式数据库系统的处理效率的提升尤为明显。
另外,本方案中,在分布式数据库系统内部,利用自增ID列,即自增隐式字段,对数据表进行透明的计算以增强拆表。这样,通过引入“隐式的分布式计算拆分方式”,释放分布式数据库的分布式计算能力,从而大幅提高分布式数据库的处理效率。
可选地,在本发明的另一实施例中,所述基于目标数据中属于隐式字段的第二数据,从第一子表对应的多个子表中,确定用于存储目标数据的子表,作为待利用子表包括步骤B1-B2;
步骤B1,根据所述目标数据中属于所述隐式字段的第二数据,确定待利用的拆分参考信息;其中,不同的拆分参考信息与所述第一子表所对应的不同子表具有对应关系;
步骤B2,从所述第一子表对应的多个子表中,确定与所述待利用的拆分参考信息对应的子表,作为待利用子表;
需要说明的是,目标数据中含有属于隐式字段的第二数据,可以根据第二数据,确定待利用的拆分参考信息,从而根据待利用的拆分参考信息,确定用于存储目标数据的子表,作为待利用子表。其中,第一子表对应的多个子表中可以包含不是用于存储目标数据的子表,因此,可以基于上述步骤得到的待利用的拆分参考信息,确定与之对应的子表,作为待利用子表。
示例性的,在目标数据中,可以含有多个隐式字段,例如:名称字段、时间字段、分数字段等;目标数据中属于隐式字段可以为名称字段、时间字段、分数字段中的一种或多种,通过隐式字段的字段内容,可以确定待利用的拆分参考信息;所确定的待利用拆分参考信息与第一子表对应的不同子表具有对应关系,那么可以通过待利用拆分参考信息,从而确定将要写入目标数据的多个子表。
示例性的,在一种实现方式中,根据所述目标数据中属于所述隐式字段的第二数据,确定待利用的拆分参考信息的方式可以为如下方式中的一种:
计算所述目标数据中属于所述隐式字段的第二数据的哈希值,作为待利用的拆分参考信息;
或者,
从所述隐式字段对应的多个取值范围中,确定所述目标数据中属于所述隐式字段的第二数据所在的取值范围,作为待利用的拆分参考信息。
具体而言,哈希即Hash函数,通过把任意长度的输入通过散列算法变换成固定长度的输出,即将一种任一大小的数据,压缩至某一特定的大小。通过该种计算得到的哈希值可以为任意大小,在此并不做限定。目标数据中属于隐式字段的字段内容的范围可以存在多个,可以将隐式字段中第二数据所在的取值范围,作为待利用的拆分参考信息。例如,隐式字段可以为学生成绩,第二数据所在的取值范围为80-90分,那么可以将80-90分这个取值范围作为待利用的拆分参考信息。
上述对确定待利用的拆分参考信息的方式的说明,仅仅作为示例,并不应构成对本发明的限定。
本方案中,在确定待利用子表时,可以根据目标数据中属于所述隐式字段的第二数据,确定待利用的拆分参考信息;然后,从所述第一子表对应的多个子表中,确定与所述待利用的拆分参考信息对应的子表,作为待利用子表。通过该方案,可以保证较高的计算效率,从而在数据写入过程中,进一步提升分布式数据库系统的处理效率。
基于此,本发明实施例提供了一种数据读取方法,以在数据读取过程中,提升分布式数据库系统的处理效率。
本发明实施例提供的一种数据读取方法可以应用于分布式数据库系统的管理节点。该分布式数据库系统还包括多个存储节点。其中,分布式数据库系统中的管理节点可以对各个存储节点进行管理以及数据访问等处理操作,各个存储节点用于存储数据。
下面首先对本发明提供的一种数据写入方法、数据读取方法进行介绍。
其中,本发明实施例提供的一种数据读取方法,可以包括如下步骤:
当接收到针对目标文件的读取请求后,获取所述读取请求中所携带的属于拆分键的第三数据;
基于所述第三数据,确定用于存储包含有所述第三数据的数据内容的第二子表;其中,所述第二子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,且所述第二子表对应的多个子表分布式地存储于各个存储节点中;
从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表;
对各个待访问子表进行针对所述读取请求的数据读取。
本发明实施例所提供的数据读取方法中,在基于读取请求中所携带的属于拆分键的第三数据,确定出用于存储包含有所述第三数据的数据内容的第二子表后,并非直接从第二子表中读取数据;而是从第二子表对应的多个子表中,确定针对读取请求的各个待访问子表;对各个待访问子表进行针对读取请求的数据读取。可见,相对于现有技术而言,通过该数据读取方法,可以分散地从第二子表对应的待访问子表中进行数据读取,分布式效果更好,因此,在数据读取过程中,可以提升分布式数据库系统的处理效率。
下面结合附图,对本发明实施例提供的一种数据读取方法进行具体说明。
如图4所示,该数据读取方法可以包括如下步骤S401-S404:
S401:当接收到针对目标文件的读取请求后,获取读取请求中所携带的属于拆分键的第三数据;
当业务方需要查询数据时,可以发出针对目标文件的读取请求,而由于拆分键是业务方所感知的,因此,读取请求中需要含有属于拆分键的第三数据,方便精准的对数据进行查找。其中,目标文件可以为任一类文件,例如:订单数据文件、成绩文件、用户信息文件等,在此并不做限定。需要说明的是,拆分键可以为任一种能够对数据进行分类的某一或多个数据字段,在此并不做限定。关于拆分键的介绍可以参见上述的关于数据写入方法的实施例内容。
S402:基于第三数据,确定用于存储包含有第三数据的数据内容的第二子表;
其中,所述第二子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,且所述第二子表对应的多个子表分布式地存储于各个存储节点中;
当确定属于拆分键的第三数据之后,由于对于业务方而言,目标文件已经按照拆分键进行数据拆分,因此,可以根据第三数据,确定包含第三数据的数据内容的第二子表,从而根据第二子表,执行后续的数据查询步骤。其中,第二子表为以拆分键对目标文件拆分得到的多个子表中的一子表;而包含有第三数据的数据内容可以为数据表中的包含有第三数据的一行或多行数据内容。需要说明的是,针对目标文件而言,以拆分键拆分为多个子表,进而,针对目标文件的每一子表,按照隐式字段进一步拆分为数据量更小的多个子表,并且,数据量更小的子表分布式地存储于各个存储节点中。其中,确定用于存储包含有第三数据的数据内容的第二子表的方式与上述步骤S302类似,在此不做赘述。
S403:从第二子表对应的多个子表中,确定针对读取请求的各个待访问子表;
由于第二子表对应了多个子表,而并不是所有子表都是存储所读取的数据的。例如:第二子表对应的多个子表有:子表1、子表2和子表3;但是只有子表1和子表2是用于存储所读取的数据。因此需要先确定针对读取请求的各个待访问子表,从而执行后续的数据读取步骤。
示例性的,可以将第二子表所对应的多个子表,都确认为针对读取请求的各个待访问子表。此时,可以更加全面的对数据进行读取,得到的数据更加完整。为了方案清楚以及布局清晰,从第二子表对应的多个子表中,确定针对读取请求的各个待访问子表的其他方式,将在后续进行详细介绍。
S404:对各个待访问子表进行针对读取请求的数据读取;
在确定针对读取请求的各个待访问子表之后,可以对各个待访问子表进行访问,从而完成数据读取。示例性的,可以向存储各个待访问子表的存储节点发出请求,从而获得要读取的数据。详细的对各个待访问子表进行针对读取请求的数据读取方式将在后续进行详细介绍,在此不做赘述。
本发明实施例所提供的数据读取方法中,在基于读取请求中所携带的属于拆分键的第三数据,确定出用于存储包含有所述第三数据的数据内容的第二子表后,并非直接从第二子表中读取数据;而是从第二子表对应的多个子表中,确定针对读取请求的各个待访问子表;对各个待访问子表进行针对读取请求的数据读取。可见,相对于现有技术而言,通过该数据读取方法,可以分散地从第二子表对应的待访问子表中进行数据读取,分布式效果更好,因此,在数据读取过程中,可以提升分布式数据库系统的处理效率。
可选地,在本发明的另一实施例中,确定针对读取请求的各个待访问子表可以包括如下步骤:C1-C2;
步骤C1,若所述读取请求中未携带有属于所述隐式字段的第四数据,将所述第二子表对应的多个子表,确定为针对所述读取请求的各个待访问子表;
步骤C2,若所述读取请求中携带有属于所述隐式字段的第四数据,基于所述第四数据,从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表。
需要说明的是,读取请求中可以包含属于隐式字段的第四数据,也可以不包含,因此,可以先判断读取请求中是否包含属于隐式字段的第四数据,从而根据不同的结果执行不同的步骤。具体而言,可以对比读取请求中所携带的数据,是否存在有属于隐式字段的第四数据。若不存在,表明未给出进一步数据查询的查询依据,则执行步骤C1;若存在,则执行步骤C2。
示例性的,在一种实现方式中,确定针对读取请求的各个待访问子表的方式可以包括:
根据所述目标文件中属于所述隐式字段的第四数据,确定备用的拆分参考信息;其中,不同的拆分参考信息与所述第二子表所对应的不同子表具有对应关系;
从所述第二子表对应的多个子表中,确定与所述备用的拆分参考信息对应的子表,作为备用子表。
需要说明的是,读取请求中可以包含属于隐式字段的第四数据,也可以不包含(可以包含于分布式数据库内部),这都是合理的。而通过第四数据可以确定备用的拆分参考信息,不同的拆分参考信息与第二子表所对应的不同子表具有对应关系,例如;某一备用的拆分参考信息对应第二子表所对应的5个子表,那么可以将这第二子表所对应的5个子表,作为备用子表。
在另一种实现方式中,根据所述目标文件中属于所述隐式字段的第四数据,确定备用的拆分参考信息的方式可以为如下方式中的一种:
计算所述目标文件中属于所述隐式字段的第四数据的哈希值,作为备用的拆分参考信息;
或者,
从所述隐式字段对应的多个取值范围中,确定所述目标文件中属于所述隐式字段的第四数据所在的取值范围,作为备用的拆分参考信息。
另外,备用的拆分参考信息的确定方式可以存在多种,例如:通过哈希函数,计算目标文件中属于所述隐式字段的第四数据的哈希值,作为备用的拆分拆分参考信息;或者,从隐式字段所对应的多个取值范围中,通过Range集合,确定第四数据所在的取值范围,作为备用的拆分参考信息。
可选地,在本发明的另一实施例中,对各个待访问子表进行针对读取请求的数据读取可以包括如下步骤:D1-D3;
步骤D1,确定各个待访问子表对应的第二存储节点,其中,任一待访问子表对应的第二存储节点为该子表所部署于的存储节点;
步骤D2,向各个第二存储节点发送第二请求,以使各个第二存储节点响应所接收到的第二请求,并反馈响应结果;其中,所述第二请求用于从所对应的待访问子表进行针对所述第三数据的数据读取;
步骤D3,基于各个第二存储节点反馈的响应结果,向所述读取请求的发出端反馈针对所述读取请求的请求结果。
需要说明的是,在对各个待访问子表进行针对数据读取请求的数据读取时,由于各个待访问子表存储于分布式数据库的存储节点中,因此,可以先确定各个待访问子表对应的第二存储节点,然后向该存储节点发出第二请求,用以进行数据读取;由于各个待访问子表是分布式的存储于各个存储节点的,因此,需要总结各个第二存储节点反馈的响应结果(即对要读取的数据进行总结),并将结果反馈至读取请求发送端。
本方案中,在确定待访问子表时,可以根据目标数据中属于所述隐式字段的第四数据,确定备用的拆分参考信息;然后,从所述第二子表对应的多个子表中,确定与所述备用的拆分参考信息对应的子表,作为待访问子表。通过该方案,可以保证较高的计算效率,从而在数据读取过程中,进一步提升分布式数据库系统的处理效率。
另外,需要强调的是,本发明实施例中所提及的“第一数据”中的“第一”、“第二数据”中的“第二”、“第三数据”中的“第三”以及“第四数据”中的“第四”仅仅用于从命名上区分出来自不同请求以及属于不同字段的数据,并不具有任何限定意义。类似的,“第一存储节点”中的“第一”以及“第二存储节点”中的“第二”也仅仅用于从命名上区分数据写入过程和数据读取过程中的存储节点,并不具有任何限定意义;“第一子表”中的“第一”和“第二子表”中的“第二”也仅仅用于从命名上区分数据写入过程和读取过程中所确定的以拆分键的数据所识别出的目标文件的子表,并不具有任何限定意义。
为了方便理解方案,下面结合图5介绍一具体实施例。
针对数据表TableA 而言,DS(计算层)预先基于业务方可感知的拆分键,进行数据拆分,得到子表名为TableA_1…TableA_6;若按照现有技术,则TableA_1…TableA_6这六个子表,会分布式地存储于各个存储层DD1,DD2,DD3中;但是为了解决现有技术问题,本发明所提供的实施例中,TableA_1…TableA_6并未存储于各个存储层,而是预先设定出隐式字段,基于隐式字段,进一步对TableA_1…TableA_6中的每个子表进行进一步拆分,在拆分后,TableA_1…TableA_6中的每一子表对应的多个数据量较小的子表,可以分布式地存储于DD1,DD2,DD3,例如:针对TableA_1而言,可以进一步拆分得到TableA_1_1、TableA_1_2以及TableA_1_3,并分布式地存储于DD1,DD2,DD3。对于隐式字段的拆分,属于业务无感的隐式拆分。
基于上述的描述,当业务SQL为针对TableA的写入请求时,可以获取待写入的数据(对应上述目标数据),并根据待写入数据所携带的数据(对应上述目标数据中属于拆分键的第一数据)计算数据要被写入至哪个子表(即TableA_1…TableA_6,对应上述用于存储所述目标数据的第一子表)中,再根据分布式数据库中自增的ID列(对应上述隐式字段),利用自增ID列的数据内容(对应上述属于隐式字段的第二数据),确定待写入数据的子表,并将待写入的数据写入至对应的子表(即TableA_1_1…TableA_6_3,对应上述待利用子表)中。
当业务SQL为针对TableA的读取请求时,可以先确定业务请求中所携带的属于拆分键的数据(对应上述属于拆分键的第三数据),并根据属于拆分键数据的数据内容(对应上述第三数据的数据内容)确定包含数据的子表(即TableA_1…TableA_6,对应上述的存储包含有第三数据的数据内容的第二子表),再按照数据库自增的ID列(对应上述隐式字段),利用自增ID列的数据内容(对应上述属于隐式字段的第四数据),确定哪些是进行隐藏拆分的、用于存储对应数据的子表(即TableA_1_1…TableA_6_3,对应上述针对读取请求的各个待访问子表),并从这些子表中读取数据。
这样,通过在分布式数据库中自增ID列的方式,可以对分布式数据库中的数据进一步打散,对数据表增强拆表;这样,分布式数据库在处理对数据的写入和读取时,可以将数据均匀的分布式的存储于分布式数据库的各个存储节点中;写入时可以将数据写入对应存储节点中的子表中,读取时可以对对应的各个存储节点的子表进行读取,提高了分布式数据库系统的处理效率。
相对于上述数据写入方法的实施例,如图6所示,本发明实施例提供了一种数据写入装置,所述装置包括:
第一获取模块601,用于当接收到针对目标文件的写入请求后,获取所述写入请求中携带的待写入的目标数据;
第一确定模块602,用于基于所述目标数据中属于拆分键的第一数据,确定用于存储所述目标数据的第一子表;其中,所述第一子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,所述第一子表对应的多个子表分布式地存储于各个存储节点中,所述隐式字段为除所述拆分键以外的字段;
第二确定模块603,用于基于所述目标数据中属于所述隐式字段的第二数据,从所述第一子表对应的多个子表中,确定用于存储所述目标数据的子表,作为待利用子表;
写入模块604,用于将所述目标数据写入所述待利用子表;
本发明实施例所提供的数据写入装置中,在基于待写入的目标数据中的属于拆分键的第一数据,确定出用于存储目标数据的第一子表后,并非直接将目标数据写入第一子表,而是基于目标数据中属于隐式字段的第二数据,从预先基于隐式字段所拆分得到的、第一子表对应的多个子表中,确定出用于存储目标数据的子表,作为待利用子表;最终,将目标数据写入待利用子表。可见,相对于现有技术而言,通过该数据写入装置,可以将针对第一子表的待写入的数据进一步分散存储于不同的存储节点中,达到数据打散的效果,分布式效果更好,因此,在数据写入过程中,可以提升分布式数据库系统的处理效率。
可选地,所述第二确定模块包括:
第一确定子模块,用于根据所述目标数据中属于所述隐式字段的第二数据,确定待利用的拆分参考信息;其中,不同的拆分参考信息与所述第一子表所对应的不同子表具有对应关系;
第二确定子模块,用于从所述第一子表对应的多个子表中,确定与所述待利用的拆分参考信息对应的子表,作为待利用子表。
可选地,所述第一确定子模块具体用于:
计算所述目标数据中属于所述隐式字段的第二数据的哈希值,作为待利用的拆分参考信息;
或者,
从所述隐式字段对应的多个取值范围中,确定所述目标数据中属于所述隐式字段的第二数据所在的取值范围,作为待利用的拆分参考信息。
可选地,所述写入模块具体用于:
确定所述待利用子表所部署于的第一存储节点;
向所述第一存储节点发送第一请求,以使所述第一存储节点响应所述第一请求;其中,所述第一请求用于将所述目标数据写入至所述待利用子表。
基于上述的数据读取方法,如图7所示,本发明实施例还提供了一种数据读取装置,所述装置包括:
第二获取模块701,用于当接收到针对目标文件的读取请求后,获取所述读取请求中所携带的属于拆分键的第三数据;
第三确定模块702,用于基于所述第三数据,确定用于存储包含有所述第三数据的数据内容的第二子表;其中,所述第二子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,且所述第二子表对应的多个子表分布式地存储于各个存储节点中;
第四确定模块703,用于从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表;
读取模块704,用于对各个待访问子表进行针对所述读取请求的数据读取;
本发明实施例所提供的数据读取装置中,在基于读取请求中所携带的属于拆分键的第三数据,确定出用于存储包含有所述第三数据的数据内容的第二子表后,并非直接从第二子表中读取数据;而是从第二子表对应的多个子表中,确定针对读取请求的各个待访问子表;对各个待访问子表进行针对读取请求的数据读取。可见,相对于现有技术而言,通过该数据读取装置,可以分散地从第二子表对应的待访问子表中进行数据读取,分布式效果更好,因此,在数据读取过程中,可以提升分布式数据库系统的处理效率。
可选地,所述第四确定模块具体用于:
若所述读取请求中未携带有属于所述隐式字段的第四数据,将所述第二子表对应的多个子表,确定为针对所述读取请求的各个待访问子表;
若所述读取请求中携带有属于所述隐式字段的第四数据,基于所述第四数据,从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表。
可选地,其特征在于所述读取模块具体用于:
确定各个待访问子表对应的第二存储节点,其中,任一待访问子表对应的第二存储节点为该子表所部署于的存储节点;
向各个第二存储节点发送第二请求,以使各个第二存储节点响应所接收到的第二请求,并反馈响应结果;其中,所述第二请求用于从所对应的待访问子表进行针对所述第三数据的数据读取;
基于各个第二存储节点反馈的响应结果,向所述读取请求的发出端反馈针对所述读取请求的请求结果。
本发明实施例还提供了一种电子设备,该电子设备可以为上述的管理节点,如图8所示,包括处理器801、通信接口802、存储器803和通信总线804,其中,处理器801、通信接口802和存储器803通过通信总线804完成相互间的通信,
存储器803,用于存放计算机程序;
处理器801,用于执行存储器803上所存放的程序时,实现任一种数据写入方法或者数据读取方法。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据写入方法或者数据读取方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据写入方法或者数据读取方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk (SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种数据写入方法,其特征在于,应用于分布式数据库系统的管理节点,所述分布式数据库系统还包括多个存储节点;所述方法包括:
当接收到针对目标文件的写入请求后,获取所述写入请求中携带的待写入的目标数据;
基于所述目标数据中属于拆分键的第一数据,确定用于存储所述目标数据的第一子表;其中,所述第一子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,所述第一子表对应的多个子表分布式地存储于各个存储节点中,所述隐式字段为除所述拆分键以外的字段;
基于所述目标数据中属于所述隐式字段的第二数据,从所述第一子表对应的多个子表中,确定用于存储所述目标数据的子表,作为待利用子表;
将所述目标数据写入所述待利用子表;
当接收到针对所述目标文件的读取请求后,获取所述读取请求中所携带的属于拆分键的第三数据;
基于所述第三数据,确定用于存储包含有所述第三数据的数据内容的第二子表;其中,所述第二子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,且所述第二子表对应的多个子表分布式地存储于各个存储节点中;
从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表;
对各个待访问子表进行针对所述读取请求的数据读取;
所述从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表,包括:
若所述读取请求中未携带有属于所述隐式字段的第四数据,将所述第二子表对应的多个子表,确定为针对所述读取请求的各个待访问子表;
若所述读取请求中携带有属于所述隐式字段的第四数据,基于所述第四数据,从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表。
2.根据权利要求1所述的方法,其特征在于,所述基于所述目标数据中属于所述隐式字段的第二数据,从所述第一子表对应的多个子表中,确定用于存储所述目标数据的子表,作为待利用子表,包括:
根据所述目标数据中属于所述隐式字段的第二数据,确定待利用的拆分参考信息;其中,不同的拆分参考信息与所述第一子表所对应的不同子表具有对应关系;
从所述第一子表对应的多个子表中,确定与所述待利用的拆分参考信息对应的子表,作为待利用子表。
3.根据权利要求2所述的方法,其特征在于,所述根据所述目标数据中属于所述隐式字段的第二数据,确定待利用的拆分参考信息,包括:
计算所述目标数据中属于所述隐式字段的第二数据的哈希值,作为待利用的拆分参考信息;
或者,
从所述隐式字段对应的多个取值范围中,确定所述目标数据中属于所述隐式字段的第二数据所在的取值范围,作为待利用的拆分参考信息。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述将所述目标数据写入所述待利用子表,包括:
确定所述待利用子表所部署于的第一存储节点;
向所述第一存储节点发送第一请求,以使所述第一存储节点响应所述第一请求;其中,所述第一请求用于将所述目标数据写入至所述待利用子表。
5.根据权利要求1所述的方法,其特征在于,所述对各个待访问子表进行针对所述读取请求的数据读取,包括:
确定各个待访问子表对应的第二存储节点,其中,任一待访问子表对应的第二存储节点为该子表所部署于的存储节点;
向各个第二存储节点发送第二请求,以使各个第二存储节点响应所接收到的第二请求,并反馈响应结果;其中,所述第二请求用于从所对应的待访问子表进行针对所述第三数据的数据读取;
基于各个第二存储节点反馈的响应结果,向所述读取请求的发出端反馈针对所述读取请求的请求结果。
6.一种数据写入装置,其特征在于,应用于分布式数据库系统的管理节点,所述分布式数据库系统还包括多个存储节点;所述装置包括:
第一获取模块,用于当接收到针对目标文件的写入请求后,获取所述写入请求中携带的待写入的目标数据;
第一确定模块,用于基于所述目标数据中属于拆分键的第一数据,确定用于存储所述目标数据的第一子表;其中,所述第一子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,所述第一子表对应的多个子表分布式地存储于各个存储节点中,所述隐式字段为除所述拆分键以外的字段;
第二确定模块,用于基于所述目标数据中属于所述隐式字段的第二数据,从所述第一子表对应的多个子表中,确定用于存储所述目标数据的子表,作为待利用子表;
写入模块,用于将所述目标数据写入所述待利用子表;
第二获取模块,用于当接收到针对所述目标文件的读取请求后,获取所述读取请求中所携带的属于拆分键的第三数据;
第三确定模块,用于基于所述第三数据,确定用于存储包含有所述第三数据的数据内容的第二子表;其中,所述第二子表为关于所述目标文件的子表且预先按照隐式字段被拆分为多个子表,且所述第二子表对应的多个子表分布式地存储于各个存储节点中;
第四确定模块,用于从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表;
读取模块,用于对各个待访问子表进行针对所述读取请求的数据读取;
所述第四确定模块具体用于:
若所述读取请求中未携带有属于所述隐式字段的第四数据,将所述第二子表对应的多个子表,确定为针对所述读取请求的各个待访问子表;
若所述读取请求中携带有属于所述隐式字段的第四数据,基于所述第四数据,从所述第二子表对应的多个子表中,确定针对所述读取请求的各个待访问子表。
7.根据权利要求6所述的装置,其特征在于,所述第二确定模块包括:
第一确定子模块,用于根据所述目标数据中属于所述隐式字段的第二数据,确定待利用的拆分参考信息;其中,不同的拆分参考信息与所述第一子表所对应的不同子表具有对应关系;
第二确定子模块,用于从所述第一子表对应的多个子表中,确定与所述待利用的拆分参考信息对应的子表,作为待利用子表。
8.根据权利要求7所述的装置,其特征在于,所述第一确定子模块具体用于:
计算所述目标数据中属于所述隐式字段的第二数据的哈希值,作为待利用的拆分参考信息;
或者,
从所述隐式字段对应的多个取值范围中,确定所述目标数据中属于所述隐式字段的第二数据所在的取值范围,作为待利用的拆分参考信息。
9.根据权利要求6-8任一项所述的装置,其特征在于,所述写入模块具体用于:
确定所述待利用子表所部署于的第一存储节点;
向所述第一存储节点发送第一请求,以使所述第一存储节点响应所述第一请求;其中,所述第一请求用于将所述目标数据写入至所述待利用子表。
10.根据权利要求6所述的装置,其特征在于,所述读取模块具体用于:
确定各个待访问子表对应的第二存储节点,其中,任一待访问子表对应的第二存储节点为该子表所部署于的存储节点;
向各个第二存储节点发送第二请求,以使各个第二存储节点响应所接收到的第二请求,并反馈响应结果;其中,所述第二请求用于从所对应的待访问子表进行针对所述第三数据的数据读取;
基于各个第二存储节点反馈的响应结果,向所述读取请求的发出端反馈针对所述读取请求的请求结果。
11.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器、通信接口和存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-5任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210229248.XA CN114328755B (zh) | 2022-03-10 | 2022-03-10 | 一种数据写入方法、数据读取方法、装置及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210229248.XA CN114328755B (zh) | 2022-03-10 | 2022-03-10 | 一种数据写入方法、数据读取方法、装置及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114328755A CN114328755A (zh) | 2022-04-12 |
CN114328755B true CN114328755B (zh) | 2022-08-05 |
Family
ID=81033587
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210229248.XA Active CN114328755B (zh) | 2022-03-10 | 2022-03-10 | 一种数据写入方法、数据读取方法、装置及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114328755B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376109A (zh) * | 2014-11-28 | 2015-02-25 | 国家电网公司 | 一种基于数据分布库的多维度数据分布方法 |
CN110909077A (zh) * | 2019-11-05 | 2020-03-24 | 四川中讯易科科技有限公司 | 一种分布式存储方法 |
CN112948477A (zh) * | 2021-03-31 | 2021-06-11 | 北京金山云网络技术有限公司 | 数据下档方法和装置、电子设备和存储介质 |
CN113268483A (zh) * | 2021-05-24 | 2021-08-17 | 北京金山云网络技术有限公司 | 请求处理方法和装置、电子设备和存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9892143B2 (en) * | 2015-02-04 | 2018-02-13 | Microsoft Technology Licensing, Llc | Association index linking child and parent tables |
US10915516B2 (en) * | 2017-10-18 | 2021-02-09 | Cisco Technology, Inc. | Efficient trickle updates in large databases using persistent memory |
-
2022
- 2022-03-10 CN CN202210229248.XA patent/CN114328755B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104376109A (zh) * | 2014-11-28 | 2015-02-25 | 国家电网公司 | 一种基于数据分布库的多维度数据分布方法 |
CN110909077A (zh) * | 2019-11-05 | 2020-03-24 | 四川中讯易科科技有限公司 | 一种分布式存储方法 |
CN112948477A (zh) * | 2021-03-31 | 2021-06-11 | 北京金山云网络技术有限公司 | 数据下档方法和装置、电子设备和存储介质 |
CN113268483A (zh) * | 2021-05-24 | 2021-08-17 | 北京金山云网络技术有限公司 | 请求处理方法和装置、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN114328755A (zh) | 2022-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107798038B (zh) | 数据响应方法及数据响应设备 | |
CN110019292B (zh) | 一种数据的查询方法及装置 | |
CN111352902A (zh) | 日志处理方法、装置、终端设备及存储介质 | |
US20170212930A1 (en) | Hybrid architecture for processing graph-based queries | |
US9361350B2 (en) | Data transfer between first and second databases | |
CN110737747A (zh) | 一种数据操作方法、装置及系统 | |
CN107943542A (zh) | 一种配置信息管理方法、装置、可读介质及存储控制器 | |
US9965812B2 (en) | Generating a supplemental description of an entity | |
CN113010494A (zh) | 一种数据库审计方法、装置及数据库代理服务器 | |
CN114328755B (zh) | 一种数据写入方法、数据读取方法、装置及电子设备 | |
CN112328575A (zh) | 数据资产血缘生成方法、装置、电子设备 | |
CN110837499B (zh) | 数据访问处理方法、装置、电子设备和存储介质 | |
US10042957B2 (en) | Devices and methods for implementing dynamic collaborative workflow systems | |
CN115599787A (zh) | 一种水平分表方法、装置、电子设备及存储介质 | |
CN113849482A (zh) | 一种数据迁移方法、装置及电子设备 | |
CN113779525A (zh) | 一种基于角色的Handle系统差异化解析方法 | |
CN113934729A (zh) | 一种基于知识图谱的数据管理方法、相关设备及介质 | |
CN113051293A (zh) | 基于树形结构的资源查询方法、装置和电子设备 | |
CN112947844A (zh) | 一种数据存储方法、装置、电子设备及介质 | |
CN115168409B (zh) | 数据库分表的数据查询方法、装置和计算机设备 | |
CN115221249B (zh) | 跨库数据查询方法、装置、计算机设备和存储介质 | |
CN112487830B (zh) | 一种翻译记忆库操作执行方法、装置、计算机设备和存储介质 | |
CN117131072A (zh) | 金融业务查询方法、装置、计算机设备和存储介质 | |
CN114385630A (zh) | 血缘关系梳理方法、装置、设备、存储介质和程序产品 | |
CN115905507A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |