Wie verwenden von FB als eine relationale Datenbank mit generierten Schlüsseln (JS)?

Arbeite ich an einem einfachen JavaScript Twitter-Klon nutzen FB als backend-storage-Mechanismus (JSON). Ich bin vertraut mit relationalen Datenbanken (SQL), nicht aber mit nicht-relationalen Datenbanken. Ich bin derzeit versucht, herauszufinden, wie zu entwerfen, die Struktur des datasets in Feuerstellung, da es keine Fremdschlüssel-Beziehungen oder einer Tabelle Zusammenfügen.

Die app hat drei Tabellen, users, tweets, und followers. Benutzer können nach tweets, als auch die Folgen anderer Nutzer und sehen Sie einen feed Ihrer tweets. Das problem kommt, wenn Sie versuchen, zu erstellen der Daten-Struktur, wie ich habe keine Ahnung wie ich die anschließen werden die notwendigen Tabellen. Zum Beispiel, wie ich das umsetzen kann das user-follower-Funktionalität?

Hier ist die ERD, die ich benutze, um mir selbst ein Ausgangspunkt:

Wie verwenden von FB als eine relationale Datenbank mit generierten Schlüsseln (JS)?

Als ich versucht habe, zu wickeln meinem Kopf herum, dieses ganze JSON-Sache, das ist die nächste, die ich beziehen könnte es zu einer relationalen Datenbank, während immer noch mit der FB .push() Funktionen hinzufügen, um die Listen in der Datenbank (wie gesehen von der Firebase-dashboard):

Wie verwenden von FB als eine relationale Datenbank mit generierten Schlüsseln (JS)?

Ich habe gesehen, wie einige Leute versuchen, dieses Problem durch die "de-Normalisierung", die Daten, zitiert, dass die FB nicht alle Abfrage-Mechanismen. Allerdings sind diese Artikel alle in Erster Linie vor 2014, wenn der Feuerstellung hat hinzufügen Abfragen. Das sagte, ich verstehe nicht, wie mit den Anfragen die mir helfen könnte, und ich glaube, ich bin immer fest mit dem generierten Schlüssel.

Wie sollte ich am besten die Struktur meine Daten mit dem FB JSON-Listen? Ich habe gelesen, einige Ihrer Dokumentation aber nicht in der Lage zu finden, etwas, das verwendet, was ich Suche und der generierte Schlüssel.

Sollte ich versuchen zu verwenden, die .set() Methode irgendwie, und mit der E-Mail-Adressen als "primäre Schlüssel" für den Benutzer und nicht auf den generierten key? [Wie unten erwähnt, ist dies etwas, was ich Plane zu vermeiden. Danke @metame ]

Update

Ist dieses mehr, was ich suchen sollte, bei der für die Daten-Struktur? Und dann Abfragen, indem Sie die Tasten?

users: {
    Hj83Kd83: {
        username: "test",
        password: "2K44Djl3",
        email: "[email protected]"
    },
    J3kk0dK4: {
        username: "another",
        password: "33kj4l5K",
        email: "[email protected]"
    }
}

tweets: {
    Jkk3ld92: {
        userkey: "Hj83Kd83",
        message: "Test message here!"
    },
    K3Ljdi94: {
        userkey: "J3kk0dK4",
        message: "Another message here!"
    }
}

followers: {
    Lk3jdke9: {
        userkey: "Hj83Kd83",
        followerkey: "J3kk0dK4"
    }
}

Lassen Sie mich wissen, wenn ich sollte zählen, nichts anderes!

  • Ich empfehle die Lektüre dieses Antwort auf jemanden, der versucht, etwas ähnliches zu tun, das Antwort auf eine einfache NoSQL Datenmodellierung Frage und das Artikel zu erklären gängigen NoSQL-data-modeling Techniken.
  • Für eine interessante Probe eines FB twitter-Klon, Blick auf firefeed.io. Da er von den FB-Ingenieure, es gebunden ist, sind viele von Ihren Ideen, gute Praktiken, wenn es um NoSQL-Daten Modellierung.
  • So sah firefeed.io, ist es richtig zu sagen, dass für einige Abfragen können vermieden werden, indem Regeln? Zum Beispiel, anstatt zu versuchen, query, die aktualisiert werden soll, indem Sie eine post, verlassen sich auf Regeln, die nur für update-Anhänger?
  • Die Regeln können verwendet werden, um sicherzustellen, dass Ihre Anwendung code kann nur update-Anhänger. Es nicht, das aktuelle update (nur code, der das machen kann, und die Sicherheits-Regeln sind nicht code), aber es kann verwendet werden, um sicherzustellen, dass nur gültige updates erlaubt sind. Beachten Sie, dass dies alles nicht sinnvoll ist, bis Sie versuchen wirklich die Modellierung Ihrer Daten in Feuerstellung, schreiben Sie ein paar Sicherheits-Regeln, code schreiben und dann dafür sorgen, dass alles so funktioniert, wie Sie es erwarten.
InformationsquelleAutor Kendall | 2016-04-12
Schreibe einen Kommentar