当前位置: 首页 > news >正文

KaiwuDB 多模数据库-时序性能优化

随着物联网领域的快速发展,时序数据的产生和处理需求不断增长。为了满足实时性、高效性和准确性的要求,数据库需要进行时序性能优化,以提供快速的数据写入、实时查询和高效的数据存储与处理能力。

本期直播介绍了时序数据和时序数据库特征以及基于 TSBS 时序测试标准分析,并基于此解析了 KaiwuDB 的时序模型架构和优化设计。

一、时序基础概念

1. 时序基础概念

时间序列数据是指带时间标签的数据,主要由电力、化工、气象、地理信息等行业的各类实时监测、检查与分析设备所采集、产生的数据。

为了便于解释基本概念,以微电网的太阳能发电板作为典型时序数据场景。假设每个发电板采集电流、电压、温度三个量,有多个太阳能板。

  • Measurement:一类设备的集合;

  • Data source:一个具体的设备;

  • Tags:一个设备的描述标签;

  • Timestamp:本条时序数据的采集时间。

2. 时序数据库的特点

时序数据库全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签(按照时间的顺序变化,即时间序列化)的数据。

基本特点:

  • 大数据量的处理;

  • 高压缩比;

  • 冗余重复数据的一份存储;

  • 时间序列分区处理;

  • 一般没有事务相关处理。

二、TSBS 测试标准说明

1. TSBS 测试标准

TimeScale 开源项目:

  • 时序数据的生成和写入;

  • 时序场景的典型查询。

两个典型的应用场景:

  • DevOps – 服务器 CPU 监控场景有序的时间序列数据;

  • IoT – 物联网卡车车队场景存在无序和缺失的时间序列数据。

2. DevOps 场景(CPU-only)

CPU-only 场景特点:

  • 数据间隔均为 10 秒;

  • 场景五数据量最大 1.8 亿条记录,场景四数据量最小 1800 万条记录;

  • 场景四和场景五设备数量较多,仅覆盖 3 分钟时间跨度。

3. 不同分类的 TSBS 语句分析

三、KaiwuDB 多模数据库时序引擎

1. 基本执行架构

  • 应用层;

  • SQL Engine;

  • 分布式层;

  • Storage Engine。

一般没有事务相关处理。

2. 时序优化改造

2.1 存储结构优化

针对时序数据的量大、递增、且部分数据为静态值的特点,存储结构做了如下演进:

  • 大表,所有设备写入到一张表;

  • 分表,一个设备一张表;

  • 分区,按照时间划分数据区域;

  • 合表,部分设备一组,静态属性合并存储,同时时间分区

2.2 KaiwuDB 执行计算架构优化

针对时序模型,KaiwuDB 做了一系列执行架构调整:

  • 执行器下放;

  • 采用 mmap 技术,减少数据拷贝;

  • 分区并行;

  • 数据裁剪;

  • 定制执行计划;

  • Timebucket 等特殊时序算子;

  • 多级动态并行。

2.3 KaiwuDB 时序统计信息

KaiwuDB 的针对时序查询的特征,定制和实现了一套时序预计算统计信息。其特点如下:

  • 时序表是一种特殊的复合表;

  • 模板表对应 tag 表;

  • 实例表只是对应 tag 表中的一条索引,而非完整表;

  • 数据写入时可以动态创建 tag 项并写入数据;

  • tag 表支持基本的统计信息,例如包含 TSBS;

  • 查询支持通用数据读取;

  • 特殊查询能够下推,例如多 tag 查询下推,单个 tag 特定聚合数据;

  • 数据块按照时间分区,增加块的统计信息。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【Matlab】如何快速入门一项新技能-以Matlab/Simulink入门为例
  • R语言中的机器学习
  • 15.oracle的 listagg() WITHIN GROUP () 行转列函数使用
  • Docker 容器日志查看和清理
  • c语言,输入整数n(行数,本例为4),按照如下规则打印数字图片 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16
  • 接口测试 —— 接口测试的意义
  • 微信小程序生成二维码并保存到本地方法
  • 应用于智慧工厂的AI边缘计算盒子+AI算法软硬一体化方案
  • Nacos 架构原理
  • TCP三次握手过程
  • 【Linux】24、文件系统、磁盘 IO
  • HuggingFace学习笔记--利用API实现简单的NLP任务
  • Unity UGUI控件之Horizontal Layout Group
  • shareMouse 使用中遇到的问题
  • Vue3集成ThreeJS实现3D效果,threejs+Vite+Vue3+TypeScript 实战课程【一篇文章精通系列】
  • 【comparator, comparable】小总结
  • Computed property XXX was assigned to but it has no setter
  • css属性的继承、初识值、计算值、当前值、应用值
  • MySQL QA
  • mysql外键的使用
  • Nodejs和JavaWeb协助开发
  • RxJS: 简单入门
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • SpingCloudBus整合RabbitMQ
  • Terraform入门 - 3. 变更基础设施
  • vue中实现单选
  • Webpack4 学习笔记 - 01:webpack的安装和简单配置
  • 大数据与云计算学习:数据分析(二)
  • 对象管理器(defineProperty)学习笔记
  • 给第三方使用接口的 URL 签名实现
  • 悄悄地说一个bug
  • 如何设计一个微型分布式架构?
  • 设计模式(12)迭代器模式(讲解+应用)
  • 在Unity中实现一个简单的消息管理器
  • 分布式关系型数据库服务 DRDS 支持显示的 Prepare 及逻辑库锁功能等多项能力 ...
  • 昨天1024程序员节,我故意写了个死循环~
  • #QT(一种朴素的计算器实现方法)
  • (06)Hive——正则表达式
  • (4)STL算法之比较
  • (k8s中)docker netty OOM问题记录
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (回溯) LeetCode 78. 子集
  • (剑指Offer)面试题34:丑数
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (原創) 系統分析和系統設計有什麼差別? (OO)
  • (转)负载均衡,回话保持,cookie
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .bat批处理(六):替换字符串中匹配的子串
  • .equals()到底是什么意思?
  • .gitignore文件使用
  • .net 4.0发布后不能正常显示图片问题
  • .NET 快速重构概要1
  • .NET 中各种混淆(Obfuscation)的含义、原理、实际效果和不同级别的差异(使用 SmartAssembly)
  • .net6使用Sejil可视化日志