物联网应用中实时定位与轨迹回放的解决方案 – Redis的典型运用(转载)
2015年11月14日| by: nbboy| Category: 系统设计, 缓存设计, 高性能系统
摘要 我们解决某个问题,很多时候并不在于你掌握了某个工具或某项技术,而在于你对该场景下该问题的本质理解。 这则博文,针对物联网应用中实时定位与轨迹回放的问题,阐述最为简要的解决之道。
目录[-]
1. 系统需求
2. 应用场景
3. 数据量估算
4. 项目难点及解决
4.1如何存储千亿级的坐标记录且便于检索?
4.1.1 关系型数据库的不足
4.1.2 NoSql产品选型
4.1.3 数据存储结构设计
4.1.3 高性能、高可靠性的部署
4.1.4 数据定期维护设计
4.2 如何实现标签定位的实时性与可靠性?
5. 最终方案示意
6. 补充(2015-11-13)–注意啦!
1. 系统需求
实时监控:系统能实时接收2000个超rfid标签的坐标信息, 然后在3D模型界面展示各标签的实时位置。
轨迹回放:系统可查询任一标签在最近1个月内的坐标信息, 然后在3D模型界面回放该标签在这个时间段内的运动轨迹。
2. 应用场景
监狱监管:给犯人配戴腕表或工牌,在腕表或工牌中嵌入rfid标签,实现对犯人行踪的实时监控、事先预警、事后回查等。如图:
输入图片说明
3. 数据量估算
1个超rfid标签在1秒内会产生10条80byte的坐标信息,即1个标签1秒的数据量是约0.8kb(坐标信息的结构为:标签id, x坐标,y坐标,z坐标,时间),以此推算:
1个标签 1分钟会产生记录数是 600条, 约54 KB
1个标签 1小时会产生记录数是3.6万条, 约3.2 MB
1个标签 1天会产生记录数是86.4万条, 约76.8 MB
1个标签 1个月会产生记录数是2.6亿条, 约2.3 GB
…
2000个标签 1天产生的记录数是172亿条, 约150 GB
2000个标签 1个月产生的记录数是5200亿条, 约4.4 TB
4. 项目难点及解决
4.1如何存储千亿级的坐标记录且便于检索?
如何存储海量的坐标信息,且能快速地从其中检索出指定犯人(也即标签)在某个时间范围内的坐标?
4.1.1 关系型数据库的不足
把千亿级的记录存储在关系型数据库,肯定要分库分表。如果按标签、按天分表存放,每个表存放一个标签的一天的坐标信息,那么每个表只有84.6万条记录,但有多达6万张表(
2015年11月14日| by: nbboy| Category: 系统设计, 缓存设计, 高性能系统
摘要 我们解决某个问题,很多时候并不在于你掌握了某个工具或某项技术,而在于你对该场景下该问题的本质理解。 这则博文,针对物联网应用中实时定位与轨迹回放的问题,阐述最为简要的解决之道。
目录[-]
1. 系统需求
2. 应用场景
3. 数据量估算
4. 项目难点及解决
4.1如何存储千亿级的坐标记录且便于检索?
4.1.1 关系型数据库的不足
4.1.2 NoSql产品选型
4.1.3 数据存储结构设计
4.1.3 高性能、高可靠性的部署
4.1.4 数据定期维护设计
4.2 如何实现标签定位的实时性与可靠性?
5. 最终方案示意
6. 补充(2015-11-13)–注意啦!
1. 系统需求
实时监控:系统能实时接收2000个超rfid标签的坐标信息, 然后在3D模型界面展示各标签的实时位置。
轨迹回放:系统可查询任一标签在最近1个月内的坐标信息, 然后在3D模型界面回放该标签在这个时间段内的运动轨迹。
2. 应用场景
监狱监管:给犯人配戴腕表或工牌,在腕表或工牌中嵌入rfid标签,实现对犯人行踪的实时监控、事先预警、事后回查等。如图:
输入图片说明
3. 数据量估算
1个超rfid标签在1秒内会产生10条80byte的坐标信息,即1个标签1秒的数据量是约0.8kb(坐标信息的结构为:标签id, x坐标,y坐标,z坐标,时间),以此推算:
1个标签 1分钟会产生记录数是 600条, 约54 KB
1个标签 1小时会产生记录数是3.6万条, 约3.2 MB
1个标签 1天会产生记录数是86.4万条, 约76.8 MB
1个标签 1个月会产生记录数是2.6亿条, 约2.3 GB
…
2000个标签 1天产生的记录数是172亿条, 约150 GB
2000个标签 1个月产生的记录数是5200亿条, 约4.4 TB
4. 项目难点及解决
4.1如何存储千亿级的坐标记录且便于检索?
如何存储海量的坐标信息,且能快速地从其中检索出指定犯人(也即标签)在某个时间范围内的坐标?
4.1.1 关系型数据库的不足
把千亿级的记录存储在关系型数据库,肯定要分库分表。如果按标签、按天分表存放,每个表存放一个标签的一天的坐标信息,那么每个表只有84.6万条记录,但有多达6万张表(