CN115658771A - 一种数据处理方法、装置、系统和存储介质 - Google Patents
一种数据处理方法、装置、系统和存储介质 Download PDFInfo
- Publication number
- CN115658771A CN115658771A CN202211384408.4A CN202211384408A CN115658771A CN 115658771 A CN115658771 A CN 115658771A CN 202211384408 A CN202211384408 A CN 202211384408A CN 115658771 A CN115658771 A CN 115658771A
- Authority
- CN
- China
- Prior art keywords
- query
- data
- target
- sub
- request
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开一种数据处理方法,该方法包括:若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析所述查询请求,得到m个查询子请求;其中,所述目标列表用于存储按照目标排序对象进行排序的列表数据,m为大于或等于1的整数;确定每一所述查询子请求与所述参考集群节点之间的对应关系,得到m个对应关系;基于m个所述查询子请求和m个所述对应关系,从至少两个所述参考集群节点中,获取m个数据集合;其中,每一所述查询子请求对应一个所述数据集合;对m个所述数据集合进行整合处理,得到目标查询数据;响应所述查询请求,输出所述目标查询数据。本申请还公开一种数据处理装置、系统和存储介质。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据处理方法、装置、系统和存储介质。
背景技术
随着计算机技术的飞速发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(Fintech)转变,但由于金融行业的安全性和实时性要求,也对技术提出了更高的要求。随着互联网技术的飞速发展,各种应用服务业务规模发展和应用场景得到了迅速的扩张,导致引用系统中的数据量激增,基于大数据量的数据查询与处理场景变得十分普遍。目前,由于钛级数据库(Titanium Database,TiDB)具有处理和查询巨量数据的要求且查询性能更优的优点,因此,在巨量数据处理过程中,业内引入了TiDB实现数据存储和数据查询等处理操作。
但是,在实际应用过程中,TiDB集群中的数据量超过一定级别例如300太字节(TB)甚至以上级别时,TiDB集群的稳定性会急剧下降。因此,如何在TiDB集群中的数据量超过一定级别时,仍能保持使用的稳定性成为目前亟需解决的问题。
申请内容
为解决上述技术问题,本申请实施例期望提供一种数据处理方法、装置、系统和存储介质,解决了目前TiDB集群中的数据量超过一定级别稳定性较差的问题,实现了一种针对TiDB多集群架构的数据处理方法,保证了TiDB集群在处理大规模数据量的稳定性。
本申请的技术方案是这样实现的:
第一方面,一种数据处理方法,所述方法包括:
若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析所述查询请求,得到m个查询子请求;其中,所述目标列表用于存储按照目标排序对象进行排序的列表数据,m为大于或等于1的整数;
确定每一所述查询子请求与所述参考集群节点之间的对应关系,得到m个对应关系;
基于m个所述查询子请求和m个所述对应关系,从至少两个所述参考集群节点中,获取m个数据集合;其中,每一所述查询子请求对应一个所述数据集合;
对m个所述数据集合进行整合处理,得到目标查询数据;
响应所述查询请求,输出所述目标查询数据。
第二方面,一种数据处理装置,所述装置包括:解析单元、确定单元、获取单元、处理单元和输出单元;其中:
所述解析单元,用于若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析所述查询请求,得到m个查询子请求;其中,所述目标列表用于存储按照目标排序对象进行排序的列表数据,m为大于或等于1的整数;
所述确定单元,用于确定每一所述查询子请求与所述参考集群节点之间的对应关系,得到m个对应关系;
所述获取单元,用于基于m个所述查询子请求和m个所述对应关系,从至少两个所述参考集群节点中,获取m个数据集合;其中,每一所述查询子请求对应一个所述数据集合;
所述处理单元,用于对m个所述数据集合进行整合处理,得到目标查询数据;
所述输出单元,用于响应所述查询请求,输出所述目标查询数据。
第三方面,一种数据处理系统,所述系统包括:数据处理节点和至少两个参考集群节点;其中:
至少两个所述参考集群节点,至少用于存储目标列表;其中,所述目标列表用于存储按照目标排序对象进行排序的列表数据;
所述数据处理节点,用于实现如上述任一项所述的数据处理方法的步骤。
第四方面,一种存储介质,所述存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如上述任一项所述的数据处理方法的步骤。
本申请实施例中,若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析查询请求,得到m个查询子请求后,确定每一查询子请求与参考集群节点之间的对应关系,得到m个对应关系,并基于m个查询子请求和m个对应关系,从至少两个参考集群节点中,获取m个数据集合,最后对m个数据集合进行整合处理,得到目标查询数据,并响应查询请求,输出目标查询数据。这样,需要从存储有目标列表的至少两个参考集群节点中查询目标列表中的数据时,通过对查询子请求进行拆解处理,得到多个查询子请求,并基于拆解到的多个查询子请求从对应的集群节点中查询对应的目标数据,缩小了在不同集群节点中的查询范围,提升了查询性能,从而跨集群节点完成全部查询,解决了目前TiDB集群中的数据量超过一定级别稳定性较差的问题,实现了一种针对TiDB多集群架构的数据处理方法,保证了TiDB集群在处理大规模数据量的稳定性。
附图说明
图1为本申请实施例提供的一种数据处理方法的流程示意图;
图2为本申请实施例提供的另一种数据处理方法的流程示意图;
图3为本申请实施例提供的一种集群的结构示意图;
图4为本申请实施例提供的一种数据处理方法应用实施例实现流程示意图;
图5为本申请实施例提供的一种数据处理装置的结构示意图;
图6为本申请实施例提供的一种数据处理系统的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。
本申请的实施例提供一种数据处理方法,参照图1所示,方法应用于数据处理节点,该方法包括以下步骤:
步骤101、若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析查询请求,得到m个查询子请求。
其中,目标列表用于存储按照目标排序对象进行排序的列表数据,m为大于或等于1的整数。
在本申请实施例中,查询请求是数据处理节点根据用户提交的查询任务生成的数据处理节点能够识别处理的请求信息,例如可以是结构化查询语言(Structured QueryLanguage,SQL)形式的请求信息。集群包括至少两个参考集群节点,至少两个参考集群节点中均存储有目标列表,即至少两个参考集群节点中存储有同一列表,但是列表中的内容不同,例如存储的是不同时间段内列表数据。
在接收到针对至少两个参考存储节点中的数据进行查询时得查询请求时,对查询请求进行解析拆分处理,得到m个查询子请求。
步骤102、确定每一查询子请求与参考集群节点之间的对应关系,得到m个对应关系。
在本申请实施例中,由于查询子请求与参考集群节点是一一对应的关系,因此,可以确定得到每一查询子请求与对应的参考集群节点之间的对应关系,即可得到m个对应关系,m个对应关系可以称为查询路由。
步骤103、基于m个查询子请求和m个对应关系,从至少两个参考集群节点中,获取m个数据集合。
其中,每一查询子请求对应一个数据集合。
在本申请实施例中,从至少两个参考集群节点中根据m个对应关系,可以确定每一个查询子请求对应的参考集群节点,然后根据每一参考集群节点对应的查询子请求,从每一查询子请求对应的参考集群节点中,获取每一查询子请求对应的数据集合,得到m个数据集合。
步骤104、对m个数据集合进行整合处理,得到目标查询数据。
在本申请实施例中,对每一查询子请求对应的m个数据集合进行整合处理,得到查询请求对应的全部数据,即目标查询数据。
步骤105、响应查询请求,输出目标查询数据。
在本申请实施例中,响应查询请求,将查询请求对应的目标查询数据进行输出,以供用户查看。输出目标查询数据的方式可以是将目标查询数据存储至一个单独的数据表,输出一个数据表,然后用户在需要查看具体数据时,打开数据表表实现查看,也可以是直接将目标查询数据以列表数据的形式显示在对应的显示区域内。
本申请实施例中,若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析查询请求,得到m个查询子请求后,确定每一查询子请求与参考集群节点之间的对应关系,得到m个对应关系,并基于m个查询子请求和m个对应关系,从至少两个参考集群节点中,获取m个数据集合,最后对m个数据集合进行整合处理,得到目标查询数据,并响应查询请求,输出目标查询数据。这样,需要从存储有目标列表的至少两个参考集群节点中查询目标列表中的数据时,通过对查询子请求进行拆解处理,得到多个查询子请求,并基于拆解到的多个查询子请求从对应的集群节点中查询对应的目标数据,缩小了在不同集群节点中的查询范围,提升了查询性能,从而跨集群节点完成全部查询,解决了目前TiDB集群中的数据量超过一定级别稳定性较差的问题,实现了一种针对TiDB多集群架构的数据处理方法,保证了TiDB集群在处理大规模数据量的稳定性。
基于前述实施例,本申请的实施例提供一种数据处理方法,参照图2所示,方法应用于数据处理节点,该方法包括以下步骤:
步骤201、若接收到查询请求,解析查询请求,确定查询请求中包括的目标排序对象对应的查询范围。
在本申请实施例中,用户在用户节点上进行查询操作时,用户节点将查询操作生成对应的查询请求,并发送至数据处理节点,数据处理节点接收到查询请求后,对查询请求进行解析处理,从中确定针对目标排序对象对应的查询范围。其中,查询请求中针对目标排序对象可以不进行具体参数设置,若查询请求中目标排序对象未进行具体参数设置时,目标排序对象对应的查询范围可以是默认值,例如可以是默认的全部存储范围,也可以是指定的某一特定范围。
示例性的,以目标列表为银行中的流水存储列表为例进行说明,流水存储列表中包括的列表对象包括:用户姓名、电话号码、身份证号码、存款时间和存款金额,其中,目标排序对象为存款时间,即目标列表中的上述列表对象是按照存款时间的时间顺序对用户的相关信息进行存储的,由于数据量较大,目标列表中的数据存储在至少两个参考存储节点中。
步骤202、基于至少两个参考集群节点,对查询范围进行拆解处理,得到m个查询子范围。
在本申请实施例中,由于至少两个参考集群节点存储的是目标排序对象在不同范围内的数据,因此,可以根据指示两个参考集群节点中的目标排序对象的范围,对查询请求中包括的总的查询范围进行拆解处理,从而得到对应的m个查询子范围。
步骤203、基于m个查询子范围,生成m个查询子请求。
在本申请实施例中,确定得到m个查询子范围后,生成m个查询子请求,以便在对应的集群节点中执行对应的数据查询操作。
步骤204、确定每一查询子请求与参考集群节点之间的对应关系,得到m个对应关系。
在本申请实施例中,由于查询子请求是根据参考集群节点对应的目标排序对象的范围确定得到的,因此,查询子请求与对应的参考集群节点之间具有一一对应的关系,这样,可以确定得到每一查询子请求对应的参考集群节点,如此,即可得到m个对应关系。对应关系可以采用例如映射关系或路由关系等来表示。
步骤205、基于m个查询子请求和m个对应关系,从至少两个参考集群节点中,获取m个数据集合。
其中,每一查询子请求对应一个数据集合。
在本申请实施例中,根据m个对应关系从至少两个参考集群节点中确定m个查询子请求对应的集群节点,然后根据m个查询子请求获取对应的数据集合,得到m个数据集合。
步骤206、对m个数据集合进行整合处理,得到目标查询数据。
在本申请实施例中,对m个数据集合进行整合处理,例如是按照目标排序对象对应的顺序进行整理,得到目标查询数据。在一些应用场景下,还可以根据查询请求中对数据的处理配置参数进行整合处理,得到目标查询数据。
步骤207、响应查询请求,输出目标查询数据。
在本申请实施例中,响应查询请求,将目标查询数据输出至用户节点,这样,用户可以查阅到目标查询数据,实现了用户的查阅过程。这样,用户只需在业务层进行查询任务的下发,数据处理节点后台进行后台数据查询操作后,将目标查询数据进行显示,提高了用户的使用体验效果;并且通过对查询请求进行拆分处理,确定每一集群节点对应的查询范围,合理地缩小了针对每个集群节点的查询范围,保证了查询性能。
基于前述实施例,在本申请其他实施例中,步骤202可以由步骤202a~202b来实现:
步骤202a、确定每一参考集群节点对应目标排序对象的存储范围,得到至少两个存储范围。
在本申请实施例中,确定每一参考集群节点中目标列表对应的目标排序对象的存储范围,得到至少两个存储范围。
示例性的,以集群包括3个参考集群节点:节点1、节点2和节点3,其中,节点1存储的是1至4月之间用户的流水数据,节点2存储的是5至8月之间用户的流水数据,节点3存储的是9至12月之间用户的流水数据为例进行说明,对上述3个节点的存储范围进行确定,得到3个存储范围可以记为:1月~4月、5月~8月和9月~12月。
步骤202b、采用至少两个存储范围对查询范围进行划分处理,得到m个查询子范围。
在本申请实施例中,假设查询范围为4月1日至7月31日时,对应的,按照上述3个存储范围1月~4月、5月~8月和9月~12月对查询范围4月1日至7月31日进行划分处理,可以得到4月1日至4月30日、5月1日~7月31日两个查询子范围。这样,根据集群节点的存储范围对查询请求对应的总的范围来进行细分,实现查询范围的合理缩小,将查询范围缩小至集群节点对应的范围,提高了查询效率。
基于前述实施例,在本申请其他实施例中,步骤205可以由步骤205a~205b来实现:
步骤205a、基于m个对应关系,从至少两个参考集群节点中,确定每一查询子请求对应的目标集群节点,得到m个目标集群节点;其中,m为大于或等于1的整数。
在本申请实施例中,由于m个对应关系为每一查询子请求对应集群节点的对应关系,因此,可以根据m个对应关系,确定每一查询子请求对应的目标集群节点,得到m个目标集群节点。示例性的,在得到4月1日至4月30日、5月1日~7月31日两个查询子范围后,生成对应的两个查询子请求例如为子请求1和子请求2,其中,子请求1对应的目标集群节点为节点1,子请求2对应的目标集群节点为节点2。
步骤205b、基于m个目标集群节点和m个查询子请求,获取m个数据集合。
在本申请实施例中,根据m个查询子请求,分别从对应的目标集群节点中获取对应的查询数据内容,得到每一目标集群节点对应的数据集合,如此,可以得到m个数据集合。其中,查询m个目标集群节点中的数据时,可以是并行执行的,有效缩短了查询时间。
这样,根据预先确定的m个对应关系,可以快速定位每一查询子请求对应的目标集群节点,从而快速从目标集群节点中获取对应的查询子请求对应的数据内容,缩短了数据查询时间。
基于前述实施例,在本申请其他实施例中,步骤205b可以由步骤a11~a13来实现:
步骤a11、确定每一目标集群节点中与查询子请求包括的查询子范围对应的数据,得到m组待获取数据信息。
其中,每一目标集群节点对应一组待获取数据信息。
在本申请实施例中,由于数据在目标列表中时按照顺序进行存储的,因此,确定每一目标集群节点中与对应的查询子请求包括的查询子范围对应的数据时,可以定位得到查询子范围对应的数据的行号范围,即待获取数据信息可以用数据的行号来表示,这样,可以得到与m个查询子请求一一对应的m组待获取数据信息。待获取数据信息还可以采用其他例如页码,或者其他预先设置的定位信息来表示。
步骤a12、对每一组待获取数据信息按照预设窗口大小配置参数进行分窗处理,得到对应的目标集群节点的n个分窗窗口,进而得到m组n个分窗窗口。
其中,n为大于或等于1的整数。
在本申请实施例中,预设窗口大小可以针对不同目标集群节点对应的数据量来进行各自确定,也可以多个目标集群节点设置为同一大小,在一些应用场景下,预设窗口大小还可以根据目标集群节点的读写速率等来决定,具体可以由实际情况来决定。
示例性的,以节点1对应的待获取数据信息为第100行至第200行,针对节点1的预设窗口大小为20行为进行说明,对节点1对应的待获取数据信息进行分窗处理后可以得到5个分窗窗口,依次为第100行~120行、第121行~140行、第141行~160行、第161行~180行和第181行~200行。
步骤a13、基于m个查询子请求和m组n个分窗窗口,从m个目标集群节点中,获取m个数据集合。
在本申请实施例中,响应每一个查询子请求,按照对应的目标集群节点中的n个分窗窗口,获取对应的数据,得到每一个目标集群节点的数据集合。这样,通过对目标集群节点中对应的数据采用分窗的形式进行处理后,且分窗后的数据按照分窗窗口为单位对数据进行获取,提高了数据读取效率,节约了数据读取时长。
基于前述实施例,在本申请其他实施例中,步骤a13可以由步骤a131~a132来实现:
步骤a131、对每一组n个分窗窗口按顺序进行编号,得到对应的目标集群节点n个窗口编号信息,进而得到m组n个窗口编号信息。
其中,n为大于或等于1的整数。
在本申请实施例中,由于对每一目标集群节点对应的待获取数据信息进行分窗处理时,是按照顺序没有重复的进行分窗的,因此,可以按照分窗顺序对每一目标集群节点对应的n个分窗窗口按照顺序进行编号处理,得到每一目标集群节点的n个窗口编号信息,以便后续以分窗窗口获取数据时,根据窗口编号信息依次获取。
步骤a132、响应每一查询子请求,按照预设数据获取方式从对应的目标集群节点中,获取n个窗口编号信息对应的数据,得到m个数据集合。
其中,预设数据获取方式包括单线程数据获取方式或多线程数据获取方式。
在本申请实施例中,响应每一查询子请求,按照预设数据获取方式根据n个窗口编号信息依次从对应的目标集群节点中,获取对应的分窗窗口内的数据,得到对应的目标集群节点的数据集合。预设数据获取方式为单线程数据获取方式时,按照每一目标集群节点的n个窗口编号信息依次一个或一定数量个分窗窗口的获取数据,并按顺序进行记录,得到对应的数据集合。预设数据获取方式为多线程数据获取方式时,每一线程按顺序例如可以按照一个窗口编号信息或多个窗口编号信息依次获取数据,示例性的,例如有5个线程时,第一线程获取窗口编号信息为1的分窗窗口对应的数据,第二线程获取窗口编号信息为2的分窗窗口对应的数据,第三线程获取窗口编号信息为3的分窗窗口对应的数据,第四线程获取窗口编号信息为4的分窗窗口对应的数据,第五线程获取窗口编号信息为5的分窗窗口对应的数据,这样,多线程同时获取数据,有效缩短了数据获取时间。这样,对每一目标集群节点中对应的数据时按照分窗的形式划分后依次获取的,减少了数据出现遗漏的可能,并提高了数据获取效率。
基于前述实施例,在本申请其他实施例中,步骤a132具体可以由以下步骤来实现:响应每一查询子请求,采用单线程数据获取方式或多线程数据获取方式,依次按照窗口编号的顺序,从对应的目标集群节点中获取n个窗口编号信息对应的数据,得到m个数据集合;其中,预设数据获取方式包括单线程数据获取方式或多线程数据获取方式。
在本申请实施例中,数据处理节点响应每一查询子请求,根据设置的预设数据获取方式例如单线程数据获取方式或所述多线程数据获取方式,从该查询子请求对应的目标集群节点中,按照分窗处理得到的窗口编号信息,依次获取对应的数据,得到n个窗口编号信息对应的数据,进而得到m个数据集合。示例性的,以预设数据获取方式为单线程数据获取方式,每次获取一个窗口编号对应的数据为例进行说明,数据处理节点响应查询子请求1时,对应目标集群节点1包括有1至10个窗口编号信息时,数据处理节点获取目标集群节点1的1号窗口对应的数据后,下次直接可以获取目标集群节点1的2号窗口对应的数据,如此,直至获取了10号窗口对应的数据,这样,无需判断目标集群节点1中那些窗口的数据已被获取,哪些窗口的数据未被获取,缩短了数据提取的时长,提高了数据获取效率。
基于前述实施例,在本申请其他实施例中,步骤206可以由步骤206a~206c来实现:
步骤206a、从查询请求中,确定至少一个查询列表对象。
在本申请实施例中,由于目标列表中包括多个列表对象,在用户实际查询过程中,可能只向从目标列表中获取部分列表对象对应的数据,因此,可以从查询请求中,确定得到对应的至少一个查询列表对象。需说明的是,若查询请求中,未明确执行查询列表对象,则可以默认查询请求中查询的列表对象为目标列表中包括的全部列表对象。
步骤206b、从m个数据集合中,获取至少一个查询列表对象对应的数据,得到至少一个对象数据集合。
在本申请实施例中,以目标列表中包括用户姓名、身份证号、存款明细、存款日期、存款地址等列表对象,查询请求中对应的至少一个查询列表对象为用户姓名、存款明细和存款地址为例进行说明,从每一个数据集合中,分别获取用户姓名、存款明细和存款地址对应列的数据,得到m个对象数据集合。其中,m个对象数据集合中包括用户姓名、存款明细和存款地址对应列的数据。
步骤206c、按照查询请求中针对至少一个查询列表对象的排序要求和目标排序对象对应的排序顺序,对至少一个对象数据集合进行排序,得到目标查询数据。
在本申请实施例中,查询请求中针对至少一个查询列表对象的排序要求例如可以是按照用户姓名,存款地址和存款明细的要求进行排序,并按照目标排序对象按顺序排序,如此,可以得到按照排序要求排序得到的目标查询数据。
基于前述实施例,本申请实施例提供一种TiDB的多集群架构,参照图3所示,该TiDB的多集群架构包括:固态硬盘(Solid State Disk或Solid State Drive,SSD)集群节点、串口硬盘(Serial Advanced Technology Attachment hard disk,SATA)集群节点1、SATA集群节点2、……SATA集群节点n。其中,数据交互存在两个方向的数据流向:其一是数据处理节点流向集群节点,即业务层开发人员数据处理节点提交数据批量处理任务,集群节点进行对应的处理完成数据的批量更新;其二是由各集群节点流向数据处理节点,即业务层开发人员由数据处理节点提交数据查询任务,目标数据所在的各集群几点完成查询后,将各集群上的目标数据返回给数据处理节点。
基于图3所示的TiDB的多集群架构,本申请实施例提供一种数据处理方法,参照图4所示,实现过程至少包括以下步骤:
步骤b11、开始。
步骤b12、接收到关于多集群节点的查询请求。
其中,查询请求可以是通过任务提交过程接收到的,即业务层通过数据处理节点提供的接口例如提交(submit)接口,提交一个查询请求,查询请求中提供本次的查询条件,包含筛选条件(where子句)和排序条件(orderBy子句涉及的字段)等。例如查询账号abcd的明细,按日期、序号排序,则业务层提供的筛选条件为"acct_no='abcd'",排序条件为"process_date,seq_no"。
需说明的,在发起查询后,submit接口会向sys_static_window_log插入一条代表查询任务的记录。静态数据处理器日志表例如sys_static_processor_log,用于记录业务层提交的数据查询或处理任务,内容可以包括任务的唯一标识例如为batch_id、查询的表名例如为table_name、查询的筛选条件例如记为sql_where_clause、查询的排序条件sql_order_by_clause等。静态数据处理器日志表具体表结构可以如后续描述的表1所示。
表1
步骤b13、对查询请求进行拆解得到查询子请求,并确定对应的路由关系。
其中,由于数据可能给分布在多个集群节点上,故需要明确在各集群节点查询的查询子请求及每个查询子请求对应的集群节点。
对查询请求进行拆解的实现过程可以为:从查询请求中确定查询的日期范围,确定对应的至少一个集群节点的存储范围,根据至少一个集群节点的存储范围对查询范围进行拆解,得到至少一个查询子范围,确定每一查询子范围对应的集群节点,得到对应的路由关系。具体的,在数据应用层实现过程中的大致实现过程可以如下所示:
1)确定查询请求中包括的表名例如table_name、table_name表中用于划分归属集群的日期字段名例如txnDateFieldName、查询条件where子句。
2)解析查询条件where子句中的日期范围,并对日期进行排序,得到与日期相关的查询条件列表。具体的,若where子句涉及多个与日期相关的查询条件,则查询条件列表中包含多个元素,每个元素是一个最小粒度的日期条件。日期条件包含两个信息:比较符与值。
解析where子句的脚本实现过程可以如下所示:
a)利用解析器的parse()方法,将where子句转换为Expression对象expr。
b)然后从expr中解析出仅与用于划分归属集群节点的日期字段名txnDateFieldName有关的查询条件列表condList。
其中,由于不同集群节点中的数据分布是以日期字段按照顺序进行存储的,因此,查询时可能有5种类型的比较条件,包括:大于(GreaterThan)、大于等于(GreaterThanEquals)、等于(EqualsTo)、小于等于(MinorThanEquals)和小于(MinorThan)。在脚本代码实现过程中,可以通过定义一个特殊的类来实现上述5中类型的实现过程,以降低后期维护成本。示例性的,对应的类例如成为TxnDateExpressionVisitor类,对应的实现的代码可以如下所示:
上述代码中的visitOperator()方法用来收集日期条件,它完成如下操作:1)获取Expression的leftValue(代表字段名)与rightValue(代表值),如“preocessDate>20220901”中,leftValue为processDate,rightValue为20220901;若leftValue为1)中的txnDateFieldName,则表明该Expression表达式为日期相关的表达式,则利用其对应的操作符(如大于对应GreaterThan)与rightValue(如20220901),构造出一个日期条件TxnDateCondition对象;iii.若leftValue不是1)中的txnDateFieldName,则该条件与日期无关,对所求的目标集群无影响,故直接忽略不作处理;iv.将iii)中的TxnDateCondition对象加入condList。
如此,可以调用TxnDateExpressionVisitor,完成条件收集,即Expression声明了accept方法,指明调用Visitor的visit方法,并将自身作为调用时的入参。因此,通过执行expr.accept(visitor),利用java的重载特性,便可自动调用与expr类型对应的visit()方法,完成条件收集。
c)最后对b)中的condList进行排序,比较符从小到大依次为大于、大于等于、等于、小于等于、小于,即可得到与where子句意义等价的查询条件列表。
3)根据2)中的condList,解析得到日期数组[txnDateFrom,txnDateIs,txnDateTill],分别表示查询的起始日期、查询的指定日期、查询的终止日期。
condList可能有三种情况:包含0个条件(未限制日期范围,即查询所有数据)、包含一个条件(指定了一个日期作为查询边界)、或包含两个条件(指定了两个日期作为查询范围)。解析日期数组时,需遍历输入的condList是否符合上述情况,并在符合时完成对应的解析操作。解析三种场景如下:
a)若condList中无条件,则设置txnDateFrom=oldestTxnDate,设置txnDateTill=‘TODAY’;
b)若condList中仅包含一个条件,则取该条件的比较符,以及日期值value,根据比较符的不同类型,进行如下操作:
i.若比较符为GreaterThan,则设置txnDateFrom=value;
ii.若为GreaterThanEquals,则设置txnDateFrom=value上一日;
iii.若为EqualsTo,则设置txnDateIs=value;
iv.若为MinorThanEquals,则设置txnDateTill=value;
v.若为MinorThan,则设置txnDateTill=value上一日。
b)若condList中包含两个条件,则先取第一个条件的比较符,及其对应的日期值value1,根据比较符的不同类型,进行如下操作:
i.若为GreaterThan,则设置txnDateFrom=value1;
ii.若为GreaterThanEquals,则设置txnDateFrom=value1上一日;
再取第二个条件的比较符及其对应的日期值value2,进行如下操作:
i.若为MinorThanEquals,则设置txnDateTill=value2;
ii.若为MinorThan,则设置txnDateTill=value2上一日;
c)若txnDateFrom为空,则查询sys_cluster_def,获取集群节点中存储的明细的最初始日期oldestTxnDate,设置txnDateFrom=oldestTxnDate;
d)若txnDateTill为空,则设置txnDateTill=‘TODAY’;
e)返回日期数组[txnDateFrom,txnDateIs,txnDateTill]。
通过a)-e)步骤,可以看出,返回的日期数组有两种情况:第一,txnDateIs不为空,则表明本次查询是查具体某一天的数据,即查询条件为“txnDateFieldName=txnDateIs”;第二,txnDateIs为空,则表明本次查询是查某个日期范围内的数据,即查询条件为“txnDateFieldName>txnDateFrom and txnDateFieldName<=txnDateTill”。其中,1)至3)过程为前述确定得到m个查询子范围时的一种对应的具体脚本实现逻辑描述。
4)根据3)中的日期数组,生成最终的where子句列表。
其中,日期数组有2种情况:txnDateIs不为空(指定了一个日期作为查询边界)、或txnDateIs为空(指定了两个日期作为查询范围)。生成where子句列表时,需遍历输入的日期数组是否符合上述情况,并在符合时完成对应的生成操作。具体操作如下:
A.若txnDateIs不为空(即查询某一天的数据),则根据如下步骤,得到最终执行的where子句列表:
a)输入:日期字段名txnDateFieldName,查询日期txnDateIs,业务层传入的查询条件incompleteWhere;
b)构造查询子请求cwc;
c)查询集群定义表,获取由所有集群定义组成的列表sysClusterDefList;
d)遍历sysClusterDefList,若txnDateIs>某集群的起始日期txnDateFrom,且txnDateIs<=该集群的结束日期txnDateTill,则设置cwc的集群编号为该集群id;
e)设置cwc的条件为“txnDateFieldName=txnDateIs and incompleteWhere”;
f)输出:cwc组成的列表得到where子句列表;
B.若txnDateIs为空(即查询某个日期范围内的数据),则以如下步骤,得到最终where子句列表:
a)输入:日期字段名txnDateFieldName,起始日期txnDateFrom,结束日期txnDateTill,业务层传入的查询条件incompleteWhere;
b)查询集群定义表,获取由所有集群定义组成的列表sysClusterDefList;
c)依据集群起始日期递增的顺序,遍历sysClusterDefList,若txnDateFrom>=某集群的txnDateFrom且txnDateFrom<该集群的txnDateTill,则该集群为待查询集群之一;
d)对于每个待查询集群,进行如下操作:
i.构造查询子请求cwc;
ii.设置cwc的集群编号为当前集群的id;
iii.设置子查询的开始日期dtFrom为txnDateFrom与当前集群的起始日期中的较大者;
iv.设置子查询的结束日期dtTill为txnDateTill与当前集群的结束日期中的较小者;
v.设置cwc的查询条件为”txnDateFieldName>dtFrom and txnDateFieldName<=dtTill and incompleteWhere”;
e)输出:cwc组成的列表得到where子句列表。其中,where子句列表与前述查询子请求对应,即前述过程为生成得到查询子请求时对应的一种具体脚本实现逻辑描述。
5)输出:通过3)或4)得到的cwc组成的列表,其中,每个cwc子句对象中包含对应的执行集群编号,即得到对应的路由关系。
这样,利用遍历、对比、收集的思想,可以将业务层提交的查询请求拆解为基于集群节点粒度的多个查询子请求,而查询请求根据集群节点定义表中配置的时间区间来实现,并由于各集群节点归属的时间范围无重合、无间隙,使得拆解得到的多个查询子请求没有时间上的重合或空隙,保证了查询结果的不重复、不遗漏。如此,通过查询请求的拆解与确定对应的路由关系,可以得到查询条件所对应的目标集群节点,避免了盲目搜索全部集群节点,有效提升了查询性能。
步骤b14、基于全部查询子请求和对应的路由关系,对目标集群节点的数据进行分窗处理,得到窗口信息,并基于窗口信息,获取每一目标集群节点对应的数据。
其中,实现分窗处理的一种脚本实现逻辑的具体实现过程可以如下所示:
i.构造分窗器。实现过程为:首先创建一个分窗器对象,然后向分窗器对象至少补充以下信息:查询的表名tableName、集群id、查询的筛选条件(即查询子请求)、查询的排序字段(为前述orderBy子句)、划分窗口的大小windowSize(来自本次查询任务对应的处理器在sys_static_processor_def中的配置参数)。
ii.根据每个分窗器,包装为窗口函数进行分窗,并将窗口信息入库。
具体流程如下:
a)将当前的数据源切换到与每一分窗器对应的集群节点。
b)根据查询子请求,获取窗口游标。
采用游标的形式,可以避免读取巨型数据时占用过多内存。
进行分窗时,首先通过使用窗口函数row_number()将数据按照排序字段(即orderBy子句中的所有字段)排序后赋予行号,并计算每条数据按排序字段取到的拼接值order_by_concat(如指定排序字段为a和b,a=“11”,b=“222”,则order_by_concat=“11222”),然后通过聚合函数按照设置好的窗口大小(windowSize)对行号进行分组,以计算出每个窗口中order_by_concat的最大值和最小值。每组最小值和最大值即为每个窗口的边界,这样便可得到一系列的窗口。order_by_concat的生成依赖于排序条件中的所有字段,其可以决定所有目标数据的相对顺序,故框定order_by_concat的取值范围便可达到框定数据范围的效果。
后续在数据处理时,只需基于上述步骤得到的窗口边界,使用between and来框选每个窗口里具体的数据。由于各窗口的数据无重叠,故多个窗口可并发进行处理。由于划分窗口时对数据进行了排序,并用row_number()函数赋予了唯一的行号,保证了每条数据只对应唯一行号,且每个行号只能属于并且一定属于一个窗口,故可以避免两个相邻的窗口出现空隙或重叠,达到查询时数据不重复、不遗漏的效果。分窗时,涉及的参数包括用于排序的orderBy子句、用于筛选的where子句、处理的表名tableName及窗口大小windowSize等,均来自i)中构造的分窗器。
根据游标,依次读取每个窗口,构造SysStaticWindowLog对象,并写入sys_static_window_log表中。它代表了每个窗口的具体信息(包括集群id、窗口边界值等),便于后续步骤里直接取窗口内的数据。构造时涉及部分信息如下:windowId,窗口的唯一标识;batchId,所属查询任务的唯一标识;clusterId,窗口所在的集群id;tableName,窗口对应的表名;orderByFrom,窗口起始边界(不含);orderByTo,窗口结束边界(含);processStatus,窗口状态,初始入库为I-初始化;mutexNo,互斥号,用于支持后续的并发处理。sys_static_processor_log中设置了后续处理阶段中的最大窗口个数(windowQueryMax)和最大的互斥号(windowMutexNum),mutexNo基于此进行划分。遍历窗口时,每windowQueryMax个窗口的mutexNo保持一致,mutexNo从0开始递增加1。当mutexNo达到windowMutexNum-1后便置为0重新累加。经过上述步骤,相同的多个连续窗口会拥有同一个mutexNo。因此,后续加工过程中,线程只需取到一个锁,便可拿到多个连续窗口的数据处理权,而不需针对每个窗口都发起锁竞争。这样可以有效地降低锁竞争冲突、提升加工时的处理效率。
c)若为Processor类型任务,则将窗口信息(即SysStaticWindowLog对象)批量写入sys_static_window_log表中;否则无需写入。
iii.将本次查询任务对应的sys_static_processor_log状态更新为PROCESSING。
iv.轮询线程StaticalProcessorThread扫描发现就绪的任务,开始执行该任务,具体流程包括:
a)首先根据任务创建时间、任务状态为PROCESSING等条件,扫描发现sys_static_processor_log中就绪的任务。
b)然后竞争锁获得互斥号,根据互斥号,从sys_static_window_log中获取一批窗口,批量更新窗口的处理状态为P-处理中,然后释放锁。
c)根据窗口信息提取具体的数据,具体分为以下几步:
1)针对b)中的这一批窗口,准备查询条件clusterWhereClauseExt。它由两部分组成:用于限制集群日期范围的条件clusterWhereClause和用于限制窗口内数据的条件orderByConcat。
clusterWhereClause除了包含原本的业务层提交的查询条件,还需包含与集群节点相关的日期限制条件(即查询子请求)。原因为:SSD集群节点与SATA集群节点在数据同步场景下,可能存在部分数据同时分布在两个集群的情况,若查询时不做限制,这部分数据可能在两个集群中都被查到,导致查询结果重复。加上集群日期范围的限制条件后,这部分重复数据只能由日期对应的集群提供,从而保证了查询时不会重复。
需要注意的是,由于b)取到的是一批窗口,故orderByConcat中设置的边界值并非单个窗口的边界值,而是这一批窗口的边界值,即:orderByConcat中的最小值是第一个窗口的最小值,orderByConcat中的最大值是最后一个窗口的最大值。这样,通过数据库的一次查询,即可得到多个窗口的数据,减少了与数据库的交互次数,可以有效提升整体的性能。
其中,在iv)中,若为Extractor类型任务,其分窗结果直接保存在内存中,直接依次遍历每个窗口,并同步处理窗口内的数据,将其按业务层指定的方法包装成文件。
2)切换数据源。
其中,由于数据可能分布在多个集群节点上,因此,提取数据之前,需要将数据源切换至窗口信息对应的集群节点上。
3)取数据。
其中,根据1)组装的筛选条件和排序条件,在2)中选定的集群节点上,完成数据的查询,得到这一批窗口的数据。
4)将3)中的数据,分为多个数据块。
其中,3)中得到的数据为多个窗口的总数据。为了提高后续步骤d)中处理数据的效率、提升并发度,需将这些数据还原为窗口粒度,即:按原窗口的边界进行划分,得到每个窗口的数据。
d)将每个窗口的数据提交到处理线程池。
e)处理线程调用业务层实现的process方法完成数据加工。
步骤b15、对每一目标集群节点对应的数据进行整合处理,得到目标查询数据。
步骤b16、结束。
需要说明的是,本实施例中与其它实施例中相同步骤和相同内容的说明,可以参照其它实施例中的描述,此处不再赘述。
本申请实施例中,若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析查询请求,得到m个查询子请求后,确定每一查询子请求与参考集群节点之间的对应关系,得到m个对应关系,并基于m个查询子请求和m个对应关系,从至少两个参考集群节点中,获取m个数据集合,最后对m个数据集合进行整合处理,得到目标查询数据,并响应查询请求,输出目标查询数据。这样,需要从存储有目标列表的至少两个参考集群节点中查询目标列表中的数据时,通过对查询子请求进行拆解处理,得到多个查询子请求,并基于拆解到的多个查询子请求从对应的集群节点中查询对应的目标数据,缩小了在不同集群节点中的查询范围,提升了查询性能,从而跨集群节点完成全部查询,解决了目前TiDB集群中的数据量超过一定级别稳定性较差的问题,实现了一种针对TiDB多集群架构的数据处理方法,保证了TiDB集群在处理大规模数据量的稳定性。
基于前述实施例,本申请的实施例提供一种数据处理装置,参照图5所示,该数据处理装置3可以包括:解析单元31、确定单元32、获取单元33、处理单元34和输出单元35;其中:
解析单元31,用于若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析查询请求,得到m个查询子请求;其中,目标列表用于存储按照目标排序对象进行排序的列表数据,m为大于或等于1的整数;
确定单元32,用于确定每一查询子请求与参考集群节点之间的对应关系,得到m个对应关系;
获取单元33,用于基于m个查询子请求和m个对应关系,从至少两个参考集群节点中,获取m个数据集合;其中,每一查询子请求对应一个数据集合;
处理单元34,用于对m个数据集合进行整合处理,得到目标查询数据;
输出单元35,用于响应查询请求,输出目标查询数据。
在本申请其他实施例中,解析单元包括:解析模块、处理模块和生成模块;其中:
解析模块,用于若接收到查询请求,解析查询请求,确定查询请求中包括的目标排序对象对应的查询范围;
处理模块,用于基于至少两个参考集群节点,对查询范围进行拆解处理,得到m个查询子范围;
生成模块,用于基于m个查询子范围,生成m个查询子请求。
在本申请其他实施例中,处理模块具体用于实现以下步骤:
确定每一参考集群节点对应目标排序对象的存储范围,得到至少两个存储范围;
采用至少两个存储范围对查询范围进行划分处理,得到m个查询子范围。
在本申请其他实施例中,获取单元包括:第一确定模块和第一获取模块;其中:
第一确定模块,用于基于m个对应关系,从至少两个参考集群节点中,确定每一查询子请求对应的目标集群节点,得到m个目标集群节点;其中,m为大于或等于1的整数;
第一获取模块,用于基于m个目标集群节点和m个查询子请求,获取m个数据集合。
在本申请其他实施例中,第一获取模块具体用于实现以下步骤:
确定每一目标集群节点中与查询子请求包括的查询子范围对应的数据,得到m组待获取数据信息;其中,每一目标集群节点对应一组待获取数据信息;
对每一组待获取数据信息按照预设窗口大小配置参数进行分窗处理,得到对应的目标集群节点的n个分窗窗口,进而得到m组n个分窗窗口;其中,n为大于或等于1的整数;
基于m个查询子请求和m组n个分窗窗口,从m个目标集群节点中,获取m个数据集合。
在本申请其他实施例中,第一获取模块用于实现步骤基于m个查询子请求和m组n个分窗窗口,从m个目标集群节点中,获取m个数据集合时,可以通过以下步骤来实现:
对每一组n个分窗窗口按顺序进行编号,得到对应的目标集群节点n个窗口编号信息,进而得到m组n个窗口编号信息;其中,n为大于或等于1的整数;
响应每一查询子请求,按照预设数据获取方式从对应的目标集群节点中,获取n个窗口编号信息对应的数据,得到m个数据集合。
在本申请其他实施例中,第一获取模块用于实现步骤响应每一查询子请求,按照预设数据获取方式从对应的目标集群节点中,获取n个窗口编号信息对应的数据,得到m个数据集合时,可以通过以下步骤来实现:
响应每一查询子请求,采用单线程数据获取方式或多线程数据获取方式,依次按照窗口编号的顺序,从对应的目标集群节点中获取n个窗口编号信息对应的数据,得到m个数据集合;其中,预设数据获取方式包括单线程数据获取方式或多线程数据获取方式。
在本申请其他实施例中,处理单元包括:第二确定模块、第二获取模块和排序模块;其中:
第二确定模块,用于从查询请求中,确定至少一个查询列表对象;
第二获取模块,用于从m个数据集合中,获取至少一个查询列表对象对应的数据,得到至少一个对象数据集合;
排序模块,用于按照查询请求中针对至少一个查询列表对象的排序要求和目标排序对象对应的排序顺序,对至少一个对象数据集合进行排序,得到目标查询数据。
需要说明的是,本申请实施例中一个或者多个程序可被一个或者多个处理器的步骤的解释说明,可以参照图1~2对应的实施例提供的方法实现过程,此处不再赘述。
本申请实施例中,若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析查询请求,得到m个查询子请求后,确定每一查询子请求与参考集群节点之间的对应关系,得到m个对应关系,并基于m个查询子请求和m个对应关系,从至少两个参考集群节点中,获取m个数据集合,最后对m个数据集合进行整合处理,得到目标查询数据,并响应查询请求,输出目标查询数据。这样,需要从存储有目标列表的至少两个参考集群节点中查询目标列表中的数据时,通过对查询子请求进行拆解处理,得到多个查询子请求,并基于拆解到的多个查询子请求从对应的集群节点中查询对应的目标数据,缩小了在不同集群节点中的查询范围,提升了查询性能,从而跨集群节点完成全部查询,解决了目前TiDB集群中的数据量超过一定级别稳定性较差的问题,实现了一种针对TiDB多集群架构的数据处理方法,保证了TiDB集群在处理大规模数据量的稳定性。
基于前述实施例,本申请的实施例提供一种数据处理系统,参照图6所示,该数据处理系统4可以包括:数据处理节点41和至少两个参考集群节点42;其中:
至少两个参考集群节点42,至少用于存储目标列表;其中,目标列表用于存储按照目标排序对象进行排序的列表数据;
数据处理节点41,用于实现如图1~2对应的实施例提供的数据处理方法实现过程,此处不再赘述。
基于前述实施例,本申请的实施例提供一种计算机可读存储介质,简称为存储介质,该计算机可读存储介质存储有一个或者多个程序,该一个或者多个程序可被一个或者多个处理器执行,以实现如图1~2对应的实施例提供的数据处理方法实现过程,此处不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上,仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。
Claims (11)
1.一种数据处理方法,其特征在于,所述方法包括:
若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析所述查询请求,得到m个查询子请求;其中,所述目标列表用于存储按照目标排序对象进行排序的列表数据,m为大于或等于1的整数;
确定每一所述查询子请求与所述参考集群节点之间的对应关系,得到m个对应关系;
基于m个所述查询子请求和m个所述对应关系,从至少两个所述参考集群节点中,获取m个数据集合;其中,每一所述查询子请求对应一个所述数据集合;
对m个所述数据集合进行整合处理,得到目标查询数据;
响应所述查询请求,输出所述目标查询数据。
2.根据权利要求1所述的方法,其特征在于,所述若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析所述查询请求,得到m个查询子请求,包括:
若接收到所述查询请求,解析所述查询请求,确定所述查询请求中包括的所述目标排序对象对应的查询范围;
基于至少两个所述参考集群节点,对所述查询范围进行拆解处理,得到m个查询子范围;
基于m个查询子范围,生成m个所述查询子请求。
3.根据权利要求2所述的方法,其特征在于,所述基于至少两个所述参考集群节点,对所述查询范围进行拆解处理,得到m个查询子范围,包括:
确定每一所述参考集群节点对应所述目标排序对象的存储范围,得到至少两个所述存储范围;
采用至少两个所述存储范围对所述查询范围进行划分处理,得到m个所述查询子范围。
4.根据权利要求1或2所述的方法,其特征在于,所述基于m个所述查询子请求和m个所述对应关系,从至少两个所述参考集群节点中,获取m个数据集合,包括:
基于m个所述对应关系,从至少两个所述参考集群节点中,确定每一所述查询子请求对应的目标集群节点,得到m个所述目标集群节点;其中,m为大于或等于1的整数;
基于m个所述目标集群节点和m个所述查询子请求,获取m个所述数据集合。
5.根据权利要求4所述的方法,其特征在于,所述基于m个所述目标集群节点和m个所述查询子请求,获取m个所述数据集合,包括:
确定每一所述目标集群节点中与所述查询子请求包括的查询子范围对应的数据,得到m组待获取数据信息;其中,每一所述目标集群节点对应一组所述待获取数据信息;
对每一组所述待获取数据信息按照预设窗口大小配置参数进行分窗处理,得到对应的所述目标集群节点的n个分窗窗口,进而得到m组n个所述分窗窗口;其中,n为大于或等于1的整数;
基于m个所述查询子请求和m组n个所述分窗窗口,从m个所述目标集群节点中,获取m个所述数据集合。
6.根据权利要求5所述的方法,其特征在于,所述基于m个所述查询子请求和m组n个所述分窗窗口,从m个所述目标集群节点中,获取m个所述数据集合,包括:
对每一组n个所述分窗窗口按顺序进行编号,得到对应的所述目标集群节点n个窗口编号信息,进而得到m组n个所述窗口编号信息;其中,n为大于或等于1的整数;
响应每一所述查询子请求,按照预设数据获取方式从对应的所述目标集群节点中,获取n个所述窗口编号信息对应的数据,得到m个所述数据集合。
7.根据权利要求6所述的方法,其特征在于,所述响应每一所述查询子请求,按照预设数据获取方式从对应的所述目标集群节点中,获取n个所述窗口编号信息对应的数据,得到m个所述数据集合,包括:
响应每一所述查询子请求,采用单线程数据获取方式或多线程数据获取方式,依次按照窗口编号的顺序,从对应的所述目标集群节点中获取n个所述窗口编号信息对应的数据,得到m个所述数据集合;其中,所述预设数据获取方式包括所述单线程数据获取方式或所述多线程数据获取方式。
8.根据权利要求6所述的方法,其特征在于,所述对m个所述数据集合进行整合处理,得到目标查询数据,包括:
从所述查询请求中,确定至少一个查询列表对象;
从m个所述数据集合中,获取至少一个查询列表对象对应的数据,得到至少一个对象数据集合;
按照所述查询请求中针对至少一个所述查询列表对象的排序要求和所述目标排序对象对应的排序顺序,对至少一个所述对象数据集合进行排序,得到所述目标查询数据。
9.一种数据处理装置,其特征在于,所述装置包括:解析单元、确定单元、获取单元、处理单元和输出单元;其中:
所述解析单元,用于若接收到用于查询至少两个参考集群节点中存储的目标列表中的数据的查询请求,解析所述查询请求,得到m个查询子请求;其中,所述目标列表用于存储按照目标排序对象进行排序的列表数据,m为大于或等于1的整数;
所述确定单元,用于确定每一所述查询子请求与所述参考集群节点之间的对应关系,得到m个对应关系;
所述获取单元,用于基于m个所述查询子请求和m个所述对应关系,从至少两个所述参考集群节点中,获取m个数据集合;其中,每一所述查询子请求对应一个所述数据集合;
所述处理单元,用于对m个所述数据集合进行整合处理,得到目标查询数据;
所述输出单元,用于响应所述查询请求,输出所述目标查询数据。
10.一种数据处理系统,其特征在于,所述系统包括:数据处理节点和至少两个参考集群节点;其中:
至少两个所述参考集群节点,至少用于存储目标列表;其中,所述目标列表用于存储按照目标排序对象进行排序的列表数据;
所述数据处理节点,用于实现如权利要求1至8任一项所述的数据处理方法的步骤。
11.一种存储介质,其特征在于,所述存储介质上存储有数据处理程序,所述数据处理程序被处理器执行时实现如权利要求1至8中任一项所述的数据处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211384408.4A CN115658771A (zh) | 2022-11-07 | 2022-11-07 | 一种数据处理方法、装置、系统和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211384408.4A CN115658771A (zh) | 2022-11-07 | 2022-11-07 | 一种数据处理方法、装置、系统和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115658771A true CN115658771A (zh) | 2023-01-31 |
Family
ID=85016390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211384408.4A Pending CN115658771A (zh) | 2022-11-07 | 2022-11-07 | 一种数据处理方法、装置、系统和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115658771A (zh) |
-
2022
- 2022-11-07 CN CN202211384408.4A patent/CN115658771A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Clifford et al. | Tracking provenance in a virtual data grid | |
CN113297320B (zh) | 分布式数据库系统及数据处理方法 | |
JP2010524060A (ja) | 分散コンピューティングにおけるデータマージング | |
CN111324610A (zh) | 一种数据同步的方法及装置 | |
CN107665219B (zh) | 一种日志管理方法及装置 | |
CN108628918B (zh) | 系统部署与依赖关系自动绘制系统及方法 | |
CN112579586A (zh) | 数据处理方法、装置、设备及存储介质 | |
CN112148788A (zh) | 异构数据源的数据同步方法及系统 | |
CN109885642B (zh) | 面向全文检索的分级存储方法及装置 | |
CN112307191A (zh) | 多系统交互式日志查询方法、装置、设备及存储介质 | |
CN114780641A (zh) | 多库多表同步方法、装置、计算机设备和存储介质 | |
CN114139923A (zh) | 任务关联性分析方法、装置及计算机可读存储介质 | |
CN104317820B (zh) | 报表的统计方法和装置 | |
CN111125216A (zh) | 数据导入Phoenix的方法及装置 | |
CN116089518A (zh) | 一种数据模型抽取方法及系统、终端、介质 | |
CN115658771A (zh) | 一种数据处理方法、装置、系统和存储介质 | |
CN115757481A (zh) | 数据迁移方法、装置、设备和存储介质 | |
CN113625967B (zh) | 数据存储方法、数据查询方法及服务器 | |
CN116010345A (zh) | 一种实现流批一体数据湖的表服务方案的方法、装置及设备 | |
CN115114297A (zh) | 数据轻量存储及查找方法、装置、电子设备及存储介质 | |
CN111459916B (zh) | Gbase和oracle数据库表比对的方法及系统 | |
CN110851437A (zh) | 一种存储方法、装置及设备 | |
CN107451142B (zh) | 在数据库中写入和查询数据的方法与装置及其管理系统和计算机可读存储介质 | |
CN110929207B (zh) | 数据处理方法、装置和计算机可读存储介质 | |
CN117290355B (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 |