CN107870954A - 一种分布式数据库的扩展方法及装置 - Google Patents
一种分布式数据库的扩展方法及装置 Download PDFInfo
- Publication number
- CN107870954A CN107870954A CN201610862130.5A CN201610862130A CN107870954A CN 107870954 A CN107870954 A CN 107870954A CN 201610862130 A CN201610862130 A CN 201610862130A CN 107870954 A CN107870954 A CN 107870954A
- Authority
- CN
- China
- Prior art keywords
- data
- new
- migration
- distribution strategy
- unit
- 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.)
- Granted
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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- 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/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种分布式数据库的扩展方法及装置,所述方法包括:确定数据访问服务中有数据主机接入时,根据扩展目标为所有数据主机设置新数据分布策略;确定所述新数据分布策略所对应的数据启动迁移后,将所述新分布策略状态设置为迁移中;将所述新数据分布策略所对应的数据以分表路由方式完成迁移后,以所述新数据分布策略替换旧数据分布策略。
Description
技术领域
本发明涉及数据库建立技术,尤其涉及一种分布式数据库的扩展方法及装置。
背景技术
关系型数据库负责系统中所有对象的实例化,实现数据的高效存取,实现数据统一的结构化查询语言(SQL,Structured Query Language)存取接口。在分布式的架构中,分布式数据库的处理能力很大程度直接决定了系统的整体处理能力。
目前的分布式技术,主要通过分布式的数据访问服务(DDS,Data DistributionService)和多个关系型数据库实例,统一构建对应用的SQL数据访问。应用程序使用JDBC或者相关的访问接口连接DDS,DDS内部进行SQL解析,按照分布规则进行路由判断,将相关的SQL发送到对应的数据库实例上执行。对于跨表的关联查询和group by语句,DDS还需要对结果集合并处理后返回应用程序。
在实际应用过程中,可以将不同的表放在不同的数据库实例上,通过多台数据库主机的处理能力整合,达到整体处理能力的提升。可以将不同的表放在不同的数据库主机上,也可以将一个记录数巨大的表,拆分成多个子表,放在不同的数据库主机上。
随着业务的发展,当数据库主机处理能力不足时,主要通过调整分表策略,增加数据库主机的方式实现处理能力的提升。
增加数据库主机以后,需要调整原表分布的方案,目前的拓展方案主要有以下两种:
暂停业务的处理,按照新的分片规则均匀分布原来的表记录,待数据搬迁完成,重新启动业务处理。数据搬迁完成后,相关SQL重新均分布在各个主机上。
修改现有的数据分布策略,保持策略兼容原有的策略,新产生的数据写入新增加的数据库主机,原有数据保持在各个原有主机的分布不变。相关主机可以立即投入使用。逐步增加SQL负载的处理。
采用暂停业务受理的方式,存在如下问题:1)扩展的可能只是部分表和部分数据库主机,但是需要将所有涉及表操作的业务都进行暂停,很可能需要暂停全部业务;2)业务中断的时间与需要迁移的数据量有关系,当表的记录数很大的时候,需要暂停的时间更长。
采用修改分布策略,兼容旧有分布策略的方式,主要有如下问题:1)针对无规律的主键,例如手机号码,难以建立兼容性的分布策略;2)多次扩展以后,分布策略将变得非常复杂,难以维护和调整,进一步增加兼容性的难度;3)新的策略难以保证在后续业务处理负载均匀分布。
发明内容
为解决上述技术问题,本发明实施例提供了一种分布式数据库的扩展方法及装置。
本发明实施例提供的一种分布式数据库的扩展方法,所述方法包括:
确定数据访问服务中有数据主机接入时,根据扩展目标为所有数据主机设置新数据分布策略;
确定所述新数据分布策略所对应的数据启动迁移后,将所述新分布策略状态设置为迁移中;
将所述新数据分布策略所对应的数据以分表路由方式完成迁移后,以所述新数据分布策略替换旧数据分布策略。
本发明实施例中,所述将所述新数据分布策略所对应的数据以分表路由方式完成迁移,包括:
根据所述新数据分布策略和数据库表命名规范,生成所述新数据分布策略对应的新表名;
在涉及的数据主机的对应数据库中按照新表名创建表;
以多进程多线程的方式,将待迁移的数据存储至所创建的表中。
本发明实施例中,所述将待迁移的数据存储至所创建的表中,包括:
对各原有的表启动游标,依次读取所述游标对应的记录;
按照所述原有的表的主键和所读取记录值删除所述原有的表上的记录,按照所述新数据分布策略对应的分布路由规则,将所读取记录值插入到对应的新创建的表中。
本发明实施例中,所述方法还包括:
将所读取记录值插入到对应的新表中失败时,所述原有的表所在的节点和新创建的表所在的节点均进行事务回滚,回退至待迁移的数据存储前的状态;将所读取记录值插入到对应的新表中成功时,所述原有的表所在的节点和新创建的表所在的节点依次进行事务提交。
本发明实施例中,所述方法还包括:
迁移过程中接收到单条记录查询请求时,根据查询主键的条件和所述新数据分布策略,在节点上按新表的表名进行查找,查找成功时返回查询结果,查找失败时,根据原数据分布策略,在对应节点上按原有表的表名查找,查找成功时返回查询结果,查找失败时返回空结果集。
本发明实施例中,所述方法还包括:
迁移过程中接收到单条记录的更新或删除请求时,确定所述单条记录与迁移操作存在数据冲突时,若在数据迁移之前则将更新后的数据迁移至新表中或直接删除原有表中的数据,若在数据迁移之后,则使用数据直接更新新表或删除新表中的数据。
本发明实施例中,所述方法还包括:
迁移过程中接收到单条记录插入请求时,按照新表的表名和所在的节点进行插入,插入成功时进行事务提交,插入失败时返回失败原因。
本发明实施例中,所述方法还包括:
迁移过程中接收到批量记录的查询请求时,分别按照原数据分布策略在原有表上进行查询、按照所述新数据分布策略在新表上进行查询,再查询结果合并后统一返回。
本发明实施例中,所述方法还包括:
迁移过程中接收到数据批量更新或删除请求时,暂停数据迁移处理,待当前正在迁移的数据事务均提交后,按照原数据分布策略和新数据分布策略分别对新表和原有表中的数据进行更新或删除,更新或删除失败时,执行事务回滚,更新或删除成功时,依次提交各个节点的事务,并继续执行数据迁移。
本发明实施例提供的一种分布式数据库的扩展装置,所述装置包括:第一确定单元、第一设置单元、第二确定单元、第二设置单元、迁移单元和替换单元,其中:
第一确定单元,用于确定数据访问服务中是否有数据主机接入,有时触发第一设置单元;
第一设置单元,用于根据扩展目标为所有数据主机设置新数据分布策略;
第二确定单元,用于确定所述新数据分布策略所对应的数据是否启动迁移,启动迁移后触发所述第二设置单元;
第二设置单元,用于将所述新分布策略状态设置为迁移中;
迁移单元,用于将所述新数据分布策略所对应的数据以分表路由方式完成迁移;
替换单元,在所述迁移单元完成迁移后,以所述新数据分布策略替换旧数据分布策略。
本发明实施例中,所述迁移单元,还用于:
根据所述新数据分布策略和数据库表命名规范,生成所述新数据分布策略对应的新表名;
在涉及的数据主机的对应数据库中按照新表名创建表;
以多进程多线程的方式,将待迁移的数据存储至所创建的表中。
本发明实施例中,所述迁移单元,还用于:
对各原有的表启动游标,依次读取所述游标对应的记录;
按照所述原有的表的主键和所读取记录值删除所述原有的表上的记录,按照所述新数据分布策略对应的分布路由规则,将所读取记录值插入到对应的新创建的表中。
本发明实施例中,所述装置还包括:
迁移处理单元,用于将所读取记录值插入到对应的新表中失败时,所述原有的表所在的节点和新创建的表所在的节点均进行事务回滚,回退至待迁移的数据存储前的状态;将所读取记录值插入到对应的新表中成功时,所述原有的表所在的节点和新创建的表所在的节点依次进行事务提交。
本发明实施例中,所述装置还包括:第一接收单元和第一查询单元,其中:
第一接收单元,用于在迁移过程中接收到单条记录查询请求;
第一查询单元,用于根据查询主键的条件和所述新数据分布策略,在节点上按新表的表名进行查找,查找成功时返回查询结果,查找失败时,根据原数据分布策略,在对应节点上按原有表的表名查找,查找成功时返回查询结果,查找失败时返回空结果集。
本发明实施例中,所述装置还包括:第二接收单元、第三确定单元和第一更新单元,其中:
第二接收单元,用于迁移过程中接收到单条记录的更新或删除请求;
第三确定单元,用于确定所述单条记录与迁移操作是否存在数据冲突,存在冲突时触发所述更新单元;
第一更新单元,用于在数据迁移之前,将更新后的数据迁移至新表中或直接删除原有表中的数据,在数据迁移之后,使用数据直接更新新表或删除新表中的数据。
本发明实施例中,所述装置还包括:第三接收单元和插入单元,其中:
第三接收单元,用于迁移过程中接收到单条记录插入请求;
插入单元,用于按照新表的表名和所在的节点进行插入,插入成功时进行事务提交,插入失败时返回失败原因。
本发明实施例中,所述装置还包括:第四接收单元和第二查询单元,其中:
第四接收单元,用于迁移过程中接收到批量记录的查询请求;
第二查询单元,用于分别按照原数据分布策略在原有表上进行查询、按照所述新数据分布策略在新表上进行查询,再查询结果合并后统一返回。
本发明实施例中,所述装置还包括:第五接收单元和第二更新单元,其中:
第五接收单元,用于在迁移过程中接收到数据批量更新或删除请求;
第二更新单元,用于暂停数据迁移处理,待当前正在迁移的数据事务均提交后,按照原数据分布策略和新数据分布策略分别对新表和原有表中的数据进行更新或删除,更新或删除失败时,执行事务回滚,更新或删除成功时,依次提交各个节点的事务,并触发所述迁移单元继续执行数据迁移。
本发明实施例的分布式数据库的扩展方法及装置,在数据迁移时并不需要停止相关业务,可进行业务在线的迁移,即使数据量巨大的表,也可以重新调整分布策略;本发明实施例可以自由设置新的分布策略,新的主机增加,待数据迁移完成后,可以有效分担负载。本发明实施例可以多次调整分布策略,根据实际情况不断进行优化。不同的数据表可以分别进行数据搬迁,数据搬迁进程可以灵活调整运行资源,当业务繁忙的时候,可以减少数据搬迁进程,空余出更多的计算资源支持业务办理,当业务量降低时,可以增加数据搬迁进程,加快完成数据迁移。
附图说明
图1为本发明实施例的分布式数据库的扩展方法的流程图;
图2为本发明实施例的分布式数据库的扩展方法的整体实现时序图;
图3为本发明实施例的分布式数据库扩展时的初始化处理流程图;
图4为本发明实施例的数据迁移流程图;
图5为本发明实施例的单条记录查询处理流程流程图;
图6为本发明实施例的单条记录更新或删除处理流程流程图;
图7为本发明实施例的单条记录插入处理流程流程图;
图8为本发明实施例的批量记录查询处理流程流程图;
图9为本发明实施例的批量记录更新或删除处理流程流程图;
图10为本发明实施例的分布式数据库的扩展装置的组成结构示意图。
具体实施方式
为了能够更加详尽地了解本发明实施例的特点与技术内容,下面结合附图对本发明实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本发明实施例。
图1为本发明实施例的分布式数据库的扩展方法的流程图,如图1所示,本发明实施例的分布式数据库的扩展方法包括以下处理步骤:
步骤101,确定数据访问服务中有数据主机接入时,根据扩展目标为所有数据主机设置新数据分布策略。
本发明实施例中,当有新的数据主机接入时,需对当前的数据进行重新分布,具体地,根据扩展目标为所有数据主机设置新数据分布策略,并按新数据分布策略对当前数据进行迁移。
步骤102,确定所述新数据分布策略所对应的数据启动迁移后,将所述新分布策略状态设置为迁移中。
步骤103,将所述新数据分布策略所对应的数据以分表路由方式完成迁移后,以所述新数据分布策略替换旧数据分布策略。
其中,所述将所述新数据分布策略所对应的数据以分表路由方式完成迁移,包括:
根据所述新数据分布策略和数据库表命名规范,生成所述新数据分布策略对应的新表名;
在涉及的数据主机的对应数据库中按照新表名创建表;
以多进程多线程的方式,将待迁移的数据存储至所创建的表中。
所述将待迁移的数据存储至所创建的表中,包括:
对各原有的表启动游标,依次读取所述游标对应的记录;
按照所述原有的表的主键和所读取记录值删除所述原有的表上的记录,按照所述新数据分布策略对应的分布路由规则,将所读取记录值插入到对应的新创建的表中。
在前述步骤101至103之后,本发明实施例的技术方案还包括:
将所读取记录值插入到对应的新表中失败时,所述原有的表所在的节点和新创建的表所在的节点均进行事务回滚,回退至待迁移的数据存储前的状态;将所读取记录值插入到对应的新表中成功时,所述原有的表所在的节点和新创建的表所在的节点依次进行事务提交。
迁移过程中接收到单条记录的更新或删除请求时,确定所述单条记录与迁移操作存在数据冲突时,若在数据迁移之前则将更新后的数据迁移至新表中或直接删除原有表中的数据,若在数据迁移之后,则使用数据直接更新新表或删除新表中的数据。
迁移过程中接收到单条记录插入请求时,按照新表的表名和所在的节点进行插入,插入成功时进行事务提交,插入失败时返回失败原因。
迁移过程中接收到批量记录的查询请求时,分别按照原数据分布策略在原有表上进行查询、按照所述新数据分布策略在新表上进行查询,再查询结果合并后统一返回。迁移过程中接收到数据批量更新或删除请求时,暂停数据迁移处理,待当前正在迁移的数据事务均提交后,按照原数据分布策略和新数据分布策略分别对新表和原有表中的数据进行更新或删除,更新或删除失败时,执行事务回滚,更新或删除成功时,依次提交各个节点的事务,并继续执行数据迁移。
以下通过具体示例,进一步阐明本发明实施例技术方案的实质。
本发明实施例主要通过后台独立程序,进行数据的逐步迁移。在数据迁移期间,DDS数据访问层按照新旧两个不同的数据分布策略同时进行分表路由。当后台独立程序完成数据搬迁以后,DDS切换成新的数据分布策略,进行分表路由。
图2为本发明实施例的分布式数据库的扩展方法的整体实现时序图,如图2所示,本发明实施例中,在数据访问服务中先进行新扩展数据主机的接入,同时按照扩展目标设置数据分布策略。数据分布策略设置完成后,数据访问服务将新的策略设置为未启动数据迁移。后台数据迁移程序启动以后,通知数据访问服务,将新的分布策略状态修改为迁移中,同时进行数据迁移。对于应用提交的SQL处理请求,数据访问服务进行判断,如果分布策略状态为迁移中,则相关的请求进行特殊处理。当独立程序运行完成后,进行迁移结果的确认,如果符合条件,通知数据访问服务,将分布策略状态修改为正常。本次扩展结束。
图3为本发明实施例的分布式数据库扩展时的初始化处理流程图,如图3所示,在初始化过程中,首先检查相关需要重新分布的表是否还在数据迁移中。通过检查状态标识的方法实现,在DDS中为每一个分布表设置一个标志位,当开始数据迁移时设置标志位,迁移结束后清除标志位,用来防止一个分布策略没有调整完成的时候,同时又启动了新的分布策略调整。
后台独立数据迁移程序启动以后,首先按照分布策略和数据库表命名规范,生成新策略对应的新表名字,同时在涉及的每一个数据库节点上按照新表名创建表。如果涉及的全部节点创建表成功,则初始化成功,继续后续的处理;否则,说明初始化失败,则通知DDS,由DDS清除标志位,同时还原旧的分布策略,继续按旧的分布策略进行表路由。
初始化成功后,可以启动多进程多线程的方式,进行数据迁移。图4为本发明实施例的数据迁移流程图,如图4所示,数据迁移后台程序整体处理流程如下:
数据迁移的过程中,首先对各个原有的表启动游标,依次读取游标的记录。每读取一条记录的时候,先按照旧表的主键和读取出来记录的值删除旧表上的记录,同时将记录按照新的分布路由规则判断,插入到对应的新表中。
如果新表插入失败,则旧表所在的节点和新表所在的节点都做事务回滚处理。如果新表插入成功,则旧表所在节点和新表所在节点依次进行事务提交。如果按照新的分布路由规则,新旧表同在一个节点上,则只提交一次事务即可。
插入失败之后,事务回滚,相关记录依旧留在旧表上,待数据迁移完成后,作为异常数据,需要维护人员按异常数据处理流程处理。
当旧表所有记录处理完成,则整个迁移过程结束。
为了保证业务不中断,在整个迁移过程中,相关表的操作并不会暂停,DDS也不会中断相关表的处理请求。下面将对相关表的操作分为:单条记录查询(按主键查询)、单条记录插入、单条记录更新或删除、批量结果集查询和批量数据更新或删除一共五种情况进行说明。
图5为本发明实施例的单条记录查询处理流程流程图,如图5所示,在迁移过程中,如果DDS数据服务层遇到单条记录查询的SQL请求,则按照如下的处理流程进行处理:
对于单条记录查询的情况,DDS数据服务层先按照查询主键的条件和新的分布路由策略,在节点上按新的表名进行查找,如果查找成功,说明相关记录已经迁移,则直接返回查询结果。如果查找失败,则可能相关记录还没有迁移。需要按照旧的分布路由策略,在对应节点上按旧的表名查找,如果查找成功,这返回查询结果,否则返回空的结果集。
图6为本发明实施例的单条记录更新或删除处理流程流程图,如图6所示,对于单条记录更新或者删除的情况,DDS服务层按照如下处理流程进行处理:
单条记录更新或者删除与数据后台迁移操作存在数据冲突,如果操作在数据搬迁之前,需要将更新后的数据搬迁到新表中,如果操作在数据迁移之后,需要直接更新新表。如果同时发生更新和搬迁,需要保证最终数据一致性。
在执行更新或者删除操作时,如果发生在该条记录迁移之前,则旧表的更新结果与新表搬迁后的一致。如果发生在该条记录迁移之后,则直接修改了新表的记录,数据一致性得到保证。如果发生在迁移与操作之间冲突,则不管是先更新还是先迁移,数据一致性同样可以保证。
图7为本发明实施例的单条记录插入处理流程流程图,如图7所示,对于单条记录插入的场景,DDS数据访问服务层按如下处理流程进行处理:
对于单条记录插入的场景,DDS数据访问服务层按照新的路由策略进行处理,直接按照新的表名和所在的节点进行插入,如果插入成功则提交,插入失败则直接返回失败原因。单条记录插入,直接按照新的路由分布策略插入新表,与数据后台迁移不存在数据操作冲突的问题。
图8为本发明实施例的批量记录查询处理流程流程图,如图8所示,对于批量查询的情况,DDS数据服务层分别按照旧的分布策略去旧表上查询,按照新的分布策略去新表上查询,然后再将查询结果进行合并,统一返回应用程序。当数据迁移完成后,统一按照新的分布策略进行查询。
图9为本发明实施例的批量记录更新或删除处理流程流程图,遇到批量数据更新或者删除的情况,相关处理流程如下:
在开始数据批量更新或者删除时,DDS数据访问服务层先通知后台数据迁移程序,要求暂停数据迁移处理。后台数据迁移程序待当前正在迁移的数据事务都提交以后,反馈数据迁移已经暂停的消息,数据访问服务层DDS接收到反馈以后,开始数据的更新或删除操作。
开始操作时,按照新旧两个分布策略,同时操作新表和旧表,当所有操作返回正常以后,依次提交各个数据节点的事务。如果有一个节点,无论是新表还是旧表返回操作失败,则将所有数据节点的事务回滚,返回应用操作失败。
当新旧表的数据操作都完成,事务已经提交或者回滚以后,DDS数据访问服务层通知后台数据迁移程序,继续之前暂停的数据迁移处理。
批量数据更新或者删除操作与数据迁移操作存在处理冲突,为解决操作冲突,保证数据一致性,采用暂停数据后台迁移,待批量操作完成后,继续后台数据迁移的方式,数据一致性能得到保障。
本发明实施例的分布式数据库的扩展方法及装置,在数据迁移时并不需要停止相关业务,可进行业务在线的迁移,即使数据量巨大的表,也可以重新调整分布策略;本发明实施例可以自由设置新的分布策略,新的主机增加,待数据迁移完成后,可以有效分担负载。本发明实施例可以多次调整分布策略,根据实际情况不断进行优化。不同的数据表可以分别进行数据搬迁,数据搬迁进程可以灵活调整运行资源,当业务繁忙的时候,可以减少数据搬迁进程,空余出更多的计算资源支持业务办理,当业务量降低时,可以增加数据搬迁进程,加快完成数据迁移。
图10为本发明实施例的分布式数据库的扩展装置的组成结构示意图,如图10所示,本发明实施例的分布式数据库的扩展装置包括第一确定单元1001、第一设置单元1002、第二确定单元1003、第二设置单元1004、迁移单元1005和替换单元1006,其中:
第一确定单元1001,用于确定数据访问服务中是否有数据主机接入,有时触发第一设置单元1002;
第一设置单元1002,用于根据扩展目标为所有数据主机设置新数据分布策略;
第二确定单元1003,用于确定所述新数据分布策略所对应的数据是否启动迁移,启动迁移后触发所述第二设置单元1004;
第二设置单元1004,用于将所述新分布策略状态设置为迁移中;
迁移单元1005,用于将所述新数据分布策略所对应的数据以分表路由方式完成迁移;
替换单元1006,在所述迁移单元完成迁移后,以所述新数据分布策略替换旧数据分布策略。
本发明实施例中,迁移单元1005,还用于:
根据所述新数据分布策略和数据库表命名规范,生成所述新数据分布策略对应的新表名;
在涉及的数据主机的对应数据库中按照新表名创建表;
以多进程多线程的方式,将待迁移的数据存储至所创建的表中。
本发明实施例中,迁移单元1005,还用于:
对各原有的表启动游标,依次读取所述游标对应的记录;
按照所述原有的表的主键和所读取记录值删除所述原有的表上的记录,按照所述新数据分布策略对应的分布路由规则,将所读取记录值插入到对应的新创建的表中。
在图10所示的分布式数据库的扩展装置的基础上,本发明实施例的分布式数据库的扩展装置还包括:
迁移处理单元(图中未示出),用于将所读取记录值插入到对应的新表中失败时,所述原有的表所在的节点和新创建的表所在的节点均进行事务回滚,回退至待迁移的数据存储前的状态;将所读取记录值插入到对应的新表中成功时,所述原有的表所在的节点和新创建的表所在的节点依次进行事务提交。
在图10所示的分布式数据库的扩展装置的基础上,本发明实施例的分布式数据库的扩展装置还包括:第一接收单元(图中未示出)和第一查询单元(图中未示出),其中:
第一接收单元,用于在迁移过程中接收到单条记录查询请求;
第一查询单元,用于根据查询主键的条件和所述新数据分布策略,在节点上按新表的表名进行查找,查找成功时返回查询结果,查找失败时,根据原数据分布策略,在对应节点上按原有表的表名查找,查找成功时返回查询结果,查找失败时返回空结果集。
在图10所示的分布式数据库的扩展装置的基础上,本发明实施例的分布式数据库的扩展装置还包括:第二接收单元(图中未示出)、第三确定单元(图中未示出)和第一更新单元(图中未示出),其中:
第二接收单元,用于迁移过程中接收到单条记录的更新或删除请求;
第三确定单元,用于确定所述单条记录与迁移操作是否存在数据冲突,存在冲突时触发所述更新单元;
第一更新单元,用于在数据迁移之前,将更新后的数据迁移至新表中或直接删除原有表中的数据,在数据迁移之后,使用数据直接更新新表或删除新表中的数据。
在图10所示的分布式数据库的扩展装置的基础上,本发明实施例的分布式数据库的扩展装置还包括:第三接收单元(图中未示出)和插入单元(图中未示出),其中:
第三接收单元,用于迁移过程中接收到单条记录插入请求;
插入单元,用于按照新表的表名和所在的节点进行插入,插入成功时进行事务提交,插入失败时返回失败原因。
在图10所示的分布式数据库的扩展装置的基础上,本发明实施例的分布式数据库的扩展装置还包括:第四接收单元(图中未示出)和第二查询单元(图中未示出),其中:
第四接收单元,用于迁移过程中接收到批量记录的查询请求;
第二查询单元,用于分别按照原数据分布策略在原有表上进行查询、按照所述新数据分布策略在新表上进行查询,再查询结果合并后统一返回。
在图10所示的分布式数据库的扩展装置的基础上,本发明实施例的分布式数据库的扩展装置还包括:第五接收单元(图中未示出)和第二更新单元(图中未示出),其中:
第五接收单元,用于在迁移过程中接收到数据批量更新或删除请求;
第二更新单元,用于暂停数据迁移处理,待当前正在迁移的数据事务均提交后,按照原数据分布策略和新数据分布策略分别对新表和原有表中的数据进行更新或删除,更新或删除失败时,执行事务回滚,更新或删除成功时,依次提交各个节点的事务,并触发所述迁移单元继续执行数据迁移。
本领域技术人员应当理解,图10所示的分布式数据库的扩展装置中的各单元的实现功能可参照前述分布式数据库的扩展方法的各实施例及应用例的相关描述而理解。上述各处理单元可通过微处理器、大型可编程阵列FPGA或相应的芯片构成。
本发明实施例所记载的技术方案之间,在不冲突的情况下,可以任意组合。
在本发明所提供的几个实施例中,应该理解到,所揭露的方法和智能设备,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元,即可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本发明各实施例中的各功能单元可以全部集成在一个第二处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。
Claims (18)
1.一种分布式数据库的扩展方法,其特征在于,所述方法包括:
确定数据访问服务中有数据主机接入时,根据扩展目标为所有数据主机设置新数据分布策略;
确定所述新数据分布策略所对应的数据启动迁移后,将所述新分布策略状态设置为迁移中;
将所述新数据分布策略所对应的数据以分表路由方式完成迁移后,以所述新数据分布策略替换旧数据分布策略。
2.根据权利要求1所述的分布式数据库的扩展方法,其特征在于,所述将所述新数据分布策略所对应的数据以分表路由方式完成迁移,包括:
根据所述新数据分布策略和数据库表命名规范,生成所述新数据分布策略对应的新表名;
在涉及的数据主机的对应数据库中按照新表名创建表;
以多进程多线程的方式,将待迁移的数据存储至所创建的表中。
3.根据权利要求2所述的分布式数据库的扩展方法,其特征在于,所述将待迁移的数据存储至所创建的表中,包括:
对各原有的表启动游标,依次读取所述游标对应的记录;
按照所述原有的表的主键和所读取记录值删除所述原有的表上的记录,按照所述新数据分布策略对应的分布路由规则,将所读取记录值插入到对应的新创建的表中。
4.根据权利要求3所述的分布式数据库的扩展方法,其特征在于,所述方法还包括:
将所读取记录值插入到对应的新表中失败时,所述原有的表所在的节点和新创建的表所在的节点均进行事务回滚,回退至待迁移的数据存储前的状态;将所读取记录值插入到对应的新表中成功时,所述原有的表所在的节点和新创建的表所在的节点依次进行事务提交。
5.根据权利要求3或4所述的分布式数据库的扩展方法,其特征在于,所述方法还包括:
迁移过程中接收到单条记录查询请求时,根据查询主键的条件和所述新数据分布策略,在节点上按新表的表名进行查找,查找成功时返回查询结果,查找失败时,根据原数据分布策略,在对应节点上按原有表的表名查找,查找成功时返回查询结果,查找失败时返回空结果集。
6.根据权利要求3或4所述的分布式数据库的扩展方法,其特征在于,所述方法还包括:
迁移过程中接收到单条记录的更新或删除请求时,确定所述单条记录与迁移操作存在数据冲突时,若在数据迁移之前则将更新后的数据迁移至新表中或直接删除原有表中的数据,若在数据迁移之后,则使用数据直接更新新表或删除新表中的数据。
7.根据权利要求3或4所述的分布式数据库的扩展方法,其特征在于,所述方法还包括:
迁移过程中接收到单条记录插入请求时,按照新表的表名和所在的节点进行插入,插入成功时进行事务提交,插入失败时返回失败原因。
8.根据权利要求3或4所述的分布式数据库的扩展方法,其特征在于,所述方法还包括:
迁移过程中接收到批量记录的查询请求时,分别按照原数据分布策略在原有表上进行查询、按照所述新数据分布策略在新表上进行查询,再查询结果合并后统一返回。
9.根据权利要求3或4所述的分布式数据库的扩展方法,其特征在于,所述方法还包括:
迁移过程中接收到数据批量更新或删除请求时,暂停数据迁移处理,待当前正在迁移的数据事务均提交后,按照原数据分布策略和新数据分布策略分别对新表和原有表中的数据进行更新或删除,更新或删除失败时,执行事务回滚,更新或删除成功时,依次提交各个节点的事务,并继续执行数据迁移。
10.一种分布式数据库的扩展装置,其特征在于,所述装置包括:第一确定单元、第一设置单元、第二确定单元、第二设置单元、迁移单元和替换单元,其中:
第一确定单元,用于确定数据访问服务中是否有数据主机接入,有时触发第一设置单元;
第一设置单元,用于根据扩展目标为所有数据主机设置新数据分布策略;
第二确定单元,用于确定所述新数据分布策略所对应的数据是否启动迁移,启动迁移后触发所述第二设置单元;
第二设置单元,用于将所述新分布策略状态设置为迁移中;
迁移单元,用于将所述新数据分布策略所对应的数据以分表路由方式完成迁移;
替换单元,在所述迁移单元完成迁移后,以所述新数据分布策略替换旧数据分布策略。
11.根据权利要求10所述的分布式数据库的扩展装置,其特征在于,所述迁移单元,还用于:
根据所述新数据分布策略和数据库表命名规范,生成所述新数据分布策略对应的新表名;
在涉及的数据主机的对应数据库中按照新表名创建表;
以多进程多线程的方式,将待迁移的数据存储至所创建的表中。
12.根据权利要求11所述的分布式数据库的扩展装置,其特征在于,所述迁移单元,还用于:
对各原有的表启动游标,依次读取所述游标对应的记录;
按照所述原有的表的主键和所读取记录值删除所述原有的表上的记录,按照所述新数据分布策略对应的分布路由规则,将所读取记录值插入到对应的新创建的表中。
13.根据权利要求12所述的分布式数据库的扩展装置,其特征在于,所述装置还包括:
迁移处理单元,用于将所读取记录值插入到对应的新表中失败时,所述原有的表所在的节点和新创建的表所在的节点均进行事务回滚,回退至待迁移的数据存储前的状态;将所读取记录值插入到对应的新表中成功时,所述原有的表所在的节点和新创建的表所在的节点依次进行事务提交。
14.根据权利要求12或13所述的分布式数据库的扩展装置,其特征在于,所述装置还包括:第一接收单元和第一查询单元,其中:
第一接收单元,用于在迁移过程中接收到单条记录查询请求;
第一查询单元,用于根据查询主键的条件和所述新数据分布策略,在节点上按新表的表名进行查找,查找成功时返回查询结果,查找失败时,根据原数据分布策略,在对应节点上按原有表的表名查找,查找成功时返回查询结果,查找失败时返回空结果集。
15.根据权利要求12或13所述的分布式数据库的扩展装置,其特征在于,所述装置还包括:第二接收单元、第三确定单元和第一更新单元,其中:
第二接收单元,用于迁移过程中接收到单条记录的更新或删除请求;
第三确定单元,用于确定所述单条记录与迁移操作是否存在数据冲突,存在冲突时触发所述更新单元;
第一更新单元,用于在数据迁移之前,将更新后的数据迁移至新表中或直接删除原有表中的数据,在数据迁移之后,使用数据直接更新新表或删除新表中的数据。
16.根据权利要求12或13所述的分布式数据库的扩展装置,其特征在于,所述装置还包括:第三接收单元和插入单元,其中:
第三接收单元,用于迁移过程中接收到单条记录插入请求;
插入单元,用于按照新表的表名和所在的节点进行插入,插入成功时进行事务提交,插入失败时返回失败原因。
17.根据权利要求12或13所述的分布式数据库的扩展装置,其特征在于,所述装置还包括:第四接收单元和第二查询单元,其中:
第四接收单元,用于迁移过程中接收到批量记录的查询请求;
第二查询单元,用于分别按照原数据分布策略在原有表上进行查询、按照所述新数据分布策略在新表上进行查询,再查询结果合并后统一返回。
18.根据权利要求12或13所述的分布式数据库的扩展装置,其特征在于,所述装置还包括:第五接收单元和第二更新单元,其中:
第五接收单元,用于在迁移过程中接收到数据批量更新或删除请求;
第二更新单元,用于暂停数据迁移处理,待当前正在迁移的数据事务均提交后,按照原数据分布策略和新数据分布策略分别对新表和原有表中的数据进行更新或删除,更新或删除失败时,执行事务回滚,更新或删除成功时,依次提交各个节点的事务,并触发所述迁移单元继续执行数据迁移。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610862130.5A CN107870954B (zh) | 2016-09-28 | 2016-09-28 | 一种分布式数据库的扩展方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610862130.5A CN107870954B (zh) | 2016-09-28 | 2016-09-28 | 一种分布式数据库的扩展方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107870954A true CN107870954A (zh) | 2018-04-03 |
CN107870954B CN107870954B (zh) | 2021-09-21 |
Family
ID=61761432
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610862130.5A Active CN107870954B (zh) | 2016-09-28 | 2016-09-28 | 一种分布式数据库的扩展方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107870954B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108616461A (zh) * | 2018-04-17 | 2018-10-02 | 杭州迪普科技股份有限公司 | 一种策略切换方法及装置 |
CN109376141A (zh) * | 2018-08-31 | 2019-02-22 | 阿里巴巴集团控股有限公司 | 一种数据迁移方法和装置 |
CN109918442A (zh) * | 2019-01-24 | 2019-06-21 | 中国联合网络通信集团有限公司 | 一种数据的处理方法及装置 |
CN109933606A (zh) * | 2019-03-19 | 2019-06-25 | 上海达梦数据库有限公司 | 一种数据库修改方法、装置、设备及存储介质 |
CN110597808A (zh) * | 2019-08-20 | 2019-12-20 | 阿里巴巴集团控股有限公司 | 分布式数据库表连接方法、装置、系统、服务器及介质 |
CN111858765A (zh) * | 2020-07-24 | 2020-10-30 | 中国工商银行股份有限公司 | 应用于数据库扩容场景的数据处理方法、装置及系统 |
US11036733B2 (en) | 2019-08-20 | 2021-06-15 | Ant Financial (Hang Zhou) Network Technology Co., Ltd. | Method, apparatus, system, server, and storage medium for connecting tables stored at distributed database |
CN113448941A (zh) * | 2020-03-27 | 2021-09-28 | 北京金山云网络技术有限公司 | 一种数据库迁移的方法、装置及电子设备 |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101493826A (zh) * | 2008-12-23 | 2009-07-29 | 中兴通讯股份有限公司 | 基于web应用的数据库系统及其数据管理方法 |
CN101697526A (zh) * | 2009-10-10 | 2010-04-21 | 中国科学技术大学 | 分布式文件系统中元数据管理的负载均衡方法及其系统 |
CN102521297A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 无共享数据库集群中实现系统动态扩展的方法 |
CN102663117A (zh) * | 2012-04-18 | 2012-09-12 | 中国人民大学 | 面向数据库与Hadoop混合平台的OLAP查询处理方法 |
CN102693324A (zh) * | 2012-01-09 | 2012-09-26 | 西安电子科技大学 | 一种分布式数据库同步系统、同步方法和节点管理方法 |
US20120271803A1 (en) * | 2006-02-13 | 2012-10-25 | Gregory Ferguson | Method and system for load balancing a distributed database |
US20120311557A1 (en) * | 2011-06-06 | 2012-12-06 | Cleversafe, Inc. | Updating distributed storage network software |
CN102955845A (zh) * | 2012-10-23 | 2013-03-06 | 北京亿赞普网络技术有限公司 | 数据访问方法、装置与分布式数据库系统 |
CN102968503A (zh) * | 2012-12-10 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 数据库系统的数据处理方法以及数据库系统 |
CN103595776A (zh) * | 2013-11-05 | 2014-02-19 | 福建网龙计算机网络信息技术有限公司 | 分布式缓存方法及系统 |
CN104572809A (zh) * | 2014-11-17 | 2015-04-29 | 杭州斯凯网络科技有限公司 | 一种分布式关系数据库自由扩展方法 |
CN104793988A (zh) * | 2014-01-20 | 2015-07-22 | 阿里巴巴集团控股有限公司 | 跨数据库分布式事务的实现方法和装置 |
CN105393239A (zh) * | 2013-09-05 | 2016-03-09 | 谷歌公司 | 隔离分布式存储系统的客户端 |
-
2016
- 2016-09-28 CN CN201610862130.5A patent/CN107870954B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20120271803A1 (en) * | 2006-02-13 | 2012-10-25 | Gregory Ferguson | Method and system for load balancing a distributed database |
CN101493826A (zh) * | 2008-12-23 | 2009-07-29 | 中兴通讯股份有限公司 | 基于web应用的数据库系统及其数据管理方法 |
CN101697526A (zh) * | 2009-10-10 | 2010-04-21 | 中国科学技术大学 | 分布式文件系统中元数据管理的负载均衡方法及其系统 |
US20120311557A1 (en) * | 2011-06-06 | 2012-12-06 | Cleversafe, Inc. | Updating distributed storage network software |
CN102521297A (zh) * | 2011-11-30 | 2012-06-27 | 北京人大金仓信息技术股份有限公司 | 无共享数据库集群中实现系统动态扩展的方法 |
CN102693324A (zh) * | 2012-01-09 | 2012-09-26 | 西安电子科技大学 | 一种分布式数据库同步系统、同步方法和节点管理方法 |
CN102663117A (zh) * | 2012-04-18 | 2012-09-12 | 中国人民大学 | 面向数据库与Hadoop混合平台的OLAP查询处理方法 |
CN102955845A (zh) * | 2012-10-23 | 2013-03-06 | 北京亿赞普网络技术有限公司 | 数据访问方法、装置与分布式数据库系统 |
CN102968503A (zh) * | 2012-12-10 | 2013-03-13 | 曙光信息产业(北京)有限公司 | 数据库系统的数据处理方法以及数据库系统 |
CN105393239A (zh) * | 2013-09-05 | 2016-03-09 | 谷歌公司 | 隔离分布式存储系统的客户端 |
CN103595776A (zh) * | 2013-11-05 | 2014-02-19 | 福建网龙计算机网络信息技术有限公司 | 分布式缓存方法及系统 |
CN104793988A (zh) * | 2014-01-20 | 2015-07-22 | 阿里巴巴集团控股有限公司 | 跨数据库分布式事务的实现方法和装置 |
CN104572809A (zh) * | 2014-11-17 | 2015-04-29 | 杭州斯凯网络科技有限公司 | 一种分布式关系数据库自由扩展方法 |
Non-Patent Citations (2)
Title |
---|
BING ZHANG等: "A new distributed caching replacement strategy", 《2011 IEEE 3RD INTERNATIONAL CONFERENCE ON COMMUNICATION SOFTWARE AND NETWORKS》 * |
张锋: "数据库集群负载均衡技术的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108616461A (zh) * | 2018-04-17 | 2018-10-02 | 杭州迪普科技股份有限公司 | 一种策略切换方法及装置 |
CN109376141A (zh) * | 2018-08-31 | 2019-02-22 | 阿里巴巴集团控股有限公司 | 一种数据迁移方法和装置 |
CN109918442A (zh) * | 2019-01-24 | 2019-06-21 | 中国联合网络通信集团有限公司 | 一种数据的处理方法及装置 |
CN109933606A (zh) * | 2019-03-19 | 2019-06-25 | 上海达梦数据库有限公司 | 一种数据库修改方法、装置、设备及存储介质 |
CN110597808A (zh) * | 2019-08-20 | 2019-12-20 | 阿里巴巴集团控股有限公司 | 分布式数据库表连接方法、装置、系统、服务器及介质 |
CN110597808B (zh) * | 2019-08-20 | 2021-05-18 | 蚂蚁金服(杭州)网络技术有限公司 | 分布式数据库表连接方法、装置、系统、服务器及介质 |
US11036733B2 (en) | 2019-08-20 | 2021-06-15 | Ant Financial (Hang Zhou) Network Technology Co., Ltd. | Method, apparatus, system, server, and storage medium for connecting tables stored at distributed database |
CN113448941A (zh) * | 2020-03-27 | 2021-09-28 | 北京金山云网络技术有限公司 | 一种数据库迁移的方法、装置及电子设备 |
CN111858765A (zh) * | 2020-07-24 | 2020-10-30 | 中国工商银行股份有限公司 | 应用于数据库扩容场景的数据处理方法、装置及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN107870954B (zh) | 2021-09-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107870954A (zh) | 一种分布式数据库的扩展方法及装置 | |
AU2018290745B2 (en) | Systems and methods of database tenant migration | |
US6714949B1 (en) | Dynamic file system configurations | |
US11886284B2 (en) | System and method for data redistribution in a database | |
CN109144994A (zh) | 索引更新方法、系统及相关装置 | |
CN109582433A (zh) | 一种资源调度方法、装置、云计算系统及存储介质 | |
JP2007041859A (ja) | ファイル管理プログラム、ファイル管理装置、ファイル管理方法 | |
CN102110121A (zh) | 一种数据处理方法及其系统 | |
CN108073696B (zh) | 基于分布式内存数据库的gis应用方法 | |
JP2001134454A (ja) | コンピューティング環境において構成要素を更新する方法、システムおよび製造品 | |
CN108073352A (zh) | 虚拟磁盘处理方法及装置 | |
CN104461779B (zh) | 一种分布式数据的存储方法、装置及系统 | |
CN108351801A (zh) | 多版本移除管理器 | |
CN115687359A (zh) | 数据表分区方法及装置、存储介质、计算机设备 | |
CN110134687A (zh) | 一种通过表字段的动态增改控制清单要素的方法及系统 | |
WO2016157466A1 (ja) | データベースシステム、装置、方法およびプログラム | |
CN115686802B (zh) | 云计算集群调度系统 | |
CN114328611A (zh) | 数据索引方法、装置、设备及存储介质 | |
CN113377736A (zh) | 对关系型数据库进行扩容的方法及系统 | |
JPH04112322A (ja) | Ews・ホスト連携のライブラリ管理方式 | |
JPH02201558A (ja) | 領域管理処理方式 | |
CN112487081A (zh) | 数据同步方法、装置、存储介质及设备 | |
JPH0619768A (ja) | 重複データ更新方式 | |
JPH03282749A (ja) | 仮更新データ管理方式 |
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 |