前文已经将正弦实时数据库的使用进行了介绍,需要了解的可以先看下面的博客:
正弦实时数据库(SinRTDB)的安装
正弦实时数据库(SinRTDB)的使用(1)-使用数据发生器写入数据
正弦实时数据库(SinRTDB)的使用(2)-接入OPC DA的数据
正弦实时数据库(SinRTDB)的使用(3)-用户管理
正弦实时数据库(SinRTDB)的试用(4)-快照查询
正弦实时数据库(SinRTDB)的使用(5)-历史数据查询
正弦实时数据库(SinRTDB)的使用(6)-历史插值查询
正弦实时数据库(SinRTDB)的使用(7)-历史统计查询
正弦实时数据库(SinRTDB)的使用(8)-过滤查询
若需要试用正弦实时数据库产品的小伙伴欢迎私聊...
本篇博客主要向大家介绍有损压缩,没有工业流程控制相关从业经历的技术人员可能不会理解,作为一款数据库不应该是我存入多少条数据,数据库中就应该存在多少条数据。为什么数据库会将存储的数据条数变少呢?
想想这样的场景:每秒采集一次锅炉中的温度保存到数据库中,一天需要存储86400条数据,通常这些数据都在缓慢变化或在一个小范围内波动,而且根据业务场景的不同这些数据可以存在一些误差比如:50.15 ℃ 还是 50.23℃ 在很多业务上不会产生影响。所以我们可以根据不同的采集量设定可以允许的误差范围降低需要存储的数据总量。
0、环境准备
- 安装正弦实时数据库。
- 添加测试表demo。
- 在表demo中创建两个float类型的标签点tag01和tag02。
- 设置标签点tag01开启有损压缩,压缩偏差为1(我们可以接受1以内的误差)。
- 设置标签点tag02关闭有损压缩。
配置好后标签点表如下所示:
标签点配置信息如下所示:
我们准备分别向tag01和tag02两个标签点写入5条数据分别是(50.17,50.43,50.64,50.75,51.192) 每条数据的时间戳间隔一秒。
1、数据写入
1.1、写入第一条数据
执行如下SQL,分别向两个标签点写入数据:
查询标签点快照数据如下:
1.2、写入第二条数据
执行如下SQL,分别向两个标签点写入第二条数据:
查询标签点快照数据如下:
1.3、写入第三条数据
执行如下SQL,分别向两个标签点写入第三条数据:
查询标签点快照数据如下:
1.4、剩余数据的写入
依次执行对应的SQL写入后面的两条数据
2、比较两个标签点的历史存储值
2.1、查询标签点 demo.tag01 历史存储值
可以看到在这段时间内标签点 demo.tag01只存储了两条数据。
2.2、查询标签点 demo.tag02 历史存储值
可以看到在这段时间内标签点demo.tag02存储了所有的五条数据。
3、比较两个标签点的历史存储插值
由于标签点demo.tag01开启了有损压缩导致这段时间内存储值变少了,但是在实际的业务中怎么能将压缩掉的数据查询出来呢?正弦实时数据库提供插值查询,插值查询结果如下所示:
通过与标签点demo.tag02的历史数据进行对比,五条数据的误差分别是(0, 0.0045, 0.041, 0.1865,0)均小于允许的误差范围。
4、结论
- 有损压缩不会影响快照值(依然能够及时的将最新的数据展示在大屏上)。
- 有损压缩能够极大的降低数据的存储量,减少长时间数据存储的占用空间。
- 可以通过插值查询,获取被压缩的值(压缩值会存在一定的误差,但是处于允许接受的精度范围内)
- 实际应用中可以根据业务需求设置压缩偏差来降低数据的存储量。