我使用Cloud Firestore(NoSQL)为以下用户存储个人资料信息:
{
"uid": "abc123",
"name": "...",
"friends": [
"uid": "x234",
]
...
}
现在我想知道如何构建从用户到用户的直接聊天。我想到的是:
为每个用户文档添加一个附加字段,如:
"chats": [
{
"from": "name",
"message": "...",
...
},
...
]
或者我没有使用Firestore进行聊天,而是考虑使用具有类似结构的Firebase实时数据库。
最后一种方法的好处是,用户文档不会臃肿"有很多聊天协议。
我需要一些建议,这样的结构/实现最适合这个用例。
答案 0 :(得分:8)
当您开始构建应用程序时,首先需要考虑最适合它的数据库。如果您考虑Firestore,您需要知道Cloud Firestore针对每个客户端每秒执行大量小型读写操作的应用程序的定价模型可能比实时数据库中类似性能的应用程序贵得多。
这两个数据库之间也存在一些差异。如果您想使用Firebase,您需要知道Firebase实时数据库无法查询多个属性,而且它会涉及复制数据或内容端过滤,在某些情况下会出现某种混乱。 Firestore执行时,实时数据库不会自动扩展。
关于如何为聊天应用程序构建数据库,您需要知道没有完美的结构。您需要以允许您以非常有效的方式非常轻松地读/写数据的方式构建数据库。 Firebase official documentation说明了如何为聊天应用构建数据库。如果您想要更复杂的内容,请阅读此帖Structuring your Firebase Data correctly for a Complex App。
为了更好地理解,我建议您使用Firebase免费课程Firebase in a Weekend: Android。
所以由你决定选择哪一个。
<强> P.S:强> 如果您有兴趣,我还在我的 tutorials 中解释了如何使用Cloud Firestore和Kotlin创建聊天应用。