package com.sohu.cache.dao; import com.sohu.cache.entity.AppCommandGroup; import com.sohu.cache.entity.AppCommandStats; import com.sohu.cache.entity.AppStats; import com.sohu.cache.entity.TimeDimensionality; import org.apache.ibatis.annotations.Param; import java.util.List; import java.util.Map; /** * Created by yijunzhang on 14-6-9. */ public interface AppStatsDao { public static final int MINUTE_DIMENSIONALITY = 0; public static final int HOUR_DIMENSIONALITY = 1; /** * 插入或更新AppStats分钟统计 */ public void mergeMinuteAppStats(AppStats appStats); /** * 插入或更新AppCommandStats分钟统计 */ public void mergeMinuteCommandStatus(AppCommandStats commandStats); /** * 插入或更新AppStats小时统计 */ public void mergeHourAppStats(AppStats appStats); /** * 插入或更新AppCommandStats小时统计 */ public void mergeHourCommandStatus(AppCommandStats commandStats); /** * 按时间查询应用统计 * * @param appId 应用id * @param td 时间维度 * @return */ public List<AppStats> getAppStatsList(@Param("appId") long appId, @Param("td") TimeDimensionality td); /** * 按照分钟查询应用统计 * @param appId * @param beginTime * @param endTime * @return */ public List<AppStats> getAppStatsByMinute(@Param("appId") long appId, @Param("beginTime") long beginTime, @Param("endTime") long endTime); /** * 按照小时查询应用统计 * @param appId * @param beginTime * @param endTime * @return */ public List<AppStats> getAppStatsByHour(@Param("appId") long appId, @Param("beginTime") long beginTime, @Param("endTime") long endTime); /** * 按时间查询应用命令统计 * * @param appId 应用id * @param commandName 命令名称 * @param td 时间维度 * @return */ public List<AppCommandStats> getAppCommandStatsList(@Param("appId") long appId, @Param("commandName") String commandName, @Param("td") TimeDimensionality td); /** * 按应用命令统计 * * @param appId 应用id * @param td 时间维度 * @return */ public List<AppCommandStats> getAppAllCommandStatsList(@Param("appId") long appId,@Param("td") TimeDimensionality td); /** * * @param appId * @param beginTime * @param endTime * @param commandName * @return */ public List<AppCommandStats> getAppCommandStatsListByMinuteWithCommand(@Param("appId") long appId, @Param("beginTime") long beginTime, @Param("endTime") long endTime, @Param("commandName") String commandName); /** * * @param appId * @param beginTime * @param endTime * @param commandName * @return */ public List<AppCommandStats> getAppCommandStatsListByHourWithCommand(@Param("appId") long appId, @Param("beginTime") long beginTime, @Param("endTime") long endTime, @Param("commandName") String commandName); /** * * @param appId * @param beginTime * @param endTime * @return */ public List<AppCommandStats> getAppAllCommandStatsListByMinute(@Param("appId") long appId, @Param("beginTime") long beginTime, @Param("endTime") long endTime); /** * * @param appId * @param beginTime * @param endTime * @return */ public List<AppCommandStats> getAppAllCommandStatsListByHour(@Param("appId") long appId, @Param("beginTime") long beginTime, @Param("endTime") long endTime); /** * 查询一天中应用的命令执行次数的topN * * @param appId 应用id * @param td 时间维度 * @return */ public List<AppCommandStats> getTopAppCommandStatsList(@Param("appId") long appId, @Param("td") TimeDimensionality td, @Param("top") int top); /** * 查询一段时间内,各个命令执行次数分布 * * @param appId 应用id * @param td 时间维度 * @return */ public List<AppCommandStats> getTopAppCommandGroupSum(@Param("appId") long appId, @Param("td") TimeDimensionality td, @Param("top") int top); /** * 获取一定时间内命令峰值 * * @param appId * @param commandName * @param td 时间维度 * @return */ public AppCommandStats getCommandClimax(@Param("appId") long appId, @Param("commandName") String commandName, @Param("td") TimeDimensionality td); public AppCommandStats getCommandClimaxCount(@Param("appId") long appId, @Param("commandName") String commandName, @Param("td") TimeDimensionality td); public AppCommandStats getCommandClimaxCreateTime(@Param("appId") long appId, @Param("commandName") String commandName, @Param("commandCount") long commandCount, @Param("td") TimeDimensionality td); /** * 获取应用命令调用次数分布 * * @param appId * @param td 时间维度 * @return */ public List<AppCommandGroup> getAppCommandGroup(@Param("appId") long appId, @Param("td") TimeDimensionality td); /** * 应用分钟统计 * @param appId * @param beginTime * @param endTime * @return */ public Map<String, Object> getAppMinuteStat(@Param("appId") long appId, @Param("beginTime") long beginTime, @Param("endTime") long endTime); }