CN112162990B - 业务数据跨库排序方法、装置及系统 - Google Patents
业务数据跨库排序方法、装置及系统 Download PDFInfo
- Publication number
- CN112162990B CN112162990B CN202011060520.3A CN202011060520A CN112162990B CN 112162990 B CN112162990 B CN 112162990B CN 202011060520 A CN202011060520 A CN 202011060520A CN 112162990 B CN112162990 B CN 112162990B
- Authority
- CN
- China
- Prior art keywords
- data
- global position
- modified
- node
- sorting
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2358—Change logging, detection, and notification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
一种业务数据跨库排序方法、装置及系统,适用于金融领域和其他领域。系统包括路由节点及分库节点;路由节点将数据排序请求发送至目标分库节点,其他分库节点为非目标分库节点;数据排序请求包括待排序数据;目标分库节点将数据排序请求广播至各非目标分库节点,根据数据排序请求更新第一全局位置列表,确定第一全局位置区间;非目标分库节点根据接收的数据排序请求,更新第二全局位置列表,确定第二全局位置区间,发送至目标分库节点;目标分库节点接收第二全局位置区间,根据第二全局位置区间及第一全局位置区间,确定待排序数据的全局位置。本发明通过使用全局位置标记分库数据位置,无需归并节点完成任意维度的跨库排序,保证全局位置准确性。
Description
技术领域
本发明涉及业务数据处理技术领域,可适用于金融领域和其他领域,尤指一种业务数据跨库排序方法、装置及系统。
背景技术
目前对水平拆分方式存储在分布式数据库的业务数据进行跨库排序和查询,需将各数据库节点的数据先导出到归并节点,由归并节点完成排序后,再在前端展示,如图1所示。因归并节点需存储全量数据,故一般使用HBASE实现大容量数据存储。但HBASE排序和查询存在以下问题:首先,HBASE存储方式是RowKey-Value。RowKey作为主键,HBASE记录固定按照RowKey排序,但无法实现按存储在Value中的数据排序。若把Value中的数据设置为RowKey,则需清空HBASE后,按新的RowKey重新导一遍数据。其次,原生的HBASE查询提供了两种方法,一种是指定RowKey获取唯一一条记录(org.apache.hadoop.HBASE.client.Get),另外一种是指定维度获取一批记录(org.apache.hadoop.HBASE.client.Scan)。若维度存在与Value中,则HBASE只能通过全表扫描找到记录,性能受限。
发明内容
本发明实施例的主要目的在于提供一种业务数据跨库排序方法、装置及系统,不依赖归并节点,完成跨库数据排序等功能,可按任意维度排序,且保证全局位置的准确性。
为了实现上述目的,本发明实施例提供一种业务数据跨库排序方法,所述方法包括:
将从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表,其中,所述数据排序请求包括待排序数据,所述第一全局位置列表用于记录业务数据在所有分库节点中的总排序位置;
根据更新后的第一全局位置列表,确定待排序数据的第一全局位置区间;
接收各非目标分库节点返回的对应于所述待排序数据的第二全局位置区间,根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置。
可选的,在本发明一实施例中,所述数据排序请求还包括待修改数据;所述将从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表进一步包括:从路由节点接收待排序数据及待修改数据,将所述待排序数据及所述待修改数据对应的全局位置广播至各非目标分库节点;根据所述待排序数据及所述待修改数据对应的全局位置更新第一全局位置列表。
可选的,在本发明一实施例中,所述根据所述待排序数据及所述待修改数据更新第一全局位置列表包括:根据所述待排序数据及所述待修改数据对应的全局位置,确定所述待排序数据在所述第一全局位置列表中的排序值,以及所述待修改数据在所述第一全局位置列表中的排序值;其中,将所述待排序数据在所述第一全局位置列表中的排序值作为第一修改后排序值,将所述待修改数据在所述第一全局位置列表中的排序值作为第一修改前排序值;所述第一修改后排序值与所述第一修改前排序值作差,得到差值N;若N为负数,则将在所述第一修改前排序值的前N个业务数据的全局位置加1;若N为正数,则将在所述第一修改前排序值的后N个业务数据的全局位置减1。
可选的,在本发明一实施例中,所述根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置包括:在所述第二全局位置区间及所述第一全局位置区间中,确定区间上限等于区间下限的位置,将该位置作为所述待排序数据的全局位置。
可选的,在本发明一实施例中,所述方法还包括:接收路由节点发送的数据查询请求,所述数据查询请求包括条件字段及排序字段;根据所述条件字段在第一全局位置列表中进行数据检索,将符合所述条件字段的业务数据按照所述排序字段进行排序并返回至所述路由节点。
本发明实施例还提供一种业务数据跨库排序方法,所述方法包括:
接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表,其中,所述数据排序请求包括待排序数据,所述第二全局位置列表用于记录业务数据在所有分库节点中的总排序位置;
根据更新后的第二全局位置列表,确定对应于所述待排序数据的第二全局位置区间,将所述第二全局位置区间发送至所述目标分库节点。
可选的,在本发明一实施例中,所述数据排序请求还包括待修改数据;所述接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表进一步包括:从目标分库节点接收待排序数据及待修改数据对应的全局位置,根据所述待排序数据及所述待修改数据对应的全局位置更新第二全局位置列表。
可选的,在本发明一实施例中,所述根据所述待排序数据及所述待修改数据的全局位置更新第二全局位置列表包括:根据所述待排序数据及所述待修改数据的全局位置,确定所述待排序数据在所述第二全局位置列表中的排序值,以及所述待修改数据在所述第二全局位置列表中的排序值;其中,将所述待排序数据在所述第二全局位置列表中的排序值作为第二修改后排序值,将所述待修改数据在所述第二全局位置列表中的排序值作为第二修改前排序值;所述第二修改后排序值与所述第二修改前排序值作差,得到差值M;若M为负数,则将在所述第二修改前排序值的前M个业务数据的全局位置加1;若M为正数,则将在所述第二修改前排序值的后M个业务数据的全局位置减1。
可选的,在本发明一实施例中,所述方法还包括:接收路由节点发送的数据查询请求,所述数据查询请求包括条件字段及排序字段;根据所述条件字段在第二全局位置列表中进行数据检索,将符合所述条件字段的业务数据按照所述排序字段进行排序并返回至所述路由节点。
本发明实施例还提供一种业务数据跨库排序装置,所述装置包括:
第一列表更新模块,用于将从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表,其中,所述数据排序请求包括待排序数据,所述第一全局位置列表用于记录业务数据在所有分库节点中的总排序位置;
第一位置区间模块,用于根据更新后的第一全局位置列表,确定待排序数据的第一全局位置区间;
数据排序模块,用于接收各非目标分库节点返回的对应于所述待排序数据的第二全局位置区间,根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置。
可选的,在本发明一实施例中,所述数据排序请求还包括待修改数据;所述第一列表更新模块还具体用于:从路由节点接收待排序数据及待修改数据,将所述待排序数据及所述待修改数据对应的全局位置广播至各非目标分库节点;根据所述待排序数据及所述待修改数据对应的全局位置更新第一全局位置列表。
可选的,在本发明一实施例中,所述第一列表更新模块包括:第一排序值单元,用于根据所述待排序数据及所述待修改数据对应的全局位置,确定所述待排序数据在所述第一全局位置列表中的排序值,以及所述待修改数据在所述第一全局位置列表中的排序值;其中,将所述待排序数据在所述第一全局位置列表中的排序值作为第一修改后排序值,将所述待修改数据在所述第一全局位置列表中的排序值作为第一修改前排序值;第一差值单元,用于所述第一修改后排序值与所述第一修改前排序值作差,得到差值N;第一列表更新单元,用于若N为负数,则将在所述第一修改前排序值的前N个业务数据的全局位置加1;若N为正数,则将在所述第一修改前排序值的后N个业务数据的全局位置减1。
可选的,在本发明一实施例中,所述数据排序模块还用于在所述第二全局位置区间及所述第一全局位置区间中,确定区间上限等于区间下限的位置,将该位置作为所述待排序数据的全局位置。
可选的,在本发明一实施例中,所述装置还包括第一数据查询模块,用于接收路由节点发送的数据查询请求,所述数据查询请求包括条件字段及排序字段;根据所述条件字段在第一全局位置列表中进行数据检索,将符合所述条件字段的业务数据按照所述排序字段进行排序并返回至所述路由节点。
本发明实施例还提供一种业务数据跨库排序装置,所述装置包括:
第二列表更新模块,用于接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表,其中,所述数据排序请求包括待排序数据,所述第二全局位置列表用于记录业务数据在所有分库节点中的总排序位置;
第二位置区间模块,用于根据更新后的第二全局位置列表,确定对应于所述待排序数据的第二全局位置区间,将所述第二全局位置区间发送至所述目标分库节点。
可选的,在本发明一实施例中,所述数据排序请求还包括待修改数据;所述第二列表更新模块还具体用于:从目标分库节点接收待排序数据及待修改数据对应的全局位置,根据所述待排序数据及所述待修改数据对应的全局位置更新第二全局位置列表。
可选的,在本发明一实施例中,所述第二列表更新模块包括:第二排序值单元,用于根据所述待排序数据及所述待修改数据对应的全局位置,确定所述待排序数据在所述第二全局位置列表中的排序值,以及所述待修改数据在所述第二全局位置列表中的排序值;其中,将所述待排序数据在所述第二全局位置列表中的排序值作为第二修改后排序值,将所述待修改数据在所述第二全局位置列表中的排序值作为第二修改前排序值;第二差值单元,用于所述第二修改后排序值与所述第二修改前排序值作差,得到差值M;第二列表更新单元,用于若M为负数,则将在所述第二修改前排序值的前M个业务数据的全局位置加1;若M为正数,则将在所述第二修改前排序值的后M个业务数据的全局位置减1。
可选的,在本发明一实施例中,所述装置还包括第二数据检索模块,用于接收路由节点发送的数据查询请求,所述数据查询请求包括条件字段及排序字段;根据所述条件字段在第二全局位置列表中进行数据检索,将符合所述条件字段的业务数据按照所述排序字段进行排序并返回至所述路由节点。
本发明实施例还提供一种业务数据跨库排序系统,所述系统包括路由节点及多个分库节点,所述路由节点与每个分库节点通信连接,其中:
所述路由节点用于接收用户输入的数据排序请求,将所述数据排序请求发送至与数据排序请求对应的分库节点,将接收所述数据排序请求的分库节点作为目标分库节点,数据库中其他分库节点作为非目标分库节点;其中,所述数据排序请求包括待排序数据;
所述目标分库节点将所述数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表,根据更新后的第一全局位置列表,确定待排序数据的第一全局位置区间;其中,所述第一全局位置列表用于记录目标分库节点中的业务数据在所有分库节点中的总排序位置;
所述非目标分库节点接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表,根据更新后的第二全局位置列表,确定对应于所述待排序数据的第二全局位置区间,将所述第二全局位置区间发送至所述目标分库节点;其中,所述第二全局位置列表用于记录非目标分库节点中的业务数据在所有分库节点中的总排序位置;
所述目标分库节点接收各非目标分库节点返回的第二全局位置区间,根据所述第二全局位置区间及所述第一全局位置区间,确定所述待排序数据的全局位置。
可选的,在本发明一实施例中,所述数据排序请求还包括待修改数据的全局位置。
可选的,在本发明一实施例中,所述目标分库节点具体还用于从路由节点接收待排序数据及待修改数据的全局位置,将所述待排序数据及所述待修改数据的全局位置广播至各非目标分库节点;根据所述待排序数据及所述待修改数据的全局位置更新第一全局位置列表。
可选的,在本发明一实施例中,所述目标分库节点包括:第一排序值模块,用于根据所述待排序数据及所述待修改数据的全局位置,确定所述待排序数据在所述第一全局位置列表中的排序值,以及所述待修改数据在所述第一全局位置列表中的排序值;其中,将所述待排序数据在所述第一全局位置列表中的排序值作为第一修改后排序值,将所述待修改数据在所述第一全局位置列表中的排序值作为第一修改前排序值;第一差值模块,用于所述第一修改后排序值与所述第一修改前排序值作差,得到差值N;第一更新模块,若N为负数,则将在所述第一修改前排序值的前N个业务数据的全局位置加1;若N为正数,则将在所述第一修改前排序值的后N个业务数据的全局位置减1。
可选的,在本发明一实施例中,所述非目标分库节点具体还用于从目标分库节点接收待排序数据及待修改数据对应的全局位置,根据所述待排序数据及所述待修改数据对应的全局位置更新第二全局位置列表。
可选的,在本发明一实施例中,所述非目标分库节点包括:第二排序值模块,用于根据所述待排序数据及所述待修改数据对应的全局位置,确定所述待排序数据在所述第二全局位置列表中的排序值,以及所述待修改数据在所述第二全局位置列表中的排序值;其中,将所述待排序数据在所述第二全局位置列表中的排序值作为第二修改后排序值,将所述待修改数据在所述第二全局位置列表中的排序值作为第二修改前排序值;第二差值模块,用于所述第二修改后排序值与所述第二修改前排序值作差,得到差值M;第二更新模块,用于若M为负数,则将在所述第二修改前排序值的前M个业务数据的全局位置加1;若M为正数,则将在所述第二修改前排序值的后M个业务数据的全局位置减1。
可选的,在本发明一实施例中,所述目标分库节点具体还用于在所述第二全局位置区间及所述第一全局位置区间中,确定区间上限等于区间下限的位置,将该位置作为所述待排序数据的全局位置。
可选的,在本发明一实施例中,所述路由节点还用于向所述目标分库节点及所述非目标分库节点发送数据查询请求,所述数据查询请求包括条件字段及排序字段;其中,所述条件字段用于所述目标分库节点及所述非目标分库节点进行业务数据检索,所述排序字段用于所述目标分库节点及所述非目标分库节点对检索到的业务数据进行排序。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
本发明通过使用全局位置标记每个分库的数据的位置,无需归并节点即可完成任意维度的跨库排序,由此达到不依赖归并节点,即可完成跨库数据排序等功能,且可按任意维度排序,对数据插入及修改均可保证全局位置的准确性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中跨库排序及查询的示意图;
图2为本发明实施例一种业务数据跨库排序方法的流程图;
图3为本发明实施例中修改业务数据的流程图;
图4为本发明实施例中更新第一全局位置列表的流程图;
图5为本发明实施例中查询业务数据的流程图;
图6为本发明另一实施例中一种业务数据跨库排序方法的流程图;
图7为本发明实施例中更新第二全局位置列表的流程图;
图8为本发明实施例一种业务数据跨库排序装置的结构示意图;
图9为本发明实施例中第一列表更新模块的结构示意图;
图10为本发明另一实施例一种业务数据跨库排序装置的结构示意图;
图11为本发明实施例中第二列表更新模块的结构示意图;
图12为本发明实施例一种业务数据跨库排序系统的结构示意图;
图13A及图13B为本发明实施例中数据插入示意图;
图14A及图14B为本发明实施例中数据删除示意图;
图15A及图15B为本发明实施例中数据修改示意图;
图16为本发明实施例中数据查询示意图;
图17为本发明一实施例所提供的电子设备的结构示意图。
具体实施方式
本发明实施例提供一种业务数据跨库排序方法、装置及系统。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图2所示为本发明实施例一种业务数据跨库排序方法的流程图,图中所示方法的执行主体可以是数据库中执行数据排序操作的目标分库节点,方法具体包括:
步骤S1,将从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表,其中,所述数据排序请求包括待排序数据,所述第一全局位置列表用于记录业务数据在所有分库节点中的总排序位置。
其中,数据库中的目标分库节点接收路由节点发送的数据排序请求,数据排序请求由用户输入至路由节点。数据排序请求包括但不限于数据插入请求及数据修改请求,当有新数据插入或数据修改发生时,数据库中的数据排序均需要调整。数据库中各分库节点均在本地设置一全局位置列表,记录了业务数据的全局位置。业务数据的全局位置表示了该数据在数据库所有分库数据中的排序位置,即按升序排序时在其前面有多少个数据。
进一步的,业务数据可以按照不同类型划分为不同维度,例如,字符型数据、数值型数据等等。因此,数据排序请求中包含的待排序数据可以是数值,也可以为字符。业务数据可以通过全局位置按照不同维度的进行排序。例如,全局位置列表可以表示为表1。举例而言,业务数据可按维度1做水平拆分存储数据。维度1为数值型,所有数据为10到21。增加全局位置维度,标记10的位置为1,11的位置为2...21的位置为12,以此类推。维度2是字符型,数据分别为N、N、P...X、Y,共12个字母,其中N重复两次,则记录N的全局位置为1,P的全局位置为3(即P前面有2个N)...Y的位置为12,以此类推。
表1
维度1 | 维度1全局位置 | 维度2 | 维度2全局位置 |
11 | 2 | W | 10 |
17 | 8 | V | 9 |
21 | 12 | P | 3 |
15 | 6 | N | 1 |
当需要插入新数据或修改数据时,接收到数据排序请求的目标分库节点利用待排序数据更新本地全局位置列表,即第一全局位置列表。例如,第一全局列表为表1,新插入数据为13,则值大于13的15、17及21对应的全局位置需要加1,而11对应的全局位置保持不变。由此完成全局位置列表的更新。
步骤S2,根据更新后的第一全局位置列表,确定待排序数据的第一全局位置区间。
具体的,以表1为例,新插入数据为13,由于13大于11且小于15,且列表更新后,11的全局位置为2,15的全局位置为7。因此,13的全局位置区间介于11的全局位置与15的全局位置之间,具体为[3,6]。
步骤S3,接收各非目标分库节点返回的对应于所述待排序数据的第二全局位置区间,根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置。
其中,与目标分库节点更新全局位置列表以及确定待排序数据全局位置区间的过程类似,非目标分库节点也进行本地的全局列表更新,并确定待排序数据于本地列表中的全局位置区间,即第二全局位置区间。将该全局位置区间发送至目标分库节点。
进一步的,根据各个非目标节点返回的第二全局位置区间及本地的第一全局位置区间,可以确定待排序数据的具体全局位置。具体的,取各个区间中上限与下限相等的位置作为待排序数据的全局位置。在所有全局位置区间中,确定区间上限等于下限的位置,这个位置有且仅有一个,是唯一的。
作为本发明的一个实施例,数据排序请求还包括待修改数据。其中,如图3所示,将从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表进一步包括:
步骤S21,从路由节点接收待排序数据及待修改数据,将所述待排序数据及所述待修改数据对应的全局位置广播至各非目标分库节点。
其中,当数据排序请求为修改数据时,为保证数据排序的准确性,数据排序请求中还包括待修改数据。进一步的,在本地的第一全局位置列表中检索待修改数据,找到待修改数据对应的全局位置,将该全局位置及待排序数据广播至其他非目标分库节点中。以表1为例,待修改数据为15,15对应的全局位置为6,待排序数据为18,即将数据从15修改到18。目标分库节点将修改后的数据18,以及修改前数据15对应的全局位置6广播至其他非目标分库节点中。
步骤S22,从根据所述待排序数据及所述待修改数据的全局位置更新第一全局位置列表。
在本实施例中,如图4所示,根据所述待排序数据及所述待修改数据对应的全局位置更新第一全局位置列表包括:
步骤S31,根据所述待排序数据及所述待修改数据对应的全局位置,确定所述待排序数据在所述第一全局位置列表中的排序值,以及所述待修改数据在所述第一全局位置列表中的排序值;其中,将所述待排序数据在所述第一全局位置列表中的排序值作为第一修改后排序值,将所述待修改数据在所述第一全局位置列表中的排序值作为第一修改前排序值。
步骤S32,第一修改后排序值与所述第一修改前排序值作差,得到差值N。
步骤S33,若N为负数,则将在所述第一修改前排序值的前N个业务数据的全局位置加1;若N为正数,则将在所述第一修改前排序值的后N个业务数据的全局位置减1。
具体的,目标分库节点按照修改前数据的全局位置,确定待排序数据在本分库的本地位置。然后按照修改后的数据,计算出修改后数据在本分库的本地位置。令N=修改后的本地位置-修改前的本地位置;若N为负数,则说明需把修改前本地位置的前N个数的全局位置加1;若N为正数,则说明需把修改前本地位置的后N个数的全局位置减1。进一步的,若N为零,则不更改全局位置列表中数据的全局位置。
作为本发明的一个实施例,根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置包括:在所述第二全局位置区间及所述第一全局位置区间中,确定区间上限等于区间下限的位置,将该位置作为所述待排序数据的全局位置。
具体的,若各第二全局位置区间及第一全局位置区间为:[3,6]、[4,9]及[6,10],则待排序数据的全局位置为6。
作为本发明的一个实施例,如图5所示,方法还包括:
步骤S41,接收路由节点发送的数据查询请求,所述数据查询请求包括条件字段及排序字段。
步骤S42,根据所述条件字段在第一全局位置列表中进行数据检索,将符合所述条件字段的业务数据按照所述排序字段进行排序并返回至所述路由节点。
其中,各个分库节点之间实现了全连接,当需要进行业务数据检索时,将检索请求发送至所有的分库节点。各分库节点按照条件字段进行检索,例如,条件字段可以为:select*from表where维度1>2and维度1<4order by维度2,其中,条件字段中的表代表全局位置列表。各分库节点将符合条件字段的业务数据按照排序字段进行排序,再将排序好的业务数据返回至路由节点。其中,排序字段可以为按维度2的全局位置升序排列等等。
如图6所示为本发明另一实施例中一种业务数据跨库排序方法的流程图,图中所示方法的执行主体可以为接收目标分库节点发送的数据排序请求的非目标分库节点,方法具体包括:
步骤S101,接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表,其中,所述数据排序请求包括待排序数据,所述第二全局位置列表用于记录业务数据在所有分库节点中的总排序位置。
其中,与目标分库节点处理过程类似,非目标分库节点利用待排序数据更新本地的全局位置列表,即第二全局位置列表。具体过程可参考步骤S1。
步骤S102,根据更新后的第二全局位置列表,确定对应于所述待排序数据的第二全局位置区间,将所述第二全局位置区间发送至所述目标分库节点。
其中,与目标分库节点处理过程类似,非目标分库节点列表更新完成后,可以确定待排序数据在本地全局位置列表中的全局位置区间,即第二全局位置区间,具体过程可参考步骤S2。将得到的第二全局位置区间发送至目标分库节点。
作为本发明的一个实施例,数据排序请求还包括待修改数据。其中,接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表进一步包括:从目标分库节点接收待排序数据及待修改数据对应的全局位置,根据所述待排序数据及所述待修改数据对应的全局位置更新第二全局位置列表。
在本实施例中,如图7所示,根据所述待排序数据及所述待修改数据的全局位置更新第二全局位置列表包括:
步骤S201,根据所述待排序数据及所述待修改数据的全局位置,确定所述待排序数据在所述第二全局位置列表中的排序值,以及所述待修改数据在所述第二全局位置列表中的排序值;其中,将所述待排序数据在所述第二全局位置列表中的排序值作为第二修改后排序值,将所述待修改数据在所述第二全局位置列表中的排序值作为第二修改前排序值;
步骤S202,第二修改后排序值与所述第二修改前排序值作差,得到差值M;
步骤S203,若M为负数,则将在所述第二修改前排序值的前M个业务数据的全局位置加1;若M为正数,则将在所述第二修改前排序值的后M个业务数据的全局位置减1。
具体的,与目标分库节点处理过程类似,各非目标分库节点按照修改前数据的全局位置,确定新数据在本分库的本地位置。然后按照修改后的数据,计算出修改后数据在本分库的本地位置。令M=修改后的本地位置-修改前的本地位置;若M为负数,则说明需把修改前本地位置的前M个数的全局位置加1;若M为正数,则说明需把修改前本地位置的后M个数的全局位置减1。进一步的,若M为零,则不更改全局位置列表中数据的全局位置。
作为本发明的一个实施例,方法还包括:接收路由节点发送的数据查询请求,所述数据查询请求包括条件字段及排序字段;根据所述条件字段在第二全局位置列表中进行数据检索,将符合所述条件字段的业务数据按照所述排序字段进行排序并返回至所述路由节点。
其中,当需要进行业务数据检索时,路由节点将检索请求发送至所有分库节点,因此,各个分库节点均进行业务数据的检索。具体过程可参考步骤S41及步骤S42。
本发明通过使用全局位置标记每个分库的数据的位置,无需归并节点即可完成任意维度的跨库排序,由此达到不依赖归并节点,即可完成跨库数据排序等功能,且可按任意维度排序,对数据插入及修改均可保证全局位置的准确性。
如图8所示为本发明实施例一种业务数据跨库排序装置的结构示意图,图中所示装置包括:
第一列表更新模块10,用于将从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表,其中,所述数据排序请求包括待排序数据,所述第一全局位置列表用于记录业务数据在所有分库节点中的总排序位置;
第一位置区间模块20,用于根据更新后的第一全局位置列表,确定待排序数据的第一全局位置区间;
数据排序模块30,用于接收各非目标分库节点返回的对应于所述待排序数据的第二全局位置区间,根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置。
作为本发明的一个实施例,数据排序请求还包括待修改数据。其中,第一列表更新模块还具体用于:从路由节点接收待排序数据及待修改数据,将所述待排序数据及所述待修改数据对应的全局位置广播至各非目标分库节点;根据所述待排序数据及所述待修改数据的全局位置更新第一全局位置列表。
在本实施例中,如图9所示,第一列表更新模块10包括:
第一排序值单元,用于根据所述待排序数据及所述待修改数据的全局位置,确定所述待排序数据在所述第一全局位置列表中的排序值,以及所述待修改数据在所述第一全局位置列表中的排序值;其中,将所述待排序数据在所述第一全局位置列表中的排序值作为第一修改后排序值,将所述待修改数据在所述第一全局位置列表中的排序值作为第一修改前排序值;
第一差值单元,用于所述第一修改后排序值与所述第一修改前排序值作差,得到差值N;
第一列表更新单元,用于若N为负数,则将在所述第一修改前排序值的前N个业务数据的全局位置加1;若N为正数,则将在所述第一修改前排序值的后N个业务数据的全局位置减1。
作为本发明的一个实施例,数据排序模块还用于在所述第二全局位置区间及所述第一全局位置区间中,确定区间上限等于区间下限的位置,将该位置作为所述待排序数据的全局位置。
作为本发明的一个实施例,装置还包括第一数据查询模块,用于接收路由节点发送的数据查询请求,所述数据查询请求包括条件字段及排序字段;根据所述条件字段在第一全局位置列表中进行数据检索,将符合所述条件字段的业务数据按照所述排序字段进行排序并返回至所述路由节点。
如图10所示为本发明另一实施例一种业务数据跨库排序装置的结构示意图,图中所示装置包括:
第二列表更新模块101,用于接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表,其中,所述数据排序请求包括待排序数据,所述第二全局位置列表用于记录业务数据在所有分库节点中的总排序位置;
第二位置区间模块102,用于根据更新后的第二全局位置列表,确定对应于所述待排序数据的第二全局位置区间,将所述第二全局位置区间发送至所述目标分库节点。
作为本发明的一个实施例,数据排序请求还包括待修改数据。其中,第二列表更新模块还具体用于:从目标分库节点接收待排序数据及待修改数据对应的全局位置,根据所述待排序数据及所述待修改数据的全局位置更新第二全局位置列表。
在本实施例中,如图11所示,第二列表更新模块101包括:
第二排序值单元,用于根据所述待排序数据及所述待修改数据的全局位置,确定所述待排序数据在所述第二全局位置列表中的排序值,以及所述待修改数据在所述第二全局位置列表中的排序值;其中,将所述待排序数据在所述第二全局位置列表中的排序值作为第二修改后排序值,将所述待修改数据在所述第二全局位置列表中的排序值作为第二修改前排序值;
第二差值单元,用于所述第二修改后排序值与所述第二修改前排序值作差,得到差值M;
第二列表更新单元,用于若M为负数,则将在所述第二修改前排序值的前M个业务数据的全局位置加1;若M为正数,则将在所述第二修改前排序值的后M个业务数据的全局位置减1。
作为本发明的一个实施例,装置还包括第二数据检索模块,用于接收路由节点发送的数据查询请求,所述数据查询请求包括条件字段及排序字段;根据所述条件字段在第二全局位置列表中进行数据检索,将符合所述条件字段的业务数据按照所述排序字段进行排序并返回至所述路由节点。
基于与图2及图6对应的业务数据跨库排序方法相同的申请构思,本发明还提供了上述业务数据跨库排序装置。由于业务数据跨库排序装置解决问题的原理与业务数据跨库排序方法相似,因此业务数据跨库排序装置的实施可以参见业务数据跨库排序方法的实施,重复之处不再赘述。
本发明通过使用全局位置标记每个分库的数据的位置,无需归并节点即可完成任意维度的跨库排序,由此达到不依赖归并节点,即可完成跨库数据排序等功能,且可按任意维度排序,对数据插入及修改均可保证全局位置的准确性。
如图12所示为本发明实施例一种业务数据跨库排序系统的结构示意图,图中所示系统包括:路由节点及多个分库节点,路由节点与每个分库节点通信连接,其中:;
路由节点用于接收用户输入的数据排序请求,将所述数据排序请求发送至与数据排序请求对应的分库节点,将接收所述数据排序请求的分库节点作为目标分库节点,数据库中其他分库节点作为非目标分库节点;其中,所述数据排序请求包括待排序数据;
目标分库节点将所述数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表,根据更新后的第一全局位置列表,确定待排序数据的第一全局位置区间;其中,所述第一全局位置列表用于记录目标分库节点中的业务数据在所有分库节点中的总排序位置;
非目标分库节点接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表,根据更新后的第二全局位置列表,确定对应于所述待排序数据的第二全局位置区间,将所述第二全局位置区间发送至所述目标分库节点;其中,所述第二全局位置列表用于记录非目标分库节点中的业务数据在所有分库节点中的总排序位置;
目标分库节点接收各非目标分库节点返回的第二全局位置区间,根据所述第二全局位置区间及所述第一全局位置区间,确定所述待排序数据的全局位置。
具体的,在分布式框架下,客户端请求发送至路由节点,路由节点按照一定的路由规则把请求分发到不同的分库。分库节点之间建立全连接。对分库表,即全局位置列表,作为查询维度的字段,增加维度全局位置,标记该维度字段值在所有分库中的位置(即按升序排序时在其前面有多少个数据)。
图12中所示系统共4个分库,都存在全局位置列表,图中,分库1左侧为其全局位置列表,分库2上侧为其全局位置列表,分库3右侧为其全局位置列表,分库4下侧为其全局位置列表。按维度1做水平拆分存储数据。维度1为数值型,所有数据为10到21。增加全局位置维度,标记10的位置为1,11的位置为2...21的位置为12,以此类推。维度2是字符型,数据分别为N、N、P...X、Y,共12个字母,其中N重复两次,则记录N的全局位置为1,P的全局位置为3(即P前面有2个N)...Y的位置为12,以此类推。
在本发明一实施例中,当分库发生数据插入时,需将新数据通过全连接广播至所有分库节点。各分库节点按新数据,对本分库全局位置在新数据之后的数据的全局位置加1,并将本分库认为的新数据的全局位置区间发给新数据所在节点,即目标分库节点。发生数据插入的所在目标分库节点自身同样会对新数据之后的所有数据的全局位置加1,以及得到新数据的全局位置区间。目标分库节点将所有分库返回的全局位置区间上限和下限相等的位置,作为新数据的全局位置。各维度可增加索引提高排序比较速度。
如图13A所示,分库1发生一笔数据插入,数据的维度1=15.5,维度2=Z。分库1需把以下报文内容广播给所有节点:{操作=insert,维度1=15.5,维度2=Z}。各分库做以下处理(分库1也做相同动作)。
分库1:对维度1在本分库排序:10,15.5,16,20,则对维度1=16和20的全局位置分别加1。并得到15.5的全局位置应在2(在维度1=10的记录之后)到7(在维度1=16的记录之前)之间的闭区间。
分库2:对维度1在本分库排序:11,15.5,17,21,则对维度1=17和21的全局位置分别加1,并返回给分库1:15.5的位置应该在3(在维度1=11的记录之后)到8(在维度1=17的记录之前)之间的闭区间。
分库3:对维度1在本分库排序:12,13,15.5,则对维度1=18的全局位置加1,并返回分库1:15.5的位置应在5(在维度1=13的记录之后)到9(在维度1=18的记录之前)之间的闭区间。
分库4:对维度1在本分库排序:14,15,15.5,19,则对把维度1=19的全局位置加1,并返回分库1:15.5的位置应在7到10之间的闭区间。
分库1综合各节点返回的位置区间,如表2所示。
表2
区间上限(闭区间) | 区间下限(闭区间) | |
节点1 | 2 | 7 |
节点2 | 3 | 8 |
节点3 | 5 | 9 |
节点4 | 7 | 10 |
取区间上限=区间下限的位置,即新数据维度1=15.5的全局位置是7。同理可计算出维度2=Z的全局位置是13。最终得到图13B所示的结果。
在本发明一实施例中,当分库发生数据删除时,需将删除的数据的全局位置通过全连接广播至所有节点。各节点按待删除数据的全局位置,对本分库全局位置在待删除数据之后的数据的全局位置减1。发生数据删除的节点自身也把所有全局位置在待删除数据之后的数据全局减1。
如图14A所示,分库3发生了维度1=13及维度2=T的记录的删除,则分库3需把以下报文内容广播给所有节点:{操作=delete,维度1全局位置=4,维度2全局位置=7}。此处无需广播实际数据,可节约传输字节数。分库1收到删除维度1全局位置为4的记录,则把维度1所有大于4的全局位置减1。其余分库也做相同的动作。
同理,各分库可用相同的方法处理维度2。最终得到图14B所示的结果:
作为本发明的一个实施例,数据排序请求还包括待修改数据。
在本实施例中,目标分库节点具体还用于从路由节点接收待排序数据及待修改数据,将所述待排序数据及所述待修改数据对应的全局位置广播至各非目标分库节点;根据所述待排序数据及所述待修改数据的全局位置更新第一全局位置列表。
在本实施例中,目标分库节点包括:第一排序值模块,用于根据所述待排序数据及所述待修改数据的全局位置,确定所述待排序数据在所述第一全局位置列表中的排序值,以及所述待修改数据在所述第一全局位置列表中的排序值;其中,将所述待排序数据在所述第一全局位置列表中的排序值作为第一修改后排序值,将所述待修改数据在所述第一全局位置列表中的排序值作为第一修改前排序值;第一差值模块,用于所述第一修改后排序值与所述第一修改前排序值作差,得到差值N;第一更新模块,若N为负数,则将在所述第一修改前排序值的前N个业务数据的全局位置加1;若N为正数,则将在所述第一修改前排序值的后N个业务数据的全局位置减1。
类似的,非目标分库节点具体还用于从目标分库节点接收待排序数据及待修改数据的全局位置,根据所述待排序数据及所述待修改数据的全局位置更新第二全局位置列表。
其中,非目标分库节点包括:第二排序值模块,用于根据所述待排序数据及所述待修改数据的全局位置,确定所述待排序数据在所述第二全局位置列表中的排序值,以及所述待修改数据在所述第二全局位置列表中的排序值;其中,将所述待排序数据在所述第二全局位置列表中的排序值作为第二修改后排序值,将所述待修改数据在所述第二全局位置列表中的排序值作为第二修改前排序值;
第二差值模块,用于所述第二修改后排序值与所述第二修改前排序值作差,得到差值M;
第二更新模块,用于若M为负数,则将在所述第二修改前排序值的前M个业务数据的全局位置加1;若M为正数,则将在所述第二修改前排序值的后M个业务数据的全局位置减1。
在一具体实施例中,当分库节点发生数据修改时,需将修改前数据的全局位置和修改后的数据,通过全连接广播至所有分库节点。各分库节点按照修改前数据的全局位置,确定新数据在本分库的本地位置。然后按照修改后的数据,计算出修改后数据在本分库的本地位置。令N=修改后的本地位置-修改前的本地位置;若N为负数,则说明需把修改前本地位置的前N个数的全局位置加1;若N为正数,则说明需把修改前本地位置的后N个数的全局位置减1。
发生数据修改的目标分库节点也会做上述计算。和数据插入时一样,各分库也要把各自认为的修改后数据的全局位置区间发给目标分库节点,目标分库节点将各分库返回的全局位置区间上限和下限相等的位置,作为修改后数据的全局位置。
如图15A所示,分库1的维度1=16的记录发生数据修改,维度1从16修改为18.5,则分库1需把以下报文内容广播给所有节点:{操作=modify,维度1修改前全局位置=7,维度1修改后数值=18.5}。各分库节点做以下处理(分库1也做相同动作):
分库1:对维度1修改前全局位置排序:1,6,7,11,则维度1修改前数据在本分库排第3。对维度1修改后数据在本分库排序:10,15.5,18.5,20,则维度1修改后的数据在本分库仍然排第3。N=3-3=0,因此本分库无需调整全局位置。同时得到修改后数据的全局位置区间在7(在维度1=15.5的记录之后)到10(正在维度1=20的记录之前)之间的闭区间。
分库2:对维度1修改前全局位置排序:2,7,8,12,则维度1修改前数据在本分库排第2。对维度1修改后数据在本分库排序:11,17,18.5,21,则维度1修改后的数据在本分库排第3。N=3-2=1,说明需要修改前本地位置2后的1条记录需把全局位置减1,即维度1=17的记录的全局位置从8改为7。同时返回分库1修改后数据的全局位置区间在8(在维度1=17的记录之后)到11(正在维度1=21的记录之前)之间的闭区间。
分库3:对维度1修改前全局位置排序:3,7,9,则维度1修改前数据在本分库排第2。对维度1修改后数据在本分库排序:12,18,18.5,则维度1修改后的数据在本分库排第3。N=3-2=1,说明需要修改前本地位置2后的1条记录需把全局位置减1,即维度1=18的记录的全局位置从9改为8。同时返回分库1修改后数据的全局位置区间在9(在维度1=18的记录之后)到无穷大(18.5大于分库3的所有记录)之间的闭区间。
分库4:对维度1修改前全局位置排序:4,5,7,10,则维度1修改前数据在本分库排第3。对维度1修改后数据在本分库排序:14,15,18.5,19,则维度1修改后的数据在本分库仍然排第3。N=3-3=0,因此本分库无需调整全局位置。同时返回分库1修改后数据的全局位置区间在6(在维度1=15的记录之后)到9(正在维度1=19的记录之前)之间的闭区间。
分库1综合各节点返回的位置区间,如表3所示。
表3
区间上限(闭区间) | 区间下限(闭区间) | |
节点1 | 7 | 10 |
节点2 | 8 | 11 |
节点3 | 9 | 无穷大 |
节点4 | 6 | 9 |
在本实施例中,目标分库节点具体还用于在所述第二全局位置区间及所述第一全局位置区间中,确定区间上限等于区间下限的位置,将该位置作为所述待排序数据的全局位置。具体的,取区间上限=区间下限的位置,即修改后数据维度1=18.5的全局位置是9。最终得到图15B所示的结果。
作为本发明的一个实施例,路由节点还用于向所述目标分库节点及所述非目标分库节点发送数据查询请求,所述数据查询请求包括条件字段及排序字段;其中,所述条件字段用于所述目标分库节点及所述非目标分库节点进行业务数据检索,所述排序字段用于所述目标分库节点及所述非目标分库节点对检索到的业务数据进行排序。
在本实施例中,如图16所示,当客户端发起跨库排序和查询请求时,可在报文增加标志,以区分单库请求。对于单库请求,路由节点会按照路由规则,把请求路由到单个节点;对于跨库请求,路由节点会分发至所有节点。每个节点收到跨库查询请求时,按照请求中的条件字段和排序字段,把符合条件的记录返回客户端,记录中附带全局位置字段。在各分库中,可对条件字段增加索引提高查询速度。客户端按照全局位置字段,对记录做排序展示。
客户端发起跨库查询和排序请求:select*from表where维度1>2and维度1<4orderby维度2,其中,请求中的表代表全局位置列表。路由节点把请求分发给所有分库。分库2查询到其全局位置列表存在维度=11的记录,全局位置在[2,4]的范围,因此把记录返回给客户端;分库3查询到其全局位置列表存在维度=12和13的记录,全局位置在[2,4]的范围,因此把记录返回给客户端。分库1和分库4无全局位置在[2,4]范围的记录,则返回空记录给客户端。
客户端收到3条记录如表4所示。
表4
维度1 | 维度2 |
11 | W |
12 | U |
13 | T |
同时,对维度2做排序,最终展示出的列表为表5所示。
表5
本发明通过使用全局位置标记每个分库的数据的位置,无需归并节点即可完成任意维度的跨库排序,由此达到不依赖归并节点,即可完成跨库数据排序等功能,且可按任意维度排序,对数据插入及修改均可保证全局位置的准确性。
本发明还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有执行上述方法的计算机程序。
如图17所示,该电子设备600还可以包括:通信模块110、输入单元120、音频处理器130、显示器160、电源170。值得注意的是,电子设备600也并不是必须要包括图17中所示的所有部件;此外,电子设备600还可以包括图17中没有示出的部件,可以参考现有技术。
如图17所示,中央处理器100有时也称为控制器或操作控件,可以包括微处理器或其他处理器装置和/或逻辑装置,该中央处理器100接收输入并控制电子设备600的各个部件的操作。
其中,存储器140,例如可以是缓存器、闪存、硬驱、可移动介质、易失性存储器、非易失性存储器或其它合适装置中的一种或更多种。可储存上述与失败有关的信息,此外还可存储执行有关信息的程序。并且中央处理器100可执行该存储器140存储的该程序,以实现信息存储或处理等。
输入单元120向中央处理器100提供输入。该输入单元120例如为按键或触摸输入装置。电源170用于向电子设备600提供电力。显示器160用于进行图像和文字等显示对象的显示。该显示器例如可为LCD显示器,但并不限于此。
该存储器140可以是固态存储器,例如,只读存储器(ROM)、随机存取存储器(RAM)、SIM卡等。还可以是这样的存储器,其即使在断电时也保存信息,可被选择性地擦除且设有更多数据,该存储器的示例有时被称为EPROM等。存储器140还可以是某种其它类型的装置。存储器140包括缓冲存储器141(有时被称为缓冲器)。存储器140可以包括应用/功能存储部142,该应用/功能存储部142用于存储应用程序和功能程序或用于通过中央处理器100执行电子设备600的操作的流程。
存储器140还可以包括数据存储部143,该数据存储部143用于存储数据,例如联系人、数字数据、图片、声音和/或任何其他由电子设备使用的数据。存储器140的驱动程序存储部144可以包括电子设备的用于通信功能和/或用于执行电子设备的其他功能(如消息传送应用、通讯录应用等)的各种驱动程序。
通信模块110即为经由天线111发送和接收信号的发送机/接收机110。通信模块(发送机/接收机)110耦合到中央处理器100,以提供输入信号和接收输出信号,这可以和常规移动通信终端的情况相同。
基于不同的通信技术,在同一电子设备中,可以设置有多个通信模块110,如蜂窝网络模块、蓝牙模块和/或无线局域网模块等。通信模块(发送机/接收机)110还经由音频处理器130耦合到扬声器131和麦克风132,以经由扬声器131提供音频输出,并接收来自麦克风132的音频输入,从而实现通常的电信功能。音频处理器130可以包括任何合适的缓冲器、解码器、放大器等。另外,音频处理器130还耦合到中央处理器100,从而使得可以通过麦克风132能够在本机上录音,且使得可以通过扬声器131来播放本机上存储的声音。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本发明中应用了具体实施例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种业务数据跨库排序方法,其特征在于,所述方法包括:
目标分库节点将从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表,其中,所述数据排序请求包括待排序数据及待修改数据,所述第一全局位置列表存储于目标分库节点,用于记录业务数据在所有分库节点中的总排序位置;根据更新后的第一全局位置列表,确定待排序数据的第一全局位置区间;接收各非目标分库节点返回的对应于所述待排序数据的第二全局位置区间,根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置;其中,所述待修改数据是数据库中需要被修改的数据;所述待排序数据用于替换所述待修改数据;
非目标分库节点接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表,各第二全局位置列表分别存储于对应的非目标分库节点中,用于记录业务数据在所有分库节点中的总排序位置;根据更新后的第二全局位置列表,确定对应于所述待排序数据的第二全局位置区间,将所述第二全局位置区间发送至所述目标分库节点;
其中,目标分库节点与非目标分库节点将从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求分别更新第一全局位置列表与第二全局位置列表包括:
目标分库节点与非目标分库节点从路由节点接收待排序数据及待修改数据,将所述待排序数据及所述待修改数据对应的全局位置广播至各非目标分库节点;根据所述待排序数据及所述待修改数据对应的全局位置,分别更新第一全局位置列表与第二全局位置列表;
其中,所述根据所述待排序数据及所述待修改数据对应的全局位置,分别更新第一全局位置列表与第二全局位置列表包括:
目标分库节点根据所述待排序数据及所述待修改数据对应的全局位置,确定所述待排序数据在所述第一全局位置列表中的排序值,以及所述待修改数据在所述第一全局位置列表中的排序值;其中,将所述待排序数据在所述第一全局位置列表中的排序值作为第一修改后排序值,将所述待修改数据在所述第一全局位置列表中的排序值作为第一修改前排序值;所述第一修改后排序值与所述第一修改前排序值作差,得到差值N;若N为负数,则将在所述第一修改前排序值的前N个业务数据的全局位置加1;若N为正数,则将在所述第一修改前排序值的后N个业务数据的全局位置减1;非目标分库节点根据所述待排序数据及所述待修改数据对应的全局位置,利用上述步骤更新所述第二全局位置列表;
其中,所述根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置包括:目标分库节点在所述第二全局位置区间及所述第一全局位置区间中,确定区间上限等于区间下限的位置,将该位置作为所述待排序数据的全局位置。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
目标分库节点接收路由节点发送的数据查询请求,所述数据查询请求包括条件字段及排序字段;
目标分库节点根据所述条件字段在第一全局位置列表中进行数据检索,将符合所述条件字段的业务数据按照所述排序字段进行排序并返回至所述路由节点。
3.一种业务数据跨库排序装置,其特征在于,所述装置包括:
第一列表更新模块,用于使目标分库节点从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表,其中,所述数据排序请求包括待排序数据及待修改数据,所述第一全局位置列表存储于目标分库节点,用于记录业务数据在所有分库节点中的总排序位置;第一位置区间模块,用于使目标分库节点根据更新后的第一全局位置列表,确定待排序数据的第一全局位置区间;数据排序模块,用于使目标分库节点接收各非目标分库节点返回的对应于所述待排序数据的第二全局位置区间,根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置;其中,所述待修改数据是数据库中需要被修改的数据;所述待排序数据用于替换所述待修改数据;
第二列表更新模块,用于使非目标分库节点接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表,表各第二全局位置列表分别存储于对应的非目标分库节点中,用于记录业务数据在所有分库节点中的总排序位置;第二位置区间模块,用于使非目标分库节点根据更新后的第二全局位置列表,确定对应于所述待排序数据的第二全局位置区间,将所述第二全局位置区间发送至所述目标分库节点;
其中,目标分库节点与非目标分库节点将从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求分别更新第一全局位置列表与第二全局位置列表包括:
目标分库节点与非目标分库节点从路由节点接收待排序数据及待修改数据,将所述待排序数据及所述待修改数据对应的全局位置广播至各非目标分库节点;根据所述待排序数据及所述待修改数据对应的全局位置,分别更新第一全局位置列表与第二全局位置列表;
其中,所述根据所述待排序数据及所述待修改数据对应的全局位置,分别更新第一全局位置列表与第二全局位置列表包括:
目标分库节点根据所述待排序数据及所述待修改数据对应的全局位置,确定所述待排序数据在所述第一全局位置列表中的排序值,以及所述待修改数据在所述第一全局位置列表中的排序值;其中,将所述待排序数据在所述第一全局位置列表中的排序值作为第一修改后排序值,将所述待修改数据在所述第一全局位置列表中的排序值作为第一修改前排序值;所述第一修改后排序值与所述第一修改前排序值作差,得到差值N;若N为负数,则将在所述第一修改前排序值的前N个业务数据的全局位置加1;若N为正数,则将在所述第一修改前排序值的后N个业务数据的全局位置减1;非目标分库节点根据所述待排序数据及所述待修改数据对应的全局位置,利用上述步骤更新所述第二全局位置列表;
其中,所述根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置包括:目标分库节点在所述第二全局位置区间及所述第一全局位置区间中,确定区间上限等于区间下限的位置,将该位置作为所述待排序数据的全局位置。
4.一种业务数据跨库排序系统,其特征在于,所述系统包括路由节点及多个分库节点,所述路由节点与每个分库节点通信连接,其中:
所述路由节点用于接收用户输入的数据排序请求,将所述数据排序请求发送至与数据排序请求对应的分库节点,将接收所述数据排序请求的分库节点作为目标分库节点,数据库中其他分库节点作为非目标分库节点;其中,所述数据排序请求包括待排序数据及待修改数据;
所述目标分库节点用于将所述数据排序请求广播至各非目标分库节点,根据所述数据排序请求更新第一全局位置列表,根据更新后的第一全局位置列表,确定待排序数据的第一全局位置区间;其中,所述第一全局位置列表存储于目标分库节点,用于记录目标分库节点中的业务数据在所有分库节点中的总排序位置;其中,所述待修改数据是数据库中需要被修改的数据;所述待排序数据用于替换所述待修改数据;
所述非目标分库节点用于接收目标分库节点发送的数据排序请求,根据所述数据排序请求更新第二全局位置列表,根据更新后的第二全局位置列表,确定对应于所述待排序数据的第二全局位置区间,将所述第二全局位置区间发送至所述目标分库节点;其中,各第二全局位置列表分别存储于对应的非目标分库节点中,用于记录非目标分库节点中的业务数据在所有分库节点中的总排序位置;
所述目标分库节点用于接收各非目标分库节点返回的第二全局位置区间,并根据所述第二全局位置区间及所述第一全局位置区间,确定所述待排序数据的全局位置;
其中,目标分库节点与非目标分库节点将从路由节点接收到的数据排序请求广播至各非目标分库节点,根据所述数据排序请求分别更新第一全局位置列表与第二全局位置列表包括:
目标分库节点与非目标分库节点从路由节点接收待排序数据及待修改数据,将所述待排序数据及所述待修改数据对应的全局位置广播至各非目标分库节点;根据所述待排序数据及所述待修改数据对应的全局位置,分别更新第一全局位置列表与第二全局位置列表;
其中,所述根据所述待排序数据及所述待修改数据对应的全局位置,分别更新第一全局位置列表与第二全局位置列表包括:
目标分库节点根据所述待排序数据及所述待修改数据对应的全局位置,确定所述待排序数据在所述第一全局位置列表中的排序值,以及所述待修改数据在所述第一全局位置列表中的排序值;其中,将所述待排序数据在所述第一全局位置列表中的排序值作为第一修改后排序值,将所述待修改数据在所述第一全局位置列表中的排序值作为第一修改前排序值;所述第一修改后排序值与所述第一修改前排序值作差,得到差值N;若N为负数,则将在所述第一修改前排序值的前N个业务数据的全局位置加1;若N为正数,则将在所述第一修改前排序值的后N个业务数据的全局位置减1;非目标分库节点根据所述待排序数据及所述待修改数据对应的全局位置,利用上述步骤更新所述第二全局位置列表;
其中,所述根据所述第二全局位置区间及第一全局位置区间,确定所述待排序数据的全局位置包括:目标分库节点在所述第二全局位置区间及所述第一全局位置区间中,确定区间上限等于区间下限的位置,将该位置作为所述待排序数据的全局位置。
5.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至2任一项所述方法。
6.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有执行权利要求1至2任一项所述方法的计算机程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011060520.3A CN112162990B (zh) | 2020-09-30 | 2020-09-30 | 业务数据跨库排序方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011060520.3A CN112162990B (zh) | 2020-09-30 | 2020-09-30 | 业务数据跨库排序方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112162990A CN112162990A (zh) | 2021-01-01 |
CN112162990B true CN112162990B (zh) | 2023-09-08 |
Family
ID=73861631
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011060520.3A Active CN112162990B (zh) | 2020-09-30 | 2020-09-30 | 业务数据跨库排序方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112162990B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530084A (zh) * | 2013-09-26 | 2014-01-22 | 北京奇虎科技有限公司 | 一种数据并行排序方法和系统 |
CN108647347A (zh) * | 2018-05-14 | 2018-10-12 | 中国平安财产保险股份有限公司 | 分页显示方法、用户设备、存储介质及装置 |
CN111131384A (zh) * | 2019-11-18 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 位置排序方法及装置 |
CN111338766A (zh) * | 2020-03-12 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030113767A1 (en) * | 2001-08-29 | 2003-06-19 | Rubenfield Marc J. | Confirmation sequencing |
US10521426B2 (en) * | 2016-11-29 | 2019-12-31 | Sap Se | Query plan generation for split table query operations |
-
2020
- 2020-09-30 CN CN202011060520.3A patent/CN112162990B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103530084A (zh) * | 2013-09-26 | 2014-01-22 | 北京奇虎科技有限公司 | 一种数据并行排序方法和系统 |
CN108647347A (zh) * | 2018-05-14 | 2018-10-12 | 中国平安财产保险股份有限公司 | 分页显示方法、用户设备、存储介质及装置 |
CN111131384A (zh) * | 2019-11-18 | 2020-05-08 | 腾讯科技(深圳)有限公司 | 位置排序方法及装置 |
CN111338766A (zh) * | 2020-03-12 | 2020-06-26 | 腾讯科技(深圳)有限公司 | 事务处理方法、装置、计算机设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112162990A (zh) | 2021-01-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108920716B (zh) | 基于知识图谱的数据检索与可视化系统及方法 | |
CN108460041B (zh) | 数据的处理方法和装置 | |
CN108572789B (zh) | 磁盘存储方法和装置、消息推送方法和装置及电子设备 | |
CN101465917B (zh) | 一种通信终端信息分组的方法及通信终端 | |
CN111914520A (zh) | 文档协同编辑方法、装置、计算机装置及存储介质 | |
JP2008249624A (ja) | ナビゲーション装置及びその地図データ更新方法 | |
CN101578500A (zh) | 导航设备与数据更新系统 | |
CN106709042B (zh) | 索引更新方法及设备 | |
CN111368006B (zh) | 海量数据带条件集中抽取系统及方法 | |
CN112162990B (zh) | 业务数据跨库排序方法、装置及系统 | |
CN109299352B (zh) | 搜索引擎中网站数据的更新方法、装置和搜索引擎 | |
CN117009453B (zh) | 一种数字化营销实时查询客户所在客群列表的方法和系统 | |
CN111291017B (zh) | 镜像仓库的镜像存储、提取方法及装置 | |
CN114564501A (zh) | 一种数据库数据存储、查询方法、装置、设备及介质 | |
CN105550347B (zh) | 数据处理方法及装置 | |
CN112685557A (zh) | 可视化信息资源管理方法及装置 | |
CN114064697A (zh) | 日志自动搜索方法及系统 | |
CN113486023A (zh) | 数据库分库分表的方法及装置 | |
CN110597849B (zh) | 数据查询方法及装置 | |
CN113111223B (zh) | 报文生成xml串的方法及装置 | |
CN112448985A (zh) | 分布式系统、网络处理方法和装置以及电子设备 | |
CN112230984B (zh) | 区块链智能合约模板的处理方法及装置 | |
CN112905587B (zh) | 数据库的数据管理方法、装置及电子设备 | |
CN111444225B (zh) | 通用指标解析方法及装置 | |
CN113064921B (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 |