更新,设置和设置合并之间的写入效率差异

发布时间:2020-07-07 12:13

Cloud Firestore有此限制:
“每个数据库每秒最大写入量为10,000(每秒 10 MiB )” https://firebase.google.com/docs/firestore/quotas

我想知道每秒 10 MiB 的限制是如何工作的。

假设我有一个文档doc,该文档为 100 KB
我运行的事务中,我只想更新doc 1 KB

  1. 使用update(传递整个对象)
doc.foo.bar = calculateNewBar(doc.foo.bar)
t.update(docRef, doc);
  1. 使用update(定位到特定字段)
t.update(docRef, {
  "doc.foo.bar": calculateNewBar(doc.foo.bar),
});
  1. 使用set(传递整个对象)
doc.foo.bar = calculateNewBar(doc.foo.bar)
t.set(docRef, doc);

  1. 使用set(带有合并)
t.set(docRef, {
  doc: { foo: { bar: calculateNewBar(doc.foo.bar) } },
}, {
  merge: true,
});

哪种方法最有效?
Cloud Firestore是否可以智能地计算上述所有4种情况下的差异,仅写入 1 KB
还是1和3写入整个 100 KB ,而2和4写入整个 1 KB

回答1