一种mongodb和clickhouse的数据同步方法
技术领域
1.本发明涉及的是数据同步技术领域,具体涉及一种mongodb和clickhouse的数据同步方法。
背景技术:
2.在互联网企业架构中,clickhouse经常做为一个中间数据库,用于处理联机分析(olap)任务。在这种情况下,clickhouse往往需要从其他数据库(如mongodb数据库)同步大量数据。为了将数据同步到clickhouse,以往开发者都习惯性地为每一张表编写数据同步逻辑,主要包括从mongodb读取数据、数据转换、往clickhouse写入数据等主要逻辑。虽然可以将程序的部分逻辑模块化,让不同数据表共用,但这种处理方式最终还是需要为每一张表编写一套数据实体类及对应的数据转换、映射逻辑,开发过程费时费力,同时不利于后续的修改和维护。
3.为了方便数据同步,clickhouse官方提供了mysql引擎,借助于其他命令可以自动化同步数据。不过目前官方并没有提供针对mongodb的同步引擎,而且在实际应用中,同步数据过程还会伴随一些数据转换,这种完全同步的方法并不支持定制化的数据转换,转而回归到上面繁琐的开发中。
4.为了解决上述问题,开发一种mongodb和clickhouse的数据同步方法尤为必要。
技术实现要素:
5.针对现有技术上存在的不足,本发明目的是在于提供一种mongodb和clickhouse的数据同步方法,在原有mongodb数据库操作逻辑上,只需添加少量注解,就能实现自动化clickhouse数据同步,开发量少,灵活性高,易于推广使用。
6.为了实现上述目的,本发明是通过如下的技术方案来实现:一种mongodb和clickhouse的数据同步方法,其步骤为:
7.(1)设计、编写同步所需要的表级注解以及字段级注解;
8.(2)将注解标记到需要同步的mongodb数据表实体和属性;
9.(3)启动服务后应用程序自动扫描收集所有数据实体类,获取到有标记clickhouse表级注解的数据实体类;
10.(4)通过表级注解,获取待生成的clickhouse数据表名;
11.(5)利用java反射机制,取得该数据实体类的所有标记了字段级注解的属性,记录目标字段名称、数据转换处理器以及获取属性值的方法;
12.(6)通过数据实体类的表级注解和所有标记了字段级注解的属性,解析生成clickhouse建表语句和clickhouse同mongodb的数据映射关系,并将解析数据缓存到clickhousemanager管理器;
13.(7)通过统一的调度器生成空的clickhouse数据表;
14.(8)利用原有的mongodb通用数据操作模板,实时载入mongodb数据,利用缓存信息
进行数据解析、转换、同步。
15.作为优选,所述的步骤(1)中的注解包含生成clickhouse表所需的信息。
16.作为优选,所述的步骤(8)中的数据处理包含:
17.①
调用获取属性值的方法,取得属性值;
18.②
通过数据转换处理器,定制化转换数据,若没有配置,这一步则不执行;
19.③
生成clickhouse插入语句,并执行。
20.本发明的有益效果:本方法在原有mongodb数据库操作逻辑上,只需添加少量注解,就能实现自动化clickhouse数据同步,开发量少,便于管理,灵活性高,应用前景广阔。
具体实施方式
21.为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
22.本具体实施方式采用以下技术方案:一种mongodb和clickhouse的数据同步方法,其步骤为:
23.(1)设计、编写同步所需要的表级注解以及字段级注解,注解包含生成clickhouse表所需的信息;
24.(2)将注解标记到需要同步的mongodb数据表实体和属性;
25.(3)启动服务后应用程序自动扫描收集所有数据实体类,获取到有标记clickhouse表级注解的数据实体类;
26.(4)通过表级注解,获取待生成的clickhouse数据表名;
27.(5)利用java反射机制,取得该数据实体类的所有标记了字段级注解的属性,记录目标字段名称、数据转换处理器以及获取属性值的方法;
28.(6)通过数据实体类的表级注解和所有标记了字段级注解的属性,解析生成clickhouse建表语句和clickhouse同mongodb的数据映射关系,并将解析数据缓存到clickhousemanager管理器;
29.(7)通过统一的调度器生成空的clickhouse数据表;
30.(8)利用原有的mongodb通用数据操作模板,实时载入mongodb数据,利用缓存信息进行数据解析、转换、同步。具体的数据处理包含:
31.①
调用获取属性值的方法,取得属性值;
32.②
通过数据转换处理器,定制化转换数据,若没有配置,这一步则不执行;
33.③
生成clickhouse插入语句,并执行。
34.本具体实施方式引入已开发集成好的依赖jar包,包括了所需的注解等,通过对将导入的数据表进行注解标记,接入clickhouse数据库,调用主程序,传入待同步数据表名称,触发数据同步逻辑,数据从mongodb同步到clickhouse的高度抽象化及封装,便于数据同步。
35.本具体实施方式解决了从mongodb同步数据到clickhouse的问题,通过注解的方式,减少开发量,而且使异构的数据库能共用数据实体类,便于管理,还支持自定义数据转换逻辑,十分灵活,开发人员只需关心特定数据的转换即可,具有广阔的市场应用前景。
36.以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术
人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
技术特征:
1.一种mongodb和clickhouse的数据同步方法,其特征在于,其步骤为:(1)设计、编写同步所需要的表级注解以及字段级注解;(2)将注解标记到需要同步的mongodb数据表实体和属性;(3)启动服务后应用程序自动扫描收集所有数据实体类,获取到有标记clickhouse表级注解的数据实体类;(4)通过表级注解,获取待生成的clickhouse数据表名;(5)利用java反射机制,取得该数据实体类的所有标记了字段级注解的属性,记录目标字段名称、数据转换处理器以及获取属性值的方法;(6)通过数据实体类的表级注解和所有标记了字段级注解的属性,解析生成clickhouse建表语句和clickhouse同mongodb的数据映射关系,并将解析数据缓存到clickhousemanager管理器;(7)通过统一的调度器生成空的c1ickhouse数据表;(8)利用原有的mongodb通用数据操作模板,实时载入mongodb数据,利用缓存信息进行数据解析、转换、同步。2.根据权利要求1所述的一种mongodb和clickhouse的数据同步方法,其特征在于,所述的步骤(1)中的注解包含生成clickhouse表所需的信息。3.根据权利要求1所述的一种mongodb和clickhouse的数据同步方法,其特征在于,所述的步骤(8)中的数据处理包含:
①
调用获取属性值的方法,取得属性值;
②
通过数据转换处理器,定制化转换数据,若没有配置,这一步则不执行;
③
生成clickhouse插入语句,并执行。
技术总结
本发明公开了一种MongoDB和ClickHouse的数据同步方法,它涉及数据同步技术领域。设计、编写同步所需的表级注解和字段级注解,将注解标记到需同步的MongoDB数据表实体和属性,启动后自动扫描收集所有数据实体类,通过数据实体类的表级注解和所有标记了字段级注解的属性,解析生成ClickHouse建表语句和ClickHouse同MongoDB的数据映射关系,并将解析数据缓存到ClickHouseManager管理器,最终通过统一的调度器生成空的ClickHouse数据表,实时载入MongoDB数据,利用缓存信息进行数据解析、转换、同步。同步。
技术研发人员:王锐旭 张辉 陈南浩 佘蔚财
受保护的技术使用者:广州九尾信息科技有限公司
技术研发日:2021.10.14
技术公布日:2022/1/4