QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

MoSQL:简化 MongoDB 与 PostgreSQL 之间的同步

  • 2013-02-24
  • 本文字数:804 字

    阅读完需:约 3 分钟

近日,位于旧金山的 Stripe 公司发布了 MoSQL,该款工具可以通过复制的 PostgreSQL 数据库轻松从 MongoDB 生成报表。MoSQL 基于 MongoRiver,这也是 Stripe 的产品,可以在几乎实时的情况下监控 MongoDB 的数据更新。

MoSQL 的目标旨在模拟传统的 RDBMS 设计,其报表与实时查询都是在产品数据的只读副本上进行的。在提供给业务分析师之前,这个只读副本通常都需要经过几次转换,因此大家对此应该不陌生。

MongoRiver

MongoRiver 是个通用库,用于 MongoDB oplog tailing,它使用 Ruby 编写,开发者可以通过 MongoRiver 查看 MongoDB 实例的更新操作。目前关于 MongoRiver 的文档还不多,其 github 站点也只提供了源代码。MongoRiver 基于 MIT 许可。

MoSQL

MoSQL 构建在 MongoRiver 之上,它会执行实际的数据转换。它需要一个 YAML 风格的映射文件,称作“集合映射文件”。在准备阶段,开发者只需创建该文件即可。MoSQL 会自动创建PostgreSQL 中必要的目标表。

MoSQL 可以运行在 one-time 或是 tailing 模式下。在 one-time 模式下(通过“skip-tail”标志开启),它只会执行一次导入。在 tailing 模式下,它会监控上述的 oplog,这样就能与 PostgreSQL 保持同步了。当启动 MoSQL 时,你还可以强制导入,该操作会删除当前表并创建新表。

如果 MoSQL 在 MongoDB 数据库中遇到了不符合模式的值(比如说在 INTEGER 字段上使用了浮点数值),那么它会发出警告,忽略整个对象,然后继续。 如果遇到 MongoDB 对象中的字段不在集合映射中,那么它会丢弃额外的字段,除非在:meta hash 中设置了:extra_props。如果设置了,那么它会收集所有丢弃的字段,将其以 JSON 编码到 hash 中,然后在 _extra_props 中存储生成的文本。你可以使用该 JSON 做些处理。一种方式是使用 plv8 在 PostgreSQL 中解析他们,还可以将 JSON 拿出来并在应用代码中进行解析。

MoSQL 也基于 MIT 许可。

查看英文原文: MoSQL: Synchronizing MongoDB and PostgreSQL Made Easy

2013-02-24 11:082858
用户头像

发布了 88 篇内容, 共 264.1 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

和12岁小同志搞创客开发:手撕代码,做一款节拍电子鼓

不脱发的程序猿

少儿编程 DIY 智能硬件 创客开发 Arduino

在AI与信息交互之间:QQ 浏览器的边界探索

脑极体

由《组织行为学》讲义想到的两个问题(1/28)

赵新龙

TGO鲲鹏会 28天写作

继续跑步

wood

创业 跑步

反脆弱漫谈

木风

质量管理 技术管理 28天写作

模块五作业

ks

架构实战营

Java问题排查分享

捉虫大师

Java 问题排查

10个问题解答火热的元宇宙概念

CECBC

王者荣耀商城异地多活架构设计

胡颖

架构实战营

微博系统中“微博评论”的高可用高性能架构

AHUI

「架构实战营」

31 K8S之StatefulSet控制器

穿过生命散发芬芳

k8s 28天写作 12月日更

基于云的技术架构设计实践-第0篇

hackstoic

云计算 架构 云原生 创业公司 签约计划第二季

历经 7 年双 11 实战,阿里巴巴是如何定义云原生混部调度优先级及服务质量的?

阿里巴巴云原生

阿里云 云原生 混部 CNStack

SpringCloudAliBaba之微服务常识扫盲

XiaoLin_Java

架构 微服务 springcloudAlibaba 签约计划第二季

[架构实战营] 模块五作业

张祥

架构实战营

工业区块链与关键关联技术融合创新

CECBC

模块五作业 ”微博评论“的高性能高可用计算架构

小朱

架构实战营

微服务架构细节

卢卡多多

28天写作 12月日更

新公司安排的工作做不来怎么办?是不是该离职了?

石云升

28天写作 职场经验 12月日更

架构实战总结

Geek_fc100d

「架构实战营」

坚持不下去,你缺的可能不是意志力

Justin

个人成长 心理学 28天写作

Python Qt GUI设计:QCalendar日历类和QDateTimeEdit时间类(基础篇—20)

不脱发的程序猿

Python qt GUI设计 QCalendar日历类 QDateTimeEdit时间类

Mysql探索(一):B-Tree索引

程序员历小冰

MySQL 索引 28天写作

Java 项目中使用 Resilience4j 框架实现隔断机制/断路器

码语者

Java circuit break 断路器 Resilience4j 隔断机制

模块九作业

Geek_fc100d

「架构实战营」

毕业设计-电商秒杀系统

小智

「架构实战营」

Java基础系列:反射

正向成长

Java 反射

深度参与,亲身体验,谨慎接受

mtfelix

28天写作 必然 未来趋势 2022开年学习

TypeScript 之常见类型(上)

冴羽

JavaScript typescript 翻译 大前端

Android C++系列:Linux信号(三)

轻口味

c++ android 28天写作 12月日更

12.01碎碎念

穿过生命散发芬芳

28天写作

MoSQL:简化MongoDB与PostgreSQL之间的同步_架构_Jonathan Allen_InfoQ精选文章