写点什么

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:082878
用户头像

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

关注

评论

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

Spring 源码学习 08:register 注册配置类

程序员小航

Java spring 源码 源码阅读

话题讨论 | go、php 、java、python、cpp谁才能成为后端的主流

sinsy

Java c++ php 话题讨论 Go 语言

架构师训练营第 1 期第 11 周作业

owl

极客大学架构师训练营

话题讨论 | 深入浅出Linux内存管理,图解物理内存和虚拟内存

程序员柠檬

话题讨论

话题讨论 | 遇到的印象最深的开源项目

soolaugust

话题讨论

App自动化《元素定位方式、元素操作、混合应用、分层设计、代码方式执行Pytest 命令》

清菡软件测试

App

腾讯牵头零信任产业标准工作组正式发布零信任联盟标准

架构师训练营第 11 周学习笔记

郎哲158

话题讨论 | 2020年你有什么推荐的书

soolaugust

话题讨论

CSS flex 排版与动画 — 重学 CSS

三钻

CSS 大前端 排版 Flex

第七周总结

小兵

第十一周 安全稳定作业

蓝黑

极客大学架构师训练营

源码深度解析 Handler 机制及应用

vivo互联网技术

android 客户端开发

公安情报研判管控分析平台建设解决方案

t13823115967

智慧公安情报研判系统开发 智慧公安 情报研判管控分析平台

低成本快速上链 智臻链开放联盟网络正式对外开放

京东科技开发者

区块链 京东

智慧公安情报指挥合成作战管控平台开发

t13823115967

智慧公安情报研判系统开发 智慧公安 合成作战管控平台

ShardingSphere RAW JDBC 分布式事务 Narayana XA 代码示例

Java 数据库 分布式事务 ShardingSphere

架构师训练营 11 周作业

郎哲158

我是程序员,我用这种方式铭记历史

kokohuang

Hexo GitHub Pages python 爬虫 中国历史 铭记历史

探秘密码学:深入了解对称加密与密钥协商技术

京东科技开发者

网络安全 密码学

话题讨论 | 作为开发你是如何阅读源码的?

程序员小航

话题讨论

花火交易所APP软件系统开发(现成)

系统开发

话题讨论 | 2020就要结束了,你最想对自己说的是什么

soolaugust

话题讨论

腾讯iOA与绿盟、天融信完成产品互认证,助力零信任市场协同发展

KMP —— 字符串分析算法

三钻

算法 大前端 KMP

话题讨论 | 程序员摸鱼的时候都喜欢干些什么

soolaugust

话题讨论

Seata是什么?一文了解其实现原理

vivo互联网技术

分布式 分布式事务 分布式架构

架构师训练营第 1 期第 11 周总结

owl

极客大学架构师训练营

话题讨论 | 未来十年,你认为哪门语言将要脱颖而出

soolaugust

话题讨论

什么是工作流?工作流有什么作用?怎样配置工作流程?

Marilyn

敏捷开发 工作流

手撸一个在线css三角形生成器

徐小夕

CSS css3 大前端 CSS小技巧

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