从多年使用关系型数据库的到来,我试图开发使用火力结构一个的NoSQL数据库聊天应用程序(使用火力)
一个非常基本的聊天/即时通讯应用火力使用使用JSON NoSQL数据结构的方法格式化的字符串。
我做了大量的研究,以了解如何构建数据库的性能考虑。我曾经试图“反规范化”的结构,并结束了以下内容:
{
"chats" : {
"1" : {
"10" : {
"conversationId" : "x123332"
},
"17": {
"conversationId" : "x124442"
}
}
},
"conversations" : {
"x123332" : {
"message1" : {
"time" : 12344556,
"text" : "hello, how are you?",
"userId" : 10
},
"message2" : {
"time" : 12344560,
"text" : "Good",
"userId" : 1
}
}
}
}
数字1,10,17样本用户ID。
我的问题是,这可以用更好的方式来构造吗?目标是随着应用用户的增长而扩大规模,并尽可能获得最佳性能。
存储信息的可能是这个样子
Firebase数据结构取决于您想要对数据执行的操作。所呈现的是非常可扩展的,可查询的并且节点对于变化是可观察的。此外,Firebase的速度非常快,可以轻松处理数千个请求。但是,如果不了解全面的范围或对数据的具体问题,这是一个开放式问题。例如;聊天节点的功能是什么?会话节点包含跟踪与另一个用户的对话所需的一切。例如用户登录后,查询包含其用户标识的所有会话,然后观察它们。 – Jay
把它看作是一个基本的WhatsApp应用程序,你有一个活动,显示我所有的聊天。当我点击聊天时,我得到了“详细视图”,这是两个用户之间的会话消息。 –
这个问题本身解释了应用程序的作用,但结构的使用是模糊的;所描述的功能可以通过对话节点轻松完成。使数据非规范化非常重要,但不要仅仅为了在没有必要时创建另一个节点。在这种情况下,它可能或可能不是必需的。这个问题需要更加具体,所以我会建议编写一些测试代码,当你遇到问题时,*然后*发布你的具体问题。 – Jay