【问题标题】:Firestores 10 000 writes/second limitationFirestores 10 000 次写入/秒限制
【发布时间】:2020-01-26 20:43:07
【问题描述】:

我目前正在使用 Firestore 构建一个应用程序。 Google 一直在推广 Firestore 的可扩展性,但我认为 10 000 writes/second limit 不符合这个承诺。如果您将用户喜欢、通知和其他内容存储在 Firestore 中,我猜您很容易超出该限制。有什么我想念的吗?此限制仅适用于新文件还是也适用于文件更新?

提前致谢。

【问题讨论】:

  • 您的问题可能不遵循 SO 的指导方针,因为它谈论的是假设情况,并且没有提供您已经尝试过的示例。例如。一个好的描述应该是这样开始的:“我达到了 10K req/sec 的限制,对数据库的请求被限制了。”人们寻求具体的问题和具体的解决方案,而不是假设的建议。

标签: google-cloud-firestore limit scalability


【解决方案1】:

Firestore 专为高度可扩展的读取操作而设计。具体来说,它的主要声名是运行特定查询将花费固定的时间,无论您查询的集合中有多少数据。因此,如果您从包含 10K 文档的集合中读取 10 个文档并且需要(例如)1 秒,那么当有 10M 文档或 10B 文档时,您可以保证相同的读取(在相同的客户端条件下)需要 1 秒在那个集合中。

Cloud Firestore 的写入吞吐量限制主要由物理限制决定。 10K 个文档/秒是一个,但您更有可能遇到每秒大约可以写入每个文档一次的限制。这些限制的原因在于 Firestore 的其他保证。例如:Firestore 保证您的写入操作立即一致;这样一旦写入操作完成,客户端就不会从服务器获取旧数据。为此,它必须在确认写入之前更新多个数据中心中数据的所有索引,这仅需要一定的时间,这反过来又会导致它对写入吞吐量的限制。同样,这些选择也存在其他限制。

如果您需要更高的写入吞吐量并愿意接受不同的性能保证,您可能需要寻找其他满足这些需求的数据库。

【讨论】:

  • 感谢您的回答。有趣的视角。我想我会选择另一个数据库引擎。我使用缓存作为解决方法,以解决在先写入之前聚合数据的文档每秒写入 1 次的限制,因此这不会成为问题。但是 10K 的写入限制似乎很容易超过。
【解决方案2】:

我不熟悉 GCP 产品,但我对其他云的经验告诉您可以做这些事情:

  1. 确保您选择了正确的数据库。根据描述,听起来您需要一个具有自动分区和最终一致性的 NoSQL DB。
  2. 文档说“标准限制”意味着您可以联系可能会扩大限制的技术支持。至少 Azure 是这样工作的。
  3. 云供应商提供咨询以确保他们的客户在技术上取得成功。你有这样的频道吗?你和你的 CTO 谈过了吗​​?
  4. 如果 GCP 服务不能满足您的要求,您可以考虑使用 GKE 在云中托管的其他数据库引擎。初始设置和运营的成本较高,但从长远来看是有回报的。例如。我采用了这个想法,并在 Azure 中托管了 ElasticSearch,与可用的替代方案相比,这是最好的决定。

这些提示可能无法完全回答您的问题,但我希望分享我的经验可能有助于找到整体解决方案。

【讨论】:

  • 很好的答案 Serge!
  • 好的,非常感谢。我会考虑你的建议。
猜你喜欢
  • 2017-02-09
  • 1970-01-01
  • 2017-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-19
  • 2011-03-01
相关资源
最近更新 更多