Firestore的文档ID有多独特?正在考虑上百万个文档

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

我正在尝试从DocumentReference对象获取自动生成的ID

DocumentReference docref = db.collection("users").document(); 
String ID = check.getID();

问题是,由于ID是在客户端生成的,因此当存储中的两个ID超过一​​百万个文档,并且当我使用.set()时,文档中的2个ID可能彼此相似。 。我看到了其他答案,但没有一个解决了我的疑问。

android firebase android-studio google-cloud-firestore android-database
1个回答
1
投票

[在撰写本文时,Firestore Auto ID(至少在JavaScript SDK中)是从字符a-zA-Z0-9中选择的20个随机字符构成的-因此,从62个可能的字符中选择了20个字符字符。

这意味着存在62^20(或7.01e35)个不同的可能组合。

这与2^120中使用的Realtime Database可能组合非常相似(-可能的组合也使用_64^20字符。

[RTDB的推送ID和Firestore的自动ID之间的主要区别在于,自动ID并非根据设备时间戳进行编码-所有〜120位都是随机的。

因此,从统计学上讲,您不太可能会遇到碰撞。但是,您始终可以使用自己的系统生成自己的ID,或使用uuid程序包中的某些内容生成128位或更大的ID。

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