如何构建与firebase的聊天

Piw*_*iwo 3 java android firebase firebase-realtime-database google-cloud-firestore

我正在使用Cloud Firestore(NoSQL)来存储用户的个人资料信息,例如:

{
  "uid": "abc123",
  "name": "...",
  "friends": [
    "uid": "x234", 
  ]
  ...
}
Run Code Online (Sandbox Code Playgroud)

现在我想知道如何构建从用户到用户的直接聊天.我想的是:

为每个用户文档添加一个附加字段,如:

"chats": [
 {
    "from": "name",
    "message": "...",
    ...
 },
  ...
]
Run Code Online (Sandbox Code Playgroud)

或者不使用Firestore进行聊天,我考虑使用具有类似结构的Firebase实时数据库.

最后一种方法的好处是,用户文档不会因大量聊天协议而"膨胀".

我需要一些建议,结构/实现最适合这个用例.

Ale*_*amo 9

当您开始构建应用程序时,首先需要考虑最适合它的数据库.如果您考虑Firestore,您需要知道,对于每个客户端每秒执行大量小读取和写入的应用程序,Cloud Firestore的定价模型可能比实时数据库中类似性能的应用程序昂贵得多.

这两个数据库之间也存在一些差异.如果您想使用Firebase,您需要知道Firebase实时数据库无法查询多个属性,而且它会涉及复制数据或内容端过滤,在某些情况下会出现某种混乱.Firestore执行时,实时数据库不会自动扩展.

关于如何为聊天应用构建数据库,您需要知道没有完美的结构.您需要以允许您以非常有效的方式非常轻松地读/写数据的方式构建数据库.Firebase 官方文档解释了如何为聊天应用程序构建数据库.如果您想要更复杂的内容,请阅读这篇文章,为复杂的应用程序正确构建Firebase数据.

为了更好地理解,我建议您在周末使用Firebase免费课程,Firebase:Android.

因此,您需要决定选择哪一个.

PS: 如果您有兴趣,我还在我的一个教程中解释了如何使用Cloud Firestore和Kotlin创建聊天应用程序.