KaiwuDB 时序引擎数据去重功能详解

一、背景介绍

随着物联网领域的快速发展,时序数据的产生和处理需求不断增长。时序数据是按照时间顺序收集和记录的数据,其特点在于数据具有时间戳,并且时间是数据分析和查询的一个重要维度。

在实际场景中,可能存在多条相同时间戳的数据写入数据库中。数据去重功能可以更好地纠正数据的准确性,同时能够节省存储空间,降低存储成本。

本次直播介绍了 KaiwuDB 数据去重功能开发背景整行去重功能部分列去重功能的实现方式及使用场景。

1. 数据去重意义

数据去重是指在数据集中删除重复的数据记录,保留唯一的数据记录的过程。

去重功能的意义主要有以下方面:

  • 降低数据处理的时间和成本;

  • 提高存储空间的利用率;

  • 提高数据分析的准确性;

  • 增强数据的质量和可靠性。

2. 数据去重背景

(1)数据整行去重

数据整行去重是指时序表可以支持时间戳下多条数据的写入去重,后写入的数据会覆盖前条数据。

数据整行去重功能打开后,第一次成功插入的数据能够被成功查询到,且若后续再次出现相同时间戳数据,该数据亦可被更新。相同时间戳的数据写入成功后,某一时间戳下仅存在一条最新数据。

(2)数据部分列去重

数据部分列去重是指时序表支持相同时间戳的不同列分批插入表,会更新整合成一条数据。

写入一条数据后,当前写入重复数据亦可被更新(整条或单列)。数据写入成功后,某一时间戳下仅存在 1 条最新数据,空的列会与其他重复数据合并。

二、KaiwuDB 去重功能

1. 概念说明

  • 顺序数据:正在写入的记录时间戳比表中所有记录最大的时间戳还要大。

  • 乱序数据:不满足顺序数据定义的正在写入的记录,都归属于乱序数据。

  • 重复数据:重复数据一定是乱序数据,因为表中已经存储这个时间戳的记录,属于乱序数据中的一种特殊数据。

  • 时序数据:按照时间顺序收集和记录的数据,其特点在于数据具有时间戳,并且时间是数据分析和查询的一个重要维度。

如图中所示,写入以存储的最新数据的时间戳作为分割线,往后的数据都是顺序数据范围,而分割线之后的数据都是乱序数据。

2. 去重的前提-乱序数据处理

乱序数据处理功能是指支持对时序表写入的数据乱序场景进行处理。比如在特定时间窗口内( 10 分钟或 1 小时)内的乱序数据会存储下来,时间窗口外的按照特定的规则处理(过滤掉数据,写入一条告警日志)。

乱序数据处理功能是为了能按照数据时间戳分区,使得数据库尽可能禁止向压缩分区写数据。

乱序数据的处理是基于乱序时间窗口来做的,乱序时间窗口指表最新数据时间戳的时间点一直到往前的一段时间的时间范围,每个表的时间窗口都不一样,如果表没有新数据的写入,则它的时间窗口不会变。

如图中所示,超过时间窗口的乱序数据是不能够写入成功的。顺序数据写入能够正常写入成功,但是如果是往已压缩分区写数据,能够写入成功,会在 log 中打印一条乱序数据。

3. 数据去重功能

重复数据是乱序数据中特殊数据类型,数据去重功能是对乱序数据处理机制的补充和完善。数据去重处理的数据范围是乱序时间窗口内的重复数据,乱序时间窗口外的重复数据会被丢弃掉。

数据去重处理也会保留之前乱序数据处理中对重复数据的处理策略,并在此基础上,扩展出更新、拒绝、忽略等去重策略。

(1)重复数据查询算法

数据去重功能也是基于乱序时间窗口机制实现的。基于此机制,KaiwuDB 实现了重复数据查询算法:

  • 从数据时间线上来说,只要查询时间范围为【正在插入的数据时间戳 - 乱序时间窗口,正在写入的数据时间戳】内的记录,并判断是否时间戳相同,就能过滤出正在插入的重复记录。

  • 从最新数据的时间戳往时间戳小的方向遍历,(正在插入的数据时间戳 - 乱序时间窗口)这个时间戳的记录不一定存在,因此,需要遍历找到比(正在插入的数据时间戳 - 乱序时间窗口)小的时间戳即可。(算法 1

  • 但由于插入的数据是乱序的,可能存在如下图乱序时间窗口 2 内的乱序,大于(正在插入的数据时间戳 - 乱序时间窗口)记录会存储在(正在插入的数据时间戳 - 乱序时间窗口)时间戳的前面,算法 1 就不能遍历到。

此种情况最坏结果是两个乱序时间窗口串联,即乱序时间窗口2的结束时间与乱序时间窗口的开始时间相同,此时,需要遍历找到比(正在插入的数据时间戳 - 2 * 乱序时间窗口)小的时间戳。

通过重复数据查询算法,得到相同时间戳的记录为重复记录,放入重复记录数组中。

(2)整行去重

通过重复数据查询算法查询到相关重复数据后,如果是整行去重,在写入时,会将最新的数据写入数据库中,写入成功后,将查到的重复数据做删除标记,后续会删除。

写入流程如图所示:

(3)部分列去重

部分列去重策略,会补齐正在插入记录中数值为空的列。当正常插入记录的第 X 列为空时,我们遍历重复记录数组,找到第 X 列不为空的数值,当有多个数值时,取最近插入的记录中的第 X 列的数值。

如下图,重复记录 1 插入早于重复记录 2,当正在插入的记录如下图时,部分列去重规则产生的新记录每列取值为标绿的数值。

三、KaiwuDB 去重功能应用场景

1. 默认去重策略

  • 场景说明:没有配置去重策略,启动 KaiwuDB 并插入三条时间戳相同的记录。

  • 用户行为:没有在配置文件中设置去重参数

  • 系统行为:KaiwuDB 启动默认的去重策略:不去重,三条记录都可以写入成功,并且都能被查询到。

2. 配置去重策略为 reject

  • 场景说明:配置去重策略,启动 KaiwuDB,连续三次执行 insert 语句插入时间戳相同的记录。

  • 用户行为:参数配置为 reject - 禁止插入重复数据。

  • 系统行为:第一条记录插入成功,后面两条记录插入时报错只有第一条记录存储,并且可以被查询到。

3. 配置去重策略为 override

  • 场景说明:配置去重策略,启动 KaiwuDB,一条 insert 语句中同时插入三条时间戳相同的记录。

  • 用户行为:参数配置为 override - 只保留最新整行记录。

  • 系统行为:Insert 语句执行成功,查询时,只有第三条记录能够被查询到。

4. 配置去重策略为 merge

  • 场景说明:配置去重策略,启动 KaiwuDB,插入三条时间戳相同的记录。

  • 用户行为:参数配置为 merge - 历史数据合并。

  • 系统行为:三条 insert 语句执行成功,查询时,只返回一条合并记录。

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

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

相关文章

k8s是什么

生么是k8s: Kubernetes:8个字母省略,就是k8s 自动部署,自动扩展和管理容器化部署的应用程序的一个开源系统、 k8s是负责自动化运维管理多个容器化程序的集群,是一个功能强大的容器编排工具。 分布式和集群化的分布式进行容器管…

分支限界法求解01背包(优先队列)【java】

实验内容:运用分支限界法解决0-1背包问题 实验目的:分支限界法按广度优先策略遍历问题的解空间树,在遍历过程中,对已经处理的每一个结点根据限界函数估算目标函数的可能取值,从中选取使目标函数取得极值的结点优先进行广度忧先搜…

python 面试题第一弹

1. 如何理解Python中的深浅拷贝 浅拷贝(Shallow Copy)创建一个新的对象,该对象的内容是原始对象的引用。这意味着新对象与原始对象共享相同的内存地址,因此对于可变对象来说,如果修改了其中一个对象,另一个…

Echarts随机生成颜色

Echarts生成随机颜色,并且不要黑色、灰色、棕色等难看的颜色,暖色系并且颜色亮丽, 可以通过修改saturation 和lightness 的随机数值,提高颜色饱和度和亮度 function generateWarmColor() {let hue Math.floor(Math.random() * 3…

arcpy获取矢量坐标系

代码: shppath "矢量路径" shpdescribe arcpy.Describe(shppath) print(shpdescribe.spatialReference.name) 结果:

智能优化算法应用:基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于袋獾算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.袋獾算法4.实验参数设定5.算法结果6.参考文献7.MA…

人工智能_机器学习078_聚类算法_概念介绍_聚类升维_降维_各类聚类算法_有监督机器学习_无监督机器学习---人工智能工作笔记0118

首先看一下什么是聚类,我们可以进入sklearn的官网去看看 可以看到这里,首先classification 这个分类我们学完了,然后就是regression回归我们也学完了对吧,其实我们现实生活中的,大部分问题就是 这两种问题就可以解决了. 然后我们再来看一个: clustering,这个就是聚类对吧.聚类算…

【Linux驱动】最基本的驱动框架 | LED驱动

🐱作者:一只大喵咪1201 🐱专栏:《Linux驱动》 🔥格言:你只管努力,剩下的交给时间! 目录 🏀最基本的驱动框架⚽驱动程序框架⚽编程 🏀LED驱动⚽配置GPIO⚽编程…

顺序表的基本操作(必学)

目录 线性表: 顺序表: 概念和结构: 动态顺序表常用操作实现: 头文件(数组顺序表的声明): 各种基本操作总的声明: 顺序表的初始化: 顺序表的销毁 顺序表的打印 …

3分钟了解安全数据交换系统有什么用!

企业为了保护核心数据安全,都会采取一些措施,比如做网络隔离划分,分成了不同的安全级别网络,或者安全域,接下来就是需要建设跨网络、跨安全域的安全数据交换系统,将安全保障与数据交换功能有机整合在一起&a…

Wordpress对接Lsky Pro 兰空图床插件

Wordpress对接Lsky Pro 兰空图床插件 wordpress不想存储图片到本地,访问慢,wordpress图片没有cdn想要使用图床,支持兰空自定义接口 安装教程—在wp后台选择插件zip—然后启用—设置自己图床API接口就ok了,文件全部解密&#xff0c…

实习知识整理9: 点击直接购买按钮后,跳转到确认订单页面

1. 为按钮绑定事件 <button id"addCartButton">加入购物车</button><br/> $("#buyButton").click(function () {if ( ! loginUser) {// 如何将商品信息传递到后台&#xff0c;后台能够将内容在新的订单页面显示$("#buyItemForm&quo…

[SWPUCTF 2021 新生赛]hardrce

[SWPUCTF 2021 新生赛]hardrce wp 参考博客&#xff1a;https://www.cnblogs.com/bkofyZ/p/17644820.html 代码审计 题目的代码如下&#xff1a; <?php header("Content-Type:text/html;charsetutf-8"); error_reporting(0); highlight_file(__FILE__); if(is…

数据结构之<堆>的介绍

1.简介 堆是一种特殊的数据结构&#xff0c;通常用于实现优先队列。堆是一个可以被看作近似完全二叉树的结构&#xff0c;并且具有一些特殊的性质&#xff0c;根据这些性质&#xff0c;堆被分为最大堆&#xff08;或者大根堆&#xff0c;大顶堆&#xff09;和最小堆两种。 2.…

H266/VVC帧间预测编码技术概述

帧间预测编码简述 帧间预测利用视频时间域的相关性&#xff0c;使用邻近已编码图像像素值预测当前图像的像素值&#xff0c;能有效去除视频时域冗余。 目前主要的视频编码标准中&#xff0c;帧间预测都采用基于块的运动补偿技术&#xff0c;不同的编码标准有不同的分块方式。 …

爆款前端设计工具揭晓!提高工作效率的5款神器,助你事半功倍!

前端设计工具以更低的成本提供更快的移动开发&#xff0c;他们帮助前端开发人员有效地创建响应设计&#xff0c;但找到一个实用的前端设计工具并不容易&#xff0c;在这里&#xff0c;即时设计师为您组织了五个免费和易于使用的前端页面工具&#xff0c;来选择一个&#xff01;…

使用Visual Studio调试VisionPro脚本

使用Visual Studio调试VisionPro脚本 方法一 &#xff1a; 修改项目文件 csproj步骤&#xff1a; 方法二 &#xff1a; Visual Studio附加功能步骤&#xff1a; 方法一 &#xff1a; 修改项目文件 csproj 步骤&#xff1a; 开启VisionPro脚本调试功能 创建一个VisionPro程序…

如何快速删除pdf周围的空白

问题&#xff1a;写论文往往需要pdf格式的图片&#xff0c;但pdf往往四周存在大量空白需要手动截图很麻烦 解决&#xff1a; 打开命令行输入&#xff1a;pdfcrop 图片名.pdf

理解io/nio/netty

一、io io即input/output&#xff0c;输入和输出 1.1 分类 输入流、输出流&#xff08;按数据流向&#xff09; 字节流&#xff08;InputStream/OutputStream&#xff08;细分File/Buffered&#xff09;&#xff09;、字符流(Reader/Writer&#xff08;细分File/Buffered/pu…

智能优化算法应用:基于卷积优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于卷积优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于卷积优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.卷积优化算法4.实验参数设定5.算法结果6.…