【发布时间】:2019-11-16 16:08:24
【问题描述】:
我们正在开发一个使用 Firebase Firestore 的应用。每天午夜,我们希望为集合中的每个 User 文档将 counter 属性的值设置为 1。
云函数似乎是一个合理的选择,我们很快找到了一种调度云函数的方法:
exports.incrementCounterNightly = functions.pubsub.schedule('0 0 * * *')
.timeZone('Europe/London')
.onRun((context) => {
console.log('This will be run every day at 00:00 AM London Time!');
});
我们要写入的文档的路径是 collections/users/*。
我们的问题是:
- 在 Cloud Functions 中实现这一目标的最佳方法是什么?
- 这是 Cloud Functions 可以适当实现的吗?
- 这是可扩展的吗?如果用户集合增长到 100,000 甚至 5,000,000 个文档怎么办?
非常感谢,
埃德
【问题讨论】:
-
计数器是做什么的?它算什么?目前这是不可扩展的。部分是由于编程限制,但主要是由于成本。写入相对昂贵,因此写入 1,000,000 个用户文档需要花费。如果你能解释你想用计数器做什么,那么可能会有更好的方法。
-
快速编辑上述评论。每天开始时 5,000,000 次写入将花费您每天大约 900,000 美元。 ???所以是的,写入很昂贵。
-
嘿@Fogmeister,感谢您的快速响应。我们正在使用一个约会应用程序,这个计数器基本上跟踪用户有多少可用的“超级喜欢”。我曾考虑过理论上这可以在设备上本地跟踪,但在服务器上保留一个表示也很好 - 用于客户支持等。也感谢强调成本 - Firestore 的一个非常重要的考虑因素!是的,正如预期的那样敲诈勒索! ??????
-
顺便说一句,我不知道是怎么回事,但我误读了定价(我认为这听起来有点贵),但它是每 100,000 次写入 0.18 美元。所以每天9美元。哈哈!略有不同,但如果您不想每月花费数百美元,差异仍然很大。
标签: google-cloud-firestore google-cloud-functions