Estoy escribiendo un programa usando Ruby on Rails y PostgreSQL. El sistema genera muchos informes que los usuarios actualizan con frecuencia y acceden con frecuencia. Me siento dividido entre si debo usar los desencadenadores de Postgres para crear las tablas de informes (como las vistas materializadas de Oracle) o los Rails incorporados en las devoluciones de llamada de ActiveRecord. Alguien tiene pensamientos o experiencias sobre esto?Ventajas y desventajas de los desencadenadores de base de datos frente a devoluciones de llamada de Active Record de Rails?
Respuesta
devolución de llamada son útiles en los casos siguientes:
- combinar todos lógica de negocio en los modelos de raíles que la facilidad de mantenimiento. uso
- Hacer de los carriles existentes código del modelo
- fácil de depurar
- código Ruby es más fácil que escribir/leer que SQL "de mantenimiento"
desencadenantes son útiles en los siguientes casos:
- El rendimiento es una gran preocupación. Es más rápido que las devoluciones de llamada.
Si su preocupación es fácil y limpia, utilice devoluciones de llamada. Si su preocupación es el rendimiento, entonces use desencadenantes.
Tuvimos el mismo problema, y dado que este es un tema interesante, lo elaboraremos según nuestra elección/experiencia.
Creo que el concepto es más complejo que lo que se destaca en la respuesta actual.
Como estamos hablando de informes, supongo que el caso de uso es la actualización de las tablas de almacenamiento de datos, no una aplicación "genérica" (esta suposición/distinción es crucial).
En primer lugar, la idea de "fácil de depurar" no es [necesariamente] verdadera. En nuestro caso, es contraproducente pensarlo.
En aplicaciones suficientemente complejas, algunos tipos de devoluciones de llamadas (actualizaciones de almacenamiento de datos/millones de líneas de código/equipo de tamaño medio o más) son simplemente imposibles de mantener, porque hay tantos lugares/formas en que la base de datos será actualizado, que será prácticamente imposible depurar las devoluciones de llamadas perdidas.
Los disparadores no tienen que diseñarse necesariamente como la lógica "compleja y rápida". Específicamente, los desencadenadores también pueden funcionar como lógica de devolución de llamada de bajo nivel, por lo tanto, son simples y delgados: simplemente reenviarían los eventos de actualización al código de raíles.
Para concluir, en el caso de uso mencionado, las devoluciones de llamadas de los rieles deben evitarse como la peste.
Un diseño eficiente y eficaz es tener desencadenantes RDBMS agregando registros a una tabla de cola, y un sistema de cola de rieles, que actúa sobre ellos.
(Desde este post es viejo, yo soy curioso sobre lo que ha sido la experiencia de la OP)
- 1. Ventajas y desventajas de Java EE frente a los servlets
- 2. ¿Cuáles son las ventajas y desventajas de almacenar datos de sesión en el archivo frente a la base de datos?
- 3. Creación dinámica de nuevos modelos de Active Record y tablas de base de datos
- 4. attr_accessible in rails Active Record
- 5. Ventajas y desventajas de los métodos encadenables?
- 6. Rails: around_ * devoluciones de llamada
- 7. Ventajas y desventajas de BPMN?
- 8. Ventajas y desventajas de DotNetNuke?
- 9. Ventajas y desventajas de NHibernate
- 10. ¿Cuáles son los pros y los contras de usar Castle Active Record vs Straight NHibernate?
- 11. Ventajas/desventajas de los archivos de encabezado
- 12. ventajas y desventajas de MEF frente a áreas portátiles a través de MvcContrib para programación colaborativa
- 13. Ventajas y desventajas: Hibernate frente a EJB 3
- 14. Ventajas y desventajas de los motores de reglas de Java
- 15. Ventajas y desventajas de usar Enterprise Library
- 16. ¿Cuándo se activan los desencadenadores de la base de datos?
- 17. Llamar a una vista de base de datos en Yii usando Active Record
- 18. Rails Active Record translation: Auto capitalize/downcase?
- 19. Ruby on Rails Active Record Attribute Introspection
- 20. Cómo desactivar auto_increment en Rails Active Record
- 21. Cierre y devoluciones de llamada
- 22. Ventajas y desventajas de usar Storyboarding?
- 23. Delegados y devoluciones de llamada
- 24. diseño de base de datos: flexibilidad frente a la simplicidad
- 25. Diferencia entre Active Record y DAO?
- 26. Ventajas/desventajas de punteros automáticos
- 27. Ventajas y desventajas de usar java rmi
- 28. Ventajas y desventajas de usar biblioteca compartida frente a EAR totalmente encapsulado
- 29. Saltarse las devoluciones de llamada y validación
- 30. Ventajas/desventajas de guerras explosivas
¿Cuál es la razón para el aumento de rendimiento al utilizar disparadores? – Zubair
Porque en la devolución de llamada, se conectará a DB, sin embargo, en los desencadenadores no necesitará conectarse a db ya está en la capa de DB –
Ah tiene sentido.Gracias – Zubair