2017-10-14 7 views
12

Wie führen Sie billige Joins mit Firestore?Firestore: Joins vs Firestore Preise

In Firebase würde ich .map() die Antwort und die zusätzlichen Daten basierend auf einem Fremdschlüssel auf jedem Element gespeichert. Unter Berücksichtigung des Preismodells von Firestore, in dem Sie pro Lesevorgang bezahlen, erscheint diese jedoch als zu teuer. Was denken Sie?

In meinem Fall ist meine Beziehung viele Aktionen zu einer Handvoll Kategorien (ca. 5 - 7). Jede Aktion gehört zu einer Kategorie.

Was wäre die beste Praxis für diesen Fall? Soll ich es weiterhin so machen wie in Firebase? Oder sollte ich beide Sammlungen unabhängig voneinander holen und sie in Javascript verbinden?

Jakub

PS Wie arbeiten Sie eigentlich mit dem Referenzdatentyp? Es ist leider nicht in der Dokumentation beschrieben.

+0

Haben Sie überprüfen: https://stackoverflow.com/questions/46568850/what-is-firestore-reference-data-type-good-for? – Wandrille

+0

Danke, ja, ich habe. Leider verlangt der Kommentar mit den meisten Stimmen ein Update der Dokumentation. Es ist nicht klar, wie der Referenzdatentyp verwendet wird. –

+0

Ended. Ich bin auch an einer Antwort interessiert. – Wandrille

Antwort

7

Cloud Firestore, wie Sie angegeben haben, wird für jedes gelesene Dokument berechnet. Dies basiert auf der Anzahl der Dokumente, die bei der Abfrage an Sie zurückgegeben werden. Es spielt keine Rolle, wie viele individuelle Anforderungen Sie an die Dokumente stellen (vorausgesetzt, dass jede Anfrage> = 1 Dokument zurückgibt). So wird es billiger für Sie sein, die map() Methode zu tun, als alle Dokumente zu holen und sie im Speicher zu verbinden, da Sie weniger Dokumente aus dem Backend lesen werden.

Wenn Sie mehr über Ihr Datenmodell erfahren (ich kann es mir nicht in meinem Kopf vorstellen), könnte es einen Weg geben, die Notwendigkeit von Joins zu verringern, indem Sie einige Daten duplizieren oder Abfragen nutzen.