WiFi-DensePose 数据库设计解析:4 张表如何接住高频姿态数据流

发布时间:2026/8/29 12:50:15

WiFi-DensePose 数据库设计解析:4 张表如何接住高频姿态数据流
WiFi-DensePose 数据库设计解析4 张表如何接住高频姿态数据流【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuViewWiFi-DensePose 把普通 WiFi 信号变成姿态检测落库侧的真实压力是纳秒级 CSI 时序高频写入、多设备并发上报、按时间窗实时回放。这套数据库设计就是在回答怎么接住。数据从哪来、到哪去先看整体流向Wi-Fi 收发端经 CSI 相位净化与模态转换网络输出多人体姿态图中右侧的关键点序列即 pose_detections 表的内容数据链路很短收发端持续产出 CSI 帧先过相位净化再进模态转换网络输出每个目标人的关键点与置信度。落到关系模型上是一条单向流水线——设备表登记采集端会话表圈定一次采集的时间边界CSI 数据表以只追加方式落原始信号姿态检测表以只追加方式落模型输出。日常查询几乎只碰后两张高频表设备与会话属于低频维度表。这个分层直接决定了后面所有表的设计取向高频表做窄、做平低频表允许厚一些。逐表拆解每张表在解决什么问题设备表采集端如何认人设备表是采集端登记表一张设备一行写入频率最低。class Device(Base, UUIDMixin, TimestampMixin): __tablename__ devices name Column(String(255), nullableFalse) mac_address Column(String(17), uniqueTrue, nullableFalse) # 业务身份键 status Column(String(20), defaultinactive, nullableFalse) # 四态枚举 coordinates_x Column(Float, nullableTrue) # 部署坐标三列分开 config Column(JSON, nullableTrue) # 厂商自定义配置 # ...三个取舍值得注意。MAC 地址做唯一约束是刻意的重命名或换 IP 时以 MAC 为锚的数据关联不断链配合validates在应用层先把格式校验掉。坐标拆成三列而非打包进 JSON因为布点规划需要按坐标做范围计算。config 用 JSON 则因为不同厂商设备的固件参数差异极大硬建模只会频繁改表结构。会话表一次采集的时间盒会话表把一次采集圈成时间盒CSI 与检测明细都挂在它下面。class Session(Base, UUIDMixin, TimestampMixin): __tablename__ sessions started_at Column(DateTime(timezoneTrue), nullableTrue) ended_at Column(DateTime(timezoneTrue), nullableTrue) status Column(String(20), defaultactive, nullableFalse) device_id Column(UUID, ForeignKey(devices.id), nullableFalse) # 归属设备 total_frames Column(Integer, default0, nullableFalse) # 帧数计数 processed_frames Column(Integer, default0, nullableFalse) # 已处理计数 # ...核心设计是冗余计数total_frames 与 processed_frames 让这次采集处理到哪了变成对 sessions 单行的一次索引查询不用对明细表做全量 count。代价是计数器与明细可能短暂不一致设计上只在会话收尾时对账。config 与 meta_data 同样交给 JSON——采集参数随实验变化属于典型的可变结构。CSI 数据表原始信号的落地格式这张表是写入压力最大的地方一行对应一帧 CSI。class CSIData(Base, UUIDMixin, TimestampMixin): __tablename__ csi_data sequence_number Column(Integer, nullableFalse) # 设备内序号 timestamp_ns Column(Integer, nullableFalse) # 纳秒时间戳 device_id Column(UUID, ForeignKey(devices.id), nullableFalse) session_id Column(UUID, ForeignKey(sessions.id), nullableTrue) # 允许后补 amplitude Column(FloatArray, nullableFalse) # 幅度谱原生数组 phase Column(FloatArray, nullableFalse) # 相位谱原生数组 num_subcarriers Column(Integer, nullableFalse) # 子载波数量 processing_status Column(String(20), defaultpending, nullableFalse) # ...两个关键决定。第一幅度与相位用 PostgreSQL 原生数组类型而非拆行存储一帧信号必须原子地读完整拆行既让行数爆炸又破坏一帧一行的读取语义。第二timestamp_ns 用整型纳秒而非 DateTime绕开浮点秒的精度损失且整型比较与范围索引都更快。session_id 设为可空对应真实部署中信号先落库、会话边界后补挂的写入顺序。姿态检测表输出结果与版本追溯姿态检测表存的是模型输出不存中间态。class PoseDetection(Base, UUIDMixin, TimestampMixin): __tablename__ pose_detections frame_number Column(Integer, nullableFalse) # 帧号 timestamp_ns Column(Integer, nullableFalse) session_id Column(UUID, ForeignKey(sessions.id), nullableFalse) # 必须有归属 person_count Column(Integer, default0, nullableFalse) # 目标人数 keypoints Column(JSON, nullableTrue) # 关键点序列 bounding_boxes Column(JSON, nullableTrue) # 边界框 detection_confidence Column(Float, nullableTrue) # 检测置信度 pose_confidence Column(Float, nullableTrue) # 姿态置信度 model_version Column(String(50), nullableTrue) # 模型版本 # ...keypoints 与 bounding_boxes 用 JSON 是因为人数可变、结构嵌套拆成独立明细表查询时反而要做按人聚合的 N1 操作。三个 confidence 拆列存储让下游可以按不同阈值分别过滤漏检和姿态模糊而不必依赖一个笼统的 overall 值。model_version 逐行冗余是刻意冗余——模型升级后历史结果仍可按版本回放与对比。表与表之间怎么说话关系与约束关系结构是一棵以 Device 为根的单向树Device → Session → CSIData / PoseDetection。三处级联都声明为cascadeall, delete-orphan含义是删除设备会递归带走它的会话、CSI 与检测明细数据库层不留下指向已删设备的孤儿行。若没有这层约束删设备后查询会抛出外键违反明细表的孤儿行则永远无法被时间窗查询正确过滤——对时序数据来说这是最隐蔽的数据污染。一个刻意的不对称CSI 表的 session_id 可空检测表的 session_id 不可空。原始信号允许先落库再挂会话而检测结果必须带着归属出生——没有会话上下文的姿态输出无法被解释。约束侧置信度列被 CheckConstraint 锁在 [0,1] 区间person_count 与帧计数器锁为非负状态列一律用IN (...)白名单非法状态在入库前被数据库直接拒绝而不是等到查询时才暴露脏数据。生产环境踩坑指南索引、约束与审计给高频查询路径建覆盖索引。时间窗回放是主查询形态单列索引idx_csi_timestamp之外按device_id timestamp_ns的组合才是真实路径。验证方式EXPLAIN ANALYZE确认走了 Index Scan 且没有回表热点。状态机列必须加 IN 约束。状态流转错误是这类系统最常见的脏数据源。验证方式尝试写入白名单外的值确认被数据库拒绝而非应用层吞掉。幂等写入靠复合唯一约束。CSI 表用UniqueConstraint(device_id, sequence_number, timestamp_ns)拦重放进程重启后重发同一帧不会产生重复行。验证方式并发重放同一帧序列确认第二笔被唯一约束拒绝。审计表记状态快照而非流水文字。AuditLog 用 before_state / after_state 两个 JSON 列存变更前后快照配合resource_type resource_id联合索引定位变更对象。验证方式抽取一段事件序列回放确认能重建任意时刻的资源状态。约束与索引在模型层的典型写法__table_args__ ( Index(idx_csi_timestamp, timestamp_ns), UniqueConstraint(device_id, sequence_number, timestamp_ns, nameuq_csi_device_seq_time), CheckConstraint(frequency 0, namecheck_frequency_positive), )规模上去之后怎么办性能与扩展性数据类型选择。定长浮点信号一律用原生数组类型实测比 JSON 序列化更省空间且支持数组内下标操作JSON 只留给真正可变的结构配置、关键点、审计快照。判断标准一个字段的结构一年内不会变就不该用 JSON。分区策略。csi_data 与 pose_detections 是两张无限增长的表单表超过 5000 万行时按 timestamp_ns 做范围分区归档退化为按分区 DROP比 DELETE 快几个数量级。批量写入。高频路径禁止逐帧 insert按秒级时间片攒批用 executemany 提交把数据库交互次数压到帧率以下。验证标准写入吞吐不低于采集帧率且无连接池耗尽告警。查询优化。点查全部走 session_id timestamp_ns 的索引路径对 keypoints 这类 JSON 列避免全表过滤先用 person_count 等标量列缩小候选集再在应用层解析 JSON。这套设计的适用边界很清晰低频维度表 中频会话 高频只追加明细复合唯一约束保幂等JSON 与原生数组各司其职——把它平移到其他时序感知系统基本可以直接复用。全部模型定义见 archive/v1/src/database/models.py自定义数组类型在 archive/v1/src/database/model_types.py 中定义排查查询性能问题可结合 docs/TROUBLESHOOTING.md 使用。【免费下载链接】RuViewπ RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.项目地址: https://gitcode.com/GitHub_Trending/wi/RuView创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

论万物的底层语法

论万物的底层语法

2026/8/29 12:40:14

—— 一个关于基底、共振与囚笼的形而上学献文序我试图构建一种理论。它不依赖任何实验数据,不屈服于任何观测极限,只遵循一条铁律:逻辑自洽。如果有一种存在,它绝对最小、不可再分、且人类永远无法直接观测——那么,基…

数组详解:定义、作用、应用场景及与链表的区别(C/C++ 代码讲解)

数组详解:定义、作用、应用场景及与链表的区别(C/C++ 代码讲解)

2026/8/29 12:40:14

1. 什么是数组数组是一种线性数据结构,它把相同类型的多个元素按连续的内存空间依次存储,并通过下标(索引)来访问每个元素。数组是编程语言中最基础、最常用的数据结构之一。在 C/C 中,数组的声明格式为://…

链表详解:定义、作用、应用场景及与数组的区别(C/C++ 实战)

链表详解:定义、作用、应用场景及与数组的区别(C/C++ 实战)

2026/8/29 12:40:14

1. 什么是链表链表是一种物理存储单元上非连续、非顺序的线性数据结构,它由一系列节点(Node)组成。每个节点包含两部分:一部分是存储数据元素的数据域(data),另一部分是存储下一个节点地址的指针…

Vue3进度条(Progress)

Vue3进度条(Progress)

2026/8/29 13:50:22

Vue2进度条(Progress) 可自定义设置以下属性: 进度条宽度(width),单位 px,类型:string | number,默认 undefined;type: line 时,为进度条宽度&am…

Vue3分割线(Divider)

Vue3分割线(Divider)

2026/8/29 13:50:22

可自定义设置以下属性: 分割线标题的位置(orientation),类型:left | center | right,默认 center 标题和最近 left/right 边框之间的距离,去除了分割线,同时 orientation 必须为 le…

2026年ai建站哪家技术强,多平台对比来啦!

2026年ai建站哪家技术强,多平台对比来啦!

2026/8/29 13:50:22

2026年ai建站哪家技术强,多平台对比来啦!艾瑞咨询《2026年中国企业数字化建站行业白皮书》给出一组对照:国内AI建站渗透率已破68%,但抽样超1200家中小企业中仅31%在AI生成站点半年后仍持续续费且搜索流量正向增长。 深圳某3C配件品…

千问赢在生态:本地部署、开发者集成与办公场景全解析

千问赢在生态:本地部署、开发者集成与办公场景全解析

2026/8/29 13:50:22

看到“苹果删了千问,但阿里赢了”这个说法时,我第一反应不是去考证事件细节,而是想另一个问题:一个 AI 产品如果只是失去某个渠道入口,为什么还能被这么多人继续讨论?千问给出的答案,不是把流量…

MySQL存储过程实战:从设计到性能优化的完整指南

MySQL存储过程实战:从设计到性能优化的完整指南

2026/8/29 13:50:22

1. 项目概述:从“一次性脚本”到“可复用引擎” 如果你写过一段时间数据库应用,尤其是处理过复杂的报表生成、数据清洗或者需要高频执行相同逻辑的业务,你大概率会对满屏重复或相似的SQL语句感到头疼。今天要聊的“存储过程”,就是…

芯片厂落地背后:嵌入式开发必懂的SoC启动与固件烧录全解析

芯片厂落地背后:嵌入式开发必懂的SoC启动与固件烧录全解析

2026/8/29 13:40:22

半导体制造业的每一次选址落地,都会牵动芯片设计、设备、材料、封测等一系列产业链条。最近“马斯克 TeraFab 芯片厂在得州进入协议阶段”的消息在科技圈传播得很广,很多做嵌入式和芯片相关开发的同学也来问我:这个“协议阶段”到底是什么意思…

[光学原理与应用-521]:对光的错误理解与纠偏

[光学原理与应用-521]:对光的错误理解与纠偏

2026/8/27 11:10:02

首先光是一种能量的载体和形态,宏观上观察到的光是由无数个微观的光量子组成的,每个光子在产生的瞬间,其在真空的空间中以确定不变的速度沿着一个初始的方向一直向前,在微观层面,每个光量子的运动轨迹是以波函数所展现…

SIP通话转接原理与REFER方法实战解析

SIP通话转接原理与REFER方法实战解析

2026/8/29 10:22:10

1. 通话转接不是“挂断再拨号”,而是SIP会话的动态重定向你有没有遇到过这样的场景:客服坐席A正在和客户通电话,突然需要把这通对话无缝转给专家坐席B,客户完全感知不到中间的断连——既没听到忙音,也没被要求重新拨号…

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

Kolla-ansible单节点OpenStack部署实战:从环境准备到排坑指南

2026/8/28 7:34:42

1. 为什么选择Kolla-ansible来部署单节点OpenStack?如果你正在寻找一种能把OpenStack从“概念”快速变成“可用的实验环境”的方法,那么Kolla-ansible几乎是当前最主流、最省心的选择。我见过太多人卡在手动编译依赖、配置服务、处理版本冲突的泥潭里&am…

四款热门降AI工具测评:研究生和本科生怎么选?

四款热门降AI工具测评:研究生和本科生怎么选?

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

论文降AI率免费攻略:自查、提示词与工具推荐

论文降AI率免费攻略:自查、提示词与工具推荐

2026/8/29 0:09:39

马上要交论文了,最近真的被论文ai率折磨的够呛。 明明查重都没问题了,但是ai率就是居高不下,崩溃了,明明都是我自己写的,天杀的,明明都是我亲生的啊 改来改去,终于给我搞出一套完美的降ai方案…

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

北京GEO优化服务商推荐:预算型企业如何选北京GEO优化服务商?

2026/8/29 0:09:39

前言:预算有限的企业更关心投入能否形成可持续的品牌资产。评估北京GEO优化服务商时,不能只比较单篇内容或单月报价,还要看是否能够把问题词、官网、信源和监测串成完整链路。本期重点放在预算配置、试点范围和交付边界,帮助企业先…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/28 7:35:26

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/28 7:34:51

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/28 7:34:35

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…