6122个测点中,其中不同的测点数据变化的频率不一样,具体如下:
采集间隔 <=5ms :30 个
采集间隔 5~10ms :799 个
采集间隔 10~100ms :3471 个
采集间隔 100ms~1s :1607 个
采集间隔 >1s :215 个
采集间隔 100ms~1s :1607 个
采集间隔 >1s :215 个
3.数据库建模
Mars数据库是以变量进行数据组织的,所以根据信号的名称以及类型创建相应的变量。变量之间是松散的关系,对于有关系的变量间可以通过变量的“区域”属性进行关联,同一个区域内的变量,在做数据存储时会进行时间戳优化,能够较好进一步压缩数据;一个区域可以理解关系库中一个表,每个变量对应一列。相较于时序库的列式存储,一个变量可以理解为一列,而具有相关性的列又可以通过区域来组成一个表;相比时序库,Mars数据库既支持表格式存储,也支持松散的单列存储。建模完成后,数据库表配置如下图所示:
4.数据写入
通过针对这次测试专门开发驱动程序,写入数据到Mars数据库中。数据写入同样以变量为单位,将一个变量的5分钟的数据一次写入。
原始数据
入库过程中资源占用情况1
入库过程中资源占用情况2
可见在整个数据写入过程中,CPU资源始终维持在10%左右,而内存在在2.8G附近。写入整个5分钟7000多万条数据总耗时:40秒。压缩以后最终数据:
5.数据校验
这里我们随即抽取几个信号进行校验比对,看看写入数据是否正确。具体如下图:
6.结论
通过此次压缩测试,可见Mars数据对于这种采集频率高、数据变化缓慢的信号具有较高的压缩率。在压缩过程中,软件整体运行稳定CPU占用在10%,内存2.8G。此次测试的经过parquet压缩后数据的190M的数据,经过Mars数据压缩后达到了1.9M,取得了惊人的压缩比:100:1 。究其原因,分析如下:
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!
**](https://bbs.csdn.net/topics/618654289)
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新!!