暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

每日一答:有个需求是打通Mongodb和Clickhouse,但是不能使用CK库字典表的形式,有好的办法吗?

读字节 2021-04-15
2395

戳蓝字“读字节”关注我们哦


问题:

首先不能使用CK库的字典表实现方式,因为数据量太大了,字典表的数据都放在内存中,且每个节点都需要存一份,所以这种实现方式不行。又因为mongodb的表是动态的,所以也没有办法建固定字段的CK表,所以提前建CK表的方式也是不行的。

不直接查mongodb的原因是,查询语句的语法mysql差别很大,因为大屏需要配置sql,所以直接查的话客户不接受。请问大佬有没有好的方案?

回答:

你的需求是MongoDB的数据同步到ClickHouse,然后通过ClickHousede的SQL查询能力,实现客户上层应用展示。尝试考虑做个消息分发吧,这样比较灵活!

概要流程:
  • 1、阿里推出的MongoShake工具实现MongoDB集群的oplog数据向Kafka的推送

  • 2、利用ELK的Logstash实现Kafka的oplog订阅数据向ClickHose存储。

上图是MongoShake官方提供的架构图,我标注了红色箭头部分,由Kafka集群实现消息持久化和分发。
我们再通过全流程图看看怎么操作实现:

上图就是个标准的ETL过程(虚线部分)。
实现的数据流转(实现部分),
  1. MongoSharek对MongoDB的oplog数据抓取到kafka中的topic队列,

  2. 首先Logstash通过logstash-input-kafka插件订阅Kafka中的topic队列获取MongoSharek推送的MongoDB数据,

  3. 其次Logstash的过滤规则来实现MongoDB—ClickHouse字段的组合建立,

  4. 最后Logstash通过logstash-ouput-clickhouse插件实现上一步Logstash Fliter组合过滤后的数据向ClickHouse的写入。

希望我的回答对你有用!

如果觉得写得不错,那就点个赞或者“在看”吧,多谢阅读。

文章均为“读字节”原创,转载务必注明来源。


点这里👇关注我

文章转载自读字节,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论