2017-06-07 2 views
2

Ich muss GPS-Punkte (Zeitstempel, Lon, Lat) von verschiedenen Benutzern speichern.mongodb effizienteste Möglichkeit, GPS-Tracking-Daten zu speichern

sollte ich eine separate Benutzer-Sammlung und eine GPS-Datenerfassung:

Benutzer

{_id: 1, name: 'A'} 

gps

{_id: 1, userId: 1, timestamp: ..., lon: ..., lat: ...} 
{_id: 2, userId: 1, timestamp: ..., lon: ..., lat: ...} 

oder kann ich nur die GPS-Daten als Array in den Speicher entsprechendes Benutzerdokument:

Benutzer

{_id: 1, name: 'A', gps: [ 
    {timestamp: ..., lon: ..., lat: ...} 
    {timestamp: ..., lon: ..., lat: ...} 
]} 

Ich weiß, dass die Option 2 würde für SQL DBs verrückt sein, aber ich bin nicht sicher über die Auswirkungen auf die Leistung mit MongoDB

+0

MongoDB erfordert, dass die Positionsdaten entweder im Array-Format Länge, Breite '[lon, lat]' oder im GeoJSON-Format vorliegen, zB '{" Typ ":" Punkt "," Koordinaten ": [lon, lat]}' um gültig zu sein für die Verwendung mit georäumlichen Abfragen, wenn dies ein Problem darstellt. Es wäre wahrscheinlich am besten, diesen Weg als gute Praxis zu speichern, auch wenn Sie keine georäumlichen Abfragen wünschen. –

Antwort

2

Sie müssen Ihre MongoDB Kollektionen entwerfen auf der Basis des Zugriffsstrategie Ihrer Anwendung.

In der Regel sollten Sie für die Einbettung Punkte in Benutzer doc wenn:

  • eingebetteten Daten (Punkte) werden immer abgerufen, wenn die Benutzerinformationen sind abgerufen. Wenn Sie immer Benutzerdaten abrufen, aber selten auch GPS-Daten benötigen, kann die Einbettung nicht so gut sein.

  • eingebettete Daten unterliegen nicht den Änderungen (oder zumindest selten)

  • die Mächtigkeit nicht zu groß ist (nicht vergessen, MongoDB Dokument max Größe 16MB ist). Wenn Sie 100K Punkte pro Benutzer aufgeteilt, um die Sammlungen

Außerdem Punkten in Benutzer Dokumente eingebettet sind, können Sie die Vorteile von Dokument Sperren nehmen kann (wenn Sie Wired Tiger-Speicher-Engine verwenden). Andernfalls, wenn Sie in einem gleichzeitigen System sind, müssen Sie mit dem Design der beiden Sammlungen den Sperrmechanismus selbst auf Anwendungsebene handhaben.

Verwandte Themen