Procesos por lotes (o batch) por lo general son los que involucran una fuente (generalmente temporal) de datos que tienen que ser procesados y/o integrados en una repositorio de destino. Generalmente se hace periodicamente o cuando se alcanza cierto volumen que justifique el realizar el proceso.
No toca aca discutir las cuestiones tecnicas de dichas tareas, que si se hace con transacciones o no, performance (solo debo comentar que por performance a veces no se trabaja con integridad referencial), si se va contra mainframe o no, sino el ir un poco mas alla de la racionalidad detras de la decision de usarlas, para lo cual me remitire a dos ejemplos que conozco de primera mano.
1) Para el que no lo sabe en España existe una Ley de Proteccion de Datos, que entre otras cosas permite al ciudadano el decirle a una empresa X que no quiere seguir figurando dentro de sus archivos (sobre todo si no eres cliente), en el caso que nos ocupa un usuario habia pedido a la empresa X dicha baja en la base de datos a fin de no seguir recibiendo publicidad, todo ok hasta ese momento, pero resulto que a poco de haber hecho esa solicitud recibio comunicacion publicitaria por parte de X, con lo que el usuario en cuestion denuncio a X por violar la citada Ley, que habia pasado? simple que la informacion sobre las bajas no era procesada automaticamente sino que se guardaba en un repositorio temporal, el cual era volcado periodicamente a la Base de Datos principal a fin de dejar constancia de las bajas (y supongo que tambien las altas) producidas, resultando que la comunicacion esa habia sido hecha en el intervalo entre la solicitud y el volcado respectivo, con el consiguiente perjuicio para X al haber violado la ley (pero no intencionadamente debo decir).
Eventualmente el procedimiento cambio aunque no se si para realizar las bajas en tiempo real o solo para incluir una advertencia al usuario acerca de que la baja no es automatica.
2) Estoy afiliado a Openbank, realizando practicamente todas mis operaciones via Internet o por Telefono, tan asi que en mas de 7 años solo he ido 4 veces a sus oficinas, el caso es que en ciertas ocasiones he necesitado realizar operaciones (via tarjeta o cajero) de monto mayor al limite de proteccion que tiene el banco, llegando a hacerlo por telefono en pleno establecimiento comercial, lo cual era procesado automaticamente, lo cual me parecia una ventaja en ciertas ocasiones; pues bien hace unos meses llame para realizar dicho procedimiento y me dijeron que lo hacian pero que tendria vigencia a partir del dia siguiente, ¿por que? porque habian cambiado sus procedimientos y en lugar de efectuar las ordenes y movimientos en tiempo real ahora se efectuaban en lotes entre las 10pm y la medianoche. Consecuencia directa: que el acceso a la web se vuelve mas lento en esa franja horaria y se pierde un servicio que resultaba muy conveniente para los clientes del banco, pero no solo ese servicio, sino tambien los pagos y transferencias, de hecho este lunes llame a la 10:20pm para ordenar una transferencia a otro banco, diciendome que dicha transferencia se haria efectiva hoy miercoles en la mañana, pero al final al verificar en la web resulta que la “Fecha valor” es …. mañana!!, ahora vete tu a saber si el banco destino lo hara efectivo inmediatamente, al final resulta que los envios de dinero que hago a Peru llegan antes que una transferencia dentro de España.
Son estos casos de uso evidente de procesos por lotes, se justifican sus posibles beneficios frente a los serios inconvenientes causados? lo dudo mucho.
Pero, siendo asi, ¿existen situaciones en la que sea necesario el usar procesos por lotes?, si, pero creo que en el escenario tecnologico actual solo cuando sea estrictamente necesario, osea cuando se trate de consolidar sedes remotas y la conexion no sea tan eficiente y sea necesario esperar a acumular operaciones para luego transmitirlas de manera comprimida (y espero que encriptada), luego se me dira que tambien podria ser necesario cuando el costo de la transaccion sea muy alto, pero antes de optar por ese camino habria que pensar si no es peor degradar la performance en el momento en que deciden ejecutarse de golpe todas esas transacciones, teniendo el añadido de que si tu negocio es online y supuestamente 24×7 uno no puede permitirse ese lujo.
Alguna otra idea para un escenario tolerable para los procesos en lotes? No, no me refiero a procesos de facturacion, nominas/planillas o informes periodicos, sino a movimientos cuyo registro afectan de un modo u otro las operaciones del dia a dia de la organizacion y/o la satisfaccion de los clientes/usuarios.