HI,
es geht um GPS Daten von verschiedenen Clients (z.B. Handyapps).
Im System sind z.B. 1000 Personnen registriert (können auch mehr sein).
Person x sendet seine Koords alle 10 Sekunden an den Server und bekommt als Response alle Koords von anderen Personnen in einer bestimmten Reichweite.
D.h. Alle 10 Sekunden müssen für 1000 Personnen serverseitig 1000 mögliche Koords berechnet werden.
Die Formel für die Berechnung ist je nach Genauigkeitsgrad von relativ einfach bis sehr komplex.
Folgende Idee hätte ich zwar:
Erst werden alle Einträge aus der DB geholt und dann in einer Schleife für jeden einzelnen Client geprüft, ob die Entfernung des Iterator Punktes zum Client passt.
Um die potentiellen Clients etwas einzuschrenken:
Die Tabellen aufteilen , wie z.B. alle 1x.xx Koords in eine Tabelle, 2x.xx in eine andere Tabelle usw., so könnte ich 1000 Einträge in 10 Tabellen unterteilen. Und jedes mal 3 Tabellen durchgehen (da Koords in Grenzbereichen eine zulässige Entfernung zu Koords in der eins "höher oder unteren" Tabelle haben könnten).
So müsste ich statt 1000 Einträge 3x100 Einträge überprüfen. Bin mir aber auch net sicher vieviel bzw. ob diese eine bessere Performance mitbringen würde.
In der praxis werd ich wohl nicht mit sovielen gleichzeitgen Anfragen und Berchnungen zu tun haben, aber es geht um die Theorie mit einer starken Serverlast umzugehen.
Wie würdet ihr so ein Anwendungsfall realisieren?
Welche Datenbank und welche Datenbankverfahren würdet ihr empfehlen?
Für jegliche Anrregungen, weiterführende Literatur und Stichwörter wäre ich sehr dankbar.
es geht um GPS Daten von verschiedenen Clients (z.B. Handyapps).
Im System sind z.B. 1000 Personnen registriert (können auch mehr sein).
Person x sendet seine Koords alle 10 Sekunden an den Server und bekommt als Response alle Koords von anderen Personnen in einer bestimmten Reichweite.
D.h. Alle 10 Sekunden müssen für 1000 Personnen serverseitig 1000 mögliche Koords berechnet werden.
Die Formel für die Berechnung ist je nach Genauigkeitsgrad von relativ einfach bis sehr komplex.
Folgende Idee hätte ich zwar:
Erst werden alle Einträge aus der DB geholt und dann in einer Schleife für jeden einzelnen Client geprüft, ob die Entfernung des Iterator Punktes zum Client passt.
Um die potentiellen Clients etwas einzuschrenken:
Die Tabellen aufteilen , wie z.B. alle 1x.xx Koords in eine Tabelle, 2x.xx in eine andere Tabelle usw., so könnte ich 1000 Einträge in 10 Tabellen unterteilen. Und jedes mal 3 Tabellen durchgehen (da Koords in Grenzbereichen eine zulässige Entfernung zu Koords in der eins "höher oder unteren" Tabelle haben könnten).
So müsste ich statt 1000 Einträge 3x100 Einträge überprüfen. Bin mir aber auch net sicher vieviel bzw. ob diese eine bessere Performance mitbringen würde.
In der praxis werd ich wohl nicht mit sovielen gleichzeitgen Anfragen und Berchnungen zu tun haben, aber es geht um die Theorie mit einer starken Serverlast umzugehen.
Wie würdet ihr so ein Anwendungsfall realisieren?
Welche Datenbank und welche Datenbankverfahren würdet ihr empfehlen?
Für jegliche Anrregungen, weiterführende Literatur und Stichwörter wäre ich sehr dankbar.