背景
笔者在一个物联网领域,具体就是车联网,使用的设备连接协议为JTT-808。有一个场景是15秒传一条GPS轨迹(指令0x0200)数据,如果有1万台车:
- 一天数据量大概在1.152亿条数据。
- 一年4,204.8亿条数据。
- 一年的数据占用存储空间接近2T。
在如此巨大的数据量下,要满足如下要求:
- 查询某辆车某天的所有轨迹数据;
- 大量的写入数据,每秒写入量超过1万条;
效果
某车,某天跑了512公里,轨迹数据在5000条左右,如下图,能够在0.5秒内渲染完。
原理
使用非关系型数据库(mongodb/clickhouse之类的),进行数据合并:当天数据库直接入库。隔天数据库进行合并后写入历史库。这样可以平衡索引和数据量。