在数据库中存储/记录击键

时间:2014-05-28 11:57:40

标签: mysql sql json database-schema keystroke

我正在开发一个模块,它必须记录并稍后在表单字段中回放所有单独的击键。我希望能够将其存储在数据库中,并能够快速检索。

通常,它将用于重放用户进入最终提交的文本的路径。

我想知道是否为每个按键插入一条记录(可能将带有压缩计数的连续相同笔划分组,虽然丢失了一些时间戳信息?)很好,

CREATE TABLE `keystroke_log` (
  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `keystroke` char(1) NOT NULL,
  `count` smallint(6) unsigned NOT NULL,
  `user_id` int(11) unsigned NOT NULL,
  'form_field_id' int(11) unsigned NOT NULL,
  'timestamp' timestamp NOT NULL default CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

或者将所有键击作为序列化的JSON对象存储在一行中是否更好?

CREATE TABLE `keystroke_log` (
  `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
  `user_id` int(11) unsigned NOT NULL,
  `form_field_id` int(11) unsigned NOT NULL,
  `keystroke_dump` MEDIUMTEXT DEFAULT NULL,
) ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8 ENGINE=InnoDB DEFAULT CHARSET=utf8;

编辑keystroke_dump JSON对象理想情况下包含时间戳和实际的UTF-8笔画代码

有没有更好的方法来存储和检索这些数据?

关系数据库中的JSON永远不是一个好主意,但最常见的查询必须加载整个对象,无论如何查询完整回放我不确定使用sql结构是否会导致显着的性能损失?

0 个答案:

没有答案