回答这个问题之前,要考虑清楚:为什么数据要在各种存储之间迁移?
第一个原因,换组件。比如以前用一个数据库,现在想换一个数据库用用。
另一个原因我更喜欢:因为要拿数据去实现价值啊!
数据存进来仅仅是第一步。数据的价值在于分析,提取有效的内容,生成报告啦、图标啦,等等。
在《数据库,何时用Redshift,何时用Aurora?Fast local read是什么?》这篇中,我们提及了为什么要用Redshift,因为Redshift是列数据库,擅长分析。
当然擅长分析的(不一定是数据库)还有EMR,大数据平台嘛。
题目中提到的场景,只能作为简单的数据迁移来说。从RDS到Redshift,最直接的方法需要你把RDS的数据全部导出来存到S3上,然后跑到Redshift cluster所在的Region里导入进Redshift中,即可。
可见,就是一个数据库导出到S3,然后再导入的过程。
AWS有个组件叫Data Pipeline,可以持久地将数据从一个数据源,导入另一个数据源中。
当然,它不单支持AWS内部的数据移动,还包括On-Prem的数据到AWS。
有个词叫ETL,E=Extract,T=Transform,L=Load。
这三个单词描述了在源数据中提取,转移到新模型,然后实现价值的过程。
这个对应了我之前说的第二个原因,要拿数据实现价值。
AWS有个组件叫Glue,干的就是ETL的事情。
看个图:

可以看到,源是多种数据源,然后经过Glue(这名字起的真好,粘不粘不),将结果输出到分析型数据存储中,然后用Quicksignt这样的工具生成报表。
整个过程中,可以用CloudWatch监控,生成log或者notification等等。
不知你有没有和我类似的感觉:AWS Data Pipeline和AWS Glue貌似在干相似的事情。
我查了一些文档,但理解得还不是很深刻。
在我理解里,Data Pipeline更偏向于数据迁移,而Glue才是ETL。
再一个,Glue是serverless的。他有三个主要模块:Data Catalog, ETL Engine and Scheduler。
其他的,建议自己看看这篇文章:《AWS Data Pipeline vs AWS Glue: Choosing the Best ETL Tool for AWS》
