本发明涉及数据处理,尤其涉及一种基于行列混合存储的数据同步方法及装置。
背景技术:
1、在数据的可视化技术领域中,随着数据的存储和读取性能不断的发展,对数据可视化的可读性和效率也不断提高,然而在大数据量场景下数据从产生到可视化之间存在繁琐的数据同步过程,现时低效的数据存储手段导致了数据的同步效率不高以及存储资源占用率高的问题。现时本发明提供了一种基于行列混合存储的数据同步方法及装置,能够缩短数据可视化前期的繁琐的数据加工过程,以解决现有技术中数据可视化的数据的同步效率低以及数据存储资源占用率高的问题。
技术实现思路
1、本发明所要解决的技术问题在于,提供一种基于行列混合存储的数据同步方法及装置,能够有效地提高数据的同步效率以及节省数据存储资源。
2、为了解决上述技术问题,本发明第一方面公开了一种基于行列混合存储的数据同步方法,所述方法包括:
3、针对用户的需求输入所需查询的sql语句;
4、根据tidb的sql语法解析所述sql语句得到所述sql语句中的数据表与所述数据表对应的列信息;
5、创建以时间先后为顺序的同步任务队列,并将所述数据表作为同步任务添加到所述同步任务队列中,所述数据表的同步任务表示为所述同步任务队列中的其中一个子任务;
6、根据raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中。
7、作为一种可选的实施方式,在本发明第一方面中,在所述将所述数据表作为同步任务添加到所述同步任务队列中之后,所述方法还包括:
8、查询所述数据表的元数据信息得到查询结果,并根据所述第一查询结果判断所述数据表是否首次同步;
9、若判断到所述数据表为首次同步时,执行所述根据raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中的操作;
10、若判断到所述数据表不为首次同步时,判断所述数据表是否处于同步中的状态;
11、若判断到所述数据表处于同步中的状态时,重新执行所述将所述数据表作为同步任务添加到所述同步任务队列中的操作。
12、作为一种可选的实施方式,在本发明第一方面中,所述根据raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中,包括:
13、根据所述同步任务队列中的所述数据表以及所述数据表的列信息生成查询sql,所述查询sql用于查询行式存储中存储的数据;
14、根据所述查询sql查询所述行式存储中所需同步的行存数据,并将所述行存数据写入至raft日志;
15、根据raft协议中的异步复制方式将所述raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的wal预写日志中,生成同步后的wal预写日志;
16、将同步前的wal预写日志中的数据持久化写入到所述数据库中;
17、更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量。
18、作为一种可选的实施方式,在本发明第一方面中,所述方法还包括:
19、若判断到所述数据表不处于同步中的状态时,查询所述数据表的元数据信息得到第二查询结果,根据所述第二查询结果判断所述数据表是否存在未同步的列;
20、若判断到所述数据表存在未同步的列时,重新执行所述将所述数据表作为同步任务添加到所述同步任务队列中的操作;
21、若判断到所述数据表不存在未同步的列时,执行所述更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量的操作。
22、作为一种可选的实施方式,在本发明第一方面中,在所述根据raft协议中的异步复制方式将所述raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的wal预写日志中,生成同步后的wal预写日志之后,在所述将同步前的wal预写日志中的数据持久化写入到数据库中之前,所述方法还包括:
23、判断所述根据raft协议中的异步复制方式将所述raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的wal预写日志中的过程是否存在同步异常;
24、若判断到存在同步异常时,清空所述列存节点的wal预写日志中同步的数据,并重新执行所述根据raft协议中的异步复制方式将所述raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的wal预写日志中的操作;
25、若判断到不存在同步异常时,执行所述将同步前的wal预写日志中的数据持久化写入到数据库中的操作。
26、作为一种可选的实施方式,在本发明第一方面中,在所述更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量之后,所述方法还包括:
27、当检测到所述同步任务队列中的所有子任务完成时,销毁所述同步任务队列,结束所述同步任务。
28、作为一种可选的实施方式,在本发明第一方面中,所述根据tidb的sql语法解析所述sql语句得到所述sql语句中的数据表与所述数据表对应的列信息,包括:
29、基于tidb的sql语法生成sql解析引擎,并根据所述sql解析引擎解析所述sql语句得到所述sql语句中的数据表与所述数据表对应的列信息。
30、本发明第二方面公开了一种基于行列混合存储的数据同步装置,所述装置包括:
31、输入模块,用于针对用户的需求输入所需查询的sql语句;
32、解析模块,用于根据tidb的sql语法解析所述输入模块输入的所述sql语句得到所述sql语句中的数据表与所述数据表对应的列信息;
33、创建模块,用于创建以时间先后为顺序的同步任务队列;
34、添加模块,用于将所述解析模块解析得到的所述数据表作为同步任务添加到所述创建模块创建的所述同步任务队列中,所述数据表的同步任务表示为所述同步任务队列中的其中一个子任务;
35、同步模块,用于根据raft协议以预设的同步方式将所述添加模块添加的所述同步任务队列中的数据表同步至数据库中。
36、作为一种可选的实施方式,在本发明第二方面中,在所述添加模块将所述数据表作为同步任务添加到所述同步任务队列中之后,所述装置还包括:
37、查询模块,用于查询所述数据表的元数据信息得到第一查询结果;
38、判断模块,用于根据所述查询模块查询得到的所述第一查询结果判断所述数据表是否首次同步;
39、若判断到所述数据表为首次同步时,触发所述同步模块执行所述根据raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中的操作;
40、若判断到所述数据表不为首次同步时,判断所述数据表是否处于同步中的状态;
41、若判断到所述数据表处于同步中的状态时,重新触发所述添加模块执行所述将所述数据表作为同步任务添加到所述同步任务队列中的操作。
42、作为一种可选的实施方式,在本发明第二方面中,所述同步模块根据raft协议以预设的同步方式将所述同步任务队列中的数据表同步至数据库中的具体方式为:
43、根据所述同步任务队列中的所述数据表以及所述数据表的列信息生成查询sql,所述查询sql用于查询行式存储中存储的数据;
44、根据所述查询sql查询所述行式存储中所需同步的行存数据,并将所述行存数据写入至raft日志;
45、根据raft协议中的异步复制方式将所述raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的wal预写日志中,生成同步后的wal预写日志;
46、将同步前的wal预写日志中的数据持久化写入到所述数据库中;
47、更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量。
48、作为一种可选的实施方式,在本发明第二方面中,所述装置还包括:
49、所述查询模块,还用于若所述判断模块判断到所述数据表不处于同步中的状态时,查询所述数据表的元数据信息得到第二查询结果;
50、所述判断模块,还用于根据所述查询模块查询得到的所述第二查询结果判断所述数据表是否存在未同步的列;
51、若判断到所述数据表存在未同步的列时,重新触发所述添加模块执行所述将所述数据表作为同步任务添加到所述同步任务队列中的操作;
52、若判断到所述数据表不存在未同步的列时,触发所述同步模块执行所述更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量的操作。
53、作为一种可选的实施方式,在本发明第二方面中,在所述同步模块根据raft协议中的异步复制方式将所述raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的wal预写日志中,生成同步后的wal预写日志之后,在所述将同步前的wal预写日志中的数据持久化写入到数据库中之前,所述装置还包括:
54、所述判断模块,还用于判断所述同步模块根据raft协议中的异步复制方式将所述raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的wal预写日志中的过程是否存在同步异常;
55、若判断到存在同步异常时,触发所述同步模块重新执行所述根据raft协议中的异步复制方式将所述raft日志中的数据从数据库的主节点同步至所述数据库的列存节点的wal预写日志中的操作;
56、若判断到不存在同步异常时,触发所述同步模块执行所述将同步前的wal预写日志中的数据持久化写入到数据库中的操作;
57、清除模块,用于若所述判断模块判断到存在同步异常时,清空所述列存节点的wal预写日志中同步的数据。
58、作为一种可选的实施方式,在本发明第二方面中,在所述同步模块更新每一个同步后的子任务中所述数据表的元数据信息,并统计已完成同步的子任务的数量之后,所述装置还包括:
59、结束模块,用于当检测到所述同步任务队列中的所有子任务完成时,销毁所述同步任务队列,结束同步任务。
60、作为一种可选的实施方式,在本发明第二方面中,所述解析模块根据tidb的sql语法解析所述sql语句得到所述sql语句中的数据表与所述数据表对应的列信息的具体方式为:
61、基于tidb的sql语法生成sql解析引擎,并根据所述sql解析引擎解析所述sql语句得到所述sql语句中的数据表与所述数据表对应的列信息。
62、本发明第三方面公开了另一种基于行列混合存储的数据同步装置,所述装置包括:
63、存储有可执行程序代码的存储器;
64、与所述存储器耦合的处理器;
65、所述处理器调用所述存储器中存储的所述可执行程序代码,执行本发明第一方面公开的基于行列混合存储的数据同步方法中部分或全部的步骤。
66、本发明第四方面公开了一种计算机存储介质,所述计算机存储介质存储有计算机指令,所述计算机指令被调用时,用于执行本发明第一方面公开的基于行列混合存储的数据同步方法中部分或全部的步骤。
67、与现有技术相比,本发明实施例具有以下有益效果:提供了一种基于行列混合存储的数据同步方法及装置,该方法包括:针对用户的需求输入所需查询的sql语句,根据tidb的sql语法解析sql语句得到sql语句中的数据表与数据表对应的列信息,创建以时间先后为顺序的同步任务队列,并将数据表作为同步任务添加到同步任务队列中,数据表的同步任务表示为同步任务队列中的其中一个子任务,根据raft协议以预设的同步方式将同步任务队列中的数据表同步至数据库中。实施本发明能够通过tidb的sql语法解析用户所需查询的sql语句得到sql语句中的数据表与数据表对应的列信息,以便提高数据后续的存储处理速度;将数据表作为同步任务添加到以时间先后为顺序的同步任务队列中,在数据行存的基础上,根据raft协议对所需的数据列追加同步存储,提高了数据存储的效率以及准确率,从而有利于提高数据的同步效率以及节省了数据存储资源。