请教下,物联网的大量数据采集如何保存数据

2019-05-20 12:20:06 +08:00
 Essaim
公司突然要求做行车轨迹,而且还不调用地图软件的开放 api.然后让我这个半年开发经验,没有任何物联网数据的蔡狗子来搞.一点头绪都没有.
简单的以公司 10W 个设备来计算,每天平均 3 小时在线,每 10 秒钟采集一条数据,那么一天的数据量就能达到上亿条.那么 mysql 等关系数据库肯定是不行了.但是实际数据大小肯定不大,一个设备 ID,一个经纬度信息,一个时间戳.
简单的想了个思路:
以一段路程作为一个单位,从起点开始采集数据,将数据放在 nosql 缓存中,然后当设备发送结束路径请求的时候,将数据打包序列化到文件中,通过 fastdfs 存储起来,然后在 mysql 中存储一条文件索引记录,因为系统的查询量比较少,所以性能应该还是过得去的.
大佬们有没有更好的想法,或者我这个想法有什么不可行的地方,希望大家斧正.
8580 次点击
所在节点    Java
49 条回复
largecat
2019-05-20 14:05:52 +08:00
找半年经验的,对 boss 威胁小,
哈哈
Essaim
2019-05-20 14:11:11 +08:00
@largecat 2333,我偶尔也会这么想.
@opengps 老哥怎么联系.
janxin
2019-05-20 14:22:00 +08:00
influxdb 了解一下
janxin
2019-05-20 14:23:38 +08:00
@liprais 卧槽这个操作是怎么想到的,真神了
opengps
2019-05-20 14:28:46 +08:00
@Essaim v 站 id 同微信 id
opengps
2019-05-20 14:29:25 +08:00
@liprais 666,这是我见过最安全的操作方式
opengps
2019-05-20 14:34:31 +08:00
更正 18 楼数据,iops 指标,闲时 100 多,忙时 500 左右,并发 tcp 在线连接数 20 万
ponymaggie
2019-05-20 14:46:48 +08:00
openTDB 可以看看
youngce
2019-05-20 14:47:55 +08:00
@opengps 我想请教一下,在大概 15 亿行数据后, 假如需要调取某辆,某一天的某个时间段的轨迹数据,大概需要耗费多少时间?
kim01
2019-05-20 14:52:51 +08:00
车联网行业做 GPS 定位的同仁路过,不好评价!!!
cszchen
2019-05-20 14:52:51 +08:00
行车轨迹一般要纠偏,也就是 gps 数据会有误差,一般采用地图 api 接口,自己搞会有点难度。
tmac6740
2019-05-20 14:53:42 +08:00
之前做过 把位置数据绘制一张图片 存起来
opengps
2019-05-20 14:56:17 +08:00
@youngce 很快,跟单表性能相差很小,因为做了表分区 https://www.opengps.cn/Blog/View.aspx?id=284
opengps
2019-05-20 14:56:54 +08:00
@cszchen 自己做个纠偏库就很好办了,也有同行是输出时候做一次批量转化
goodleixiao
2019-05-20 15:00:52 +08:00
HBase 是一个开源的非关系型分布式数据库( NoSQL ),它参考了谷歌的 BigTable 建模,实现的编程语言为 Java。
youngce
2019-05-20 15:24:13 +08:00
@opengps 感谢大佬的回复,博客看了很有启发。谢谢,祝工作顺利:)
opengps
2019-05-20 16:07:28 +08:00
@youngce 实际应用更建议分库分表,因为数据库文件到了一定量,由于存储太大会不方便扩展,我当时是到了 700G,然后把轨迹部分单独换作 nosql 类型处理,现在则又走回 mysql 的老路,选用阿里云 drds 了
wplct
2019-05-20 18:44:52 +08:00
先出方案和成本,调研也是做事情的基本
老板不会怪罪你的
rockyou12
2019-05-20 20:00:43 +08:00
别用关系库,虽然上面有人做过方案但是和专门的时序数据库没得比。哪怕在时序数据库里,influxdb 这种自己实现底层存储的都强国 opentsdb 这种依赖 hbase 的好几倍。

我之前在做服务器监控的时候顺带研究过这块,最开始用的 elasticsearch 做采集,一天的数据有 20g,后来换成了 promethus 一天就 500m 都没有。由于关系库不会像专门的时序数据库这样有很多优化与压缩,所以至少存储上你会很快遇到压力。

promethus 和 infuxdb 有很多设计上的相似,所以可以期望 infuxdb 至少在存储上也有这样大的优势。而且有大量 benchmark 都说明了综合看 infuxdb 是性能最好的了,唯一缺点就是集群要收费。
izoabr
2019-05-20 20:45:58 +08:00
postgres 的 gis 了解一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/565778

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX