Heroku for PostgreSQL到Redshift:3种简单的连接方式
Davor DSouza关于亚马逊Redshift, 数据集成,数据仓库,数据库管理系统,ETL,ETL教程,Heroku,PostgreSQL- 2022年6月15日 -Write for Hevo
亚马逊Redshift和Heroku Postgres被归类为 "大数据即服务 "和 "PostgreSQL即服务 "解决方案。
Heroku是一个云主机平台,提供支持和服务,协助你进行基础设施管理。亚马逊Redshift是一个云数据仓库服务,处理、存储和分析海量数据。管理员通过Heroku为PostgreSQL到Redshift的连接为你的多云环境中的所有系统创建基于角色的权限,提供一键访问你需要的任何东西。
在这篇博客中,你将了解Heroku for PostgreSQL to Redshift连接以及这两个平台的概况。
目录
什么是Heroku?
图片来源
Heroku是一个基于云的平台即服务(PaaS),支持各种编程语言。Heroku是最早的云平台之一,自2007年6月开始发展,最初只支持Ruby编程语言,但后来扩展到包括Java、Node.js、Scala、Clojure、Python、PHP和Go。
因此,Heroku被称为多语言平台,因为它允许开发者以类似的方式建立、执行和扩展各种语言的应用程序。Heroku Postgres是Heroku的云数据库(DBaaS)服务,基于PostgreSQL。Heroku Postgres支持连续保护、回滚和高可用性,以及分叉、跟随者和数据剪辑。
Heroku的主要特点
Heroku现在被公认为是最可靠的平台之一,是各种规模的企业的服务提供者。窥视一下这个流行平台的特点吧。
- 免费开始。用户可以从Heroku的免费层开始,它有一些限制和基本功能。对于想建立一个简单的云应用程序的个人来说,这是一个很好的计划。
- **使用简单:**Heroku是一个著名的平台即服务提供商,以其简单性而闻名。Heroku的免费版最适合于小型开发项目。
- 以开发者为中心: Heroku致力于协助开发者磨练技能,构建功能丰富的应用程序。这种体验对开发者来说是有益的,因为他们可以使用一些重要的工具来加速基本的开发过程。
- 简单扩展。Heroku PaaS在Dyno上运行开发者编写的代码。每个Dyno本质上是一个容器,容纳内存和CPU等资源。
- 优秀的插件和第三方支持。H eroku生态系统包括许多云服务,这些服务对开发者可能相当有用。这些对于开发、管理和运行应用程序非常有用。
什么是亚马逊Redshift?
亚马逊Redshift是一个PB级的数据仓库系统,由亚马逊网络服务支持。它还利用了大型数据库迁移,因为它有利于数据管理。
亚马逊Redshift的架构是建立在大规模并行处理(MPP)之上。亚马逊Redshift数据库是面向列的数据库,旨在连接到基于SQL的客户端和BI工具。这为用户提供了对数据(结构化和非结构化)的持续访问,并支持复杂分析查询的执行。Amazon Redshift还支持正常的ODBC和JDBC连接。
客户从一个完全管理的数据仓库解决方案中受益,因为它可以自动完成管理任务,使他们能够专注于数据驱动的业务决策,而不是重复性的任务。客户端应用程序和数据仓库集群必须能够相互可靠地通信。亚马逊Redshift数据仓库的每个集群都有自己的一套计算资源和自己的亚马逊Redshift引擎,至少运行一个数据库。
亚马逊Redshift的主要特点
以下是Amazon Redshift的一些特点。
- 集成的分析生态系统。AWS的内置生态系统服务简化了端到端的分析工作流程管理,同时避免了合规性和操作上的绊脚石。
- **SageMaker支持。**它使用户能够利用Amazon Redshift仓库的数据构建和训练Amazon SageMaker模型进行预测性分析,使其成为当今数据专家的重要工具。
- 使用ML获得最大性能。Amazon Redshift具有强大的机器学习(ML)功能,可以实现高吞吐量和高速度。其先进的算法根据特定的派别预测即将出现的问题,使重要的任务得到优先处理。
探索这些方法来连接Heroku for PostgreSQL和Redshift
由于业务需求,企业需要将数据从Heroku for PostgreSQL迁移到Redshift数据库。在这里,你将学习3种方法,帮助你将数据从Heroku for PostgreSQL迁移到Redshift。
方法1:使用Hevo将Heroku for PostgreSQL迁移到Redshift
Hevo数据,一个自动化的无代码数据管道,帮助你从Heroku PostgreSQL实时加载数据到Redshift,并为你提供无忧的体验。你可以使用Hevo的数据管道轻松地摄取数据,并将其复制到你想要的数据仓库,而无需编写一行代码。
方法2:Heroku用于PostgreSQL到Redshift的SSL验证
SSL是一个加密协议,它对所有网络请求从头到尾进行加密和验证。在发送敏感数据的应用程序上启用SSL,以确保所有信息被安全地发送。
Heroku SSL是一个功能集,为所有Heroku应用程序启用SSL。Heroku SSL采用了服务器名称指示(SNI),这是TLS协议的一个流行扩展。
方法3:Heroku for PostgreSQL到Redshift不需要SSL验证
默认情况下,大多数客户端都会通过SSL连接,这种方法可以节省一点时间,但你最终会手动设置管道!
Heroku用于PostgreSQL到Redshift的连接
你可以设置Heroku PostgreSQL,并以各种方式将数据从Heroku传输到Redshift,以进行有洞察力的分析。你可以使用下面列出的三种方法中的任何一种来完成这个任务。
方法1:使用Hevo将Heroku的PostgreSQL连接到Redshift
Hevo提供了一个自动化的无代码数据管道,帮助你将**Heroku的PostgreSQL** 数据迅速转移到**Redshift**。Hevo是完全管理的,完全自动化的过程,不仅可以从你想要的源头加载数据,还可以丰富数据并将其转化为可分析的形式,而不需要编写一行代码。它的容错架构确保以安全、一致的方式处理数据,实现零数据损失。
如上一种方法中提到的,手动将字段从源头映射到目的地,是一个耗时的过程。Hevo有一个叫做自动映射的功能,可以帮助你避免这种麻烦。当你启用自动映射时,Hevo会自动在目的地创建一个表,并将其映射到源。
它提供了一个一致和可靠的解决方案,以实时管理数据,并始终在你所期望的目的地拥有可供分析的数据。它允许你专注于关键的业务需求,并使用BI工具进行有洞察力的分析。
你只需要遵循一个简单的过程,使用Hevo将Heroku for PostgreSQL连接到Redshift。
第1步:获得PostgreSQL数据库的凭证
- 登录到你的Heroku账户。
- 选择包含PostgreSQL数据库的应用,并打开数据库仪表盘。
- 访问数据标签,点击你想使用的PostgreSQL数据库。
- 点击设置,然后,查看凭证。
- 在Hevo中设置你的Heroku PostgreSQL源时,使用下面提供的凭证。
第2步:将Amazon Redshift设置为一个目的地
执行以下步骤来配置Amazon Redshift作为Hevo中的一个目的地。
- 点击资产调色板中的DESTINATIONS。
- 在目的地列表视图中点击+CREATE。
- 在添加目的地页面,选择Amazon Redshift。
- 在配置你的Amazon Redshift目的地页面,指定以下内容。
通过上述步骤,你可以轻松地使用Hevo将Quickbooks连接到Redshift!
以下是尝试Hevo的更多理由。
- 顺畅的 **模式管理。**Hevo消除了模式管理的繁琐任务,自动检测传入数据的模式,并将其映射到所需数据仓库的 模式中。
- 卓越的数据转换。一 流的本地支持,让复杂的数据转换触手可及。为每个人设计的代码和无代码的灵活性。
- 快速设置。Hevo具有自动化功能,可以在最短的时间内完成设置。此外,由于其简单和互动的用户界面,它对新客户的工作和执行操作非常容易。
- **可扩展性。**随着数据源的数量和你的数据量的增长,Hevo可以横向扩展,每分钟处理数百万条记录,而且延迟非常小。
- **实时支持。**Hevo团队24小时不间断地通过聊天、电子邮件和支持电话向客户提供特殊支持。
试试Hevo,轻松将Heroku for PostgreSQL连接到Redshift!
方法2:Heroku for PostgreSQL到Redshift的SSL验证
第1步:创建一个Heroku数据库
如果你想给每个应用程序提供它的数据库和凭证。为此,你将使用psql二进制文件远程连接到RDS实例(确保该实例上的5432端口通过其安全组为0.0.0.0/0开放)。
#Heroku for PostgreSQL to Redshift
$ psql -U $RDS_ROOT_USER -h $NAME.$ID.$DATACENTER.rds.amazonaws.com --dbname=postgresql
它将要求你输入ROOT_USER是你在创建这个实例时指定的。如果你在创建RDS实例时把这个字段留空,dbname就是PostgreSQL。
连接后,你可以检查现有的数据库和用户。
#Heroku for PostgreSQL to Redshift
psql$ list
psql$ du
好的,让我们建立一个新的用户和一个新的数据库,授予这个用户完全的权限。假设你的Heroku应用名为 **whiteunicorn1234。**首先,在你的笔记本电脑上运行下面的命令,生成一个URL友好的密码。
$ openssl rand -base64 32 | tr -d '=/+'
在psql提示符中创建一个PG用户和一个专用数据库。不要简单地复制和粘贴。
#Heroku for PostgreSQL to Redshift
psql$ create role whiteunicorn1234 with password 'PASTE_P'W'D_HERE' login;
psql$ create database whiteunicorn1234;
psql$ grant all on database whiteunicorn1234 to whiteunicorn1234;
psql$ q
第2步:为你的应用程序添加RDS SSL证书
#Heroku for PostgreSQL to Redshift
$ cd your_app
$ mkdir -p config
$ curl https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem > ./config/rds-combined-ca-bundle.pem
$ git add config/rds-combined-ca-bundle.pem
$ git commit -m "Add RDS certificate to app files"
$ git push heroku master
第3步:在RDS上转储和加载它
这将迫使你的应用程序下线。
$ cd your_app
$ heroku maintenance:on
$ heroku pg:backups capture
$ curl -o /tmp/latest.dump `heroku pg:backups public-url`
在改变Heroku上的DATABASE URL环境变量之前,目标是将Heroku上存储的所有数据发送到Amazon RDS。
$ pg_restore --verbose --clean --no-acl --no-owner
-h $NAME.$ID.$DATACENTER.rds.amazonaws.com
-U whiteunicorn1234
-d whiteunicorn1234
/tmp/latest.dump
#Heroku for PostgreSQL to Redshift
这将提示你输入之前用OpenSSL命令生成的whiteunicorn1234密码。
为了查看pg restore命令是否成功,打开一个新的psql提示符,并运行以下命令。
#Heroku for PostgreSQL to Redshift
$ psql -U whiteunicorn1234 -h $NAME.$ID.$DATACENTER.rds.amazonaws.com
psql$ SELECT
nspname AS schemaname,relname,reltuples
FROM pg_class C
LEFT JOIN pg_namespace N ON (N.oid = C.relnamespace)
WHERE
nspname NOT IN ('pg_catalog', 'information_schema') AND
relkind='r'
ORDER BY reltuples DESC;
第4步:测试Heroku的PostgreSQL到Redshift
你必须在Heroku上销毁你的Heroku数据库,因为Heroku不允许你覆盖DATABASE_URL。这可能很吓人,所以要仔细检查pg_restore命令是否起作用。
#Heroku for PostgreSQL to Redshift
$ heroku addons:destroy heroku-postgresql
$ heroku config:set
DATABASE_URL="postgres://whiteunicorn1234:$PASSWORD@$NAME.$ID.$DATACENTER.rds.amazonaws.com/whiteunicorn1234?sslca=config/rds-combined-ca-bundle.pem"
$ heroku maintenance:off
这就是了!Heroku应用程序似乎在使用Amazon Redshift上的PostgreSQL数据库!这就是Heroku。
方法3:Heroku for PostgreSQL到Redshift不需要SSL验证
如果你想连接到Heroku Postgres,创建一个与数据源供应商相对应的数据源连接。在这种情况下,你打算与PostgreSQL一起工作,所以你必须建立一个连接。
与Heroku Postgres的连接需要使用SSL(如上图)。然而,为了建立一个成功的SSL连接,你必须首先向你的Heroku应用程序上传一个证书。每个Heroku应用都需要其SSL证书。有关如何配置这些证书的说明,请参见Heroku SSL文章。
如果你不打算将证书添加到密钥存储中,你可以使用NonValidatingFactory选项来绕过服务器验证并建立一个加密连接。
- 使用Heroku Postgres插件在你的Heroku账户中创建一个应用程序。
- 从Heroku Postgres add-settings中获取数据库凭证。
- 访问数据源属性。你可以通过选择以下之一来访问数据源属性。
- 转到文件|数据源。
- Ctrl+Alt+Shift+S是快捷键。
- 点击数据库资源管理器中的数据源属性图标(视图|工具窗口|数据库资源管理器)。数据源属性的图标。
- 在数据源和驱动程序对话框中点击添加图标(The Add icon),并选择PostgreSQL。
- 点击数据源设置区底部的下载丢失的驱动程序文件链接。
- 点击数据源设置中的高级选项卡,修改以下属性。
- 要同时验证SSL证书和服务器,使用ssl:true
- **sslmode:verify-ca:**检查证书链直到存储在客户端的根证书来验证服务器。
- 要允许SSL连接而不验证服务器证书,使用sslfactory:org.postgresql.ssl.NonValidatingFactory。
- 在主机、数据库、用户、密码和端口区域,输入Heroku Postgres插件的连接信息。
点击测试连接链接,确保与数据源的连接是成功的。
Heroku用于PostgreSQL到Redshift的好处
下面是Heroku for PostgreSQL到Redshift连接的一些好处。
- **轻松获取。**你可以将一个Heroku Postgres表映射到多个Amazon Redshift表。
- **简单复杂:**它允许复杂的数学和字符串操作和条件用于数据映射
- **查询。**Lookup映射可用于将目标列映射为基于源数据从其他目标对象中检索的值。
- **常量:**在整合数据时,您可以使用常量值来填充一些Heroku Postgres字段,这些字段没有对应的Amazon Redshift字段(或者反之)。
总结
Redshift非常棒,但在选择数据仓库时,有时必须针对不同因素进行优化。有些人喜欢使用类似SQL语法的RDBMS,比如Google BigQuery、PostgreSQL、Snowflake、Microsoft Azure SQL Data Warehouse,或者与Redshift实例一起使用的Panoply。其他人则选择了数据湖,如Amazon S3或Databricks的Delta Lake。
如果所有这些听起来有点令人难以承受,也不要惊慌。如果你拥有完成这个过程所需的所有技能,那么创建和维护这样一个脚本的机会并不是你时间的最佳利用。
有各种数据源,组织利用它们来捕获各种有价值的数据点。但是,将数据从这些来源转移到数据仓库进行整体分析是一项繁忙的任务。
一个自动化的数据管道有助于解决这个问题,这就是 Hevo的作用。 Hevo数据是一个无代码的数据管道 它有100多个预建的集成 ,你可以从中选择。
Hevo可以帮助你整合来自100多个数据源的数据,并将它们加载到一个目的地,以合理的价格分析实时数据。它将使你的生活更轻松,数据迁移无障碍。它是用户友好的,可靠的,和安全的。
注册一个14天的免费试用,看看有什么不同吧
在下面的评论区分享你在 Heroku上从 PostgreSQL到Redshift的经验。