基于行列混合存储的数据同步方法及装置制造方法及图纸

技术编号:37715149 阅读:12 留言:0更新日期:2023-06-02 00:10
本发明专利技术公开了一种基于行列混合存储的数据同步方法及装置,该方法包括:针对用户的需求输入所需查询的SQL语句,根据TIDB的SQL语法解析SQL语句得到SQL语句中的数据表与数据表对应的列信息,创建以时间先后为顺序的同步任务队列,并将数据表作为同步任务添加到同步任务队列中,数据表的同步任务表示为同步任务队列中的其中一个子任务,根据Raft协议以预设的同步方式将同步任务队列中的数据表同步至数据库中。实施本发明专利技术能够通过TIDB的SQL语法解析用户所需查询的SQL语句得到对应的数据表以及列信息,基于数据表以及列信息查询到的行存数据,对所需的数据列追加同步存储,有利于提高数据的同步效率以及节省了数据存储资源。高数据的同步效率以及节省了数据存储资源。高数据的同步效率以及节省了数据存储资源。

【技术实现步骤摘要】
基于行列混合存储的数据同步方法及装置


[0001]本专利技术涉及数据处理
,尤其涉及一种基于行列混合存储的数据同步方法及装置。

技术介绍

[0002]在数据的可视化
中,随着数据的存储和读取性能不断的发展,对数据可视化的可读性和效率也不断提高,然而在大数据量场景下数据从产生到可视化之间存在繁琐的数据同步过程,现时低效的数据存储手段导致了数据的同步效率不高以及存储资源占用率高的问题。现时本专利技术提供了一种基于行列混合存储的数据同步方法及装置,能够缩短数据可视化前期的繁琐的数据加工过程,以解决现有技术中数据可视化的数据的同步效率低以及数据存储资源占用率高的问题。

技术实现思路

[0003]本专利技术所要解决的技术问题在于,提供一种基于行列混合存储的数据同步方法及装置,能够有效地提高数据的同步效率以及节省数据存储资源。
[0004]为了解决上述技术问题,本专利技术第一方面公开了一种基于行列混合存储的数据同步方法,所述方法包括:
[0005]针对用户的需求输入所需查询的SQL语句;
[0006]根据TIDB的SQL语法解析所述SQL语句得到所述SQL语句中的数据表与所述数据表对应的列信息;
[0007]创建以时间先后为顺序的同步任务队列,并将所述数据表作为同步任务添加到所述同步任务队列中,所述数据表的同步任务表示为所述同步任务队列中的其中一个子任务;
[0008]根据Raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中。
[0009]作为一种可选的实施方式,在本专利技术第一方面中,在所述将所述数据表作为同步任务添加到所述同步任务队列中之后,所述方法还包括:
[0010]查询所述数据表的元数据信息得到查询结果,并根据所述第一查询结果判断所述数据表是否首次同步;
[0011]若判断到所述数据表为首次同步时,执行所述根据Raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中的操作;
[0012]若判断到所述数据表不为首次同步时,判断所述数据表是否处于同步中的状态;
[0013]若判断到所述数据表处于同步中的状态时,重新执行所述将所述数据表作为同步任务添加到所述同步任务队列中的操作。
[0014]作为一种可选的实施方式,在本专利技术第一方面中,所述根据Raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中,包括:
[0015]根据所述同步任务队列中的所述数据表以及所述数据表的列信息生成查询SQL,所述查询SQL用于查询行式存储中存储的数据;
[0016]根据所述查询SQL查询所述行式存储中所需同步的行存数据,并将所述行存数据写入至Raft日志;
[0017]根据Raft协议中的异步复制方式将所述Raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的WAL预写日志中,生成同步后的WAL预写日志;
[0018]将同步前的WAL预写日志中的数据持久化写入到所述数据库中;
[0019]更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量。
[0020]作为一种可选的实施方式,在本专利技术第一方面中,所述方法还包括:
[0021]若判断到所述数据表不处于同步中的状态时,查询所述数据表的元数据信息得到第二查询结果,根据所述第二查询结果判断所述数据表是否存在未同步的列;
[0022]若判断到所述数据表存在未同步的列时,重新执行所述将所述数据表作为同步任务添加到所述同步任务队列中的操作;
[0023]若判断到所述数据表不存在未同步的列时,执行所述更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量的操作。
[0024]作为一种可选的实施方式,在本专利技术第一方面中,在所述根据Raft协议中的异步复制方式将所述Raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的WAL预写日志中,生成同步后的WAL预写日志之后,在所述将同步前的WAL预写日志中的数据持久化写入到数据库中之前,所述方法还包括:
[0025]判断所述根据Raft协议中的异步复制方式将所述Raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的WAL预写日志中的过程是否存在同步异常;
[0026]若判断到存在同步异常时,清空所述列存节点的WAL预写日志中同步的数据,并重新执行所述根据Raft协议中的异步复制方式将所述Raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的WAL预写日志中的操作;
[0027]若判断到不存在同步异常时,执行所述将同步前的WAL预写日志中的数据持久化写入到数据库中的操作。
[0028]作为一种可选的实施方式,在本专利技术第一方面中,在所述更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量之后,所述方法还包括:
[0029]当检测到所述同步任务队列中的所有子任务完成时,销毁所述同步任务队列,结束所述同步任务。
[0030]作为一种可选的实施方式,在本专利技术第一方面中,所述根据TIDB的SQL语法解析所述SQL语句得到所述SQL语句中的数据表与所述数据表对应的列信息,包括:
[0031]基于TIDB的SQL语法生成SQL解析引擎,并根据所述SQL解析引擎解析所述SQL语句得到所述SQL语句中的数据表与所述数据表对应的列信息。
[0032]本专利技术第二方面公开了一种基于行列混合存储的数据同步装置,所述装置包括:
[0033]输入模块,用于针对用户的需求输入所需查询的SQL语句;
[0034]解析模块,用于根据TIDB的SQL语法解析所述输入模块输入的所述SQL语句得到所
述SQL语句中的数据表与所述数据表对应的列信息;
[0035]创建模块,用于创建以时间先后为顺序的同步任务队列;
[0036]添加模块,用于将所述解析模块解析得到的所述数据表作为同步任务添加到所述创建模块创建的所述同步任务队列中,所述数据表的同步任务表示为所述同步任务队列中的其中一个子任务;
[0037]同步模块,用于根据Raft协议以预设的同步方式将所述添加模块添加的所述同步任务队列中的数据表同步至数据库中。
[0038]作为一种可选的实施方式,在本专利技术第二方面中,在所述添加模块将所述数据表作为同步任务添加到所述同步任务队列中之后,所述装置还包括:
[0039]查询模块,用于查询所述数据表的元数据信息得到第一查询结果;
[0040]判断模块,用于根据所述查询模块查询得到的所述第一查询结果判断所述数据表是否首次同步;
[0041]若判断到所述数据表为首次同步时,触发所述同步模块执行所述根据Raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中的操作;
[0042]若判断到所述数据表不为首次同步时,判断所述数据表是否处于同步中的状态;
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于行列混合存储的数据同步方法,其特征在于,所述方法包括:针对用户的需求输入所需查询的SQL语句;根据TIDB的SQL语法解析所述SQL语句得到所述SQL语句中的数据表与所述数据表对应的列信息;创建以时间先后为顺序的同步任务队列,并将所述数据表作为同步任务添加到所述同步任务队列中,所述数据表的同步任务表示为所述同步任务队列中的其中一个子任务;根据Raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中。2.根据权利要求1所述的基于行列混合存储的数据同步方法,其特征在于,在所述将所述数据表作为同步任务添加到所述同步任务队列中之后,所述方法还包括:查询所述数据表的元数据信息得到查询结果,并根据所述第一查询结果判断所述数据表是否首次同步;若判断到所述数据表为首次同步时,执行所述根据Raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中的操作;若判断到所述数据表不为首次同步时,判断所述数据表是否处于同步中的状态;若判断到所述数据表处于同步中的状态时,重新执行所述将所述数据表作为同步任务添加到所述同步任务队列中的操作。3.根据权利要求2所述的基于行列混合存储的数据同步方法,其特征在于,所述根据Raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中,包括:根据所述同步任务队列中的所述数据表以及所述数据表的列信息生成查询SQL,所述查询SQL用于查询行式存储中存储的数据;根据所述查询SQL查询所述行式存储中所需同步的行存数据,并将所述行存数据写入至Raft日志;根据Raft协议中的异步复制方式将所述Raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的WAL预写日志中,生成同步后的WAL预写日志;将同步前的WAL预写日志中的数据持久化写入到数据库中;更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量。4.根据权利要求3所述的基于行列混合存储的数据同步方法,其特征在于,所述方法还包括:若判断到所述数据表不处于同步中的状态时,查询所述数据表的元数据信息得到第二查询结果,根据所述第二查询结果判断所述数据表是否存在未同步的列;若判断到所述数据表存在未同步的列时,重新执行所述将所述数据表作为同步任务添加到所述同步任务队列中的操作;若判断到所述数据表不存在未同步的列时,执行所述更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量的操作。5.根据权利要求3或4所述的基于行列混合存储的数据同步方法,其特征在于,在所述根据Raft协议中的异步复制方式将所述Raft日志中的数据从数据库的主节点同步至所述数据库...

【专利技术属性】
技术研发人员:萧展辉石刚凌敏王标徐嘉诚
申请(专利权)人:南方电网数字平台科技广东有限公司
类型:发明
国别省市:

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

1