正弦实时数据库(SinRTDB)的使用(9)-有损压缩

前文已经将正弦实时数据库的使用进行了介绍,需要了解的可以先看下面的博客:

正弦实时数据库(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、环境准备

  1. 安装正弦实时数据库。
  2. 添加测试表demo。
  3. 在表demo中创建两个float类型的标签点tag01和tag02。
  4. 设置标签点tag01开启有损压缩,压缩偏差为1(我们可以接受1以内的误差)。
  5. 设置标签点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、结论

  • 有损压缩不会影响快照值(依然能够及时的将最新的数据展示在大屏上)。
  • 有损压缩能够极大的降低数据的存储量,减少长时间数据存储的占用空间。
  • 可以通过插值查询,获取被压缩的值(压缩值会存在一定的误差,但是处于允许接受的精度范围内)
  • 实际应用中可以根据业务需求设置压缩偏差来降低数据的存储量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/780930.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Kafka学习之:mac 上基础使用 python 来使用 kafka 的生产者和消费者进行数据处理

文章目录 前提python 环境配置Kafka 生产消费者模型生产者 producer检查当前存在的所有 topic / 是否自动创建 topic为什么 producer 要通过 key, value 来发布数据键(Key)值(Value) 消费者 consumerconsumer 得到的 message 有哪…

MES系统怎么解决车间生产调度难的问题?

MES系统三个层次 1、MES决定了生产什么,何时生产,也就是说它使公司保证按照订单规定日期交付准确的产品; 2、MES决定谁通过什么方式(流程)生产,即通过优化资源配置,最有效运用资源; …

关于SVG格式图片实现室内地图

SVG格式图片 可缩放矢量图形(Scalable Vector Graphics,SVG)基于 XML 标记语言,用于描述二维的矢量图形。 作为一个基于文本的开放网络标准,SVG 能够优雅而简洁地渲染不同大小的图形,并和 CSS、DOM、JavaScript 和 SMIL 等其他网络标准无缝衔接。本质上,SVG 相对于图像…

react学习总结(二)之案例分享

一.项目框架的搭建 1./src/pages下建不同的页面Header.jsx,About.jsx,Home.jsx, Message.jsx,News.jsx,Detail.jsx Header.jsx import React from react import { useNavigate } from react-router-domexport defau…

C++多线程:线程的创建、join、detach、joinable方法(二)

1、线程的开始与结束 程序运行起来,生成一个进程,该进程所持有的主线程开始自动运行,main主线程运行完所有的代码从main函数中返回表示整个进程运行完毕,标志着主线程和进程的死亡,等待操作系统回收资源,因…

nginx如何清理页面缓存

在 Nginx 中,清理页面缓存通常涉及配置缓存头以控制缓存行为,或者使用外部工具或机制来清除缓存。以下是一些建议来管理和清理 Nginx 的页面缓存: 配置缓存头: Nginx 本身不直接提供缓存机制,但可以通过配置 proxy_cac…

安全算法 - 国密算法

国密算法是中国自主研发的密码算法体系,包括对称加密算法、非对称加密算法和哈希算法。其中,国密算法采用SM4作为对称加密算法,SM2作为非对称加密算法,以及SM3作为哈希算法。国密算法在信息安全领域具有重要意义和广泛应用&#x…

Cocos Creator 常见问题记录

目录 问题1、精灵图九宫格,角度不拉伸 问题2、BlockInputEvents 防止透屏 问题1、精灵图九宫格,角度不拉伸 点击编辑,拖拽到可变区域 问题2、BlockInputEvents 防止透屏

【独立开发前线】Vol.26 【独立开发产品】吉光卡片-让你的文字变得酷炫起来

今天给大家分享一下 独立开发前线 社区成员张小吉 的作品 吉光卡片; 这是一款iOS的APP,下载:吉光卡片,主要功能是帮你制作酷炫的文字卡片,用精美的卡片让你的文字生动起来。 展示效果如下: 你可以用它制作…

【公示】2023年度青岛市级科技企业孵化器拟认定名单

根据《青岛市科技企业孵化器管理办法》(青科规〔2023〕1号)(以下简称《管理办法》)、《关于开展2023年度市级科技企业孵化器认定申报工作的通知》,经申报受理、区市推荐、形式审查、专家评审及现场核查等程序&#xff…

为何keil编译信息显示data使用量不是整数

在使用Keil软件进行嵌入式系统开发时,编译后显示的数据使用量(Data Usage)可能会以小数形式显示。这种情况通常是由以下几个原因造成的: 1.内存对齐:为了提高内存访问效率,编译器会对数据进行对齐处理。例…

【笔记】动⼿学深度学习(花书)|| Aston Zhang Mu Li Zachary C. LiptonAlexander J. Smola

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 前言 第一章 深度学习简介 第二章 P 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言本书…

BasicVSR++模型转JIT并用c++libtorch推理

BasicVSR模型转JIT并用clibtorch推理 文章目录 BasicVSR模型转JIT并用clibtorch推理安装BasicVSR 环境1.下载源码2. 新建一个conda环境3. 安装pytorch4. 安装 mim 和 mmcv-full5. 安装 mmedit6. 下载模型文件7. 测试一下能否正常运行 转换为JIT模型用c libtorch推理效果 安装Ba…

使用docker 安装oracle 11g 挂载数据目录并修改SID centos-7

建议:建议使用其它系统去装ubuntu或Rocky(因为centos已经停止维护) 1、安装docker 这里就不细写了,可以查看清华镜像源或者阿里镜像源 清华:https://mirrors.tuna.tsinghua.edu.cn/help/docker-ce/ 阿里:ht…

2434. 使用机器人打印字典序最小的字符串

点击跳转题目 本题学到两点: 1.初始化数组,全部为0的简单写法。之前都是 int arr[26]; memset(arr,0,sizeof(arr));2.if条件中的&&部分左右顺序不能颠倒。颠倒报错,之前一直没重视。 思路: 遍历s,push当前字…

[c++]类和对象常见题目详解

本专栏内容为:C学习专栏,分为初阶和进阶两部分。 通过本专栏的深入学习,你可以了解并掌握C。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:C 🚚代码仓库:小小unicorn的代码仓库&…

2024.03.19 校招 实习 内推 面经

绿*泡*泡VX: neituijunsir 交流*裙 ,内推/实习/校招汇总表格 1、校招 | RoboSense 速腾聚创2024届春招启动(内推) 校招 | RoboSense 速腾聚创2024届春招启动(内推) 2、实习 | 百度智能驾驶事业群组 202…

kanzi 3d知识点

整理学习资料 名字链接Kanzi视频合集中科创达-智能座舱视频专辑-中科创达-智能座舱视频合集-哔哩哔哩视频 (bilibili.com)Kanzi在线文档Working with … - Kanzi framework 3.9.7 documentationThe Book of ShadersThe Book of Shaders着色器语言Shader_着色语言Shading Langua…

Vim - 文本编辑器 Vi vs Vim

你是否应该在学习 Vim 之前先学习 Vi,这完全取决于您自己、您的要求以及您的具体目标和需求。Vim 是 Vi 的扩展、增强和改进版本,它包括 Vi 的所有功能以及许多附加功能。 简约: Vi 设计简约。先学习 Vi 可以让你对基础知识有扎实的了解&…

malloc是如何分配内存|malloc(1)分配多大内存|free释放内存,会还给操作系统吗?

前言 大家好, 我jiantaoyab,这篇文章给大家介绍mallo和free面试中常问到的问题。 malloc是如何分配内存的? 如果用户分配的内存小于128KB,则通过brk()申请内存 如果用户分配的内存大于128KB,则通过mmap()申请内存 简…