Quindi, in breve,
- Quale dovrebbe essere il tipo di dati di latitudine e longitudine?
- Quale comando SQL dovrei chiamare per ottenere ad esempio i primi 100 ristoranti più vicini?
Dettaglio:
Ho 100k biz record ciascuno con latitudine e longitudine. Vedo che MySQL in realtà supporta un tipo di dati chiamato point. Dovrei usarlo invece?
MySQL supporta il sistema di archiviazione KDTree http://en.wikipedia.org/wiki/File:KDTree-animation.gif
È preferibile utilizzare il tipo di dati punto anziché il normale tipo di dati float per archiviare latitutude e longitudine?
Alla fine voglio trovare cose come i primi 100 ristoranti più vicini ai punti 105,6 per esempio e il mio database contiene molti biz e punti. Ovviamente calcolare la distanza uno per uno per ogni record e per ogni punto sarebbe O (n) e quindi fa schifo.
Si noti che sono a conoscenza di una soluzione più semplice descritta in Come un'applicazione come Yelp Recupera le informazioni sulla distanza dalla base di dati in modo efficiente e lo implementerò anch'io per iniziare. Questa è una buona risposta
Tuttavia, penso che ci sia una crema della risposta del raccolto che dovrebbe superare quella giusta? In effetti, archiviare la posizione in base alla latitudine e alla longitudine e trovare gli oggetti più vicini è un problema molto comune, mi aspetto che mysql abbia uno schema di progettazione speciale per questo. Ce l'ha?
Dove posso saperne di più? Grazie.