Campos de Cálculo no Almacenados de FileMaker
Claris recomienda diez cosas que puede hacer para maximizar la velocidad de su aplicación personalizada. Una de ellas es evitar el uso de campos de cálculo no almacenados. En esta publicación, analizo por qué estos campos pueden ser un problema.
El 5 de junio de 2020, Claris publicó en su Engineering Blog (inglés) un artículo titulado Top Tips: Optimizing Performance of FileMaker Custom Apps in the Cloud (inglés). El artículo contiene diez cosas que puede hacer para maximizar la velocidad de su aplicación personalizada. Aunque el artículo aparentemente aborda las aplicaciones personalizadas alojadas en la nube, las recomendaciones que hace harán que su aplicación personalizada sea más rápida sin importar cómo se hospede.
Por lo tanto, ya sea que abra su aplicación personalizada directamente en su computador, acceda a ella desde un servidor en la oficina o se conecte a ella de forma remota desde casa, verá ganancias de rendimiento al implementar los consejos sugeridos por los ingenieros de Claris.
En este artículo analizo en detalle el primer consejo; cubriré otros consejos en futuros artículos.
Campos de Cálculo no Almacenados de FileMaker
De una manera bastante obvia, los campos de cálculo no almacenados de FileMaker son excelentes: le permiten reunir rápidamente los resultados de la combinación de otros campos y, al igual que otros campos, colocarlos en presentaciónes para formatear y mostrar. Sus datos están actualizados.
Este aspecto de por qué son geniales es, sin embargo, también por qué pueden tener un efecto negativo en el rendimiento. Los campos de cálculo no controlados se vuelven a calcular cada vez que se necesitan. Mostrarlos en un presentación hace que se vuelvan a calcular. Si un campo de cálculo no registrado es la suma de un campo en un conjunto de registros relacionados, los datos del campo en esos registros relacionados deben descargarse primero en su dispositivo. Si, en lugar de mirar un registro, está mirando varios registros en una lista, el efecto se multiplica, ya que los datos de todos los registros que están relacionados con los registros de la lista deben descargarse.
Archivo de Demostración
Para ilustrar el efecto en el rendimiento he creado un archivo de demostración: demo_1_v1.fmp12 (12 MB). Para abrir el archivo, necesitará estas credenciales:
- Nombre de cuenta: Admin
- Contraseña: admin
El archivo de demostración contiene cuatro tablas principales, como se muestra aquí:
- A la izquierda de la jerarquía están los representantes.
- Junto a los representantes están las organizaciones: una organización está vinculada a un representante; un representante puede estar vinculado a cero, una o más organizaciones.
- A continuación se presentan las facturas: una factura está vinculada a una organización; una organización puede estar vinculada a cero, una o más facturas.
- Al final de la jerarquía están los productos: un producto está vinculado a una factura; una factura puede vincularse a uno o más productos.
¡Hagamos que esto Duela!
Para maximizar el efecto cuando miras a través del archivo de demostración, utilicé campos de cálculo no almacenados para sumar campos de cálculo no almacenados. Este esquema muestra lo que quiero decir.
En la parte inferior del esquema, los productos (#4 en la esquema) no tienen ningún campo de cálculo no almacenado: tienen un total neto (cantidad multiplicada por precio), un monto de impuestos y un total bruto (neto más impuestos).
Una factura (#3) tiene tres campos de cálculo no almacenados que suman los campos de los productos: el total neto, el impuesto y el total bruto de los productos en la factura. Una factura también tiene un campo que muestra el monto no pagado.
Una organización (#2) tiene cuatro campos de cálculo no almacenados que suman los campos de las facturas: la suma del total neto, la suma del total de impuestos, la suma del total bruto y el monto no pagado. Puede ver que tres de los campos suman campos de cálculo no almacenados.
Un representante (#1) tiene cuatro campos de cálculo no almacenados que suman los campos de las organizaciones: el total neto, el total de impuestos, el total bruto y el total no pagado. Los cuatro campos están sumando campos de cálculo no almacenados que a su vez suman otros campos.
Siga las instrucciones del archivo de demostración para ver la gran diferencia en el tiempo de carga entre los presentaciones que muestran campos de cálculo no almacenados y los presentaciones que muestran campos numéricos.
La Solución
Como afirman los ingenieros de Claris en su documento Top Tips, la solución es:
- Utilice campos que tengan cálculos de entrada automática adjuntos en lugar de campos de cálculo no almacenados. Cubriré este tema en mi próximo articulo.
- Si no puede reemplazar los campos de cálculo no almacenados, no los utilice en las vistas de lista, que muestran conjuntos de registros y, por lo tanto, la cantidad de datos relacionados que FileMaker tiene que descargar para los campos de cálculo no almacenados se multiplica significativamente.
- Del mismo modo, si utiliza campos de cálculo no almacenados, controle cuándo se muestran al usuario. Por ejemplo, colóquelos en un panel de pestañas o panel de deslizamiento o elementos emergentes que solo se muestre cuando el usuario elija específicamente verlo.
- Reduzca las dependencias de los campos de cálculo no almacenados. Esto se refiere específicamente a la configuración que utilicé en el archivo de demostración, donde un campo en productos se suma en facturas, luego el campo de suma se suma en organizaciones, luego ese campo de suma se suma en representantes. Los ingenieros de Claris dicen que no, ¡por favor no haga eso!
Espero que esto le haya ayudado a comprender por qué los campos de cálculo no controlados deben usarse con cuidado. Si desea agregar un comentario, hágalo a continuación.