2010-10-17 12 views
5

Busqué en SO y realmente no encontré una respuesta a esto, pero parece ser un problema común.Búsqueda eficiente Ubicaciones geográficas más cercanas

Tengo varios cientos de miles de ubicaciones en una base de datos, cada una con el código geográfico (lat/long). Si es importante, están distribuidos en todo EE. UU. Ahora, tengo una aplicación cliente en la que deseo que los usuarios me den su latitud/longitud y un radio (digamos 5mi, 10mi, 25mi, etc.) y deseo devolver todo el registros que coinciden. Solo me importa el valor de la distancia que se puede obtener a través de, digamos, la fórmula de Haversine, no la distancia más corta de la carretera. Sin embargo, dado eso, quiero que sea lo más preciso posible.

Esta base de datos es principalmente de solo lectura. En un buen día, puede haber 10 inserciones. Ahora, tendré cientos de clientes, tal vez decenas de miles de clientes que usarán el software. Quiero que los usuarios obtengan resultados en unos segundos, pero si una sola consulta demora de 10 a 20 segundos, se rastreará cuando se golpee con una carga de clientes.

¿Cómo puedo obtener resultados de la manera más eficiente posible? Sé que podría simplemente almacenarlos en MySQL o PostgreSQL (Oracle y MS SQL Server están listos para esto, pero puede que algún otro almacén de datos de código abierto esté bien) y simplemente ponga la fórmula Haversine allí cláusula WHERE, pero no creo que va a producir resultados eficientes.

Respuesta

2

PostgreSQL soporta una amplia gama de consultas geoespaciales, con tal de que tiene los PostGIS extensiones instaladas. Las búsquedas más cercanas o con un radio o un cuadro delimitador son particularmente fáciles.

+0

El número de consultas a bases de datos realmente podría afectar al servidor. Así que sugeriría indexar los datos (Local Solr) –

+0

La funcionalidad principal de PostGIS es un índice espacial y consultas eficientes contra ese índice. – SingleNegationElimination

1

He usado Solr (servidor de búsqueda basado en Lucene) para la búsqueda de radio. Hemos escrito un portal de propiedades que permite al usuario buscar las propiedades según el radio.

Indexamos la base de datos, por lo que la búsqueda será muy rápida.

Cuestiones relacionadas