将MongoDB Atlas连接到Redshift:2种简单方法
Aditya JadononAmazon Redshift,Data Integration,Data Warehouses,Database Management Systems,MongoDB- June 17th, 2022 -Write for Hevo
公司需要分析他们的数据,并将其存储在安全和统一的存储空间。他们需要将数据从SaaS应用程序、内部部署和数据库转移到数据仓库,以组织和更好地利用数据。MongoDB Atlas是一个数据库即服务,允许用户将他们的数据存储在其他云存储空间供应商。
企业可以通过将数据从MongoDB Atlas加载到Redshift(这是一个完全管理的数据仓库),从他们的业务数据中产生洞察力,以做出更好的商业决策。在这篇文章中,你将了解到连接MongoDB Atlas和Redshift的方法。你将通过一种自动化的方式将MongoDB Atlas连接到Redshift,以及一种通过Amazon S3的手动方法。
目录
什么是MongoDB Atlas?
MongoDB Atlas是一个完全管理的数据库即服务(DBaaS),它允许公司建立、部署和扩展数据库,而不必担心任何内部硬件和性能配置。它使开发人员能够部署和管理数据库,同时提供在云供应商上建立有弹性和性能的应用程序所需的多功能。它可以在AWS、Azure和GCP上使用。
MongoDB Atlas的主要特点
MongoDB图集的一些主要功能如下。
- 安全性。MongoDB Atlas通过合规标准和现有协议确保你的数据安全,以便与企业级功能和内置控制进行安全整合。
- 最佳的性能。MongoDB Altas可以轻松地在任何方向上进行扩展,并提供实时可见的指标和性能组织工具。
- 可靠性。MongoDB Atlas提供任务控制工作负载,并实现自动数据恢复和分布式容错。
要了解更多关于MongoDB Atlas的信息,请点击这里。
什么是亚马逊Redshift?
亚马逊Redshift是由AWS(亚马逊网络服务)提供的一个完全管理的云数据仓库服务。它帮助企业存储和分析他们的数据,并帮助他们组织业务数据。亚马逊Redshift可以使用大规模并行处理(MPP)和柱状存储来处理并发查询和PB级的数据。亚马逊Redshift有自己的计算引擎,可以进行计算并产生关键的洞察力。
亚马逊Redshift的主要特点
亚马逊Redshift的一些主要功能列举如下。
- 大规模并行处理。亚马逊Redshift应用MPP,使用分而治之的策略将负载分配给几个处理器。
- 容错性。Amazon Redshift持续监控集群的健康状况,并自动复制故障驱动器的数据,并根据需要更换节点,以提供容错架构。
- 灵活的查询。Amazon Redshift配有查询编辑器,允许用户从控制台或连接任何其他SQL客户端工具或BI工具灵活查询数据。
要了解更多关于Amazon Redshift的信息,请点击这里。
探索这些方法来连接MongoDB Atlas和Redshift
将MongoDB Atlas连接到Redshift 允许用户将他们的MongoDB数据安全地加载到Amazon Redshift中,这可以解决企业的一些最大的数据问题。在这篇文章中,我们介绍了两种方法来实现这一目标。
方法1:使用Hevo简化MongoDB Atlas到Redshift的连接
Hevo Data,一个自动数据管道,为你提供了一个无忧无虑的解决方案,在几分钟内通过一个易于使用的无代码界面连接MongoDB Atlas和Redshift。Hevo是完全管理的,不仅可以从MongoDB Atlas加载数据,还可以丰富数据并将其转化为可分析的形式,而无需编写一行代码。
方法2:手动连接MongoDB Atlas到Redshift
这种方法实施起来会很费时,而且有些繁琐。用户需要通过Amazon S3桶手动从MongoDB Atlas加载数据到Redshift。
下面对这两种方法都进行了解释。
连接MongoDB Atlas和Redshift的方法
现在你已经了解了什么是MongoDB Atlas和Amazon Redshift。在本节中,你将了解到将MongoDB Atlas连接到Redshift的步骤。由于你不能直接将数据从MongoDB Atlas转移到Redshift,你必须先将数据加载到Amazon S3,然后再加载到Amazon Redshift,以将MongoDB Atlas连接到Redshift。以下是将数据从MongoDB Atlas加载到Redshift的方法。
方法1:使用Hevo简化MongoDB Atlas到Redshift的连接
Hevo Data可以帮助你以一种完全无障碍和自动化的方式连接MongoDB Atlas和Redshift。Hevo支持MongoDB Atlas作为一个源,并在几分钟内从Webhooks加载数据到任何数据仓库。
Hevo是完全管理的,完全自动化的过程,不仅从你想要的来源加载数据,而且还丰富了数据并将其转化为可分析的形式,而不需要写一行代码。Hevo照顾到你所有的数据预处理需求,将MongoDB Atlas连接到Redshift,让你专注于关键业务活动。
使用Hevo数据平台的优势。
- **最少的设置 -**你将需要最少的设置和带宽来使用Hevo平台从Webhooks加载数据。
- 没有数据损失 - Hevo 架构是容错的,允许简单、可靠、无缝地将数据从Webhooks转移到任何数据仓库,没有数据损失。
- **100个开箱即用的集成 -**Hevo平台将数据从其他来源,如SDKs,云应用程序,数据库等引入数据仓库和数据库。因此,Hevo是你所有增长的数据需求的正确合作伙伴。
- 自动模式检测和映射 - 传入数据的模式被自动扫描。如果检测到有变化,它们会被无缝处理,并将这些变化纳入数据库或数据仓库中。
- 卓越的**支持 -**Hevo通过电子邮件、电话和聊天提供24×7技术支持。
方法2:手动连接MongoDB Atlas到Redshift
手动连接MongoDB Atlas到Redshift的过程需要你将数据加载到Amazon S3,然后再将数据加载到Amazon Redshift。以下是手动连接MongoDB Atlas到Redshift的步骤。
步骤1:创建MongoDB Atlas数据湖
- 首先,你必须通过导航到位于左侧导航菜单的数据湖 选项来创建数据湖。
- 然后,点击创建数据湖或配置一个新的数据湖按钮。
- 现在,通过点击Amazon S3添加一个数据存储来开始。
- 现在,你必须授权AWS的凭证。
- 如果你已经为MongoDB Atlas创建了一个角色,并授权其对Amazon S3的读写权限。
- 如果你想创建一个新的角色,那么从数据联盟选项中创建它。
- 然后,输入Amazon S3的信息。在这里,提供Amazon S3桶的名称,如mongodb-atlas-to-redshift-demo。
- 然后,选择读写权限,以便MongoDB Altas可以读写Parquet文件到Amazon S3桶。
- 现在,你必须为你的AWS IAM角色分配一个访问策略。为此,进入你的MongoDB Atlas用户界面。你的访问策略应该与此类似,如下图所示。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectVersion",
"s3:GetBucketLocation"
],
"Resource": [
<role arn>
]
}
]
}
- 现在,为你在Amazon S3桶中的文件定义路径结构,然后点击下一步按钮。
第2步:将MongoDB数据库连接到你的数据湖
- 在本教程中,数据存在于MongoDB数据库,我们将把它转移到MongoDB Atlas。
- 现在添加一个数据存储,并选择MongoDB Atlas集群。
- 然后提供集群的名称,并填写其他基本信息,配置数据湖。
第3步:创建MongoDB Atlas触发器以每分钟创建新文档
- 现在我们要设置一个MongoDB数据库触发器,使其每分钟都能自动生成新的文档,以便连续复制。触发器允许你响应数据库事件或根据时间表执行服务器端逻辑。
- 我们将创建一个预定的触发器,以确保文档自动归档在Amazon S3桶中。
- 现在,从屏幕顶部导航到MongoDB Atlas标签,并点击触发器选项。
- 现在导航到 "触发器 "页面上的 "概述 "选项卡。然后,点击添加触发器,打开触发器配置页面。
- 你可以为你的触发器输入这些配置值,如下图所示。
- 触发器的功能将如下图所示。
exports = function () {
const mongodb = context.services.get("NAME_OF_YOUR_ATLAS_SERVICE");
const db = mongodb.db("NAME_OF_YOUR DATABASE")
const events = db.collection("NAME_OF_YOUR_COLLECTION");
const event = events.insertOne(
{
time: new Date(),
aNumber: Math.random() * 100,
type: "event"
}
);
return JSON.stringify(event);
};
- 现在你可以运行并检查数据库是否每60秒获得新数据。
第4步:创建MongoDB Atlas触发器来复制数据到S3
- 你可以利用MongoDB Data Lake的$out到Amazon S3的聚合管道。
- 让我们利用下面显示的这些配置设置来创建一个新的触发器。
- 让我们来分解一下我们的触发器功能。首先,你必须连接到MongoDB Atlas数据湖,并确保数据湖的名字在context.services.get中。
- 你必须连接你的MongoDB Atlas数据湖,使用$out到Amazon S3。
- 现在你必须查询超过60秒的数据。所以为此,你必须创建一个聚合管道函数。
- 然后你必须使用$out聚合运算符,这样你就可以把你的数据从之前的聚合阶段复制到Amazon S3。
- 现在要通过Amazon S3将你的数据从MongoDB Atlas转移到Redshift,你需要指定Parquet 作为一种格式,并确定maxFileSize和maxRowGroupSize。
- 接下来,你必须提供Amazon S3的路径,以匹配数据的价值。
exports = function () {
const datalake = context.services.get("NAME_OF_YOUR_DATA_LAKE_SERVICE");
const db = datalake.db("NAME_OF_YOUR_DATA_LAKE_DATABASE")
const events = db.collection("NAME_OF_YOUR_DATA_LAKE_COLLECTION");
const pipeline = [
{
$match: {
"time": {
$gt: new Date(Date.now() - 60 * 60 * 1000),
$lt: new Date(Date.now())
}
}
}, {
"$out": {
"s3": {
"bucket": "mongodb-data-lake-demo",
"region": "us-east-1",
"filename": "events",
"format": {
"name": "parquet",
"maxFileSize": "10GB",
"maxRowGroupSize": "100MB"
}
}
}
}
];
return events.aggregate(pipeline);
};
- 现在你可以在你的Amazon S3桶中看到新的Parquet文件。
第5步:使用AWS数据管道来连接Amazon S3和Redshift
- 我们在这里要使用的是RedshiftCopyActivity。这个活动支持S3作为一个源类型。
- 在RedshiftCopyActivity中可以有不同的插入模式--KEEP EXISTING, OVERWRITE EXISTING, TRUNCATE, APPEND。
- KEEP EXISTING和OVERWRITE EXISTING是为了让用户定义具有相同主键的行是被覆盖还是保持原样。
这就是了!你已经成功地将MongoDB Atlas连接到Redshift。
总结
在这篇文章中,你了解了亚马逊Redshift和MongoDB Atlas。你经历了将MongoDB Atlas连接到Redshift的两种方法。从MongoDB Atlas加载数据到Redshift的手动过程涉及许多步骤,这将消耗时间,对于实时数据传输来说不可行。
公司从多个数据源(如MongoDB Atlas)和其他数据仓库(如Amazon Redshift)存储宝贵的数据。将数据从源头转移到目的地的手动过程是一项繁琐的任务。Hevo Data是一个无代码数据管道,可以帮助你从MongoDB Atlas向Redshift传输数据。它可以完全自动化地从100多个数据源加载和转换数据到你选择的目的地,而不需要写一行代码。
想体验一下Hevo吗?在这里注册,获得14天的免费试用,并亲身体验功能丰富的Hevo套件。
在下面的评论区分享你学习MongoDB Atlas与Redshift连接的经验!