基于kettle实现pg数据定时转存mongodb

发布于:2022-08-08 ⋅ 阅读:(561) ⋅ 点赞:(0)

案例背景

针对读写比较频繁的事务,存储于postgresql数据库中,随着时间的推移,数据量不断变大,且该数据只用于历史记录查询,因此该数据更适合存储于mongodb中,因此,我们有这么一个需求,就是定期将postgresql中的数据转存到mongodb中。

kettle简介

kettle 是一个ETL工具,ETL(extract - transform - load,数据抽取,数据转换,数据装载)
kettle 是java编写,绿色无需安装,抽取高效稳定;
kettle 主要用来对不同数据库的数据、不同来源的数据进场处理;
kettle 有两种脚本文件,transformation和job,transformation是转换,job是对多个转换构建的整个工作流的抽象和控制;

如图是 kettle 的概念模型:
kettle概念模型

环境简介

操作系统环境: server 2012
postgresql环境: 11.16
mongodb环境: 4.2.21
kettle环境: 7.1

实现过程

环境搭建

  1. 搭建postgresql测试环境
  2. 搭建mongodb测试环境
  3. 搭建kettle环境
# postgresql操作:
# 重置postgres密码
alter user postgres with encrypted password 'oracle';

# 登录pg数据库
psql -Upostgres -hlocalhost

-- pg 创建表
create table test1 (id int, name varchar(16));

-- pg插入数据
insert into test1 values (1, 'chen');
insert into test1 values (2, 'rao');
insert into test1 values (3, 'zhang');
insert into test1 values (4, 'zhao');

-- 查看test1数据
select * from test1;
#mongodb操作:
-- 创建数据库
use testdb

-- 创建集合
db.createCollection(test)

-- 删除集合
db.test.drop()

-- 查询文档
db.test.find()
db.test.pretty()

-- 创建用户
db.createUser(
  {
    user: "testdbUser",
    pwd: "oracle",
    roles: [{ role: "dbAdmin", db: "testdb" }]
  }
)

kettle操作步骤

  1. 打开kettle
    在这里插入图片描述> 2. 新建转换
    在这里插入图片描述
  2. 创建“表输入”,并拖拽到右侧工作区中
    在这里插入图片描述
  3. 双击“表输入”,配置postgresql数据连接在这里插入图片描述
  4. 填写pg连接信息,并且执行测试连接是否成功
    在这里插入图片描述
  5. 编写sql语句,同步需要同步的数据
    在这里插入图片描述
  6. 创建“JSON Output”,拖拽“JSON Output”到工作区,点击“表输入”图标,按住“shift”键拖动连接线到“JSON Output”
    在这里插入图片描述
  7. 双击“JSON Output”,配置Json输出
    在这里插入图片描述
    在这里插入图片描述
  8. 创建“MongoDB Output”,拖拽到工作区中,单击“JSON Output”图标,按住"shift"键,连接“MongoDB Output”
    在这里插入图片描述
  9. 配置mongodb连接信息
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  10. "ctrl + s"保存转换,执行运行
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

kettle配置定时执行

  1. 新建作业
    在这里插入图片描述
  2. 新建“start”,配置定时器
    在这里插入图片描述
    在这里插入图片描述
  3. 新建“转换”,指定转换的对象
    在这里插入图片描述
    在这里插入图片描述
  4. 保存作业,启动作业
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    查看mongodb是否数据同步情况
    在这里插入图片描述

至此,你已经完成简单的postgresql数据同步到mongodb中的操作了!

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到