Firestore的FieldValue.serverTimestamp()能否保证独特的纳秒级精度和强一致性?

问题描述 投票:0回答:1

我对 Firestore 的 FieldValue.serverTimestamp() 行为有一些疑问:

  1. 纳秒精度: FieldValue.serverTimestamp() 的纳秒部分是否始终以“0000”结尾? Firestore 实际上是否为服务器时间戳提供纳秒分辨率?

  2. 索引和冲突: 我想通过使用 FieldValue.serverTimestamp() 对文档进行排序来对文档进行排名。 如果我创建合适的索引,Firestore 的强一致性模型能否保证这些服务器时间戳不会冲突?

  3. 没有索引的大量请求: 在没有索引的场景下,即使一致性强,如果不同文档同时发出大量 FieldValue.serverTimestamp() 请求,服务器时间戳是否有可能完全匹配从而发生冲突?

我阅读了 Firestore 文档并在线搜索了有关 FieldValue.serverTimestamp() 的精度和一致性保证的详细信息。

我希望找出纳秒是否总是以“0000”结尾,以及强一致性是否可以防止时间戳冲突。但是,我找不到明确的答案。

任何见解或官方文档参考将不胜感激。谢谢!

firebase google-cloud-platform google-cloud-firestore
1个回答
0
投票

TL;DR:您不应依赖服务器端时间戳值的唯一性。

  1. ...如果我创建了适当的索引,Firestore 的强一致性模型是否能保证这些服务器时间戳不会发生冲突?

没有。

  1. ...服务器时间戳是否有可能完全匹配并因此发生冲突?

是的。

很有可能使用相同的时间戳创建多个文档,这与 Firestore 使用的一致性模型的强度无关。

© www.soinside.com 2019 - 2024. All rights reserved.