Base de Datos a Utilizar en Sistemas Administrativos
Joaquin Jose del Cerro Murciano
jjdelcerro en cenoclap.es
Lun Ene 19 08:17:59 CET 2004
Hola,
Supongo, que como todos, hablo por la experiencia que he tenido, con lo que no
tiene por que ser del todo cierto.
Despues de currar mucho en VB+MSSQL migre a python y ha la hora de hacer
gestion me encontre con dudas similares. Llevo ya un par de años en python y
como base de datos tiro de Postgresql. No es que sea la mejor pero en
entornos Unix es la que mejor me ha ido. No tube que tocar mucho su
configuracion para que todo me fuese suave. Empeze con MySQL, sobre todo por
que basicamente andaba sola. Pero por lo menos la version que yo gastaba
tenia algunas limitaciones que no terminan de gustarme (gustos, no quiero
entrar en guerras), o pillaba transacciones o pillaba integridad referencial,
pero las dos juntas no, y ademas tal como venia ni unas ni las otras. No se
como estan las versiones actuales. Al final pille transacciones. Cuando
empeze a meterle caña, al principio fue bien, pero al ganar un poco de
volumen, empezaron a enlentecerse las inserciones, le costaba cerrar las
transacciones, pero era una situacion aceptable. Asta que un dia migre unas
tablas y consultas de MSSQL y mori. Una consulta que en MSSQL era instantanea
(un par de segundos sobre una tabla de 20.000 registros), paso a tardar casi
6 minutos. Repase indices, y mire la consulta desde todos los angulos, pero
no encontre nada. Instale el Postgresql, deje caer las tablas y de nuevo un
par de segundos. No se que haria mal, o si simplemente la consulta se las
traia (como nota decir que, la consulta era complicada y que en Access 2000
tardaba casi 15 minutos). Al final como ya tenia prisa deje el postgresql y
asi se ha quedado. Tengo unos buenos rendimientos (estoy haciendo
aplicaciones de gestion con un movimiento algo superior al que comentas), y
como no algunos problemas. Empece usando pyPgSql, parecia el mas simple. Hace
algunas cosas raras con las transacciones, por el hecho de habrir un cursor
con la BD inicia transaccion, aunque sea de lectura, y a veces, ante un error
de sintaxis en una SQL aborta la transaccion y te jo... fastidias, no hay
forma de recuperarse y te toca volver a empezar, pero con cuidado te puedes
apañar. Ademas pierdes siempre un par de segundos para hacer una consulta ya
que habre una conexion con el server para cada peticion. Dicen que el psycopg
(creo que se escribe asi) va mejor. Por ultimo sobre el Postgresql no he
conseguido un GUI de administracion que me acabe de gustar. Dices que la
ultima version del PGAdminIII esta bien, pero por tema de librerias no la
puedo arrancar en mi sistema.
Por ultimo y como dice Chema Cortes, si tienes que rodarla en un Win32 no se
como te andara el postgresql. Cuando lo probe no era aun un paquete del
cygwin, y instalarla era una odisea. Ahora parece que se instala solo, pero
no se como andara.
Si tienes que rodar en win32 la solucion de Marcos Sanchez puede ser la mas
sencilla y rapida. Yo lo usaba con VB, y ahora tiro de el esporadicamente
usando el modulo mssql con rendimientos muy buenos (el modulo parece algo
muerto pero es facil recompilar y portar, no tiene dependencias
representativas). Si los servidores son Win32 tirando de MSDE tendras unos
rendimientos muy buenos, pero ten cuidado con el crecimiento de la base de
datos, los tablespaces no pueden pasar de 2 Gb, cosa que parece mucho, pero
yo pete en tres años y me vi obligado a migrar (y cotizar) a un MS SQL
server. Ademas tienes una limitacion de asta 5 usuarios concurrentes (solo
por temas de licencias, te deja mas usuarios), aunque este no era problema,
al final de la jugada la aplicacion se loguea con tra la BD siempre con el
mismo usuario (no es lo mas sano pero si lo mas comodo).
Ha una tonteria mas, se consciente del volumen de datos que dices vas a
manejar. Puedes tener un crecimiento anual de mas de 200.000 registros
anuales (30.000 facturas de cuantas lineas ?). Piensa rapido ahora lo tienes
en un access y no es nada sano cuando el volumen de registros crece.
Sobre BD, resumiendo, sobre sistemas UNIX te recomiendo Postgresql y sobre
win32 MSDE.
En cuanto a interface grafica en su momento intente el wxPython, pero era
demasiado inestable (hoy no lo es), asi que me decidi por Tk. Es duro, muy
duro, pero no hagas caso a eso que dicen del aspecto. Mis aplicaciones de
gestion corriendo sobre un Unix me suelen decir que porque tienen ese aspecto
XP (realmente tienen un aspecto calcado del KDE 3.X) Hoy estoy dedicando unos
pocos recursos a migrar mi fronend grafico al wx. Mas que nada por tema de
velocidad. CUando un formulario tiene muchos controles (mi ficha de clientes
por ejemplo) puede tardar varios segundos en aparecer. Con wx se reduce
drasticamente el tiempo de carga. Respecto a que el wx hay que instalarlo,
pues si, apesar de lo cual las aplicaciones me dan 10 veces menos problemas
que con VB (creo que me he quedado corto).
Por ultimo un comentario mas. Uno de los problemas mas graves que he tenido
siempre en VB han sido las instalaciones. Asi que en mi migracion a
Python/Unix eso me preocupo mucho y opte por una solucion salomonica. Solo
instalo soft en el server y no en los puestos. La aplicaicon rueda en el
server y tipo de "Terminales X" en los puestosde win32. Para eso uso una
solucion basada en samba en la que en el server dejo una unidad compartida en
la que hay instalado un cygwin con sus X. Desde el puesto win32 montan la
unidad y ruedan un cmd que arranca el servisor X en modo ventana y se conecta
al server y arranca la aplicacion. Ademas doy acceso por VNC+inetd a la
aplicacion para puestos donde los recursos sean muy limitados (o el ancho de
banda pobre).
Bueno, ahi quedan mis andanzas y reflexiones por si te sirven de algo
Un saludo
Joaquin
El Jueves, 15 de Enero de 2004 19:33, visualnex escribió:
> Hola:
> Estoy analizando que bases de datos usar en aplicaciones administrativas.
> El volumen de datos a manejar es digamos 2500 facturas mensuales, 3000
> clientes y
> 100 recibos diarios. Un sistema de Red en Windows, 6 terminales.
>
> Por ahora y dado que las aplicaciones existentes, estan en Visual Basic 6.0
> sobre windows,
> elegi Access2000 (Base existente actualmente) , python (Por esta lista...)
> y tkinter (Por su poca demanda de recursos) como GUI.
>
> Me convendria cambiar a otro motor de datos una vez migradas las
> aplicaciones? Cual.
> Alguien utiliza posgrest en windows?
> Si alguien esta desarrollando sistemas administrativos, me podria decir que
> Base de datos y GUI utiliza?
>
> Saludos a todos
> Marcelo
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
--
--------------------------------------
Joaquin Jose del Cerro Murciano
jjdelcerro en cenoclap.es
Más información sobre la lista de distribución Python-es