我是 Redshift 和 AWS 生态系统的新手。我正在寻找将数据更改从本地 Oracle EBS 表流式传输到 Redshift 的选项或最佳实践。
- 是否应该使用 S3 作为暂存区?因此 Oracle->S3->Redshift?这对于将 Oracle 表实时流式传输到 Redshift 有好处吗?
- 有什么方法可以绕过 S3 分段并执行 Oracle->AWS Kinesis(Firehose)->Redshift?如果是这样,是否有这样的场景我可以阅读?
- 使用 Kafka 代替 AWS Kinesis 怎么样?
- AWS Kinesis 或 Kafka 能否直接从本地 Oracle 实例中提取数据?
- 是否有其他替代方案/组件、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/