Firestore中用于聊天的数据模型

时间:2018-10-31 13:48:33

标签: firebase google-cloud-firestore

因此,我已阅读有关Firestore的所有正式文档,并且了解所有基础知识和大多数高级主题。但是最后我提出了两个问题:

  • 相对于根级别的集合,使用子集合是否有任何优势?好吧,如果数据库是在子集合中构建的,那么它可能会更有条理。但是最后,在性能和可伸缩性方面,根级别的colleciton似乎更好。官方文档中列出的所有优点也适用于Root级集合,还是我误会了某些东西?

  • 让我们以著名的聊天示例为例,并考虑许多聊天组(例如WhatsApp)。每当用户打开聊天时,该用户都可以看到有关该聊天以及该聊天成员的信息。但这是我的第二个问题:不显示聊天成员的意思是,每当有人打开聊天时,将加载另一个包含所述用户个人资料图像和姓名的集合吗?如果您有一个由10个人组成的“ WhatsApp”群组,则意味着任何人打开该群组时,都会读取11次(该群组本身为1个,成员的图像/名称为10个)。让我们扩展一下这个想法,并使组公开可用,这将导致大量的读取,只是为了查看组的基本信息。由于Firestore收取读取读物的费用,所以这将很快激增,不是吗?

1 个答案:

答案 0 :(得分:1)

您最多可以深度链接最多 100 个子集合。根据有关usage and limits的官方文档。

  

子集的最大深度:100

关于您的问题:

  

与根级集合相比,使用子集合是否有任何优势?

据我所知,Firestore可以像在100级上一样快速地在1级上查找节点。因此,对于常规数据库,深度不应是影响技术级速度的因素。恕我直言,最好使数据尽可能平坦。

关于您的第二个问题,您可以存储对象或引用,但是在做出决定之前,建议您了解一些细节,这些细节可以在我的 post答案中找到 strong>。