Skip to content

Adas告警设计 V1:

sql
CREATE TABLE `video_adas_alarm` (
  `alarmDate` DATE COMMENT "报警日期:yyyy-MM-dd",
  `customAarmCode` varchar DEFAULT NULL COMMENT '报警唯一编码',
  `clientid` INT DEFAULT NULL COMMENT '客户id',
  `terminal_id` INT DEFAULT NULL COMMENT '车辆id',
  `alarmLevel` int DEFAULT NULL  COMMENT '报警级别:一二三',
  `alarmType` int DEFAULT NULL COMMENT '报警类型',
  `alarmEvent` INT DEFAULT NULL  COMMENT '报警类型:事件',
  `terminal_code` varchar DEFAULT NULL COMMENT '设备编码',
  `alarmTime` datetime DEFAULT NULL COMMENT '报警时间',
  `adasTerminalCode` varchar DEFAULT NULL  COMMENT 'ADAS报警设备编码',
  `adaslat` double DEFAULT NULL COMMENT '纬度',
  `adaslng` double DEFAULT NULL COMMENT '经度',
  `alarmBsDate` datetime DEFAULT NULL COMMENT '报警标识时间',
  `alarmMark` varchar DEFAULT NULL COMMENT '报警标识',
  `alarmid` INT DEFAULT NULL COMMENT '报警ID',
  `annexCount` tinyint DEFAULT NULL COMMENT '附件个数',
  `batteryPower` INT DEFAULT NULL COMMENT '电池电量',
  `beforeCarSpeed` INT DEFAULT NULL COMMENT '前车速度',
  `beforePerCarDistance` INT DEFAULT NULL COMMENT '前车/行人距离',
  `bjtimefz` INT DEFAULT NULL COMMENT '报警时间阀值',
  `carSpeed` INT DEFAULT NULL COMMENT '当前车速',
  `csbjtype` INT DEFAULT NULL COMMENT '超速报警类型',
  `deviateType` INT DEFAULT NULL COMMENT '偏离类型',
  `dir` INT DEFAULT NULL COMMENT '方向',
  `elevation` INT DEFAULT NULL COMMENT '海拔',
  `fatigue` INT DEFAULT NULL COMMENT '疲劳程度  数值越大表示疲劳程度越严重,仅在报警类型为 0x01 时有效',
  `flagStatus` INT DEFAULT NULL,
  `fz1` INT DEFAULT NULL,
  `fz2` INT DEFAULT NULL,
  `glat_xz` double DEFAULT NULL,
  `glng_xz` double DEFAULT NULL,
  `gpslat` double DEFAULT NULL COMMENT '纬度',
  `gpslng` double DEFAULT NULL COMMENT '经度',
  `identityNo` varchar DEFAULT NULL COMMENT '驾驶员从业资格证号',
  `logger_speed` double DEFAULT NULL COMMENT '行驶记录速度',
  `logoCategory` INT DEFAULT NULL,
  `logoData` INT DEFAULT NULL,
  `posinfo` varchar DEFAULT NULL,
  `rcvDate` datetime DEFAULT NULL  COMMENT '报警接收时间',
  `roadLimiting` INT DEFAULT NULL COMMENT '道路限速',
  `roadType` INT DEFAULT NULL COMMENT '道路类型',
  `serialNumber` INT DEFAULT NULL COMMENT '报警序号',
  `tireNum` INT DEFAULT NULL COMMENT '轮胎编号',
  `tirePressure` INT DEFAULT NULL COMMENT '胎压',
  `tireTemp` INT DEFAULT NULL COMMENT '胎温',
  `vhcstate` INT DEFAULT NULL COMMENT '车辆状态',
  `fileNames` varchar DEFAULT NULL,
  `level_type` varchar DEFAULT NULL
) ENGINE=OLAP
UNIQUE KEY(alarmDate, customAarmCode)
PARTITION BY RANGE(alarmDate) ()
DISTRIBUTED BY HASH(`customAarmCode`) BUCKETS 1
PROPERTIES (
  "replication_num" = "1",
	"bloom_filter_columns"="customAarmCode,clientid,terminal_id,alarmLevel",
  "dynamic_partition.enable" = "true",
  "dynamic_partition.time_unit" = "DAY",
  "dynamic_partition.history_partition_num" = "1",
  "dynamic_partition.start" = "-4096",
  "dynamic_partition.end" = "3",
  "dynamic_partition.prefix" = "p",
  "dynamic_partition.buckets" = "1"
);

考虑到有根据 id 查询并跟新的需求,重新设计为:

低级数列,如:性别、级别、类型等采用位图索引:

sql
ALTER TABLE video_adas_alarm ADD INDEX idx_adas_alerm_alarmLevel (alarmLevel) USING BITMAP; 
ALTER TABLE video_adas_alarm ADD INDEX idx_adas_alerm_alarmType (alarmType) USING BITMAP; 
ALTER TABLE video_adas_alarm ADD INDEX idx_adas_alerm_alarmEvent (alarmEvent) USING BITMAP;

**注意:**Bitmap索引在Aggregate表仅支持Key列

性能对比‌

索引类型适用场景查询加速效果存储开销
前缀索引‌排序键范围查询5-10倍
倒排索引‌文本模糊匹配/非主键过滤40倍
‌BloomFilter‌高基数列精确过滤3-5倍
Bitmap‌低基数列聚合统计10倍

创建分区:

sql
ALTER TABLE video_adas_alarm 
ADD PARTITION p20250709
VALUES [("2025-07-09"), ("2025-07-10"));

相关业务 DTO 解释

java
 public int alarmid;    //报警ID
    public int flagStatus ; //标志状态
    public int alarmEvent; //报警事件/类型
    public int alarmLevel; //报警级别
    public int alarmType;  //报警类型 1 adas 2 dsm 3 胎压  4 盲区监测报警 5 激烈驾驶 6 GPS信号异常报警
    public int beforeCarSpeed; //前车速度
    public int beforePerCarDistance; //前车/行人距离
    public int deviateType;    //偏离类型
    public int logoCategory;   //道路标识识别
    public int logoData;       //道路标识数据
    public int carSpeed;       //当前车速
    public int elevation;      //海拔
    public double adaslat;          //纬度
    public double adaslng;          //经度
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    public Date alarmDate;     //报警日期
    public int  vhcstate;      //车辆状态
    public String adasTerminalCode;  //设备编码
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    public Date  alarmBsDate;   //报警标识时间
    public int  serialNumber;   //报警序号
    public int  annexCount;     //附件数量
    public int tireNum;         //轮胎编号
    public int tirePressure;    //胎压
    public int tireTemp;        //胎温
    public int batteryPower;    //电池电量
    public String customAarmCode;  //自定义报警编码
    public int terminal_id; //设备自增编码
    public String terminal_code; //设备自增编码
    public double gpslat;          //gps纬度
    public double gpslng;          //gps经度
    public int clientid;
    public int fatigue;           //疲劳程度  数值越大表示疲劳程度越严重,仅在报警类型为 0x01 时有效
    public int fz1;               //阀值1
    public int fz2;               //阀值2
    public int csbjtype;          //超速报警类型
    public int bjtimefz;          //报警时间阀值
    public String alarmMark;      //报警标识
    public double logger_speed;    //行驶记录速度
    public int dir;                //方向
//    道路类型编号
//0x01 高速路
//0x02 都市高速路
//0x03 国道
//0x04 省道
//0x05 县道
//0x06 乡村道路
//0x07 其他道路
//0x08- 0xFF 保留
    public  int roadType;         //道路类型
    public  int roadLimiting;     //道路限速值
    //是否副设备 false主设备 ,true 副设备
    public  boolean deputy;
    public String prover;//协议版本 河北省标报警判断添加
sql
CREATE TABLE `video_adas_rule_alarm` (
  `alarmDate` DATE COMMENT "报警日期:yyyy-MM-dd",
  `customAarmCode` varchar DEFAULT NULL COMMENT '报警唯一编码',
  `clientid` varchar DEFAULT NULL COMMENT '客户id',
  `terminal_id` varchar DEFAULT NULL COMMENT '车辆id',
  `level_type` varchar DEFAULT NULL COMMENT '报警类型',
  `identityNo` varchar DEFAULT NULL COMMENT '从业资格证编码',
  `alarmLevel` int DEFAULT NULL  COMMENT '报警级别:一二三',
  `terminal_code` varchar DEFAULT NULL COMMENT '设备编码',
  `alarmType` int DEFAULT NULL COMMENT '报警类型',
  `alarmEvent` INT DEFAULT NULL  COMMENT '报警类型:事件',
  `alarmBsDate` datetime DEFAULT NULL COMMENT '报警标识时间',
  `rcvDate` datetime DEFAULT NULL COMMENT '接收时间',
  `startTime` datetime DEFAULT NULL COMMENT '报警开始时间',
  `endTime` datetime DEFAULT NULL COMMENT '报警结束时间',
  `FalseAlarmTime` datetime DEFAULT NULL COMMENT '时间',
  `alarmCount` INT DEFAULT NULL COMMENT '报警次数',
  `carSpeed` INT DEFAULT NULL COMMENT '当前车速',
  `gpslat` double DEFAULT NULL COMMENT 'gps纬度',
  `gpslng` double DEFAULT NULL COMMENT 'gps经度',
  `glat_xz` double DEFAULT NULL COMMENT '纬度修正',
  `glng_xz` double DEFAULT NULL COMMENT '经度修正',
  `posinfo` varchar DEFAULT NULL COMMENT '位置信息',
  `handleTime` datetime DEFAULT NULL COMMENT '处理时间',
  `finishTime` datetime DEFAULT NULL COMMENT '完成时间',
  `handleUserId` INT DEFAULT NULL COMMENT '处理人ID',
  `handleUserName` varchar DEFAULT NULL COMMENT '处理人',
  `handleMethod` varchar DEFAULT NULL COMMENT '处理方式',
  `handleContent` varchar DEFAULT NULL COMMENT '处理内容',
  `handleState` INT DEFAULT NULL COMMENT '处理状态 0未处理 1自动处理 2人工处理',
  `fileNames` varchar DEFAULT NULL,
  `vhcstate` INT DEFAULT NULL COMMENT '车辆状态',
  `elevation` INT DEFAULT NULL COMMENT '海拔',
  `fz1` INT DEFAULT NULL COMMENT '阀值1',
  `fz2` INT DEFAULT NULL COMMENT '阀值2',
  `csbjtype` INT DEFAULT NULL COMMENT '超速报警类型',
  `remark` varchar DEFAULT NULL COMMENT '备注',
  `positive` tinyint DEFAULT NULL COMMENT '(误报) 0.否 1.是',
  `handleResult` tinyint DEFAULT NULL COMMENT '(处理结果)1.正在处理 2.处理成功 3.下发成功 4.下发失败 5. 应答失败',
  `roadType` INT DEFAULT NULL COMMENT '道路类型',
  `roadLimiting` INT DEFAULT NULL COMMENT '道路限速值',
  `alarmMark` varchar DEFAULT NULL COMMENT '报警标识',
  `logoCategory` INT DEFAULT NULL COMMENT '道路标识识别',
  `misreportedContent` varchar DEFAULT NULL COMMENT '误报原因',
  `annexCount` tinyint DEFAULT NULL
) ENGINE=OLAP
UNIQUE KEY(alarmDate, customAarmCode)
PARTITION BY RANGE(alarmDate) ()
DISTRIBUTED BY HASH(`customAarmCode`) BUCKETS 1
PROPERTIES (
  "replication_num" = "1",
	"bloom_filter_columns"="clientid,terminal_id,level_type,alarmLevel,identityNo",
  "dynamic_partition.enable" = "true",
  "dynamic_partition.time_unit" = "DAY",
  "dynamic_partition.history_partition_num" = "1",
  "dynamic_partition.start" = "-4096",
  "dynamic_partition.end" = "3",
  "dynamic_partition.prefix" = "p",
  "dynamic_partition.buckets" = "1"
);

创建索引

sql
ALTER TABLE video_adas_rule_alarm ADD INDEX idx_adas_rule_alerm_alarmLevel (alarmLevel) USING BITMAP; 
ALTER TABLE video_adas_rule_alarm ADD INDEX idx_adas_rule_alerm_alarmType (alarmType) USING BITMAP; 
ALTER TABLE video_adas_rule_alarm ADD INDEX idx_adas_rule_alerm_alarmEvent (alarmEvent) USING BITMAP;

限制副本过多:

sql
ALTER TABLE video_adas_alarm SET ("cumulative_compaction_min_deltas" = "5");
ALTER TABLE video_adas_alarm SET ("cumulative_compaction_max_deltas" = "50");

-- 限制最大版本数
ALTER TABLE video_adas_alarm SET ("max_tablet_version_num" = "500");