database - 在实时 mongodb 机器上更新(或替换)整个数据库集合的最佳方法是什么?
问题描述
我每月都会收到一个数据源,我正在解析并放入 MongoDB 数据库。每个月都会更新一些数据,并将一些新条目添加到现有集合中。源文件有几 GB 大。除了这些每月更新之外,数据根本不会改变。
最终,该数据库将上线,如果可能,我希望在这些每月更新期间防止出现任何停机时间。在不停机的情况下更新我的数据库的最佳方法是什么?
这个问题基本上正是我要问的,但不是针对 MongoDB 数据库。接受的答案是上传新版本的数据库,然后重命名新数据库以使用旧数据库的名称。但是,根据这个问题,不可能轻松地重命名 MongoDB 数据库。这使得该方法无法使用。
直观地说,我会尝试使用每个文档的唯一“gid”标识符(这是数据的属性,而不是 MongoDB 生成的“_id”)作为过滤器,迭代地“更新”整个数据库,但这可能是一个低效的做事方式。
我正在运行 MongoDB 版本 4.2.1
解决方案
为什么您认为更新数据意味着停机?
听起来您不希望您的用户能够在负载中访问新数据。
如果是这种情况,策略可能是拥有 2 个数据库;现场和分期;与其将登台数据库重命名为实时数据库,不如只重命名连接到它的客户端应用程序中的连接字符串。
还可以考虑使用mongodump和mongorestore复制数据库;尽管对于较大的数据库,这些可能会更慢。
推荐阅读
- java - 在heroku中部署一个带有资源文件的jar文件
- excel - 用颜色高亮 3*3 块对角单元格
- python - 'If not' 避免零除法
- python - 多类别情况下最后一个密集输出层的单位
- python - 使用 Regex 将大写缩写替换为相同字母但添加标点符号和空格
- asp.net - ASP.NET 网站 (WSP) - 预编译 - 如何使用备用文件夹
- node.js - GraphQL 错误:Shopify 上的订单访问被拒绝
- python - pyModbus 中的自定义数据块示例
- android - 无法为类创建 @Body 转换器
- python - Python:打开文件并将文件对象存储为..what?