人脸系统数据库设计

1. 简介

本文档全面系统的简介描述了人脸系统的数据库结构与设计。

2. 设计约束

人脸系统基于分布式数据OPAQ和业务数据库MYSQL实现。因为人脸抓拍日志(capture_log)数据量非常大,设计上存放在OPAQ,<font color=red>布控报警(alarm)后续要存入到OPAQ中</font>,其余数据存在MySQL。

  • 人脸默认是Hibernate ORM框架,数据库表命名规则为全部小写,例如数据库中的capture_log对应Hibernate中的实体类为CaptureLog。
  • 数据库编码一律使用UTF-8编码
public class CustomMysqlDialect extends MySQL5InnoDBDialect
{
    public String getTableTypeString()
    {
        return " ENGINE=InnoDB DEFAULT CHARSET=utf8";
    }
}
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect=com.netposa.face.config.CustomMysqlDialect

3. 数据字典

3.1 用户权限

一个用户可以对应多个角色,一个角色可以对应多个用户。多对多关系。
用于做认证和权限控制

用户表(s_user

用户表保存用户的登录信息

字段 类型 备注
id int(11) NOT NULL AUTO_INCREMENT 用户唯一ID,主键
create_date date DEFAULT NULL 创建日期
idcard varchar(20) NOT NUL 身份证
name varchar(20) NOT NULL 用户名
password varchar(64) NOT NULL MD5码后的密码
realname varchar(20) DEFAULT NULL 真实姓名
sex varchar(20) DEFAULT NULL 性别
status tinyint(1) DEFAULT NULL 状态,0表示可用, 1表示禁用

<font color=red>原来的status设计为status int(11) DEFAULT NULL</font>

角色表(s_role

用来关联用户表,确定每个用户的关系

字段 类型 备注
id int(11) NOT NULL AUTO_INCREMENT 角色唯一ID,主键
name varchar(20) DEFAULT NULL 组名称
description varchar(100) DEFAULT NULL 组描述

<font color=red>将现在的uid删除,没有意义,实际中组也不会特别多,没必要再弄个uuid,删除,目前有很多需求,不想某个人使用某个静态库,因为涉及一些敏感信息</font>

用户角色表(user_role)

字段 类型 备注
id int(11) NOT NULL AUTO_INCREMENT 唯一ID,主键
userid int(20) NOT NULL 用户的唯一ID
roleid int(20) NOT NULL 用户所属的组信息

资源表(resource)

字段 类型 备注
id int(11) NOT NULL AUTO_INCREMENT 资源唯一ID,主键
name varchar(20) DEFAULT NULL 资源名称

资源角色表(resource_role)

字段 类型 备注
id int(11) NOT NULL AUTO_INCREMENT 资源唯一ID,主键
resouceid varchar(20) DEFAULT NULL 资源ID
roleid int(20) NOT NULL 资源所属的角色

3.2 配置管理

人脸库(lib)

库分为静态库和布控库,布控库因为人员不是很多,所有数据全部存放在一张表中
静态库分表存(每个静态库分两张表,一个人员信息表,一个人员图片表,一个人最多有五张图片)

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 人脸唯一ID,主键
createtime datetime DEFAULT NULL 库创建时间
creator varchar(255) DEFAULT NULL 库的创建者
memo varchar(512) DEFAULT NULL 库的备注信息
subpictablename varchar(255) DEFAULT 静态库的图片表名称
subtablename varchar(64) DEFAULT NULL 静态库的人员信息表名称
threshold int(11) DEFAULT NULL 阈值1-100
type varchar(255) DEFAULT NULL 库的类型
库的类型为下面两种类型
public enum  LibType
{
    GENERAL,   //普通库
    LARGE      //静态大库
}

人员信息(person)

字段 类型 备注
objectid bigint(20) NOT NULL AUTO_INCREMENT 人脸唯一ID,主键
birth date DEFAULT NULL 生日
createtime datetime NOT NULL 创建时间
idcard varchar(30) DEFAULT NULL 身份证
memo varchar(30) DEFAULT NULL 备注
name varchar(64) DEFAULT NULL 姓名
sex varchar(1) DEFAULT NULL 性别
threshold int(2) DEFAULT NULL 阈值0-100,目前未使用,预留
lib bigint(20) 所在的库ID
credentialstype varchar(2) DEFAULT NULL 证件类型
degree varchar(2) DEFAULT NULL 文化程度
homeaddress varchar(255) DEFAULT NULL 家庭住址
homeplace varchar(255) DEFAULT NULL 出生地
householdreg varchar(255) DEFAULT 籍贯
identity varchar(64) DEFAULT NULL 身份职衔
militaryservice varchar(1) DEFAULT NULL 服兵役情况
nation varchar(2) DEFAULT NULL 民族
nationality varchar(64) DEFAULT NULL 国籍
oldname varchar(64) DEFAULT NULL 曾用名
organization varchar(64) DEFAULT NULL 机构(所在处室或分管工作)
stature varchar(64) DEFAULT NULL 身高

人员图片信息(person_pic)

字段 类型 备注
picid bigint(20) NOT NULL AUTO_INCREMENT 图片唯一ID,键
filepath varchar(255) DEFAULT NULL 文件路径
objectid bigint(20) NOT NULL 对象ID

设备信息 (device)

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 设备唯一ID,主键
ip varchar(64) DEFAULT NULL 设备IP地址
name varchar(255) DEFAULT NULL 设备名称
outerip varchar(64) DEFAULT NULL 外网的IP
outerport int(6) DEFAULT NULL 外网的端口
password varchar(64) DEFAULT NULL 密码
port int(6) DEFAULT NULL 摄像机端口
username varchar(64) DEFAULT NULL 摄像机用户名
path varchar(255) DEFAULT NULL IOD服务路径,默认:/iod/system/device/devices
type bigint(20) NOT NULL AUTO_INCREMENT 设备唯类型,具体值见下
public enum DeviceType {
    /**
     * PVG设备
     */
    PVG,

    /**
     * IoD设备
     */
    IoD
}

<font color=red>目前设备信息包含PVG和IoD信息,表名叫pvg,建议修改成device</font>

摄像机表 (camera)

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 摄像机一ID,主键
host varchar(64) DEFAULT NULL 摄像机IP地址
name varchar(64) DEFAULT NULL 摄像机av通道名称
path varchar(64) DEFAULT NULL 摄像机分层,直接从PVG设备同步过来的字段
title varchar(64) DEFAULT NULL 标题,摄像机显示的名称
deviceid bigint(20) DEFAULT NULL 摄像机对应上层的设备(PVG、IoD)的ID
iod_id varchar(50) DEFAULT NULL Iod对象的ID
latitude double(20,8) DEFAULT NULL 摄像机的纬度
longitude double(20,8) DEFAULT NULL 摄像机的经度

<font color=red>目前摄像机表存在很多无用的字段,上表已经是精简过的,其它字段都可以删除不用</font>

任务表 (task)

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 摄像机一ID,主键
creater varchar(255) DEFAULT NULL 任务创建者
createtime datetime DEFAULT NULL 任务创建时间
starttime varchar(255) DEFAULT NULL 任务开始时间
endtime datetime DEFAULT NULL 任务结束时间
errcode varchar(255) NOT NULL PCC返回的pccJobReport.errorCode
jobkey bigint(20) DEFAULT NULL 任务提交后的jobkey
jobstate varchar(255) DEFAULT NULL PCC返回的jobstate
memo varchar(255) DEFAULT NULL 任务说明
name varchar(255) DEFAULT NULL 任务名称
causes varchar(255) DEFAULT NULL PCC返回的原因状态
committime datetime DEFAULT NULL, PCC任务提交时间
costedtime datetime DEFAULT NULL PCC整个任务花费的时间
processedtime varchar(255) DEFAULT NULL PCC实际算法花费的时间

任务额外配置表 (task_additional_property)

该表主要是在创建布控任务对摄像机进行配置

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 关联关系唯一ID
bottom int(11) DEFAULT NULL 摄像机处理区域bottom
left int(11) DEFAULT NULL 摄像机处理区域left
right int(11) DEFAULT NULL 摄像机处理区域right
top int(11) DEFAULT NULL 摄像机处理区域top
camera bigint(20) DEFAULT NULL 摄像机ID
taskid bigint(20) DEFAULT NULL 任务ID
maxsize bigint(11) DEFAULT NULL 摄像机最大人脸库
minsize bigint(11) DEFAULT NULL 摄像机最小人脸框

3.3 布防布控

告警表 (alarm)

字段 类型 备注
id bigint(20) NOT NULL AUTO_INCREMENT 告警ID
alarm_person_image varchar(255) DEFAULT NULL 告警图片源
alarm_panorama_image varchar(255) DEFAULT NULL 告警全景图片
alarm_time datetime DEFAULT NULL 告警时间
camera_id bigint(20) DEFAULT NULL 摄像机ID
target varchar(255) DEFAULT NULL 比重库的人员json
status int(1) DEFAULT NULL 处理的状态见下
public enum AlarmStatusType {
  ALARM_UNTREATED("未处理", 0),
  ALARM_VALID("有效", 1),
  ALARM_INVALID("无效", 2),
  ALARM_UNKNOWEN("未知", 3);
}
{
   ["libid":1,"objectid":12, "picid":216, "score":85]
}

<font color=red>目前保存的告警表设计冗余度太高,重复太多,并且分别在两张表中,建议重构</font>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,163评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,301评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,089评论 0 352
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,093评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,110评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,079评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,005评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,840评论 0 273
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,278评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,497评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,667评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,394评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,980评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,628评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,796评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,649评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,548评论 2 352

推荐阅读更多精彩内容