我正在使用 Cloud Firestore (NoSQL) 为以下用户存储个人资料信息:
{
"uid": "abc123",
"name": "...",
"friends": [
"uid": "x234",
]
...
}
现在我想知道如何构建从用户到用户的直接聊天。我正在考虑:
为每个用户文档添加一个附加字段,例如:
"chats": [
{
"from": "name",
"message": "...",
...
},
...
]
或者,我考虑使用具有类似结构的 Firebase 实时数据库,而不是使用 Firestore 进行聊天。
最后一种方法的好处是,用户文档不会因大量聊天协议(protocol)而“臃肿”。
我需要一些建议,以便结构/实现最适合这个用例。
Best Answer-推荐答案 strong>
当您开始构建应用程序时,首先您需要考虑最适合它的数据库。如果您考虑 Firestore,您需要知道对于每个客户端每秒执行大量小规模读取和写入的应用程序,Cloud Firestore 的定价模型可能比实时数据库中类似性能的应用程序贵得多。
这两个数据库之间也存在一些差异。如果您想继续使用 Firebase 实时数据库,您需要知道您不能查询多个属性,并且通常涉及重复数据或客户端过滤,这在某些情况下会有些困惑。实时数据库不会自动扩展,而 Firestore 会。
关于如何为聊天应用程序构建数据库,您需要知道没有完美的结构可以做到这一点。您需要以一种允许您以非常轻松且非常有效的方式读取/写入数据的方式来构建数据库。火力基地 official documentation解释了如何为聊天应用程序构建数据库。如果你想要更复杂的东西,请阅读这篇文章,Structuring your Firebase Data correctly for a Complex App .
为了更好地理解,我建议您也参加 Firebase 免费类(class),Firebase in a Weekend: Android .
所以由你决定哪一个更适合你。
P.S:如果你有兴趣,我也在我的一个 tutorials 中解释过。 如何使用 Cloud Firestore 和 Kotlin 创建聊天应用。
关于java - 如何构建与 Firebase 的聊天,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/47371561/
|