Mongodb红移

 过去丶真的過卜去 发布于 2023-01-30 19:25

我们在mongodb中有一些我们希望转移到redshift的集合(每天自动增量).我们怎么做?我们应该将mongo导出到csv吗?

2 个回答
  • 我编写了一些代码,用于将数据从Mixpanel导出到Redshift中以供客户端使用.最初客户端正在导出到Mongo,但我们发现Redshift为查询提供了非常大的性能改进.首先,我们将数据从Mongo传输到Redshift,然后我们想出了一个直接的解决方案,将数据从Mixpanel传输到Redshift.

    要首先在Redshift中存储JSON数据,您需要创建一个SQL DDL来将模式存储在Redshift中,CREATE TABLE脚本.

    您可以使用Variety之类的工具来帮助您,因为它可以让您深入了解Mongo架构.但是它确实很难处理大数据集 - 您可能需要对数据集进行二次采样.

    或者,DDLgenerator可以从各种来源生成DDL,包括CSV或JSON.这也困扰着大型数据集(我正在处理的数据集是120GB).

    所以理论上你可以使用MongoExport从Mongo生成CSV或JSON,然后通过DDL生成器运行它来获取DDL.

    在实践中,我发现使用JSON导出更容易,因为您不需要指定要提取的字段.您需要选择JSON数组格式.特别:

       mongoexport --db <your db> --collection <your_collection> --jsonArray > data.json
       head data.json > sample.json
       ddlgenerator postgresql sample.json       
    

    这里 - 因为我正在使用head- 我使用数据样本来显示流程的工作原理.但是,如果数据库具有架构变体,则需要基于整个数据库计算架构,这可能需要几个小时.

    接下来,将数据上传到Redshift.

    如果已导出JSON,则需要使用Redshift的JSON复制功能.您需要定义一个JSONpath来执行此操作.

    欲了解更多信息,请查阅扫雪博客- 他们使用JSONpaths到JSON映射到一个关系模式.查看他们的博客文章,了解人们为什么要将JSON读取到Redshift.

    开启JSON成列允许比快得多查询其他方法,如使用JSON EXTRACT PATH TEXT.

    对于增量备份,它取决于是添加数据还是数据正在更改.对于分析,它通常是前者.我使用的方法是每天导出一次分析数据,然后以增量方式将其复制到Redshift中.

    这里有一些相关的资源,但最后我没有使用它们:

    Spotify有一个名为Luigi的开源项目 - 这段代码声称将JSON上传到Redshift但我还没有使用它,所以我不知道它是否有效.

    Amiato有一个网页,上面写着他们提供了一个商业解决方案,用于将JSON数据加载到Redshift中 - 但除此之外没有太多信息.

    这篇博客文章讨论了在JSP数据源上执行ETL,例如将Mixpanel转换为Redshift.

    相关的Redit问题

    有关在Redshift中处理JSON数组的博客文章

    2023-01-30 19:26 回答
  • 老实说,我建议在这里使用第三方.我使用过Panoply(panoply.io)并推荐它.它会把你的mongo收藏品变成他们在红移中的表格.

    2023-01-30 19:27 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有