Я розробляю веб-додаток, який використовує MS SQL для різних даних: включаючи користувачів, облікові записи користувачів, ліцензії користувачів, ціни на ліцензії, рахунки-фактури.
Мені потрібно реєструвати користування системою в режимі реального часу та використовувати це для щомісячного виставлення рахунків: наприклад, журнал кожного разу, коли користувач отримує певну сторінку / URL-адресу та виставляє рахунки користувачам наприкінці місяця, виходячи з кількості отриманих сторінок.
Чи слід записувати ці події журналу в таблицю в моїй базі даних MS SQL?
Чи слід записувати ці події журналу в файл журналу, який не належить до SQL?
Чи слід записувати ці події журналу в інший файл журналу для кожного користувача?
Це не дуже масштабний веб-сайт: наприклад, максимум 10 000 користувачів, що проводять в середньому 5 подій, що реєструються / день => 50 000 подій / день = 30 подій / хвилина = 18 000 000 подій на рік.
Я прошу, бо будь-який варіант здається життєздатним, і я не бачу, чи є в них явна перевага.
Дані, пов’язані з подій, що підлягає оплаті, прості, наприклад:
- Ідентифікатор користувача (зв’язок із зовнішнім ключем до таблиці користувачів у SQL)
- Дата і час
- URL-адреса сторінки, що підлягає оплаті
Моя власна відповідь на це питання така:
Деякі переваги запису журналу в таблицю бази даних:
- Реляційна цілісність: наприклад, зареєстровані події асоціюються з дійсними ідентифікаторами користувачів (шляхом визначення ідентифікатора користувача як зовнішнього ключа між таблицями)
- Легко читати для виставлення рахунків: наприклад,
SELECT COUNT GROUP BYдля підрахунку кількості подій журналу на користувача
Деякі переваги написання файлу журналу:
- Легша продуктивність: SQL використовується рідше, наприклад, лише для подій входу користувачів, і в основному використовується лише для читання
- Легше керувати: простіше архівувати старі дані, наприклад, наприкінці року, переміщуючи старі файли журналів, а не видаляючи / архівуючи з бази даних
Будь ласка, дайте мені знати, якщо моя відповідь неправильна; або перебільшує важливість чогось; або забув якесь важливе враження.
І, або, будь ласка, дайте мені знати, яка ваша відповідь, якщо вона відрізняється від моєї.