我将数据从 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/