从 Oracle 表流式传输到 Redshift

Streaming from Oracle Tables to Redshift

我是 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. 是否有其他 alternatives/components、ETL 工具可以将近乎实时或几乎实时的数据加载到 Redshift?

有大量表要从本地 Oracle 流式传输。我是 Redshift 的新手,但熟悉 Oracle、SQL Server、PG。对不起,如果我在这里完全被打败了。

请帮助 :) 任何想法 and/or 参考资料将不胜感激...

根据文档 here,1 和 2 本质上是相同的。您不会使用 firehose 绕过 S3,只需屏蔽它即可。如果您在多个集群上有很多 table,那么 Firehose 目前是无用的。当然除非你打算自动化发送支持请求到 AWS Support 以增加限制的过程(我正在考虑它,不要笑)。

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

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

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

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

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

希望对您有所帮助。