我目前正试图找到一个(好的)解决方案,介绍如何将外部MySql数据库中的数据与AWS动态数据库中的任何AWS完全分离。
同步。进程应该在每天中午12:00左右运行,并且应该从DynamoDb中获取包含创建日期的最新插入项,以确保我们只从同步时的给定日期/时间获取MySql数据。运行。同步。通常每天会传输大约110,000条记录。
有一点需要注意:我们在工作的地方使用.NET。
根据我的理解,有一些AWS服务可以帮助我做到这一点:
ERM (Link)
AWS ERM似乎是要走的路,但似乎Hive脚本无法与外部MySql数据库通信?或者我错在这里?我发现很难找到任何可用的Hive脚本示例。
数据管道(Data Pipeline)
从我所理解的情况来看,数据管道最适合用于两端的db模式完全相同,这不是这里的情况,因为我们从MySql数据库读取到DynamoDb 。结构不完全是1:1。
第三个选项是创建一个Windows服务,它运行一段C#代码从MySql读取数据并将其存储在DynamoDb中。我唯一担心的是性能:-)循环处理100.000+记录处理它们然后将它们存储在DynamoDb中似乎并不吸引我。
有没有人有这方面的经验,他们想分享? :-)具体的例子非常受欢迎。另外,如果我错过了任何服务/其他实现方式,请告诉我。
答案 0 :(得分:1)
您可以使用id Hive和EMR的一种解决方案。
Hive是一个编写SQL命令来操作数据源的hadoop工具。 Hive在集群上运行的Hadoop应用程序中转换SQL。您可以在AWS Elastic Map Reduce Cluster(托管服务hadoop集群)上运行Hive。
EMR上的Hive可以连接到非关系数据源,例如S3或DynamoDB数据库上的文件。它允许您在DynamoDB上编写SQL语句!
在您的用例中,您需要编写一个可从MySQL读取并写入DynamoDB的Hive脚本。您可以使用标准(Hive)SQL表达式转换数据。
有关EMR上的Hive的更多信息:http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/emr-hive.html
有关DynamoDB和Hive的更多信息:http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/EMRforDynamoDB.Walkthrough.html http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/EMRforDynamoDB.html