2016-04-22 15 views
0

Ich baue eine App in Swift, wo Benutzer (können die Orte des Ereignisses, das sie auf der Straße Zeuge. Jede Veranstaltung hat eine Lebensdauer von 45 Minuten, dann erscheint es nicht auf der Karte nach ., dass SchwellenVerbesserung der GeoFire-Abfrageleistung - Firebase

baute ich meine Json Baum wie folgt aus (Orte und Ereignisse die gleiche ID teilen - hier nicht dargestellt):

firebaseapp { 
    locations { 
    g 
    l { 
     0: "latitude" 
     1: "longitude" 
    } 
    } 
    events { 
    timestamp: "UTC timestamp" 
    description: "my description" 
    user: "id of user" 
    } 
    users { 
    // User data 
    } 
} 

ich Abfrage alle Orte in der Region entsprechend auf dem Bildschirm angezeigt wird, dann Ich frage die Ereignisse ab, die vor weniger als 45 Minuten auftraten, und zwar auf folgende Weise:

Das Problem mit dieser Methode ist, dass ich für eine bestimmte Region alle Orte von Ereignissen abfragen, die in der Vergangenheit aufgetreten sind (was ein LOT sein kann), und DANN erkundige ich diejenigen, die weniger als 45 Minuten passiert sind Vor allem mit tradionnalen Firebase-Abfragen.

Gibt es eine bessere Lösung für mein Problem, denn ich fürchte, ich überschreite die Bandbreite Schwelle ziemlich schnell, wenn jedes Mal, wenn ein Benutzer die Karte bewegt, alle Standorte der Region geladen werden ...

Antwort

2

geteilt einfach die „letzten Orte“ von den „historischen Orten“:

recent_locations 
    g 
     l { 
     0: "latitude" 
     1: "longitude" 
     } 
historic_locations 
    g 
     l { 
     0: "latitude" 
     1: "longitude" 
     } 

Jetzt können Sie Geo-Abfragen für entweder die letzten Orte oder historische Orte laufen.

+0

Hallo Frank, danke für deine Antwort! Gibt es eine Möglichkeit, Standorte mit Firebase von der aktuellen auf die historische Serverseite zu übertragen? Oder sollte ich es clientseitig machen? – Viro

+0

Es gibt keine "move" API. Sofern Sie nicht einen sehr ungewöhnlichen Fall haben, sollte es nicht benötigt werden. Ein Kopieren/Einfügen/Entfernen ist schnell genug für die meisten JSON-Größen. –

+0

Richtig, ich werde einige Logik auf der Clientseite schreiben, um die Standorte von einem Zweig zum anderen zu verschieben. Danke nochmal Frank – Viro

Verwandte Themen