Python para altos volúmenes de datos

Joaquin Jose del Cerro Murciano jjdelcerromurciano en yahoo.es
Mar Mayo 31 20:04:46 CEST 2005


Hola, 

Personalmente aun no me he tropezado con tener que manejar una aplicaccion en 
python del calibre que pareces indicar. Ahora bien, llegue a python desde Vb 
y alli si que me las tube que ver con ese tipo de aplicaciones. Normalmente 
el problema no suele estar en el lenguaje de programacion. Cuando te 
tropiezas con un rompecabezas de ese estilo el truco esta en un diseño de 
aplicacion y base de datos apropiado, y generalmente muy poco ortodoxo.
Si sales por la calle de en medio y al final para hacer la explotacion tienes 
que recorrerte un par de millones de registros de una BD y hacer operaciones 
con ellos vas mal, y ademas no importa el lenguaje que uses.

Elije un buen gestor de base de datos y centrate en el diseño y alimentacion 
de esa base de datos, pensando en facilitarte luego las tareas de 
explotacion.

Para que te hagas una idea. La ultima aplicacion gorda que hize (con vb y 
sqlserver), tiene ya un par de tablas con unos 15 millones de registros, y 
para que andase hay que deshabilitar las optimizaciones del propio gestor de 
BD, y que tire de los indices que yo le digo. Ademas en el momento de 
insertar los datos se hacen todos los calculos que se puede y se guardan ya 
hechos para facilitar la explotacion. Si cuando me piden un informe tubiuese 
que calcularlo todo el usuario se podria ir a hecharse una siesta antes de 
que estubiese.

Hace poco he tenido que hacer algo en python que maneja cartografia, y los 
datos cartograficos que tengo ocupan unas 5 Gb (shps+dbfs). El truco esta en 
organizarlo de forma que no tengas nunca que recorrerte los 5Gb en python 
para hacer algo con ellos. Los organizas de forma que puedas recortar la 
informacion a la hora de procesarla. Y apesar de ello, pintar un mapa supone 
mover unas 500.000 lineas. Pues te toca optimizar tu codigo, y ademas a mano. 
Y al final encuentras que hay partes que aun asi no puedes hacer nada con 
ellas. Si tienes una funcion que es llamada 500.000.000 veces, al final pasas 
del python y la compilas en pyrex, y puedes reducir el tiempo asta un 60%, y 
algunas las hize en C+swig y les llegue a sacar un 90%. Pero basicamente, 
invocar a una funcion 500 millones de veces, si la funcion esta en python, es 
lento; pero si esta en casi cualquiercosa tambien es lento.

Resumiendo, python es apto para un volumen de datos grande ? 

Depende de como te lo puedas montar y de tu gestor de BBDD (a veces debes 
prescindir de un gestor de BBDD para obtener mejores rendimientos, pero no es 
lo normal).

Como nota final, 
despues de ... muchos años de VB y Micorsoft, hace 3 años que trabajo con 
python como lenguaje de proposito general para mis aplicaciones, y uso 
PostGreSQL como gestor de BD.
Aun no me he arrepentido.

Un saludo
Joaquin.

El Martes, 31 de Mayo de 2005 19:02, Cesar Cardenas Desales escribió:
> Saludos:
>
>    Estoy muy próximo a iniciar un nuevo proyecto,
> donde una de los pocas cosas ciertas que hay es que la
> carga de datos será muy grande: es un proyecto a nivel
> nacional(México) para la evaluación de varios aspectos
> del sistema educativo. Como consecuencia estoy
> previendo tener una gran cantidad de datos
> provenientes de los varios millones de niños y
> profesores que se evaluarán constantemente.
>
>    Gustosamente estoy pensando usar Python para mi
> proyecto, sin embargo, tengo mis dudas. Ya una vez
> tuve una amarga experiencia con un analizador
> léxico/sintáctico escrito en python que no soportó una
> gramática bastante grande que le proporcione, y que
> tuve que implementar en Java.
>
>    ¿Alguien ustedes utiliza o ha escuchado de alguien
> que utilice python para grandes volúmenes de datos?
> ¿Deberé volver nuevamente a Java con la cola entre las
> patas? ¿Podré confiar en mod_python para la parte de
> Web? ¿Servlets en Jython serán una mejor opción que
> mod_python? ¿Scipy y Numpy podrían salvar mi orgullo
> de Pythonista?
>
>    Saludos
>
>    César
>
>
>
>
>
> ___________________________________________________________
> Do You Yahoo!?
> La mejor conexión a Internet y <b >2GB</b> extra a tu correo por $100 al
> mes. http://net.yahoo.com.mx
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es

		
______________________________________________ 
Renovamos el Correo Yahoo! 
Nuevos servicios, más seguridad 
http://correo.yahoo.es




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