【发布时间】:2017-12-03 09:11:49
【问题描述】:
MongoDB 包含可供客户端应用程序使用的数据。存储在 Google BigQuery (GBQ) 中的原始数据。每天都会有大量新数据添加到 GBQ 中,并且每天一次,MongoDB 中的几乎所有内容都需要根据 GBQ 中的最新数据进行更新。必须删除所有过时(未更新)的记录。
在停机时间接近 0 的情况下处理 MongoDB 更新的正确方法是什么?
- 在疯狂的解决方案中:可能我应该有两个 MongoDB 实例,一个正在生产中,另一个正在更新。一旦第二个数据库更新,我将使用更改的配置运行 Google Kubernetes Engine 部署,因此所有客户端都将从以前的数据顺利移动到更新的数据,而不会弄乱部分更新的数据,也不会停机。不过,我从来没有听说过这样的解决方案,所以我不确定这是否是正确的。
- 另一个解决方案是在单个 MongoDB 实例下拥有每个集合的两个版本。更新集合后,服务器将切换到该集合。
【问题讨论】:
-
是否有办法识别哪些数据已过时,哪些未过时?还是说一切都过时了?
-
客户端是否指向域名?您可以运行两个 mongoDB 实例,然后在更新完成后更新域后面的 ip
-
只是为了更好地了解上下文:为什么在你的情况下使用 mongodb 而不是常规的 rdbms?