Si quieres empezar a usar Firebird uno de los primeros conceptos que debes tener muy en claro es Cliente/Servidor. Si no lo entiendes muy bien todas tus aplicaciones serán de muy mala calidad.

Entonces, ¿de qué se trata Cliente/Servidor?

Lo primero que debes saber es que esta es una metodología para acceder a los datos desde varias computadoras, en otras palabras, desde una red de computadoras. Aunque puedes hacer aplicaciones Cliente/Servidor que sean monousuario no fue pensado para eso sino para aplicaciones multiusuario.

En las aplicaciones antiguas los programas “tocaban” físicamente a los datos, o sea que por un lado estaba el programa, por el otro lado estaban los datos que se guardaban dentro de los archivos y no había algo entre ellos que los separara.

Programa <——–> Archivo de datos

Esto funcionaba, pero con muuuchos problemas potenciales, por ejemplo un usuario estaba modificando un registro que otro usuario también estaba modificando. O un usuario estaba borrando un registro que otro usuario necesitaba en su informe. Eso causaba muchos inconvenientes. Mientras no había algo mejor los usuarios debían conformarse con eso … pero ahora tenemos Cliente/Servidor.

¿Cómo funciona Cliente/Servidor?

En esta metodología los programas jamás “tocan” físicamente a los datos, aunque quieran hacerlo no podrán, es imposible. En lugar de eso, los programas se comunican con el Cliente, el Cliente le envía una petición al Servidor, el Servidor procesa esa petición y le envía la respuesta al Cliente y el Cliente se la envía al programa.

Programa —–> Cliente —–>Servidor

Servidor —–> Cliente —–> Programa

Como ves, el camino es mucho más largo pero también es muchísimo más seguro y confiable.

El Servidor del Firebird es un programa ejecutable (o sea, tiene la extensión .EXE) y el Cliente del Firebird es una librería de enlace dinámico (o sea, tiene la extensión .DLL)

El Servidor se instala en una computadora y solamente en una computadora ¿en cuál computadora? en la que alojará a las Bases de Datos en su disco duro. O sea que en la misma computadora donde se instaló el Servidor se deben encontrar todas las Bases de Datos.

El Cliente se instala en todas las demás computadoras.

Para que el Cliente pueda comunicarse con el Servidor y viceversa se necesita de un canal de comunicación. Firebird acepta varios (driver JDBC, driver .NET, driver Python, driver ODBC, etc). Posiblemente el más usado de todos sea el driver ODBC pero puedes usar cualquiera que te resulte cómodo.

Cuando un programa necesita algo se lo pide al Cliente y éste se lo pide al Servidor. ¿Qué puede necesitar un programa? Veamos algunos ejemplos:

  • Grabar la venta que corresponde a la Factura Nº 12345, con fecha de hoy, le vendimos a Juan Pérez y el monto de la venta fue de 1.250 dólares
  • Grabar la cobranza que hoy le hicimos a María Benítez, según el Recibo Nº 785 y por un monto de 420 dólares
  • Cambiar el precio de venta de los monitores Toshiba de 21″, el nuevo precio es 100 dólares
  • Ver todas las ventas que hicimos el mes pasado
  • Ver los nombres de todos los vendedores que hoy hicieron ventas por más de 500 dólares

En todos estos casos el programa se lo pide al Cliente, el Cliente se lo pide al Servidor y el Servidor trata de cumplir con el pedido. Si pudo cumplir se lo indica al Cliente enviándole un número 1. Si no pudo cumplir le envía el número -1. Y si aún no terminó de procesar el pedido le envía un 0 (cero) y así el Cliente sabe que el Servidor todavía está trabajando.

Por lo tanto si recibe un 1 el Cliente sabe que su petición tuvo éxito. Y si recibe un -1 el Cliente sabe que su petición falló.

Si la petición tuvo éxito el Cliente recibe un “cursor”. ¿Qué es un cursor? es una tabla de memoria, una tabla virtual, una copia del contenido que hay en el Servidor.

Eso significa que si modificas el cursor la Base de Datos ni se entera, su contenido queda exactamente igual a como estaba antes. ¿Por qué? porque el cursor es una copia de lo que está dentro de la Base de Datos (es como fotocopiar un libro, si escribes sobre la fotocopia el libro original continúa igual, allí no verás lo que escribiste en la fotocopia. En Cliente/Servidor siempre trabajas con fotocopias y jamás puedes tocar al libro original)

Resumiendo:

  • El Servidor es un programa ejecutable (tiene la extensión .EXE)
  • El Cliente es una librería de enlace dinámico (tiene la extensión .DLL)
  • Para que el Cliente y el Servidor puedan comunicarse entre sí se necesita de un canal de comunicación entre ellos (por ejemplo el driver ODBC)
  • El Servidor solamente se instala en una computadora (en aquella donde estarán todas las Bases de Datos). El Cliente se instala en todas las demás computadoras
  • El Cliente envía peticiones al Servidor, el Servidor procesa esas peticiones y luego le envía el resultado al Cliente
  • El Cliente sabe que su petición tuvo éxito si recibe como respuesta el número 1. Si la respuesta es -1 entonces la petición falló. Si la respuesta es 0 entonces el Servidor aún continúa procesando los datos
  • Si el Cliente recibió un 1 porque la petición tuvo éxito también recibe un “cursor”, una tabla de memoria, donde se encuentra la respuesta enviada por el Servidor (por ejemplo, los nombres de todos los vendedores que hoy vendieron por un monto superior a 500 dólares)
  • Ni la aplicación (el sistema de contabilidad, de ventas, de tesorería, de cobranzas, etc.) ni el Cliente jamás tocan a los datos, solamente el Servidor puede hacer eso.
  • El Servidor sólo toca a los datos si recibe un pedido del Cliente para hacerlo. Si el Cliente no se lo pide, el Servidor jamás toca a los datos.

Artículos relacionados:

El índice del blog Firebird21

El foro del blog Firebird21

 

Anuncios