CN115576924A - 一种数据迁移的方法 - Google Patents

一种数据迁移的方法 Download PDF

Info

Publication number
CN115576924A
CN115576924A CN202211286629.8A CN202211286629A CN115576924A CN 115576924 A CN115576924 A CN 115576924A CN 202211286629 A CN202211286629 A CN 202211286629A CN 115576924 A CN115576924 A CN 115576924A
Authority
CN
China
Prior art keywords
data
speed
blocking queue
thread
time
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
Application number
CN202211286629.8A
Other languages
English (en)
Inventor
刘元莹
胡航
陈永明
赵罡
王昊炜
夏妍
曹美玲
徐溯
侯超
姚鹏
刁杨华
陈董秀
范洵
王文涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
State Grid Jiangsu Electric Power Co ltd Zhenjiang Power Supply Branch
Original Assignee
State Grid Jiangsu Electric Power Co ltd Zhenjiang Power Supply Branch
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by State Grid Jiangsu Electric Power Co ltd Zhenjiang Power Supply Branch filed Critical State Grid Jiangsu Electric Power Co ltd Zhenjiang Power Supply Branch
Priority to CN202211286629.8A priority Critical patent/CN115576924A/zh
Publication of CN115576924A publication Critical patent/CN115576924A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

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

本发明公开了一种数据迁移的方法,采用Spark计算引擎读取数据并进行存储,将N个分区中的数据进行重新分区,重新分区后第i个分区中存储的数据均同时分别对应输入至第i个缓冲区,每个缓冲区基于阻塞队列实现。重分区结束后,每个分区都会启动两个线程,一个生产者线程、一个消费者线程,生产者线程遍历每个分区中的每一条数据并将其写入阻塞队列中,并根据数据库资源的的实时使用情况,动态的修改速度的阈值,然后根据阈值控制生产者线程将数据写入阻塞队列中的速度,在生产者线程将数据写入阻塞队列的同时消费者线程从阻塞队列中获取数据并将其写入至数据库中,从而完成数据的同步。本发明能够提高写入速度,从而提高迁移的速度。

Description

一种数据迁移的方法
技术领域
本发明涉及一种数据迁移的方法,属于大数据处理技术领域。
背景技术
数据迁移的目的是为了给有价值的数据匹配更适宜的存储环境,让其在生命周期的每个阶段更安全、更可靠、更有效的为客户服务。一切数据搬迁的过程在广义上都可以成为数据迁移。数据一生要经历生产、传输、计算、保存、归档和销毁的生命周期循环,同样,跟数据相关的设备需要配合数据实现其价值。互联网行业的发展要求厂商之间提供更好的数据可移植性和互操作性。
申请号为201711158991.6的专利申请公开了一种数据迁移的方法及装置,涉及电子商务领域,该专利申请加载数据迁移组件,并读取配置文件中记录的配置信息;从源数据库抽取待迁移的数据,并导入内存;运行所述数据迁移组件中的数据迁移逻辑,并根据所述配置信息确定目标库表;将所述待迁移的数据分配到所述目标库表。该专利申请能够提升数据迁移效率并降低成本。申请号为202110321312.2的专利申请公开了一种数据迁移方法、装置、存储介质及平台,涉及大数据处理技术领域。该方法应用于分布式大数据迁移平台,包括:将源数据库中的待迁移数据加载至分布式大数据迁移平台的Hive数据仓库中;在Hive数据仓库中,通过Spark引擎对所述待迁移数据进行数据转换,生成目标数据;将目标数据从Hive数据仓库中迁移至目标数据库中。该专利申请可以快速、高效地将源数据库中的数据迁移至目标数据库中,降低数据迁移过程中的对系统业务的影响。
上述两个现有的专利申请虽然能够高效提升数据迁移效率,但是在实际数据迁移过程中还需要考虑数据迁移对数据库所造成的影响。在实际的应用场景中,特别是利用Spark(Spark指Apache Spark,Apache Spark是专为大规模数据处理而设计的快速通用的计算引擎)进行数据迁移的时候,由于长时间大数据量并发写入,如果不加以控制,长时间占用数据库大量的IO资源,则会影响数据库的性能,导致数据库相关的应用响应时间变长,进而影响用户体验,严重时甚至会导致数据库的宕机。基于这个原因,一般是错峰进行数据的迁移,如在应用系统不忙的时候如凌晨进行数据的迁移。但是这样会导致数据的时效性变差,迁移效率变低,另外若在迁移的过程发现数据库性能受到较大影响,为了不影响数据库相关的应用系统,则必须强制中断数据迁移任务,然后重新迁移,因为部分数据已经迁移到数据库中,这也将导致数据的不一致性。
发明内容
本发明的目的在于提供一种数据迁移的方法,在数据迁移的过程中,通过实时观测数据库的资源使用情况,根据数据库资源不同的使用情况设置不同数据传输的速度;在利用Spark计算引擎数据迁移的过程中,若发现当前数据实际的传输速度高于设置的速度,则降低写入的速度,若发现当前数据的实际传输速度低于设置速度,则自动提高写入速度,以维持数据库的稳定使其受到数据迁移的影响变小,以解决背景技术所述的数据不一致性的问题。本方法能够充分利用数据库的资源,在数据库资源使用率比较低的场景下,提高写入速度,从而提高迁移的速度,
本发明的目的通过以下技术方案予以实现:
一种数据迁移的方法,采用Spark计算引擎读取数据并进行存储,Spark内部存储数据的逻辑结构是Rdd,Rdd包括第1至第N个分区;将N个分区中的数据进行重新分区,重新分区后第i个分区中存储的数据均同时分别对应输入至第i个缓冲区,每个缓冲区基于阻塞队列实现,其中i=1,2,…,N;重新分区结束后,每个分区都启动两个线程,一个生产者线程和一个消费者线程,生产者线程遍历每个分区中的每一条数据并将其写入阻塞队列中,并根据数据库资源的的实时使用情况,动态的修改写入速度的阈值,然后根据阈值控制生产者线程将数据写入阻塞队列中的速度,在生产者线程将数据写入阻塞队列的同时消费者线程从阻塞队列中读取数据并将其写入至数据库中,从而完成数据的同步;数据迁移的方法包括以下步骤:
步骤1)同时遍历第i个分区中的每条数据并添加到第i个集合Li中,若Li中的数据的条数达到预设的条数,或者虽然Li中的数据的条数未达到预设的条数但是第i个分区中的数据已遍历结束,则运行步骤2);
步骤2)消费者线程与生产者线程同时进行,消费者线程实时从阻塞队列中读取数据并将其写入至第i个数据库中;
生产者线程第k次将Li中的数据写入阻塞队列后,计算第k次写入阻塞队列中数据的大小△Ck
实时计算cp+△Ck,cp为目前阻塞队列中还未被消费者线程读取的数据大小,当消费者线程从阻塞队列中每读取一条数据时更新cp为cp=cp-size,size为每次从阻塞队列中读取数据的大小;如果cp+△Ck>capacity,capacity是阻塞队列的容量,生产者线程会阻塞;直到cp+△Ck<capacity,才会将Li中的数据写入到阻塞队列中,第k次时累计写入阻塞队列的数据的总大小Ck=△Ck+Ck-1,其中,Ck-1为第k-1次时累计写入阻塞队列的数据的总大小;
步骤3)更新第k次写入阻塞队列后的速度阈值speedk,方法如下:获取第k次生产者线程向阻塞队列写完数据的时间tk,计算距离上一次查询数据库的IO使用率(IO使用率为一定时间内,磁盘处理读取和写入时间之和所占百分比)的时间interval1=tk-TT,TT为上一次查询数据库的IO使用率的时间,TT初始值为生产者线程的启动的时间;
若interval1>=tt,则设置TT=tk,tt是预设的查询数据库的IO使用率时间间隔;
获取数据库的IO使用率rate,若Y≥rate≥X,则speedk=speedk-1;若rate>Y,调整生产者线程向阻塞队列中写入数据速度的下降次数N1=N1+1,生产者线程向阻塞队列中写入数据速度的上升次数N2=0,speedk=speedk-1-ZN1*speedk-1,Z为[0-1];若speedk<minSpeed,则speedk=minSpeed;若rate<X,调整N2=N2+1,N1=0,则speedk=speedk-1+ZN2*speedk-1,若speedk>maxSpeed,则speedk=maxSpeed;其中X为IO使用率rate的下限范围,Y为IO使用率rate的上限范围,X为[0-40],Y为[60-100],minSpeed是预设的生产者线程向阻塞队列写入数据的最小速度,maxSpeed是预设的生产者线程向阻塞队列写入数据的最大速度;
若interval1<tt,则speedk=speedk-1
步骤4)进行测速,计算测速时间间隔interval2=tk-T,判断如果interval2>t,则进入步骤5);否则k=k+1,进入步骤1);其中,T为上一次测速时间,其初始值为生产者线程启动的时间,t为预设的测速时间间隔;
步骤5)计算当前实际的写入速度speed:speed=(Ck-C)/interval2,若speed>speedk,则进入步骤6),否则进入步骤7);其中,C为上一次测速时累计写入阻塞队列的数据的大小;
步骤6)计算生产者线程的休息时间st,st=speed*interval2/speedk-interval2;如果st大于0,则生产者线程开始休息,停止向阻塞队列中继续写入数据,经过st后生产者线程停止休息,继续向阻塞队列中写入数据,进入步骤7);
步骤7)设置C=Ck,T=tk,k=k+1,进入步骤1);
如果各个分区的数据都被生产者线程写入到阻塞队列中,并且阻塞队列中的数据全部被消费者线程读取,并写入到数据库中,则整个数据迁移任务结束。
本发明的目的还可以通过以下技术措施来进一步实现:
优选的,将N个分区中的数据进行重新分区,使用的算法是Hash后取模,将原先1个分区的数据分散到多个分区中去。
优选的,步骤3)中,X为40,Y为60,Z为0.5。
与现有技术相比,本发明的有益效果是:本发明根据数据库资源的的实时使用情况,动态的修改速度的阈值,然后根据阈值控制生产者线程将数据写入阻塞队列中的速度,在生产者线程将数据写入阻塞队列的同时消费者线程从阻塞队列中获取数据并将其写入至数据库中,从而完成数据的同步。本发明维持数据库的稳定使其受到数据迁移的影响变小,并且能够充分利用数据库的资源,在数据库资源使用率比较低的场景下,提高写入速度,从而提高迁移的速度。本发明解决了数据迁移过程中常出现的数据不一致性问题。
附图说明
图1是spark读取数据并将数据写入数据库的流程图;
图2是写数据的缓冲区的示意图。
具体实施方式
下面结合附图和具体实施例对本发明作进一步说明。
如图1所示,本发明的数据迁移的方法,采用Spark计算引擎读取数据并进行存储,Spark内部存储数据的逻辑结构是Rdd,Rdd包括第1至第N个分区;将N个分区中的数据进行重新分区,重新分区后第i个分区中存储的数据均同时分别对应输入至第i个缓冲区,每个缓冲区基于阻塞队列实现。重分区结束后,每个分区都会启动两个线程,一个生产者线程、一个消费者线程,生产者线程遍历每个分区中的每一条数据并将其写入阻塞队列中,并根据数据库资源的的实时使用情况,动态的修改速度的阈值,然后根据阈值控制生产者线程将数据写入阻塞队列中的速度,在生产者线程将数据写入阻塞队列的同时消费者线程从阻塞队列中获取数据并将其写入至数据库中,从而完成数据的同步;具体如下:
1.Spark读取hive数仓的数据,hive是基于Hadoop的一个数据仓库工具,用来进行数据提取、转化、加载,是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制;Spark内部存储数据的逻辑结构为Rdd,Rdd(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。
2.Rdd由N个分区组成,每个分区都会存储一部分数据,一般情况下一个分区对应物理上的一个数据文件,每个分区的数据没有规则,所以需要按照业务规则(不同的场景会有不同的规则,规则取决于业务场景)对数据进行重分区,使分区的数据与数据库的表一一对应。
3.重分区,根据业务规则对数据进行重分区,假设hive数仓的数据由100个文件组成,并且一个文件对应spark的一个分区,spark读取后就会形成100个分区,又假设需要将hive数仓的数据依照规则将不同的数据迁移到4张数据库表中,并且数据是以某个字段的hash值对4取模后拆分的。hash,就是散列值,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值hash。所以新的分区ID=hash(数据中某个或某些字段的值)对4取模,得到0,1,2,3的分区ID,就能把原先100个分区的数据重新分区到新的4个分区中,即原先100个分区,每个分区的每条数据若hash取模后值为0则划分到新的分区0中,hash取模后值为1的划分到新的分区1中,以此类推。重新分区后的分区里的数据将与表一一对应。
4.重分区结束后,每个分区都会启动两个线程,一个生产者线程、一个消费者线程,为了提高写入速度,生产者将重新分区里的数据按批次每1000条写入缓冲区中,另一个消费者线程则同时读取缓冲区中的数据并将数据写入分区对应的表中;
缓冲区是通过阻塞队列来实现的,如图2所示,阻塞队列有以下特征:
(1)数据是先进先出的;
(2)数据会插入到阻塞队列的尾部,从阻塞队列读取数据是从头部开始读取.阻塞队列头部的数据代表在阻塞队列中呆的时间最长的,阻塞队列尾部的数据代表在阻塞队列中呆的时间最短的;
(3)阻塞队列会设置一个固定大小的容量,生产者将数据插入到阻塞队列中,消费者则从阻塞队列中读取数据。当阻塞队列满了,生产者将不能继续向阻塞队列中写数据,生产者会进入等待,当阻塞队列不满的时候会继续写入数据,同样,当阻塞队列为空时,消费者也不能从阻塞队列读取数据,会进行等待,当阻塞队列有数据则会继续读取数据。
具体数据迁移的过程如下:
设定如下变量:
k:生产者线程将数据写入阻塞队列中的次数,初始化k=0;
Ck:生产者线程第k次累计写入阻塞阻塞队列的数据的总大小,初始化Ck=0;
t0:生产者线程启动时间;
C:上一次测速时累计写入阻塞队列的数据的总大小C,初始化C=0;
T:上一次测速时间,初始化T=t0;
TT:上一次查询数据库IO资源使用率的时间,初始化TT=t0;
batch:预测的条数,初始化batch=1000;
j:遍历次数,初始化j=0;
speed0:初始写入阻塞队列的速度,初始化为4M/秒;
maxSpeed:生产者线程向阻塞队列写入数据的最大速度,初始化maxSpeed=8M/秒;
minSpeed:生产者线程向阻塞队列写入数据的最小速度,初始化minSpeed=1M/秒;
cp:阻塞队列中未被消费者线程读取的数据大小,初始化cp=0;
capacity:阻塞队列的容量,初始化capacity=8M;
t:测速时间间隔,初始化t=1秒;
tt:查询数据库IO资源使用率时间间隔,初始化tt=60s;
N1:生产者线程线程向阻塞队列中写入数据速度的下降次数,初始化N1=0;
N2:,生产者线程线程向阻塞队列中写入数据速度的上升次数,初始化N2=0;
Li:集合,存储中间数据。
假设第0个分区中总共有1万条数据。
步骤1.生产者线程开始遍历分区中的每一条数据,并将数据保存到集合Li中,若集合Li中数量达到batch,则进入第二步;
步骤2.写入阻塞队列:若△Ck+cp>capacity,△Ck为Li中数据的总大小,则生产者线程会进入等待状态,直到消费者线程从阻塞队列中读取一部分数据,使得△Ck+cp<capacity。生产者线程将Li中的数据写入到阻塞队列中,计算cp=cp+△Ck,C=C+△Ck
从阻塞队列读取数据:在生产者线程将数据写入阻塞队列的时候,消费者线程同时也会从阻塞队列中读取数据。消费者线程每次读取数据后,首先计算本次读取数据的大小size,并将数据写入分区对应的数据库表中,并且计算cp=cp-size。
步骤3是如何动态的调整生产者线程向阻塞队列中写数据的速度,N1代表调整速度下降的次数初始化为0,N2代表调整速度上升的次数,初始化为0。有三种场景:
1)若IO使用率正常,则速度不需要调整,speedk=speedk-1
2)若IO使用率过高,则需要降低速度,每调整一次,N1=N1+1,同时N2=0;
3)若IO使用率过低,则需要提高速度,每调整一次N2=N2+1,同时N1=0。
步骤3具体过程:查询数据库IO使用率:生产者线程将Li中的数据写入阻塞队列后,获取当前的系统时间tk
3.1若tk-TT>tt,更新TT=tk,并查询分区对应的表所在的数据库的IO使用率rate;
3.1.1若rate>=40%且rate<=60%,认为分区对应的表的数据库性能良好,speedk
speedk-1
3.1.2若rate>60%,则speedk=speedk-1–0.51*speedk-1,0.51是下降的系数,第一次下降是0.51,第二次是0.52,第三次是0.53,第一次下降幅度较大,快速减小数据库IO使用率,保持数据库的性能不受影响,随着下降的次数,系数变的越来越小,下降幅度也越来越小,防止速度下降过快;
3.1.3若rate<40%,则speedk=speedk-1+0.51*speedk-1,0.51是上升的系数,第一次上升时0.51,第二次是0.52,第三次是0.53.第一次上升幅度较大,随着上升的次数变大则系数越来越小,防止速度提升过快,若系数不变小,随着上升次数的增多,速度可能过大导致数据库的IO使用率过大;
3.1.4进入步骤4;
3.2若tk-TT<tt,则进入步骤4;
步骤4.计算数据写入阻塞队列的实际速度:
若tk-T>t,计算speed=(Ck-C)/(tk-T),其中C为上一次测速时累计写入阻塞队列的数据的大小,并更新T=tk
4.1.1若speed>speedk,计算生产者线程需要休息的时间:假设speed=6M/s,speedk=4M/s,tk-T=1.5s,则6*1.5/4-1=1.25s,最终生产线程需要休息1.25s,1.25秒后则继续工作。
4.若tk-T<t,继续遍历分区的数据。
如果分区中所有的数据都被生产者线程写入到队列中,并且队列中的数据全部被消费者线程读取完毕,则任务结束。
除上述实施例外,本发明还可以有其他实施方式,凡采用等同替换或等效变换形成的技术方案,均落在本发明要求的保护范围内。

Claims (3)

1.一种数据迁移的方法,其特征在于,采用Spark计算引擎读取数据并进行存储,Spark内部存储数据的逻辑结构是Rdd,Rdd包括第1至第N个分区;将N个分区中的数据进行重新分区,重新分区后第i个分区中存储的数据均同时分别对应输入至第i个缓冲区,每个缓冲区基于阻塞队列实现,其中i=1,2,…,N;重新分区结束后,每个分区都启动两个线程,一个生产者线程和一个消费者线程,生产者线程遍历每个分区中的每一条数据并将其写入阻塞队列中,并根据数据库资源的的实时使用情况,动态的修改写入速度的阈值,然后根据阈值控制生产者线程将数据写入阻塞队列中的速度,在生产者线程将数据写入阻塞队列的同时消费者线程从阻塞队列中读取数据并将其写入至数据库中,从而完成数据的同步;数据迁移的方法包括以下步骤:
步骤1)同时遍历第i个分区中的每条数据并添加到第i个集合Li中,若Li中的数据的条数达到预设的条数,或者虽然Li中的数据的条数未达到预设的条数但是第i个分区中的数据已遍历结束,则运行步骤2);
步骤2)消费者线程与生产者线程同时进行,消费者线程实时从阻塞队列中读取数据并将其写入至第i个数据库中;
生产者线程第k次将Li中的数据写入阻塞队列后,计算第k次写入阻塞队列中数据的大小△Ck
实时计算cp+△Ck,cp为目前阻塞队列中还未被消费者线程读取的数据大小,当消费者线程从阻塞队列中每读取一条数据时更新cp为cp=cp-size,size为每次从阻塞队列中读取数据的大小;如果cp+△Ck>capacity,capacity是阻塞队列的容量,生产者线程会阻塞;直到cp+△Ck<capacity,才会将Li中的数据写入到阻塞队列中,第k次时累计写入阻塞队列的数据的总大小Ck=△Ck+Ck-1,其中,Ck-1为第k-1次时累计写入阻塞队列的数据的总大小;
步骤3)更新第k次写入阻塞队列后的速度阈值speedk,方法如下:获取第k次生产者线程向阻塞队列写完数据的时间tk,计算距离上一次查询数据库的IO使用率的时间interval1=tk-TT,TT为上一次查询数据库的IO使用率的时间,TT初始值为生产者线程的启动的时间;
若interval1>=tt,则设置TT=tk,tt是预设的查询数据库的IO使用率时间间隔;
获取数据库的IO使用率rate,若Y≥rate≥X,则speedk=speedk-1;若rate>Y,调整生产者线程向阻塞队列中写入数据速度的下降次数N1=N1+1,生产者线程线程向阻塞队列中写入数据速度的上升次数N2=0,speedk=speedk-1-ZN1*speedk-1,Z为[0-1];若speedk<minSpeed,则speedk=minSpeed;若rate<X,调整N2=N2+1,N1=0,则speedk=speedk-1+ZN2*speedk-1,若speedk>maxSpeed,则speedk=maxSpeed;其中X为IO使用率rate的下限范围,Y为IO使用率rate的上限范围,X为[0-40],Y为[60-100],minSpeed是预设的生产者线程向阻塞队列写入数据的最小速度,maxSpeed是预设的生产者线程向阻塞队列写入数据的最大速度;
若interval1<tt,则speedk=speedk-1
步骤4)进行测速,计算测速时间间隔interval2=tk-T,判断如果interval2>t,则进入步骤5);否则k=k+1,进入步骤1);其中,T为上一次测速时间,其初始值为生产者线程启动的时间,t为预设的测速时间间隔;
步骤5)计算当前实际的写入速度speed:speed=(Ck-C)/interval2,若speed>speedk,则进入步骤6),否则进入步骤7);其中,C为上一次测速时累计写入阻塞队列的数据的大小;
步骤6)计算生产者线程的休息时间st,st=speed*interval2/speedk-interval2;如果st大于0,则生产者线程开始休息,停止向阻塞队列中继续写入数据,经过st后生产者线程停止休息,继续向阻塞队列中写入数据,进入步骤7);
步骤7)设置C=Ck,T=tk,k=k+1,进入步骤1);
如果各个分区的数据都被生产者线程写入到阻塞队列中,并且阻塞队列中的数据全部被消费者线程读取,并写入到数据库中,则整个数据迁移任务结束。
2.如权利要求1所述的一种数据迁移的方法,其特征在于,所述将N个分区中的数据进行重新分区,使用的算法是Hash后取模,将原先1个分区的数据分散到多个分区中去。
3.如权利要求1所述的一种数据迁移的方法,其特征在于,所述步骤3)中,X为40,Y为60,Z为0.5。
CN202211286629.8A 2022-10-20 2022-10-20 一种数据迁移的方法 Pending CN115576924A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211286629.8A CN115576924A (zh) 2022-10-20 2022-10-20 一种数据迁移的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211286629.8A CN115576924A (zh) 2022-10-20 2022-10-20 一种数据迁移的方法

Publications (1)

Publication Number Publication Date
CN115576924A true CN115576924A (zh) 2023-01-06

Family

ID=84587860

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211286629.8A Pending CN115576924A (zh) 2022-10-20 2022-10-20 一种数据迁移的方法

Country Status (1)

Country Link
CN (1) CN115576924A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827788A (zh) * 2023-02-16 2023-03-21 天翼云科技有限公司 一种数据迁移方法、装置、电子设备及可读存储介质

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827788A (zh) * 2023-02-16 2023-03-21 天翼云科技有限公司 一种数据迁移方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
US9712646B2 (en) Automated client/server operation partitioning
CN110879800B (zh) 数据写入、压缩和读取方法、数据处理方法及装置
US11392644B2 (en) Optimized navigable key-value store
CN107038206B (zh) Lsm树的建立方法、lsm树的数据读取方法和服务器
CN107122126B (zh) 数据的迁移方法、装置和系统
CN107562532B (zh) 一种预测设备集群的硬件资源利用率的方法及装置
US20070250517A1 (en) Method and Apparatus for Autonomically Maintaining Latent Auxiliary Database Structures for Use in Executing Database Queries
WO2022213973A1 (zh) Io请求的调度方法及装置
US20200293506A1 (en) Bulk-load for b-trees
WO2013032436A1 (en) Parallel operation on b+ trees
US10649967B2 (en) Memory object pool use in a distributed index and query system
US20180107590A1 (en) Information processing apparatus
CN109918450A (zh) 基于分析类场景下的分布式并行数据库及存储方法
JP2022547673A (ja) データ処理方法及び関連装置、並びにコンピュータプログラム
CN110287152A (zh) 一种数据管理的方法以及相关装置
CN115576924A (zh) 一种数据迁移的方法
CN105095255A (zh) 一种数据索引创建方法及装置
CN111078705A (zh) 基于Spark平台建立数据索引方法及数据查询方法
JP5790755B2 (ja) データベース管理装置及びデータベース管理方法
AU2020101071A4 (en) A Parallel Association Mining Algorithm for Analyzing Passenger Travel Characteristics
US11809733B2 (en) Systems and methods for object migration in storage devices
CN108536759B (zh) 一种样本回放数据存取方法及装置
CN111858656A (zh) 一种基于分布式架构的静态数据的查询方法和设备
CN116303246A (zh) 存储增量统计方法、装置、计算机设备及存储介质
CN110377601B (zh) 一种基于B树数据结构的MapReduce计算过程优化方法

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