Krótko mówiąc,
- Jaki powinien być typ danych szerokości i długości geograficznej?
- Jakie polecenie SQL powinienem wywołać, aby na przykład uzyskać pierwsze 100 najbliższych restauracji?
Szczegół:
Mam rekord 100k biz każdy z szerokością i długością geograficzną. Widzę, że MySQL faktycznie obsługuje typ danych o nazwie point. Czy powinienem tego użyć?
Czy MySQL obsługuje system pamięci masowej KDTree http://en.wikipedia.org/wiki/File:KDTree-animation.gif
Czy do przechowywania szerokości i długości geograficznej najlepiej używać punktowego typu danych niż zwykłego typu danych zmiennoprzecinkowych?
W końcu chcę znaleźć rzeczy, takie jak pierwsze 100 restauracji najbliższych punktów 105,6, na przykład, a moje bazy danych zawierają wiele dziwnych punktów i punktów. Oczywiście obliczanie odległości jeden po drugim dla każdego rekordu i dla każdego punktu byłoby O (n) i dlatego jest do kitu.
Zauważ, że jestem świadomy prostszego rozwiązania opisanego w temacie Jak aplikacja, np. Yelp Uzyskaj efektywnie informacje o odległości z bazy danych i zaimplementuję je również na początek. To dobra odpowiedź.
Myślę jednak, że istnieje jeden krem odpowiedzi na uprawę, który powinien przewyższać to prawo? W rzeczywistości, przechowywanie lokalizacji na podstawie szerokości i długości geograficznej oraz znajdowanie rzeczy najbliższych jest bardzo częstym problemem, który, jak sądzę, wymaga od mysql specjalnego wzoru projektowego. Czy to ma?
Gdzie mogę dowiedzieć się więcej na ten temat? Dzięki.