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