Estoy desarrollando una aplicación web que utiliza MS SQL para diversos datos: incluidos usuarios, cuentas de usuario, licencias de usuario, precios de licencia, facturas.
Necesito registrar el uso del sistema en tiempo real de los usuarios y usarlo para la facturación mensual: por ejemplo, iniciar sesión cada vez que un usuario obtiene una página / URL específica y facturar a los usuarios al final del mes en función de la cantidad de páginas que obtuvieron.
¿Debo escribir estos eventos de registro en una tabla en mi base de datos MS SQL?
¿Debo escribir estos eventos de registro en un archivo de registro de solo agregado no SQL?
¿Debo escribir estos eventos de registro en un archivo de registro diferente para cada usuario?
Este no es un sitio web de gran volumen: por ejemplo, un máximo de 10,000 usuarios cada uno haciendo un promedio de 5 eventos registrables / día => 50,000 eventos / día = 30 eventos / minuto = 18,000,000 eventos / año.
Lo pregunto porque cualquiera de las opciones parece viable y no veo si una tiene una clara ventaja.
Los datos asociados con un evento facturable son simples, por ejemplo:
- ID de usuario (relación de clave externa con la tabla Usuarios en SQL)
- Fecha y hora
- URL de la página facturable
Mi propia respuesta a esta pregunta es la siguiente:
Algunos beneficios de escribir el registro en una tabla de base de datos:
- Integridad relacional: por ejemplo, los eventos registrados están asociados con ID de usuario válidos (definiendo la ID de usuario como una clave externa entre las tablas)
- Fácil de leer para la facturación: por ejemplo,
SELECT COUNT GROUP BY
para obtener un recuento de la cantidad de eventos de registro por usuario
Algunos beneficios de escribir en el archivo de registro:
- Rendimiento más fácil: SQL se usa con menos frecuencia, por ejemplo, solo para eventos de inicio de sesión de usuario, y principalmente solo para lectura
- Gestión más fácil: es más fácil archivar datos antiguos, por ejemplo, al final del año, moviendo archivos de registro antiguos en lugar de eliminar / archivar de la base de datos
Avíseme si mi respuesta es incorrecta; o exagera la importancia de algo; o ha olvidado alguna consideración importante.
Y / o por favor, hágame saber cuál es su respuesta, si es diferente a la mía.
Respuestas:
Dado que está utilizando esta información para fines de facturación, no veo por qué no la quiere en la base de datos, donde se puede consultar, agregar, informar y unir fácilmente a otros datos.
También creo que es mucho más fácil mantener una sola tabla de base de datos que contenga la información de registro que un montón de archivos de registro separados. Lo mismo ocurre con su preocupación por la carga en el servidor: hay formas mucho mejores de lidiar con eso que recurrir a mantener los datos en archivos planos.
Su tercera opción, por cierto, es hacer ambas cosas. Use la base de datos para la mayoría de las necesidades, pero tenga el archivo de registro para fines de auditoría.
fuente