基于kettle实现pg数据定时转存mongodb
案例背景
针对读写比较频繁的事务,存储于postgresql数据库中,随着时间的推移,数据量不断变大,且该数据只用于历史记录查询,因此该数据更适合存储于mongodb中,因此,我们有这么一个需求,就是定期将postgresql中的数据转存到mongodb中。
kettle简介
kettle 是一个ETL工具,ETL(extract - transform - load,数据抽取,数据转换,数据装载)
kettle 是java编写,绿色无需安装,抽取高效稳定;
kettle 主要用来对不同数据库的数据、不同来源的数据进场处理;
kettle 有两种脚本文件,transformation和job,transformation是转换,job是对多个转换构建的整个工作流的抽象和控制;如图是 kettle 的概念模型:
环境简介
操作系统环境: server 2012
postgresql环境: 11.16
mongodb环境: 4.2.21
kettle环境: 7.1
实现过程
环境搭建
- 搭建postgresql测试环境
- 搭建mongodb测试环境
- 搭建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操作步骤
- 打开kettle
> 2. 新建转换
- 创建“表输入”,并拖拽到右侧工作区中
- 双击“表输入”,配置postgresql数据连接
- 填写pg连接信息,并且执行测试连接是否成功
- 编写sql语句,同步需要同步的数据
- 创建“JSON Output”,拖拽“JSON Output”到工作区,点击“表输入”图标,按住“shift”键拖动连接线到“JSON Output”
- 双击“JSON Output”,配置Json输出
- 创建“MongoDB Output”,拖拽到工作区中,单击“JSON Output”图标,按住"shift"键,连接“MongoDB Output”
- 配置mongodb连接信息
- "ctrl + s"保存转换,执行运行
kettle配置定时执行
- 新建作业
- 新建“start”,配置定时器
- 新建“转换”,指定转换的对象
- 保存作业,启动作业
查看mongodb是否数据同步情况
至此,你已经完成简单的postgresql数据同步到mongodb中的操作了!
本文含有隐藏内容,请 开通VIP 后查看