mysql - 将数据从 SQL 导入到 MongoDB。全有或全无

标签 mysql node.js mongodb dbmigrate

我有以下架构: enter image description here

我将数据从 SQL 数据库导入到 mongodb。我使用导入器将数据迁移到 mongodb,后者通过 API 将数据提供给网站。

导入可能需要几分钟,如果失败,我希望能够回滚(能够回滚多个导入会很棒)或删除未提交行的数据库/集合(如果你将其视为 SQL 事务)。

我尝试将所有内容导入交易集合,成功后,将数据移动到正确的集合中。这花了很多时间才能发挥作用。我还尝试了导入临时数据库然后交换它们的解决方案。但是如果有人例如我遇到了问题在 db-copy 之后但在导入完成之前在网站上注册一个新用户(交换时该用户将丢失)。

如何以安全的方式执行导入并且没有最基本的并发问题?

编辑: 澄清解决方案: 我将在 cron 作业中运行导入器,至少每天一次。我目前为最新的同步保留时间戳,并选择比 SQL-db 中更新的所有内容。随着时间的推移,事情会自动出现在 SQL-db 中。

在导入结束时,我运行一个下载器,从 SQL 数据库中的 url 下载所有图像。

我不想在下载图像之前开始新的同步,因为这可能会导致奇怪的行为。

最佳答案

在这种情况下,您需要在非常不同类型的数据库之间移动数据,您会倾向于想要一些真正可靠、健壮的东西,最重要的是,它具有主要关注传输数据并做好传输。 Node.js 很棒,但我强烈建议您找到一些只专注于执行传输/映射/等的工具。并使用它,无论它使用什么语言/技术。尽管我很喜欢 node.js,但并没有特别推荐它用于此类事情(例如,它的最佳特性并不必然使它适合这种传输/迁移).

最好找到一个成熟完善的库来处理这类事情:)

在我的研究中出现的一些工具/资源:

如果人们能在评论中提出更多建议,我会很高兴:)

关于mysql - 将数据从 SQL 导入到 MongoDB。全有或全无,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34359673/

相关文章:

mysql 在cast()时按大小写顺序

javascript - Node.js AWS SNS 订阅、确认

mongodb,复制和错误 : { "$err" : "not master and slaveOk=false", "code":13435 }

mongodb - 计算与 Mgo 中的查询匹配的文档数

php - foreach 循环中的 pdo fetchAll

php - mysql CREATE临时表+事务导致死锁

.net - edge.js:如何使用对 COM 对象的引用从 .NET 程序集中调用方法?

node.js - express + MongoDB

php - 如何在删除一对一表中的相应行时自动删除表中的行?

Node.js 没有写入文件?