【问题标题】:How are Firebase IDs generated?Firebase ID 是如何生成的?
【发布时间】:2015-12-18 17:51:53
【问题描述】:

我们可以假设他们的任何事情吗?它们是全球唯一的(在整个 Firebase 中)吗?有什么排序吗?客户重要吗?

是否有公共图书馆/文档以便我也可以生成这些 ID?

我指的是push生成的那些

【问题讨论】:

标签: firebase


【解决方案1】:

有一个blog post on itas well as a Gist

在博文中,推送 ID 中的内容的核心内容如下:

推送 ID 包含 120 位信息。前 48 位是 时间戳,既减少了碰撞的机会,又允许 连续创建推送 ID 以按时间顺序排序。时间戳 后面是 72 位的随机性,这确保了即使两个 在完全相同的毫秒内创建推送 ID 的人非常 不太可能生成相同的 ID。对随机性的一个警告是 为了保持时间顺序,如果客户创建 在同一毫秒内有多个推送 ID,我们只是“增加” 随机位加一。

将我们的 120 位信息(时间戳 + 随机性)转化为 可以用作 Firebase 密钥的 ID,我们基本上是 base64 编码它 转换成 ASCII 字符,但我们使用修改后的 base64 字母表 确保 ID 在订购时仍能正确排序 按字典顺序排列(因为 Firebase 键是按字典顺序排列的)。

另外值得注意的是,由社区完成的几种不同语言的端口:

所以也许最好的学习方法是选择一种不在该列表中的语言并移植它!

【讨论】:

  • 嗨,David,我想提一下,Java 的端口不能作为原始 gist。最后一个时间戳值在方法本身内部,因此在这种情况下与前一个时间戳匹配时,它始终为 false。
猜你喜欢
  • 2018-09-02
  • 2020-01-29
  • 2017-02-11
  • 2015-05-03
  • 1970-01-01
  • 2019-08-12
  • 2018-02-24
  • 2018-07-07
  • 1970-01-01
相关资源
最近更新 更多