von Jahren kommen von relationalen Datenbanken, ich versuche, eine ziemlich grundlegende Chat/Messaging-App Firebase mitStruktur eine NoSQL-Datenbank für eine Chat-Anwendung (mit Firebase)
zu entwickelnFeuerbasis verwendet einen NoSQL-Datenstruktur Ansatz JSON mit formatierte Zeichenfolgen
Ich habe viel geforscht, um zu verstehen, wie man die Datenbank im Hinblick auf Leistung strukturiert. Ich habe versucht, die Struktur zu „denormalize“ und endete mit dem folgenden:
{
"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
}
}
}
}
die Zahlen 1, 10, 17 sind Beispiel Benutzer-IDs.
Meine Frage ist, kann dies besser strukturiert werden? Ziel ist es, die App-Nutzer zu vergrößern und trotzdem die bestmögliche Leistung zu erzielen.
Firebase-Datenstrukturen hängen davon ab, was Sie mit den Daten tun möchten. Was präsentiert wird, ist sehr erweiterbar, abfragbar und die Knoten sind für Änderungen beobachtbar. Außerdem ist Firebase unglaublich schnell und kann tausende Anfragen problemlos bearbeiten. Ohne jedoch den vollen Umfang oder eine bestimmte Frage zu den Daten zu verstehen, ist es eine offene Frage. Beispielsweise; Welche Funktion hat der Knoten des Chats? Der Konversationsknoten enthält alles, was zum Verfolgen einer Konversation mit einem anderen Benutzer benötigt wird. z.B. Der Benutzer meldet sich an, fragt alle Konversationen ab, die seine Benutzer-ID enthalten, und beobachtet sie dann. – Jay
Betrachten Sie es als eine grundlegende WhatsApp App, wo Sie eine Aktivität haben, die alle meine Chats anzeigen. Wenn ich auf einen Chat klicke, erhalte ich die "Detailansicht", also die Konversationsnachrichten zwischen den beiden Benutzern. –
Die Frage selbst erklärt, was die App tut, aber die Verwendung der Struktur ist zu vage; Die beschriebene Funktionalität könnte einfach mit dem Konversationsknoten durchgeführt werden. Denormalisierung von Daten ist sehr wichtig, aber tun Sie es nicht nur für die Erstellung eines anderen Knotens, wenn es nicht notwendig ist. In diesem Fall kann es notwendig sein oder auch nicht. Die Frage muss sehr viel spezifischer sein, also würde ich vorschlagen, etwas Code zum Testen zu erstellen und wenn Sie auf ein Problem stoßen, * dann * posten Sie Ihre spezifische Frage. – Jay