Jadi, singkatnya,
- Apa yang harus menjadi tipe data lintang dan bujur?
- Apa perintah SQL yang harus saya panggil untuk mendapatkan 100 restoran terdekat pertama misalnya?
Detail:
Saya memiliki 100k catatan bisnis masing-masing dengan lattitude dan bujur. Saya melihat bahwa MySQL sebenarnya mendukung tipe data yang disebut point. Haruskah saya menggunakannya?
Apakah MySQL mendukung sistem penyimpanan KDTree http://en.wikipedia.org/wiki/File:KDTree-animation.gif
Apakah lebih baik menggunakan tipe data titik daripada tipe data float biasa untuk menyimpan latitutude dan bujur?
Akhirnya saya ingin menemukan hal-hal seperti 100 restoran pertama yang paling dekat dengan poin 105,6 misalnya dan database saya mengandung banyak biz dan poin. Jelas menghitung jarak satu per satu untuk setiap catatan dan untuk setiap poin akan menjadi O (n) dan karenanya menyebalkan.
Perhatikan bahwa saya mengetahui solusi yang lebih sederhana yang dijelaskan dalam Bagaimana Cara Aplikasi Seperti Yelp. Ambil informasi jarak dari basis data secara efisien dan akan mengimplementasikannya sendiri sebagai permulaan. Itu jawaban yang bagus.
Namun, saya pikir ada satu creme dari jawaban krop yang harus mengungguli itu kan? Bahkan, menyimpan lokasi berdasarkan lintang dan bujur dan menemukan barang-barang terdekat adalah masalah yang sangat umum. Saya berharap mysql memiliki pola desain khusus untuk itu. Apakah ada itu?
Di mana saya bisa belajar lebih banyak tentang itu? Terima kasih.