更新MongoDB中的所有数据或替换MongoDB实例

时间:2017-12-03 09:11:50

标签: mongodb google-bigquery

MongoDB包含为客户端应用程序准备的数据。原始数据存储在Google BigQuery(GBQ)中。每天都有很多新数据被添加到GBQ中,并且每天一次,MongoDB中的所有内容都需要根据GBQ中的最新数据进行更新。必须删除所有过时(未更新)的记录。

使用接近0的停机时间处理MongoDB更新的正确方法是什么?

  1. 在疯狂的解决方案中:可能我应该有两个MongoDB实例,一个正在生产中,另一个正在更新。更新第二个数据库后,我将使用更改的配置运行Google Kubernetes Engine部署,这样所有客户端都可以顺利地从之前的数据移动到更新的数据,而不会弄乱部分更新的数据,也不会停机。虽然,我从未听说过这样的解决方案,所以我不确定这是否是正确的解决方案。
  2. 另一种解决方案是在MongoDB的单个实例下拥有每个集合的两个版本。更新集合后,服务器将切换到该集合。

1 个答案:

答案 0 :(得分:0)

第二个解决方案似乎是一个不错的选择,如果你知道更新的触发器,你可以通过创建一个新的集合(按日期或唯一的序列命名)来最小的停机时间并相应地更新你的代码。

我曾经为一个时尚网站做过一些很好的经验,在那里我们抓取数据(使用scrapinghub)并将它们导入到mongodb(按日期存储的集合)并相应地使用。所以我们的清理工作是凌晨(早上5-6点),当我们的编辑/策展人来到办公室时,他们会开始使用当前的日期集合(当然是通过Web界面:) :)