java后端使用线程池进行(modbus协议)串口通信的编程,并且需要处理大量的数据量?

简单的表述一下这个程序的主要功能吧。
这个程序主要是对500个电流表头进行实时数据的监控,每100个电流表头为一组,通过一根串口线进行通讯,软件要实现的功能是循环的去读取这100个设备的电流数据。读取的时间是10s。意思是100ms读取完一个电流表头的数据,这条数据里存了这100ms内的100条电流数据。500个电流表头存一天的数据就是4亿3200万条数据,要求存一个月。
上述就是整个项目要完成的功能,在这个项目中遇到了两个难以解决的问题。
1.java串口通讯的延时,10s内去读取100个设备的数据,至少丢50条数据。后来发现,java从发送指令到监听到数据返回的时间大概在150ms到300ms之间,尝试了多种方法也无法解决。
2.大量的数据存储,根据计算,1天的数据量在4亿3200万条左右,这个数据怎么存到数据库中才能保证查询不会太过卡顿。并且,要存30天的数据。数据库的选择,数据结构的设计等。

https://blog.csdn.net/qiyongkang520/article/details/47904863

别考虑10s一次了,就一个一个表依次读取就行了,读完了又回到第一个无限循环
要不就提高间隔,如1分钟一轮,不要10秒一轮
或者每条线少接几个,1次300ms 1秒3次 10秒30次,所以一条线接30个,这样就能10s一轮

数据存储上可以做一些压缩处理,
如这次采集跟上次采集的数据一样,只保留一条
如1个表n小时内的数据合并成一条数据库记录