¿Por qué no deberías utilizar ServerDate() o ServerNow() en GeneXus?



Históricamente en los sistemas Cliente-Servidor, la aplicación se ejecutaba en el PC del usuario. Por esto, para obtener la fecha de forma consistente, ésta se obtenía desde el DBMS.

Hoy en día, generalmente disponemos de un sistema Web con una arquitectura en 3 capas, donde el usuario utiliza un navegador el cual se conecta al servidor de aplicaciones y este último, si es necesario, al DBMS. Debido a que todos los usuarios se conectan, a través del Browser, al servidor de aplicaciones, ya no es necesario consultar la fecha-hora desde la base de datos. En su lugar, lo mejor es retornarla directamente desde este servidor de aplicaciones.

Pero, ¿Que es lo que hacen estas funciones?

Estas funciones obtienen la fecha desde el DBMS mediante una query. Por ejemplo, en MSSql se utiliza:

SELECT GETDATE()

Esto quiere decir que cada vez que obtienes la fecha mediante estas funciones, el servidor de aplicaciones debe hacer un consulta al DBMS.

Suponiendo que estamos trabajando con un sistema Web, y que el mismo puede ser consultado por miles de usuarios, se debería evitar el uso de estas funciones ya que generan consultas innecesarias al DBMS. De hecho puede que la funcionalidad que se esté ejecutando no necesite conectarse al mismo, por lo que estamos generando una problema de performance.

De todas formas, ya tienes una mejor idea de como funcionan estas "funciones", y seguramente hay casos en los que te serán útiles.

Comentarios

Entradas más populares de este blog

Buenas prácticas al registrar logs en desarrollo de software

Enviando nuestros logs a Kibana rápido y simple

Buenas prácticas trabajando con parámetros o configuración del sistema