amazon-s3 - 从 Oracle 表流式传输到 Redshift

标签 amazon-s3 apache-kafka amazon-redshift amazon-kinesis-firehose

我是 Redshift 和 AWS 生态系统的新手。我正在寻找将数据更改从本地 Oracle EBS 表流式传输到 Redshift 的选项或最佳实践。

  1. 是否应该使用 S3 作为暂存区?因此 Oracle->S3->Redshift?这对于将 Oracle 表实时流式传输到 Redshift 有好处吗?
  2. 有什么方法可以绕过 S3 分段并执行 Oracle->AWS Kinesis(Firehose)->Redshift?如果是这样,是否有这样的场景我可以阅读?
  3. 使用 Kafka 代替 AWS Kinesis 怎么样?
  4. AWS Kinesis 或 Kafka 能否直接从本地 Oracle 实例中提取数据?
  5. 是否有其他替代方案/组件、ETL 工具可以将近乎实时或几乎实时的数据加载到 Redshift?

有大量表需要从本地 Oracle 流式传输。我是 Redshift 新手,但熟悉 Oracle、SQL Server、PG。抱歉,如果我在这里完全厌倦了。

请帮忙:)任何想法和/或引用将不胜感激......

最佳答案

根据文档 here 、 1 和 2 本质上是相同的。您不会使用 firehose 绕过 S3,只需屏蔽它即可。如果您在多个集群上有很多表,那么 Firehose 目前毫无用处。当然,除非您计划自动执行向 AWS Support 发送支持请求以增加限制的过程(我正在考虑这个问题,别笑)。

我会使用 COPY 命令 from S3 进行加载.

插入目前很慢,我的意思是。不要使用会在后台生成插入语句的方法。

我的用例: Apache Storm 将事件流式传输到 Redshift,使用 S3 作为暂存区域。适用于每天每个表数十万个事件、每个数据库数十个表、每个集群多个数据库、几个集群。我们使用 API Gateway、AWS Lambda 和 S3 作为第二个流程的暂存区域。对于每天数以万计的事件、几个不同的集群、每个集群上的多个数据库、每个数据库中都以这种方式加载一个表来说,效果同样好。

理论上,您可以使用 SSH 发出 COPY 命令,但随后您必须在(等待)... S3 上准备 list 文件。所以我不知道为什么您不使用 S3 进行暂存数据存储。

至于将数据从本地 Oracle 流式传输到 S3,这是一个完全不同的主题,您应该向精通 Oracle 的人员寻求答案。我会查看 CDC,但我不是 Oracle 专业人士,因此无法判断这是否是一个好方法。

我希望这会有所帮助。

关于amazon-s3 - 从 Oracle 表流式传输到 Redshift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43647184/

相关文章:

java - 连接到在 Docker 中运行的 Kafka

postgresql - Amazon Redshift - SQL - 在多个 ROW_NUMBER() ORDER BY 子句中调用时 RANDOM() 的行为

javascript - 如何使用 lambda 函数从 AWS s3 获取文本文件的内容?

ruby-on-rails - Paperclip:从文件系统存储迁移到 Amazon S3

python - Kafka 一遍又一遍地重放消息 - 心跳 session 已过期 - 标记协调器已死亡

mongodb - MongoDB 和 Spark 中的连接过多

amazon-web-services - 如何在应用 AWS 策略之前验证 ARN?

linux - 使用 AWS CLI 在多个 S3 存储桶上启用版本控制

python - Sql Alchemy 不能在事务 block 内运行

sql - Amazon Redshift 中的十六进制字符串到整数转换