我们目前正计划将50 TB的Oracle数据仓库迁移到Amazon Redshift .
来自不同OLTP数据源的数据首先在Oracle临时数据库中暂存,然后再加载到数据仓库中 . 目前,数据已在临时数据库中使用大量PL / SQL存储过程进行转换,并加载到数据仓库中 .
OLTP数据源1 - > JMS(MQ)实时 - > Oracle STG Database --> Oracle DW
注意:JMS MQ使用者将数据写入临时数据库
OLTP数据源2 - > CDC增量数据(10分钟一次) - > Oracle STG Database --> Oracle DW
注意:源端数据上的更改数据捕获将在10分钟内加载到登台数据库中一次 .
将此堆栈完全(突出显示)迁移到Amazon Redshift会有什么更好的框架?我们可以迁移到AWS中的哪些不同组件?
1 回答
哇,听起来像是一件大事 . 这里有很多事情都需要考虑 .
您最好的起点可能是AWS数据库迁移服务(https://aws.amazon.com/dms/) . 在转换模式和突出显示您必须手动迁移的区域方面,这可以为您做很多工作 .
您应该将S3视为主要的临时区域 . 在加载到Redshift之前,您需要在S3中放置所有(或几乎所有)数据 . 仔细考虑数据的布局方式 . 特别是,我建议您使用分区前缀(
s3://my_bucket/YYYYMMDDHHMI/files
或s3://my_bucket/year=YYYY/month=MM/day=DD/hour=HH/minute=MI/files
) .您的PL / SQL逻辑将无法移植到Redshift . 您需要将非SQL部分转换为
bash
或Python
,并使用外部工具在Redshift中运行SQL部件 . 我建议您从Apache Airflow(Python
)或Azkaban(bash
)开始 . 如果您想保持纯粹的AWS,那么您可以尝试使用Data Pipeline(不推荐)或等待AWS Glue发布(看起来很有希望 - 未经测试) .您可以将Amazon Kinesis Firehose用于当前由JMS完成的工作,但Kinesis的理想用途与JMS(AFAICT)的典型用法完全不同 .
祝好运