Georeferencias: almacenamiento

Sebastian Lezica slezica en fibertel.com.ar
Mie Mar 1 05:29:22 CET 2006


Buenas y santas!,
    Disculpen la molestia, tengo una duda existencial... ;)
    Me estoy volviendo loco armando una solución 'liviana', para la 
búsqueda de puntos geográficos próximos a unas coordenadas.
    Existen varias soluciones, pero mas pesadas de lo que me gustaria; 
busqué de todas las formas posibles en Google (inclusive intentando 
buscar aplicaciones orientadas a otros objetivos pero que contengan los 
mismos conceptos), y nada (que como siempre, no significa que no haya 
realmente nada sinó que no supe formular la pregunta correcta...).
    Mis premisas eran las siguientes:
    - Lo mas multiplataforma posible, si fuese puro Python mejor (el 
objetivo es ejecutarlo dentro de un hardware muy limitado en RAM y 
velocidad, con linux, y con una buena capacidad de almacenamiento).
    - Una base de datos liviana y rápida, teniendo que cuenta que el 
acceso generalmente es solo lectura (mis pruebas las hice con Berkeley DB).
    - El menor de uso en memoria posible, no me preocupa tanto el acceso 
al disco aunque si la velocidad final.

    Finalmente, tomando algunas partes y escribiendo otras, tengo una 
solución 'operativa' pero impracticable por la velocidad en que recupero 
el registro.

El problema:
    Estoy probando con 250.000 registros (en realidad van a ser cerca de 
un millón), y mas allá del 'índice' (uso una lista de con las lat/lon de 
cada punto y el nro. de registro) con el cual la búsqueda es de lo mas 
veloz, a la hora de recuperar el registro de la base (tipo BTree, aunque 
según la doc. cuando son muchos registros, no hace diferencia si es de 
ese tipo o Hash) se pone muy lento.
    Pensaba aprovechar el sistema de archivos como una base de datos, 
creando carpetas, subcarpetas y ficheros, estilo ID=1000, 
ruta=1/0/0/0.record. Alguna vez hice esto y es rapido, aunque muy 
ineficiente en otros factores (tanto cuando se modifique el indice 
-aprox. una vez al año- ya que debe recrearse casi completamente, como 
en el espacio real ocupado).
    Alguna recomendación?. No he probado PyTables aún, es una opción 
válida?.

Mas allá del tema de la base, si alguien ha tenido experiencias al 
respecto para compartir(soluciones livianas tipo gis), le agradeceria...

Muchas gracias, acepto toda recomenación y ayuda!,

Sebastián Lezica




Más información sobre la lista de distribución Python-es