一种关系引擎数据导入实现方法及装置制造方法及图纸

技术编号:39570528 阅读:9 留言:0更新日期:2023-12-03 19:21
本发明专利技术涉及数据库技术领域,具体提供了一种关系引擎数据导入实现方法及装置,具有如下步骤:

【技术实现步骤摘要】
一种关系引擎数据导入实现方法及装置


[0001]本专利技术涉及数据库
,具体提供一种关系引擎数据导入实现方法及装置


技术介绍

[0002]导入导出可以应用在用户生产环境迁移中,可以应于在用户模拟环境中重建源环境的对象定义及统计信息以便开发测试,也可以在只收集用户的对象定义及统计信息从避免触及用户敏感数据来进问题诊断

调试和调优的场景中

[0003]导入导出为用户提供一种途径将
KaiwuDB
中的用户数据对象
(
如表

索引

视图

设备

订阅主题

等等
)、
用户数据以及相关对象的统计信息从源数据库端导出,并保存到指定的目录的指定压缩文件中,之后可以导入到目标端的数据库中

[0004]数据导入是数据库中的重要内容,数据的导入就像搬家,基本每个用过手机的人都做过数据导入,将旧智能手机中的电话号码

照片

微信聊天记录导入到另一台新的智能手机

数据库中的数据导入也是类似的,将一台数据库中的内容导入到另一台数据库中,可以是同构的数据库,即
KaiwuDB
导入到
KaiwuDB
,也可以是异构数据库,即
Oracle

MySQL
导入到
KaiwuDB。
[0005]如何将数据直接发送至存储层进行落盘,跳过整个事务层,避免在写入
raft
时进行日志复制是本领域技术人员亟待解决的事情


技术实现思路

[0006]本专利技术是针对上述现有技术的不足,提供一种实用性强的关系引擎数据导入实现方法

[0007]本专利技术进一步的技术任务是提供一种设计合理,安全适用的关系引擎数据导入实现装置

[0008]本专利技术解决其技术问题所采用的技术方案是:
[0009]一种关系引擎数据导入实现方法,具有如下步骤:
[0010]S1、
使用
Job
来进行流程控制,执行管理性任务或后台任务;
[0011]S2、
对数据进行读取和转换;
[0012]S3、
进行
KV
数据的消费

[0013]进一步地,在步骤
S1
中,进一步包括:
[0014]S101、
将相关的用户表下载,即不再提供业务,等待所有节点均看到所述用户表的相同元数据版本后开始导入;
[0015]S102、
开始分布式的数据导入,在数据导入中,定期更新
jobs
表中导入的进度;
[0016]S103、
如果导入正常结束,返回统计信息到客户端,并将表状态置为
public
,继续提供业务;
[0017]S104、
如果导入发生了可重试错误,更新错误到
jobs
表中,数据库节点会在后台自动重试
Job
,重试时会根据
jobs
表中的进度跳过已经加载完毕的数据

[0018]进一步地,如果导入中发生了不可重试的错误,回滚已加载数据;
[0019]对于导入数据到一张新表,会执行删除操作,对于导入数据到已存在的表,将数据回滚到导入前的时间节点,然后将表状态设置额为
public
,继续提供业务

[0020]进一步地,在步骤
S2
中,导入的数据读取由
readCSVFile
协程完成,
readCSVFile
协程按行读取
CSV
文件,并将读取的
record
添加到
record batch
中,当
record batch
大小达到阈值时,将所述
record batch
发送到
record Channel。
[0021]进一步地,导入数据的转换由
convertRecord
协程完成,数据格式转换的协程即
convertRecord
负责消费
record Channel
中的接收到的
record batch
,将
record batch
转化为
KV,
写入
KV batch
,当
KV batch
达到阈值时,将所述
KV batch
发送到
KV Channel
中等待被消费

[0022]进一步地,在步骤
S3
中,
KV
的数据写入由
ingestKvs
协程来完成
,
初始化两个
KV
的添加器用来消费
KV Channel
中的数据,一个用来消费主索引数据,另一个用来消费二级索引的数据

[0023]进一步地,接受到一批次
KV
数据后,逐条处理
KV,
首先
decode key
解析出索引
ID
,根据数据属于主索引还是二级索引来判断放入的添加器,选择好添加器后,所述
KV
被放入添加器的缓存中

[0024]进一步地,当添加器的缓存达到阈值后,将缓存中的所有数据排序,然后根据
Key
去组成
MVCCKey,
并尝试添加到
SSTBatcher

[0025]当
SSTBatcher
达到阈值或者跨越
range
边界,将
SSTBatcher
中的所有数据,组织成一个内存中的
SST File,
然后发起一个
AddSSTableRequest
到指定的副本上

[0026]进一步地,将所述
AddSSTableRequest
经过一系列的评估阶段转换成一个
raft

command

[0027]所述
AddSSTableRequest
为一个特殊的
raft command,
版本为
raftVersionSideloaded
,代表着
SSTable
是从
raft
一侧加载,即,并不会写入
raft log

[0028]收到
raft command
之后,副本的本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种关系引擎数据导入实现方法,其特征在于,具有如下步骤:
S1、
使用
Job
来进行流程控制,执行管理性任务或后台任务;
S2、
对数据进行读取和转换;
S3、
进行
KV
数据的消费
。2.
根据权利要求1所述的一种关系引擎数据导入实现方法,其特征在于,在步骤
S1
中,进一步包括:
S101、
将相关的用户表下载,即不再提供业务,等待所有节点均看到所述用户表的相同元数据版本后开始导入;
S102、
开始分布式的数据导入,在数据导入中,定期更新
jobs
表中导入的进度;
S103、
如果导入正常结束,返回统计信息到客户端,并将表状态置为
public
,继续提供业务;
S104、
如果导入发生了可重试错误,更新错误到
jobs
表中,数据库节点会在后台自动重试
Job
,重试时会根据
jobs
表中的进度跳过已经加载完毕的数据
。3.
根据权利要求2所述的一种关系引擎数据导入实现方法,其特征在于,如果导入中发生了不可重试的错误,回滚已加载数据;对于导入数据到一张新表,会执行删除操作,对于导入数据到已存在的表,将数据回滚到导入前的时间节点,然后将表状态设置额为
public
,继续提供业务
。4.
根据权利要求3所述的一种关系引擎数据导入实现方法,其特征在于,在步骤
S2
中,导入的数据读取由
readCSVFile
协程完成,
readCSVFile
协程按行读取
CSV
文件,并将读取的
record
添加到
record batch
中,当
record batch
大小达到阈值时,将所述
record batch
发送到
record Channel。5.
根据权利要求4所述的一种关系引擎数据导入实现方法,其特征在于,导入数据的转换由
convertRecord
协程完成,数据格式转换的协程即
convertRecord
负责消费
record Channel
中的接收到的
record batch
,将
record batch
转化为
KV,
写入
KV batch
,当
KV batch

【专利技术属性】
技术研发人员:田祥雨
申请(专利权)人:上海沄熹科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1