我需要每小时备份我的产品服务器Firestore DB。我知道exportDocuments,但它会导致每个导出的文档执行一次读取操作。我有300多万,而且这些数字每天都在增加。是否可以导出在给定时间段(如过去1小时)内添加/更新的文档?我已经有了云调度+云发布/订阅+基于功能的备份系统。它正在备份所有文档。这花费太多了。
exportDocuments
bvn4nwqk1#
如果您需要在Firestore中调度一些操作,可以考虑使用Cloud Scheduler,它允许您将HTTP请求或Cloud Pub/Sub消息调度到您部署的Cloud Functions for Firebase。如果您需要获取在给定时间段内添加/更新的文档,例如过去1小时,那么不要忘记向文档添加时间戳字段。这样,您就可以根据时间戳字段进行查询。
vaqhlq812#
要获取在给定时间段内(如过去1小时内)添加/更新的文档,请向文档添加一个字段,例如lastUpdated,并在每次插入/更新时保持其值为当前值。然后从备份函数中查询增量文档,如where("lastUpdated", ">", "lastExportTimestamp"),lastExportTimestamp是上次导出的时间(可能存储在单独的集合中)。请看这里的一个例子。希望这能澄清,否则留下评论。
lastUpdated
where("lastUpdated", ">", "lastExportTimestamp")
lastExportTimestamp
**P.S.**请注意,如果需要,这种方法可能仍然需要定期进行完整备份(例如每天),以便于恢复过程。
kpbwa7wx3#
在过去的一年里,我一直在开发一个解决方案Slik Protect,以帮助解决这些用例。它可以用来备份您的Firestore数据库与任何备份频率,你可以选择备份只有选定的集合以及。您可以设置自己的保留策略并随时恢复数据。对于根据您的使用情形进行的增量备份,我们一直在努力解决此问题,并将其作为产品的一部分。有任何问题都可以找我。
3条答案
按热度按时间bvn4nwqk1#
如果您需要在Firestore中调度一些操作,可以考虑使用Cloud Scheduler,它允许您将HTTP请求或Cloud Pub/Sub消息调度到您部署的Cloud Functions for Firebase。
如果您需要获取在给定时间段内添加/更新的文档,例如过去1小时,那么不要忘记向文档添加时间戳字段。这样,您就可以根据时间戳字段进行查询。
vaqhlq812#
要获取在给定时间段内(如过去1小时内)添加/更新的文档,请向文档添加一个字段,例如
lastUpdated
,并在每次插入/更新时保持其值为当前值。然后从备份函数中查询增量文档,如
where("lastUpdated", ">", "lastExportTimestamp")
,lastExportTimestamp
是上次导出的时间(可能存储在单独的集合中)。请看这里的一个例子。
希望这能澄清,否则留下评论。
**P.S.**请注意,如果需要,这种方法可能仍然需要定期进行完整备份(例如每天),以便于恢复过程。
kpbwa7wx3#
在过去的一年里,我一直在开发一个解决方案Slik Protect,以帮助解决这些用例。
它可以用来备份您的Firestore数据库与任何备份频率,你可以选择备份只有选定的集合以及。您可以设置自己的保留策略并随时恢复数据。
对于根据您的使用情形进行的增量备份,我们一直在努力解决此问题,并将其作为产品的一部分。有任何问题都可以找我。