我有以下架构:
我将数据从SQL数据库导入到mongodb中.我使用导入程序将数据迁移到mongodb,mongodb通过API向网站提供数据.
导入可能需要几分钟,如果失败,我希望能够回滚(能够回滚多个导入会很棒)或删除未提交行的数据库/集合(如果你想到它)作为SQL事务).
我尝试将所有内容导入到事务集合中,成功时将数据移动到正确的集合中.这需要花费很多时间才能保持高效.我还尝试了导入临时数据库然后交换它们的解决方案.但是如果有人例如在db-copy之后但在导入完成之前在网站上注册新用户(在交换时该用户将丢失),则会遇到问题.
如何以安全的方式执行导入而不是最基本的并发问题?
编辑:澄清解决方案:我将在一个cron工作中运行导入器,至少每天一次.我目前保留最新同步的时间戳,并选择比SQL-db更新的所有内容.随着时间的推移,事物将自动出现在SQL-db中.
在导入结束时,我运行一个下载程序,从SQL db中的URL下载所有图像.
我不想在下载图像之前开始新的同步,因为这可能导致奇怪的行为.