Veröffentlicht 19. Oktober 201113 j Hallo, ich habe eine Frage zu einer, wie ich finde, komplexen Problemkonstellation. Sicher ist dieses Thema bereits mehrfach im Internet zu finden, jedoch würde ich gerne Eure persönliche Meinung zu diesem Thema wissen: Es gibt ca. 30 MySQL Tabellen in meinem Projekt, die Ortsangaben enthalten. Ich habe zuerst den Namen als varchar in den einzelnen Tabellen hinzugefügt. Nun soll jedoch eine Umkreissuche verwendet werden, welches ein Problem bei mehrfach Ortsnamen aufwirft. Also habe ich mir gedacht, die Zeilen der Ortsangabe als Tabelle mit Postleitzahl und Längen und Breitengrad als eigene Tabelle auszulagern und den Ort dann als ForeignKey zu setzen. Nach der Recherche zu googleMaps und OpenGeoDb ist mir dann aufgefallen, dass ich viele Daten bereich als dumP erhalte, und somit doppelanfragne zu googlemaps verhindern kann, wenn diese bereits in meiner DB liegen. In Hinblick auf internationale Orte, stellt dieses aber ein großes Problem dar - die Tabelle wird riesig und Wartung und Aktualisierung werden sehr komplex. Was wäre eure Intention zu diesem Problem? Wir machen dieses andere Großprojekte? Vielen Dank für Eure Tipps und Anregungen!!!!
19. Oktober 201113 j Mein Ansatz wäre eine Aufteilung. Ich würde Deutschland und ggf. Länder, in denen die Firma Geschäftskontakte hat, offline vorhalten und für alles andere einen Webservice nutzen.
19. Oktober 201113 j Wenn Du eh einen Service wie GoogleMaps benutzt, warum willst Du die Daten dann lokal vorhalten?
19. Oktober 201113 j Autor Um die Anzahl der Abfragen auf dauer zu minimieren. google setzt bei großer Abfrage ein limit und danach wird die Nutzung sehr teuer. Die Daten von OpenGeoDb sind ja relativ gut aufbereitet! Zumal wenn ich nur auf googleMaps aufbaue, muss ich die Daten ja auch irgendwie speichern. Was schlägst du dort vor? Also der User gibt praktisch den Namen seiner Stadt ein, ggf. mit PLZ. Dann gibt mir googleMaps API die Längen- und Breitengrade zurück - diese speicher ich dann?
19. Oktober 201113 j Autor ja,bei einer internen suche - um ziele einzugrenzen. Jeder User kann auf diese Suche zugreifen.
19. Oktober 201113 j Öhm... wie jetzt? Du hast zuerst eine Suche mit variabler Quelle und danach soll jede schon einmal durchgeführte Suche zur Eingrenzung weiterer interner Suchen verwendet werden können? Oder habe ich das jetzt falsch verstanden?
19. Oktober 201113 j Das Vorgehen funktioniert auf Dauer nicht, denn wenn Du eine Suche zu dem Ort X durchführst, dann kannst Du nur cachen, was Du für diese Suche gefunden hast. Selbst wenn eine zweite Anfrage zu dem Ort X statt findet und sich nur ein Suchparameter ändert, musst Du eine neue Abfrage an den Service senden. Entweder besorgst Du Dir die Geodaten und implementierst alles selbst oder Du musst eben den Webservice abfragen.
19. Oktober 201113 j Autor Alles klar. @Pixie: Fast. Ich dachte halt, wenn ich nach "Berlin" suche, frage ich einmalig googeMaps nach den Koordinaten ab, speicher Sie dann in einer Tablelle z.B. locations, mit allen googlemaps Daten. Jetzt kann ich ja mit folgender Formel: var x = 2 * $Erdradius * arcsin( sqrt( pow($x1 - $x2, 2) // Hinweis: pow($Basis, $Exponent) berechnet + pow($y1 - $y2, 2) // "$Basis hoch $Exponent". + pow($z1 - $z2, 2) // Hier also "($z1 - $z2)^2" ) / (2 * $Erdradius) ); In meinen anderen Tabellen suchen. Sucht nun eine weitere Person nach "Berlin", entnehme ich die Daten aus meiner Datenbank. Klingt für mich nun auch sehr kompliziert - die Frage ist halt, obs sinnvoll und performant läuft, ich habe gut 1.2 mio Ortsangaben mit PLZ in verschiedenen Tabellen, deshalb die Umstrukturierung.
19. Oktober 201113 j Diese Methode berücksichtigt kein Änderungen der Daten, d.h. wurde einmal nach Berlin gefragt, dann hast Du ggf irgendwann INformationen in Deiner Datenbank, die nicht mehr aktuell sind, weil Du sie nicht abgleichst. Zusätzlich bekommst Du Duplikate, die sich nicht eindeutig zuordnen lassen. Wenn Du nach Berlin suchst und das Ergebnis speicherst, dann einen Ort in der Nähe von Berlin als Suche nimmst, dann erhältst eine überlappende Ergebnismenge
19. Oktober 201113 j Autor ja, Aktualität ist das Problem. Ich weiß nicht, ob ich mich richtig ausgedrückt habe @flashpixx. Ich wollte nicht das Ergebnis speichern, sondern nur die geolocations, die ich von googe bekomme. Geolocation API - Gears API - Google Code Somit habe ich irgendwann eine Basis von Städten und Adressen, die immer wieder auftreten und den Umkreis kann ich ja mit der oberen Formel berechnen, somit dachte ich, erhalte ich eine schnelle Lösung, die auch mit wenigen WebService abfragen funktioniert.
19. Oktober 201113 j Ich wollte nicht das Ergebnis speichern, sondern nur die geolocations, die ich von googe bekomme Selbst diese ändern sich, wenn Du z.B. alle Hotels im Umkreis von 50km von einem Ort suchst, dann kann es passieren, dass Hotels nicht mehr existieren oder anders heißen usw. D.h. bei Deiner Umkreissuche wäre eben der Datenstand nicht immer aktuell. Rein technisch würde man die Geokoordinaten der Orte und der Hotels speichern und dann entsprechend aus der Datenbank lesen.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.