javascript - 消防站 : arrays vs sub collection of documents performance

标签 javascript arrays firebase google-cloud-firestore

我想问一下 firestore 是否有最佳实践,何时开发聊天应用程序,以及为聊天室存储消息的最佳实践是什么。

这里假设每个聊天室都有自己的文档。

我开始使用数组来存储来自用户的消息。这种方法的问题是每次向聊天室提交新消息时都无法添加、插入(附加)新条目。必须保存数组的新副本并附加新消息。这看起来会非常糟糕,除非聊天记录被拆分成子数组等。

在官方文档中,他们提出了一种结构,其中应将特定聊天室的消息作为单独的文档存储在该聊天室的子集合中。我想知道这种方法是否是最好的,有什么缺点,或者是否有另一种首选方法来做到这一点。

最佳答案

我通常会采用“每个聊天室都有一个消息子集合。每条新消息都是这个子集合中的一个单独文档”的方法。这有几个优点:添加或编辑单个消息很容易,并且您可以执行许多不同的查询(例如“获取最近的 20 条消息”)

我想,最大的缺点是,如果您发现新用户经常进入您的聊天室,并希望在他们加入之前查看房间的整个聊天记录,这将导致大量数据库读取。但实际上,我不知道这种情况在现实生活中发生的频率是多少,您可以通过使用分页分批抓取您的历史聊天记录来缓解这种情况。

关于javascript - 消防站 : arrays vs sub collection of documents performance,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47907670/

相关文章:

javascript - 我的 Javascript/jQuery 函数出了什么问题?

javascript - 在不读/写数据库的情况下更新表元素

javascript - 隐藏/显示图像 jQuery

javascript - 如何在 Istanbul 尔编写 lambda 单元测试?

php - 将可变级别数组应用于现有数组

c++ - 结构中的数组 C++

c++ - 尝试将文件读入 char 数组

javascript - Firebase 和 Angularjs 范围对象数组未定义

java - 我想从 firebase 数据库获取数据对象,但 db Reference.addValueEventListener 将不会执行

ios - TableView 复制图像?