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达到阈值时,将所述KV batch发送到KV Channel中等待被消费。
6 .根据权利要求5所述的一种关系引擎数据导入实现方法,其特征在于,在步骤S3中,
KV的数据写入由ingestKvs协程来完成,初始化两个KV的添加器用来消费KV Channel中的
数据,一个用来消费主索引数据,另一个用来消费二级索引的数据。
7 .根据权利要求6所述的一种关系引擎数据导入实现方法,其特征在于,接受到一批次
KV数据后,逐条处理KV,首先decode key解析出索引ID,根据数据属于主索引还是二级索引
来判断放入的添加器,选择好添加器后,所述KV被放入添加器的缓存中。
8.根据权利要求7所述的一种关系引擎数据导入实现方法,其特征在于,当添加器的缓
存达到阈值后,将缓存中的所有数据排序,然后根据Key去组成MVCCKey ,并尝试添加到
SSTBatcher;
当SSTBatcher达到阈值或者跨越range边界,将SSTBatcher中的所有数据,组织成一个
内存中的SST File ,然后发起一个AddSSTableRequest到指定的副本上。
9 .根据权 利要 求8所述的一种关 系引擎数据导入实现方法,其特征 在于,将所述
AddSSTableRequest经过一系列的评估阶段转换成一个raft的command;
所 述 A d d S S T a b l e R e q u e s t 为 一 个 特 殊 的 r a f t c o m m a n d , 版 本 为
权 利 要 求 书
1/2 页
2
评论