Ir al contenido


Foto

Delphi, IBX, Firebird, LAN, red virtual


  • Por favor identifícate para responder
15 respuestas en este tema

#1 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 334 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 25 enero 2010 - 08:20

Buenas compañeros, presento esta duda a la comunidad, no se si estoy en el foro correcto, si no es así, pido que se lo ponga donde corresponde.
A saber, he diseñado un sistema el cual funciona en una red LAN, aproximadamente 20 máquinas están afectadas a este sistema. Corre contra una base de datos Firebird 1.5 y he usado para la conexión con la misma los componentes IBX.

Resulta que la empresa esta quiere poner una sucursal y hay que extender el sistema hacia ahí. Para lograrlo se está pensando en poner una red virtual (VPN) usando internet como medio para lograr la conexión entre ambas LAN's, la de Casa central y la de la sucursal. Mis dudas son las siguientes:

¿IBX es lo adecuado para que el software se conecte a través de la VPN?
Actualmente el sistema trabaja con la modalidad "entorno conectado"; o sea, se conecta a la BD y permanece así hasta que al final de la jornada se desconectan los usuarios. Dentro de esta conexión se realizan todas las transacciones correspondientes para las diversas tareas. ¿Esto es adecuado para una VPN que tiene en el medio a Internet como medio de conexión? ¿Debo trabajar con "entornos desconectados" (como por ejemplo PHP y MySQL)?
En el caso de no ser adecuado IBX para estas tareas, ¿Qué componentes de conexión son los adecuados?

Bueno, estas son las primeras dudas. Espero que alguien pueda aclarar el panorama.

Saludos.

Santiago.
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 25 enero 2010 - 08:26

Hola santiago14

Si sabemos que una VPN es como si estuvieras conectado a tu red local, no veo el problema, sin embargo, pudieras considerar el uso de aplicaciones web para realizar esto. Seguramente algunos compañeros podrán darte mas información al respecto.

Salud OS
  • 0

#3 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 334 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 25 enero 2010 - 08:44

Gracias egostar, espero que los compañeros del foro puedan aportar mas pistas.

Saludos.
  • 0

#4 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 25 enero 2010 - 08:48

Saludos.

Pues igual que Egostar tampoco veo problema alguno al usar estos componentes para este tipo de conexión.

Como toda aplicación desarrollada para trabajar sobre LAN se debe de tener cuidado con la cantidad de registros que se devuelve al cliente ante cualquier apertura de dato o búsqueda de los mismos.  La ventaja que tiene IBX es que habla de manera nativa con Interbase/Firebird, aunque ya las ultimas versiones de Firebird no son soportadas al 100% con IBX.

También tienes a mano los componentes DBX ligado con DataSnap (ClientDataSet) pero el cambio será bastante drástico, aunque puedes ligar IBX con DataSnap (ClientDataSet) con menos cambios.

¿Puedes indicarnos que versión de Delphi usas?
  • 0

#5 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 334 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 25 enero 2010 - 09:28

Estoy usando Delphi 7, en una gama de Windows bastante considerable. Tengo Windows XP, 98 (una PC), y un server 2003.

Saludos.
  • 0

#6 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 26 enero 2010 - 12:39

Hola,

No hay nada como hacer algunas pruebas, ¿ porqué no abres temporalmente el puerto 3050 (Firebird) en tu router y te conectas con tu programa desde un Ordenador externo por Internet ?, básicamente será lo mismo cuando lo tengas conectado en una VPN.

La verdad es que Firebird no es la mejor base de datos para conectarse por Internet, y es que su protocolo de comunicaciones del servidor con el cliente de Firebird no está muy bien optimizado y hace bastantes viajes de ida y vuelta. Esto en una red local va perfectamente bien pero en una conexión por Internet donde el principal problema es la gran latencia, se convierte en un problema.

En cualquier caso te recomiendo que te actualices a la última versión disponible de Firebird, puesto que en cada actualización mejoran el protocolo de comunicacions, eliminando ciclos redundantes (por ejemplo, en la versión 2.1 estiman que el nº de ciclos de solicitud entre cliente y servidor se ha reducido en un 50% respecto a la 2.0).

Aún así podría ser que el rendimiento no sea suficiente (solo podrás saberlo cuando lo pruebes). En cuyo caso te recomiendo la solución que utilizo yo para casos similares : bases de datos replicadas. En lugar de trabajar todos los equipos con el servidor Firebird de la central, yo pongo un servidor Firebird en cada oficina, de forma que los ordenadores acceden siempre a un servidor local y por tanto consiguen un rendimiento óptimo. Ya solo queda montar un mecanismo de replicación para mantener sincronizadas las dos bases de datos.

Aquí tienes varias soluciones de replicación para Firebird (yo te recomiendo que mires especialmente el IBReplicator y el FBReplicator).

http://www.ibphoenix...=ibp_repl_tools
  • 0

#7 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 334 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 26 enero 2010 - 07:32

Gracias Marc, el asunto de las replicaciones no la había tenido en cuenta. Estoy leyendo la documentación del asunto en Phoenix.
¿Podrías ser un poco mas claro y contarme las posibilidades que brinda una replicación?

Saludos.
  • 0

#8 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 26 enero 2010 - 09:10

Hola Santiago.

La replicación consiste en tener tu propio servidor Firebird en cada oficina.  De esta forma los ordenadores de cada oficina pueden hacer las consultas directamente a su servidor con lo que el rendimiento es óptimo.

Cada cierto tiempo se tienen que sincronizar las bases de datos de los distintos servidores, para que todas las bases de datos tengan exactamente la misma información.

Ventajas :

* La velocidad de tus aplicaciones es inmejorable, puesto que se ejecutan contra un servidor local.
* Si por alguna razón una oficina se queda sin conexión a Internet, pueden seguir trabajando perfectamente, puesto que están utilizando su base de datos local. Simplemente no tendremos los datos actualizados/sincronizados hasta que no se restaure la conexión a Internet y se vuelva a ejecutar una sincronización.
* Cada servidor se convierte en una copia de seguridad del resto. Si tienes cualquier problema y se pierden los datos de un servidor Firebird, simplemente hay que coger y hacer una copia de una base de datos en otro servidor. De esta forma tenemos todos los datos hasta la última sincronización de datos, lo cual es como decir que solo vas a perder los datos introducidos en los últimos minutos, mientras que normalmente tendrías que recuperar los datos de una copia de seguridad hecha habitualmente por la noche, con lo que perderías horas de datos.

Inconvenientes :

* Los datos tardan un tiempo en propagarse a las distintas oficinas (el tiempo que programamos entre sincronizaciones). Esto no supone ningún problema en el 99% de los casos, si desde la central dan de alta un cliente, poco importa que lo tengamos disponible al instante en que lo introducen o cinco minutos después. Pero en unos pocos casos puede ser un problema. Por ejemplo, una consulta de stock quizás necesitamos que devuelva el valor exacto en un momento dado. En estos casos hay que hacer esa consulta directamente a la central, con algún mecanismo de tipo WebServices, o por el estilo.


Saludos.
  • 0

#9 pcicom

pcicom

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 267 mensajes
  • LocationMéxico

Escrito 26 enero 2010 - 10:56

Esto es muy simple como ya te han dicho con las VPN tienes, que basicamante son una conexion virtual por INTERNET a tu misma LAN, es decir como si estuvueras fisicamente en tu LAN.

En lo personal, si son mas de 1 equipos los que se conectarian a tu sistema por VPN, te recomendaria una conexion LAN -VPN - LANRemota, que fuera transparente, ya que de esta manera tu VPN mantendria la conexion de toda la RED LAN Remota con la PRINCIPAL..

Yo mentango enlaces entre sucursales con SERVIDORES LINUX, usando la BASE de DATOS de la EMPRESA que esta en FIREBIRD 2.0 desde ya mas de 7 años sin ninguna complicacion ni problemas de VELOCIDAD.

Deberas considerar que la CONEXION de tu Servidor debe de tener una muy buena conexion de velocidad a INTERNET, en mi caso esta a 4MB de BAJADA con 758K de Subida y se conectar serca de 20 equipos sin degredar la velocidad del servidor ni acceso al sistema...

SALUDOS..

  • 0

#10 Marc

Marc

    Advanced Member

  • Moderadores
  • PipPipPip
  • 1.484 mensajes
  • LocationMallorca

Escrito 26 enero 2010 - 11:57

@Pcicom, que a ti te vaya bien no quiere decir que a todo el mundo le vaya a ir bien. @Santiago tiene que probarlo, puesto que el que la aplicación vaya bien depende de la carga de consultas que haga al servidor, para unas aplicaciones una conexión a Internet irá perfecto y para otras se arrastrará como un caracol.

No es un problema de velocidad de la conexión a Internet (para el caso bien poca diferencia habrá entre una conexión a 2Mbps y otra a 100Mbps), el problema de las conexiones por Internet es la latencia.
  • 0

#11 pcicom

pcicom

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 267 mensajes
  • LocationMéxico

Escrito 26 enero 2010 - 04:06

Saludos Marc..  por eso menciono que en LO PERSONAL e indico mi recomendacion...

Y si me fue bien..  pero en un principio si fue problematico..  la desicion... y el diseñar el esquema de la solucion...

Al final de cuentas no hay nada mejor que probar, probar y probar...  y al final DECIDIR..


SALUDOS...

  • 0

#12 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 334 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 26 enero 2010 - 07:40

Muchas gracias compañeros, voy a tener en cuenta todas sus recomendaciones.
La verdad es que la cosa está tirada para el lado de una VPN por hardware (un CISCO si puedo) y yo que estoy a lo loco modificando el software para que reconozca las sucursales y deje de ser solamente la Casa Central.
Igualmente cuando la circunstancia apremie voy a estar aquí para solicitar su ayuda.

Saludos.
  • 0

#13 angel

angel

    Member

  • Miembros
  • PipPip
  • 19 mensajes

Escrito 27 enero 2010 - 11:08

Para mi la mejor solucion es usar los servicios de Terminal server.
saludos
  • 0

#14 santiago14

santiago14

    Advanced Member

  • Miembros
  • PipPipPip
  • 334 mensajes
  • LocationCerrillos - Salta - Argentina

Escrito 05 febrero 2010 - 01:20

Bien compañeros, volviendo al ruedo.
Luego de este debate acerca de la conectividad requerida, tengo algunas dudas mas.
En principio logrando la VPN tengo solucionado gran parte del problema. He aquí que la programación en este tipo de cuestiones es la que me desvela, principalmente el problema mas conocido de Internet, la latencia.
En estos momentos, cada vez que quiero ir contra la BD (Firebird 1.5) lo hago de la siguiente manera



delphi
  1. //.....
  2. try
  3.   transaction.startTransaction;
  4.   //Aquí realizo todos los accesos a la BD, ya sean Select, Insert, Update
  5.   //o combinaciones de todo tipo
  6.   //...........
  7.   transaction.Commit;
  8. except
  9.   transaction.Rollback;
  10.   //Mensajería de error
  11. end;
  12. //.......



Esto funciona muy bien en la red LAN, pero no tengo idea de su funcionamiento teniendo en el medio a Internet.
La duda radica en como se debe modificar ese pedazo de código (aumento, disminución, etc.) para que tenga cierta tolerancia a los desplantes de Internet (latencia claro está)
Que se yo, debería anular la transacción automáticamente después de cierto tiempo de NO respuesta, debería intentar de nuevo la operación después de cierto tiempo... o algo.
Bien, espero haber sido concreto.

Gracias.

Santiago.
  • 0

#15 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 05 febrero 2010 - 05:20

Saludos.

Así es que debes de utilizarlo (hasta donde mi conocimiento llega), lo que si te puedo recomendar es que hagas todo lo que puedas (por no decir todo) del lado del servidor así no se vera tan afectada tu conexión.
  • 0

#16 pcicom

pcicom

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 267 mensajes
  • LocationMéxico

Escrito 05 febrero 2010 - 08:21

Si no haces tu mismo las pruebas nunca vas a poder corroborar cual es la mejor alternativa, ya sea conexion remota o TERMINAL SERVER lo tienes que probar..

A veces dependera de tu programacion, por ejemplo si usas tablas planas la unica alternatica es TERMINAL SERVER.. con sistemas hechos CLIENTE/SERVIDOR en el cual unicamente mandas datos y recibes respuestas no le veo gran problema salvo tu logica de programacion..

Simple.. a probar...

SALUDOS..

  • 0




IP.Board spam blocked by CleanTalk.