Firestore 不会让我指定数字文档 ID?它是如何工作的?
Firestore wont let me specify a numeric document id? How is it working?
有人告诉我(至少在关系数据库中)索引类型在比较两个值时很重要,这是每次搜索都会执行多次的非常基本的操作。
所以我建议将我的索引存储为数字(长 32 位)而不是字符串(8 位/字符),考虑以下因素
key:"1234567890" => 80bits ASCII-string
key: 1234567890 => 32bits uLong
generated:"hgYTTd4p63pdTtOR1wFG" => 160bits
据我所知,firestore 不允许指定文档的键类型(抛出 "path have to be string" 错误)以及大小类型,但默认的 id 生成器是一个优化的字符串,同时使用 upper和小写 ASCII
我的问题:
索引类型现在一文不值了吗?它是如何工作的?我可以安全地将任何基于数字的密钥转换为字符串而不减慢任何速度,还是我宁愿使用默认的 ID 生成器来获取最短的密钥?
Firestore 中的所有文档 ID 都是字符串,并且无法更改。 documentation 中列出了文档 ID 的要求(最大 1500 字节)。
在 Firebase 运行的规模上,使用整数实际上不太可能提供太多真正的性能提升。当一个集合中有数十亿个文档时,Firstore 有比优化文档 ID 中的几个字节更大的问题要处理。实际上,更重要的是确保它具有有效的 space ID,这实际上可以保证存储随机生成的 ID,而不会与可能存在的其他文档发生冲突。
This page 的文档说
The size of a document ID is either the string size for a string ID or 8 bytes for an integer ID.
Note: The Cloud Firestore client libraries always use string document IDs.
但我不知道如何使用整数 ID。我正在使用客户端库。
有人告诉我(至少在关系数据库中)索引类型在比较两个值时很重要,这是每次搜索都会执行多次的非常基本的操作。
所以我建议将我的索引存储为数字(长 32 位)而不是字符串(8 位/字符),考虑以下因素
key:"1234567890" => 80bits ASCII-string
key: 1234567890 => 32bits uLong
generated:"hgYTTd4p63pdTtOR1wFG" => 160bits
据我所知,firestore 不允许指定文档的键类型(抛出 "path have to be string" 错误)以及大小类型,但默认的 id 生成器是一个优化的字符串,同时使用 upper和小写 ASCII
我的问题: 索引类型现在一文不值了吗?它是如何工作的?我可以安全地将任何基于数字的密钥转换为字符串而不减慢任何速度,还是我宁愿使用默认的 ID 生成器来获取最短的密钥?
Firestore 中的所有文档 ID 都是字符串,并且无法更改。 documentation 中列出了文档 ID 的要求(最大 1500 字节)。
在 Firebase 运行的规模上,使用整数实际上不太可能提供太多真正的性能提升。当一个集合中有数十亿个文档时,Firstore 有比优化文档 ID 中的几个字节更大的问题要处理。实际上,更重要的是确保它具有有效的 space ID,这实际上可以保证存储随机生成的 ID,而不会与可能存在的其他文档发生冲突。
This page 的文档说
The size of a document ID is either the string size for a string ID or 8 bytes for an integer ID. Note: The Cloud Firestore client libraries always use string document IDs.
但我不知道如何使用整数 ID。我正在使用客户端库。