¿Es mejor tener un campo en la base de datos que almacene el saldo de la cuenta de los clientes o usar vistas y consultas para generar la información?La mejor manera de mantener el saldo de una cuenta de cliente
Respuesta
Para el rendimiento, diría que ambos. Mantenga un registro de todas las transacciones (en una tabla separada) pero mantenga un campo en el registro del cliente que almacena el saldo actual que se actualiza cuando agrega más transacciones.
Creo que esto depende de muchos factores, con qué frecuencia accederá a la balanza, qué tan complejo es volver a calcularla cada vez que la necesite. ¿Cuáles son los gastos generales de tener vistas, etc.
Puramente en la cara de la información que ha proporcionado, yo almacenaría el valor, ya que recalcularlo desde cero cada vez podría ser un problema.
Si las vistas y las consultas le dan un resultado lo suficientemente rápido, entonces no almacene en un campo separado.
Si no es lo suficientemente rápido, guárdelo en un campo aparte. Como este campo almacenará información redundante, es muy importante mantenerlo sincronizado.
Eso sería una función de la frecuencia con la que necesita acceder a esta información. Si es de vez en cuando, entonces le digo que continúe y vuelva a calcularlo.
Un proyecto en el que trabajé almacenamos el saldo actual en un campo y todas las transacciones en otra tabla, pero debido al nivel de importancia que este proyecto tenía en los datos siendo perfecto 100% (o mejor) o tiempo, también almacenamos un hash de la balanza en otro campo y el hash se comparó cada vez que se llamó para garantizar la integridad; si no coincidía, se recalculó de la tabla de transacciones y se volvió a codificar y luego se envió al cliente departamento de soporte para la revisión.
Use las vistas y las consultas; le sorprendería saber qué tan rápido se ejecutará.
"Depende". La mayoría de las veces, desea evitar los datos derivados. Sin embargo, hay casos donde tener el total derivado está justificado.
Caso en cuestión:
que trabajó en una aplicación de base de datos de crédito, donde el equilibrio se compone de muchas cosas diferentes, y diferentes reglas de negocio a través del tiempo. Por ejemplo, el "saldo" era en realidad una suma de diferentes saldos de diferentes segmentos, como Principal, Honorarios, etc.
A medida que se contabilizaban las transacciones, se asignaban a diferentes depósitos de acuerdo con las reglas comerciales. Los honorarios fueron al canon de las tarifas. Las compras, los créditos y los débitos fueron al cubo principal. Estas asignaciones y reglas estaban sujetas a cambios a lo largo del tiempo.
Imagine consultar 100.000 saldos de clientes sobre la marcha frente a las cambiantes reglas de negocios a lo largo del tiempo. Este es un caso sólido donde tener el valor derivado realmente tiene sentido. Mantuvimos un conjunto de algoritmos para "rebobinar" la cuenta y reconstruir el balance cronológicamente con fines de auditoría y verificación, pero no era nada que quisieras hacer para conjuntos grandes.
Todos aquí están en lo cierto. Depende. Pero puedes tener lo mejor de ambos mundos usando una vista. Parece que podría tener un sistema bastante pequeño, y calcular dinámicamente el saldo será lo más fácil de hacer. Para mantenerlo simple, definiría una vista única que tiene los datos de la cuenta que desea (calculados dinámicamente).
Si va a necesitar más rendimiento que eso, establecería un sistema basado en disparadores para actualizar el saldo a la tabla de la cuenta principal, luego actualizaría la vista entre bastidores para que no tenga que cambiar cualquier otro código Solo asegúrate de estar usando el modo de aislamiento de base de datos correcto para cualquier consulta, ¡o tendrás problemas! ;-)
- 1. ¿La mejor manera de pagar una cuenta paypal de usuario?
- 2. Cómo obtener el saldo de la cuenta de la tarjeta SIM en el teléfono Android
- 3. ¿La mejor manera de mantener el índice en tiempo real?
- 4. ¿La mejor manera de mantener TYPO3 sys_log agradable y limpio?
- 5. La mejor manera de modelar Cliente <--> Dirección
- 6. mejor manera de desactivar el almacenamiento en caché del cliente
- 7. La mejor manera de manejar la autenticación de cuenta de usuario y las contraseñas
- 8. ¿Cuál es la mejor manera de mantener vivo el control de socket en .NET?
- 9. La mejor manera de administrar actualizaciones en una aplicación cliente/servidor iOS
- 10. ¿el saldo de la cuenta del usuario debe almacenarse en la base de datos o calcularse dinámicamente?
- 11. ¿Cómo haría una solicitud que recupere automáticamente el saldo de su cuenta bancaria dos veces al día?
- 12. ¿Cuál es la mejor manera de mantener actualizadas las bibliotecas de JavaScript en los rieles?
- 13. La mejor manera de incrustar un cliente de IRC en una página web
- 14. ¿Cómo obtener saldo de tarjeta de crédito?
- 15. La mejor manera de manejar una KeyNotFoundException
- 16. La mejor manera de distribuir tareas teniendo en cuenta la latencia y la eficacia
- 17. ¿La mejor manera de planificar una tarea?
- 18. La mejor manera de ordenar una matriz
- 19. ¿La mejor manera de iniciar una descarga?
- 20. ¿Cuál es la mejor manera hoy en día para mantener el código de Clipper 5.3?
- 21. La mejor manera de almacenar el árbol de prefijo grande
- 22. ¿La mejor manera de vaciar el stringstream?
- 23. ¿Cuál es la mejor manera de mantener el historial de cambios en los campos de la base de datos?
- 24. ¿Una mejor manera de manejar la bifurcación y la fusión?
- 25. ¿La mejor manera de analizar el flotador?
- 26. ¿Cuál es la mejor manera de verificar la conexión de un cliente a elasticsearch usando Java?
- 27. ¿Una mejor manera de probar el valor de una Opción?
- 28. ¿Cuál es la mejor manera de mantener las clasificaciones de las aplicaciones PHP?
- 29. La mejor manera de almacenar datos en el lado del cliente - ASP.Net + JQuery
- 30. La mejor manera de usar la guayaba