20/04/2016, 03:54
|
| Moderador criollo | | Fecha de Ingreso: noviembre-2007 Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años Puntos: 2658 | |
Respuesta: ¿Como mantener la integridad de la bd y/o asegurarse de que se ejecuten to Es una decisión de diseño. Dependerá de qué hay que hacer y en que contexto.
Usar la API puede ser buena idea en ciertos casos y un problema en otros, de acuerdo a la estabilidad del sistema o sus limitaciones, o incluso an la necesidad de ejecutar toda la tarea como algo integral en la base.
Sin saber como es el caso, No se puede recomendar uno u otro.
Vamos a suponer, como ejemplo, un escenario: Tienes tres operaciones que debe hacerse en una misma transacción, y tu aplicación tiene un timeout configurado en 120 segundos (una barbaridad, son dos minutos). Suponiendo que la duración de cada proceso a realizar incluyendo el overhead de red sea de 20 segundos, puedes enviarlos sucesivamente o en tres hilos sin problemas, e incluso puedes enviarlos a realizar todos a la base. El tiempo mínimo será de 20 segundos y el máximo será de 60.
Pero si uno de los procesos dura 60 segundos y los restantes 30 cada uno, no puedes mandarlos en forma sucesiva. Si o si tienen que ejecutarse en paralelo, o cae en error por causas ajenas al procesamiento. Esa ejecución en paralelo puedes hacerla en hilos de la base de datos, o bien en hilos de peticiones diferentes. La conveniencia de una u otra solución dependerá de qué realizan esos procesos, dado que enviarlos a hilos de la base puede evitar overhead de cada petición, que sería única. En ese contexto TAL VEZ una sola llamada a la base sea una buena idea.
Lo que quiero expresar es que no hay una sola y única consideración a tener en cuetna para determinar qué solución se debe aplicar. Depende del contexto.
__________________ ¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente... "El problema es la interfase silla-teclado." (Gillermo Luque)
Última edición por gnzsoloyo; 20/04/2016 a las 07:40 |