Я рассматриваю возможность регистрации всех действий сайта / пользователя в базе данных и хотел бы получить некоторую информацию по этому поводу. Этот журнал будет использоваться для различных целей, включая регулирование (попытки входа в систему и т. Д.), Обслуживание клиентов, общее обслуживание и т. Д.
Это хорошо? Я полагаю, это зависит от объема трафика, но не вызовет ли это проблем с непрерывными вставками? (Я думаю об использовании InnoDB для FK-ограничений)
Если нет, какую схему вы бы предложили, чтобы она была достаточно гибкой, чтобы поддерживать различные типы действий от зарегистрированных и анонимных пользователей?
Я думаю о чем-то вроде:
CREATE TABLE `logs` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`action` varchar(128) COLLATE utf8_bin NOT NULL,
`user_id` bigint(20) unsigned DEFAULT NULL,
`value` varchar(128) COLLATE utf8_bin DEFAULT NULL,
`ip` varchar(40) COLLATE utf8_bin NOT NULL,
`timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `action` (`action`,`user_id`),
CONSTRAINT `logs_ibfk_1` FOREIGN KEY (`action`) REFERENCES `logs_actions` (`name`) ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
CREATE TABLE `logs_actions` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`name` varchar(128) COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin
Это был бы хороший подход?