忙しいウェブサイトに「アクティビティログ」を追加しています。これにより、ユーザーに関連する最後のN個のアクションが表示され、専用ページに移動してすべてのアクションを表示したり、検索したりできるようになります。
使用されるDBはMySQLであり、ログをどのように保存する必要があるのか疑問に思っています-全文検索に使用される単一の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 )
);