我正在向一个繁忙的网站添加“活动日志”,它应该向用户显示与他相关的最后 N 个操作,并允许转到专用页面以查看所有操作、搜索它们等。
使用的数据库是 MySQL,我想知道应该如何存储日志 - 我从用于 FULLTEXT 搜索的单个 Myisam 表开始,并避免对每个操作进行额外的选择查询:1)对该表的插入发生 2 ) 更新每个 APC 缓存,因此在下一页请求 mysql 上不使用。缓存有一个日志生命周期,如果它丢失,来自用户的第一个 AJAX 请求会创建它。
我为每个用户缓存 3 个最后的事件,所以当一个新事件发生时,我会抓取当前缓存,将新事件添加到开头并删除最旧的事件,所以缓存中总是有 3 个。该网站的每个页面都有一个显示这些内容的小框。
这是正确的设置吗?你会如何推荐实现这种功能?
我的架构是:
CREATE DATABASE `audit`;
CREATE TABLE `event` (
`eventid` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`userid` INT UNSIGNED NOT NULL ,
`createdat` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`message` VARCHAR( 255 ) NOT NULL ,
`comment` TEXT NOT NULL
) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER DATABASE `audit` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE `audit`.`event` ADD FULLTEXT `search` (
`message` ( 255 ) ,
`comment` ( 255 )
);