【发布时间】:2019-08-15 11:02:39
【问题描述】:
我在Firebase Firestore documentation's 'Best Practices' 中看到你应该这样做:
避免按字典顺序关闭文档的高读写率,否则您的应用程序将遇到争用错误。
一个不写文档 ID 的例子是:
客户 1、客户 2、客户 3、...
我正在将外部服务中的数据映射到 Firestore 集合中,并且我想保留它们的原始 ID 名称。它们以entry_ 为前缀,但随后以随机/唯一字符串为后缀,如下所示:
entry_{Unique_String}, entry_{Unique_String}, ... entry_{Unique_String}
每个文档 ID 是否都以 entry_ 为前缀,但是一个随机字符串,是否将这些文档归类为在词法上接近并因此倾向于热点?
或者,如果它们确实被命名,它是否只会被归类:
entry_1, entry_2, entry_3, entry_4 ... <and so on>
我当然可以在读取/写入时将entry_ 剥离/添加到 ID,但这会增加服务器/客户端的复杂性。*
*根据 Alex Mamo 的评论进行编辑以澄清:
由于以下示例,复杂性会增加:
- 在原始数据集的上下文中读取/写入文档或需要将文档发送回外部服务时,引入了 strip / prepend
"entry_"函数。 - 可能需要创建文档字段来跟踪(例如
type = "entry")在同一个集合中使用多个类别的文档 ID - 这可能不是一个缺点,具体取决于用例,例如如果执行类型比较。 - 对于源自相同外部服务、具有相同前缀唯一字符串的其他类别类型(例如
foo_、bar_)重新实现上述内容很繁琐。
【问题讨论】:
-
为什么说“会增加服务器/客户端的复杂性”?
-
好收获!这是我问题的一个脆弱部分。最后更新了。
标签: firebase google-cloud-firestore