如何为用户操作日志设计Cassandra方案?

时间:2017-06-30 12:32:07

标签: mysql cassandra cql

我在MYSQL中有一个这样的表来记录用户操作:

<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>

我有一个MYSQL查询这样可以找出每天特定行动的数量:

CREATE TABLE `actions` (
    `id` INT(11) NOT NULL AUTO_INCREMENT,
    `module` VARCHAR(32) NOT NULL,
    `controller` VARCHAR(64) NOT NULL,
    `action` VARCHAR(64) NOT NULL,
    `date` Timestamp NOT NULL,
    `userid` BIGINT(20) NOT NULL,
    `ip` VARCHAR(32) NOT NULL,
    `duration` DOUBLE NOT NULL,
    PRIMARY KEY (`id`),
)
COLLATE='utf8mb4_general_ci'
ENGINE=MyISAM
AUTO_INCREMENT=1

这需要50到60秒才能得到一个包含&#34;加入&#34;在日期和行动中只有500万行和索引的行动。

所以,我想使用Cassandra记录操作,那么如何设计Cassandra方案以及如何查询以获得不到1秒的请求。

1 个答案:

答案 0 :(得分:1)

<inut type="text" name="email" value="{{ $user->email }}">

说明: 用abobe表定义

CREATE TABLE actions ( id timeuuid, module varchar, controller varchar, action varchar, date_time timestamp, userid bigint, ip varchar, duration double, year int, month int, dt date, PRIMARY KEY ((action,year,month),dt,id) );

会点击单个分区。 在SELECT COUNT(*) FROM actions WHERE actions.action = "join" AND yaer=2017 AND month=06 GROUP BY action,year,month,dt列中,只有日期...可能您可以将其更改为仅dt作为数据类型的日期编号,因为intid ..它将是独一无二的。

注意: cassandra 3.10及以上

支持GROUP BY