我在我的 Android 应用程序中使用 Cloud Firestore 数据库,我在集合中有不同的文档,例如:用户的 uid、餐厅的按键和我的食谱的数字。
我的数据库:
users
uid1
uid2
...
resturants
pushedId1
pushedId2
...
recipes
0001
0002
...
对于我理解使用 uid 的用户,但最好为我的餐厅使用 Firestore 推送的 id?这是约定还是为什么要使用它?
我还尝试使用 UUID Class 生成唯一 key 但对我来说,在我的食谱中只使用数字更容易。这是一种糟糕的方法吗?
任何帮助将不胜感激,谢谢!
最佳答案
通过为文档使用可预测的(例如顺序的)ID,您可以增加在后端基础设施中遇到热点的机会。这会降低写入 操作的可扩展性。
Cloud Firestore 有一个内置的唯一 ID 生成器,当您调用 CollectionReference.add(...)
时会用到它或 CollectionReference.document()
(无参数)。它生成的 ID 是随机的并且高度不可预测,这可以防止攻击后端基础设施中的某些热点。
为用户的文档使用 UID 是 Firestore 内置生成器的一个很好的替代品,因为 UID 已经具有很高的熵:您无法根据对当前用户的了解来预测下一个用户的 UID。在这种情况下,使用 UID(或实体的自然键)是更好的方法,因为您可以直接查找文档而不必查询。
查看此 discussion on the firebase-talk mailing list一些从事 Firestore 工作的工程师在其中进行了更详细的解释。
关于java - Firestore 生成的 key 与集合中的自定义 key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51024150/