我在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秒的请求。
答案 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
作为数据类型的日期编号,因为int
是id
..它将是独一无二的。
注意: cassandra 3.10及以上
支持GROUP BY