2016-04-17 16 views
0

Ich möchte GPS-Koordinaten von einem beliebigen Gerät in eine DB auf einem SQL-Server speichern und überprüfen Sie es in Echtzeit in einem Web, das ständig nach Positionen fragt.Wie speichert man ständig Koordinaten in einer Datenbank und aktualisiert/ersetzt sie dann bei Änderungen?

Ich sah andere Fragen und Antworten (auf StackOverflow und Google), und jeder möchte neue Zeilen (mit den Koordinaten) auf einer Tabelle hinzufügen, wo bereits vorherige Koordinaten gespeichert wurden.

In meinem Fall möchte ich nicht speichern vorherige Koordinaten, ich will nur wissen, wo sind sie NOW, so denke ich, es hat keinen Sinn, neue Zeilen hinzuzufügen. Daher wird die Anzahl der Zeilen konstant bleiben.

Da ich zwei Tische hatte: DEVICES (idDevice, Gerät) und COORDINATES (Gerät, lang, lat), jedes Mal ein Gerät eine neue Position senden (sie alle 1 Sekunde sagen), ist es Wert AKTUALISIEREN Sie die Zeile mit dem vorherigen Wert.

Meine Frage: Ist das der beste Weg (die "kontinuierliche Auto-Ersatz" -Technik) kann ich das tun? oder gibt es eine bessere Möglichkeit, Positionen zu aktualisieren?

Und, wie eine zweite Frage: das ist der beste Weg, um die Tabellen für das, was ich tun möchte, zu bauen?

Antwort

1

Wenn Sie definitiv nur einen Satz von Koordinaten speichern, würde ich vorschlagen, dass Sie COORDINATES entfernen und DEVICES(idDevice, device, long, lat) verwenden. Sie müssen bereits damit umgehen, sicherzustellen, dass eine DEVICES-Zeile existiert, so dass Sie jetzt einfach UPDATE DEVICES SET long = xxx, lat = yyy WHERE idDevice = deviceId.

0

Interessanter Ansatz. Dies denormalisiert die Tabellenarchitektur, vermeidet jedoch den Join, sodass das Ergebnis wahrscheinlich eine schnellere Antwortzeit ist. Würde man sich hier lautstark fragen, würde das Aktivieren von RCSI und das Umschalten auf optimistisches Sperren eine noch schnellere Reaktionszeit ermöglichen (nach korrekter Neukonfiguration von Tempdb, natürlich)?