Struktur einer NoSQL-Datenbank für eine chat-Anwendung (mit FB)

Kommt von Jahren der Nutzung von relationalen Datenbanken, ich bin versuchen zu entwickeln, eine ziemlich grundlegende chat - /messaging-app mit FB

FB verwendet eine NoSQL-Daten-Struktur-Ansatz mit JSON-formatierte strings.

Ich habe eine Menge Forschung, um zu verstehen, wie die Struktur der Datenbank mit Leistung im Verstand. Ich habe versucht, "denormalize" die Struktur und endete mit der 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
      }
    }
  }
}

Den zahlen 1, 10, 17 Probe-Benutzer-id ist.

Meine Frage ist, können diese strukturiert in einem besseren Weg? Das Ziel ist, um scale-up der app-Nutzer wachsen und bekommen immer noch die beste Leistung möglich.

  • FB Datenstrukturen hängen davon ab, was Sie wollen mit den Daten machen. Was präsentiert wird, ist sehr erweiterbar, Abfrage ' ablé und den Knoten beobachten sind für Veränderungen. Auch, FB ist zu schnell und kann problemlos Tausende von Anfragen. Jedoch, ohne zu verstehen, das in vollem Umfang, oder eine spezielle Frage zu den Daten, es ist eine offene Frage. Zum Beispiel; was ist die Funktion der chat-Knoten? Die Gespräche, die Knoten enthält alles, was benötigt, um zu verfolgen, ein Gespräch mit einem anderen Benutzer. z.B. Benutzer anmeldet, Abfragen alle Gespräche enthalten, die Ihre Benutzer-id und beobachtet diese.
  • Betrachten Sie es als eine grundlegende WhatsApp-app, wo Sie eine Aktivität haben, die Anzeige alle meine chats. Wenn ich auf einen chat bekomme ich die "Detailansicht", die das Gespräch Nachrichten zwischen zwei Benutzern.
  • Die Frage selbst erklärt, was die app tut, aber die Verwendung der Struktur ist zu vage; die beschriebene Funktionalität könnte leicht getan werden, mit nur die Gespräche Knoten. Denormalizing Daten ist sehr wichtig, aber tun Sie es nicht nur im Interesse der Schaffung eines anderen Knotens, wenn es nicht notwendig ist. In diesem Fall, es kann oder kann nicht notwendig sein. Die Frage muss viel mehr spezifisch, daher würde ich vorschlagen, crafting einige Codes zum testen und wenn Sie laufen in ein Problem, dann posten Sie Ihre konkrete Frage.
InformationsquelleAutor TareK Khoury | 2016-03-13
Schreibe einen Kommentar