FoxPro/Visual FoxPro - Otra prueba de red ¿Qué opinan?

 
Vista:

Otra prueba de red ¿Qué opinan?

Publicado por Andrea (325 intervenciones) el 02/09/2010 01:45:16
Siguiendo en tren de mejorar la velocidad de la aplicación en red, hoy hice una prueba en la computadora que programo:

Como ya expliqué en otro post, tengo una aplicación (EXEs y datos) en un Servidor al que todos acceden mediante mapeo de unidades.

Lo que hice hoy en mi computadora fue crear EXEs que puedan correr en cada terminal y que "lean" los datos del Servidor

Para probar si funcionaba en mi computadora (Porque entenderán que no siempre es posible hacer pruebas en esas empresas porque además, tiene que estar el chico encargado de la parte técnica)
a) La carpeta principal del programa la definí como carpeta compartida
b) Creé una unidad de red (en este caso X: ) con esa carpeta
c) El el programa definí SET DEFAULT X:

Increíblemente el programa funciona lento!!! Es decir, estando en mi computadora (sin red) pero simulando una red local YA SE PONE LENTO!!

Por las dudas, hice una prueba más:
En vez de crear una una de red, definí la carpeta compartida así
SET DEFAULT \\mi_Compu\Programa\
y la lentitud sigue.!!

Conclusión: no influye la red física (hardware) sino la red lógica. Ya el hecho de decirle a VFP que es una red, pone todo más lento...

Salvo que haya alguna cosa que se me esté escapando... ¿Qué puede ser?

Muchas gracias =)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Otra prueba de red ¿Qué opinan?

Publicado por Andrea (325 intervenciones) el 02/09/2010 15:13:56
A ver...
¿Qué secuencia de pasos hacen ustedes cuando hacen un programa de red??

(La parte de OPEN DATABASE)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra prueba de red ¿Qué opinan?

Publicado por es_binario (757 intervenciones) el 02/09/2010 16:05:36
Con dbf se puede esperar mas que un buen rendimiento o planear un buen diseño, algo mas bien milagroso, con un amigo mio fuimos a un hospital en donde tenian una aplicacion compartida es decir una carpeta compartida junto con su programa que todos los departamentos del hospital usaban dandole doble click, lo tenian desde hace 5 años, y cuando lo vimos el dijo una gran verdad . -Funciona por que Dios es grande- (aunque yo no soy creyente), pense que era cierto.

se que cuesta algo de trabajo cambiarse a instrucciones sql-server, o mysql pero es necesario, recuerden que las dbf existen desde xbase y tambien en dbase 1,2,3 plus, y aunque el que las hizo verdaderamente rapidas fue foxpro en sus primeras verciones y clipper, ya era evidente que no hiban a ser buenas en red.

cuanto tomaria aprender a un programador nuevo un lenguaje sql como mysql o sqlserver, oracle 10g para los mas exigentes interbase en fin. no mucho por que estos lenguajes se basan en el lenguaje universal SQL. y por que no practicar un poco aventurarse a crear una aplicacion cliente servidor e ir practicando y aprendiendo en el desarrollo.

BUENO MIS PASOS.

Primero creo la base de datos toda la planea y los importante es ir pensando en que tareas, son muy frecuentes calculos o insert de auditoria para usuarios y tambien creo su tigers o disparadores. bueno este le dara un mejor rendimiento a la base de datos, todo esto lo hago en foxpro con tablas dbf.

Segundo utilizo una herramienta que se llam dbfmysql que me migra toda mi base de datos a mysql, una vez migrada recreo los indices por que no lo hace la herramienta y verifico que todo este bien.

Tercero: Aqui ya empieza la red, en mysql Admin, le creo los usuarios de las pcs, que van a usar la base de datos, y le doy los permisos correspondientes sobre la base de datos.

Cuarto: Ahora si en el codigo de la programacion en el prg principal tengo un form que es el login del usurio, en ese formlogin tambien tengo un boton en particular que se llam configuracion.

Lo que hace el form es ver si en una tabla llamada miconexion existen un usuario y una contraseña, si de ser asi, intenta conectarse usando esos parametros con mysql, con un try catch si logra conectarse carga los usuario y contraseñas con sus debidos permisos de mysql. de no poderse conectar le pide al usuario que registre 2 cosas.

la primera que registre como se llama la estacion y quien la puede usar, aqui el programa va a validar que sea un usuario valido de mysql (no de la base de datos sino de el sistema administrador mysql), ademas tambien le pide que valide como un usuario registrado de la base de datos en cuestion, digamos los de la refaccionaria.
si no existe el usuario una vez creada o conectada con el motor logeando como administrador va a poder crear los usuario que el quiera.

aqui la clave de todo este show, y lo bonito de los motores de bases de datos cliente-administrador es que unicamente tienes que crear usuarios en mysql por ejemplo igual podria ser sql-server o interbase en fin. es que ya con eso basta y no tenemos que preocuparnos por ver si una tabla o una base de datos esta siendo usada por otro usuario. sino que nosotros le solicitamos la informacion y el motor sql se encarga de gestionar la informacion segun las peticiones de los clientes es todo, no hay que hacer nada mas. para poder seguir usando los calculos como iff o los comandos de foxpro, lo unico que necitamos hacer es que el resultado de una consulta lo guardemos en un cursor que podemos usar como si fuera una tabla de foxpro.

yo tengo un programa en una maquina que el servidor es un athlon 3000+ con 1gb en ram y un disco duro sata de 360 que ademas el dueño usa para ver listas de precios y cosillas de ese tipo, y este servidor tiene instalado un xp professional y el mysql 5.1, y le sirbe a 5 equpos que atienden una refaccionaria, y jamas se ha bloqueado o a tenido problemas de respuesta en los datos, o en la creacion de las facturas en los ingresos de mercancia, en los pagos al proveedor, es una maravilla, y que me da ese buen comportamiento del software, me da mas clientes recomendados por el dueño. una frase muy comun. desde que el Sr. Victor me instalo este sistema jamas tenemos problemas te lo recomiendo, cobra caro pero no te vas a arrepentir.

y otra cosa a mi ningun cliente me ha dicho, oye pero quiero el programa me lo hagas en visual foxpro en 4 capas de dasarollo y que el motor sea sql server express edition ... ellos te dicen quiero un programa que controle esto que de estos datos que me permita capturar rapido una venta y que disminuya mis costos de papelera y agilize los calculos mensuales semanales de venta y tambien que me diga cual es el mejor vendedor para darles incentivos, ellos no les importa y la mayoria no entienden que herramientas o tecnologias uno puede usar para que su empresa trabaje bien.

en conclusion intenta hacer un sistema pequeño en un motor cliente servidor y vee la enorme la gigantesca diferiencia sin necesidad de grandes equpos en poder.

usa un quadcore para jugar o para un servidor de internet, pero para una red local un p4 3 o superior o equivalente bastara.

saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra prueba de red ¿Qué opinan?

Publicado por xx (378 intervenciones) el 02/09/2010 16:05:54
Yo sigo estos pasos:

* absorbo los problemas del negocio (levantamiento y entendimiento de reglas de negocios)

* diseño la base de datos optimizando al maximo es decir estudiando bien los indices, creando la menor cantidad maximo 3 por tabla, tratando de poner la menor cantidad de campos y la menor longitud posible de los mismos, el tipo de campos que utilizo para las tablas las trato de convertir todas a string puesto que es leida mas rapidamente por el motor XBase.
Segmentando en la mayor cantidad de archivos posibles los registros.
Las tablas principales o de uso masivo como articulos lista de clientes y/o proveedores pongo los campos principales y los menos utilizados los envio a otra tabla adjunta.
MUY IMPORTANTE!, NO UTILIZO NINGUN TIPO DE BUFFERS y SOLO TABLAS LIBRES.

* desarrollo y depuro la aplicacion siempre vigilando la optimización.

* descarto al amigo windows como servidor es extremadamente ineficiente, usando en su lugar fedora (linux) en modo consola preferentemente.

* me aseguro de que el cableado de red este normalizado es decir que sea correcto el cableado y no este cerca de motores electricos, cables electricos o cualquier fuente de interferencia, certificando que funcione siempre a 100mhz o mas la red.

Si utilizas genexus ese es el problema!!, genera demasiado codigo ineficiente al menos los que he visto en foxpro (version 6 y 8).

Deberias analizar bien en que puntos de tu programa esta el/los cuello/s de botella/s y postear el segmento de codigo responsable como la estructura de tus tablas y cantidad de registros para un mejor analisis.

Saludos!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Otra prueba de red ¿Qué opinan?

Publicado por jorge (45 intervenciones) el 02/09/2010 17:18:47
Andrea:
Todas la opiniones son validas. Te cuento mi experiencia. Hace, desde la epoca de Foxpro para DOS, muchos años que utilizo tablas DBF en red y hasta la fecha no he tenido los problemas de lentitud que tu mencionas. Para ello hay que tener en cuenta algunas cosas por ejemplo:
-Utilizo el comando Seek con tablas indexadas
-Tratar de no usar filtros
-Utilizar temporales cuando la tabla es muy grande y los criterios de busqueda son varios.
-No utilizar los metodos InteractiveChange en red.
En fin eso son algunas de las cosas que basicamente debes tener en cuenta. Lo que pasa que tienes que probar y probar todas las alternativas, inclusive desde la ventana del Command cual es el método mas rapido para tu sistema.
La lentitud es a veces debida a la informacion que muestras en pantalla, en lo posible se concisa y evita imagenes o animaciones que son unicamente para la estetica del programa y que el cliente raramente valora.
Tengo desarrollado un sistema de Gestion que funciona muy bien en red inclusive a traves de VPN.
En fin espero haberte ayudado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Gracias

Publicado por Andrea (325 intervenciones) el 02/09/2010 18:33:22
Gracias a todos por sus opiniones y sus aportes.

Voy a leer cada post con detenimiento y buscar de mejorar el problema con lo que hay (mientras sigo trabajando en un modelo cliente-servidor adecuado)

Ni bien tenga alguna noticia o si encuentro alguna mejora que les sirva (al menos como estadística) los voy a tener al tanto.

Muchas gracias!! =)

Andrea
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar