物联网场景中,我们如何选择时序数据库 ?

2023-11-07

如今时序数据的应用场景十分广泛,许多类型的数据都是时间序列数据:

  • 金融市场交易

  • 传感器测量(水冷、高温、地震...)

  • 服务器监控(CPU、内存、磁盘...)

  • 资源消耗(能源、电力...)

  • 人体健康(心率、血氧浓度...)

  • 网络访问

通过保留数据固有的时间序列性质,我们可以记录下事物是如何随时间变化的事实,正因如此,这一反应真实的客观属性使得时序数据在特定的场景中充满了商业价值:通过分析时序数据,决策者可以了解到生产和业务中的细微变化,从而对资源优化跟踪预测商业智能等方面进行优化。

在时序数据库成为热点之前,时序数据通常使用 MySQL 或 PostgreSQL 等关系数据库进行处理。但自2010年以来,随着互联网和通信技术的发展,网络中产生的时间序列数据量有了爆炸式的增长,传统的数据库已经无法处理这种万亿级的海量数据。不仅如此,现代业务对数据价值挖掘的需求已不仅仅停留在简单计算和绘制图表的层面上,而是需要更多精细、复杂的计算分析。

如何以一种高性能的方式记录、查询和分析如此大规模的数据,成为了一个难题。时序数据库(time-series database)应运而生。以对数据价值嗅觉最敏感的金融领域为例,早在20年前,华尔街就已经开始使用时序数据库对股票交易数据进行实时的计算分析。

那么,时序数据库与“普通”数据库在技术上有哪些区别呢

我们假定“普通”数据库是 MySQL、Oracle 之类的 OLTP (Online Transaction Processing) 事务型数据库


01.

首先,大部分时序数据库的查询场景可以认为是 OLAP(Online Analytical Processing )分析型数据库场景。具体地说,时序数据库的读取负载主要可以分为两种,一种是对指定时间序列在指定时间段内数据的查询,如查询某个设备或某支股票最新一小时的数据等;另一种是对大量数据进行统计分析,如分析某支股票、甚至是所有股票在过去一周内的平均价格。这两种场景都算是典型的 OLAP 的读取场景。因此,时序数据库具有大部分 OLAP 数据库的特点,如列存会对数据做压缩支持复杂的查询语句等等。

02.

其次,从写入负载来分析,时序数据库的场景有大量数据的实时写入,而非单行数据的写入与修改。由于时序数据库的写入负载通常很高,如每秒几百万甚至几千万条数据,所以时序数据库的存储引擎往往是基于对大量写入更加友好的 LSM Tree(Log Structured Merge Tree),而非对主键点查询、主键范围查询以及单行修改与更新更友好的 B+ 树。开发高效的时序数据库存储引擎,需要扎实的操作系统、数据库系统、分布式系统、体系结构、数据结构与算法等计算机基础。


03.

第三,时序数据库需要支持很多时序场景特有的分析语句与函数。一些常见的语句与函数有:降采样、插值、滑动平均、时间滑动平均、累积和、window join、context by、pivot by 等等。要高效地(往往是向量化地)支持这些查询语句并不是一件非常容易的事情。

04.

第四,流数据的处理。对时序数据的离线分析属于批处理的范畴,而还有许多时序数据场景则可以抽象成另外一个我们称之为流数据的计算场景:有数据不停地产生,且需要低延时地对这些数据做即时的响应与计算。在时序领域,对于流数据的处理,以往的做法往往是使用 flink 等单独的流数据处理平台,这当然也能够解决问题,但会导致至少两个问题,第一是需要维护时序数据库与 flink 这两套系统,使得运维成本大大提升;第二个问题则可能更加致命,那就是流数据的处理是否能够与批数据处理一致,而如果产生不一致,则可能会对业务场景带来毁灭性的影响(熟悉机器学习的同学应该知道机器学习的训练场景、测试场景与服务场景必须达到高度的一致)。如果时序数据库能够推出针对时序场景的特殊流数据处理子系统,并且能够达到“流批一体”,就可以保证批数据与流数据处理的结果完全一致。

数据库的性能往往很大程度上由存储引擎决定。如何针对不同的应用场景设计高性能的存储引擎一直是数据库开发的难题。而在时序数据库的场景下,究竟该怎么设计一个存储引擎,至今仍是一个没有标准答案的开放性问题。

10月27日(本周四)19:30,DolphinDB 邀请到了「树根互联」解决方案高级总监陈超「华夏基金」高级工程师李乾鹏以及「DolphinDB」研发副总监胡津铭,一同与大家探讨时序数据库极致性能背后的存储引擎。

aa6c5a6cd0557303d960eebfd1174a9b.png

本次直播中,你将收获:

来自数据库行业大佬的分享 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

物联网场景中,我们如何选择时序数据库 ? 的相关文章

随机推荐

  • 【SEER数据库简介】

    一 SEER数据库简介 全称 Surveillance Epidemiology and End Results Program 网址 https seer cancer gov SEER 数据库所涉及的肿瘤被划分为9类 乳腺肿瘤 结肠与直
  • PieCloudDB Database:云原生分布式虚拟数仓的诞生之旅

    杭州拓数派科技发展有限公司 OpenPie 的旗舰产品 PieCloudDB Database 是一款云原生分布式虚拟数仓 PieCloudDB 通过多种创新性技术将物理数仓整合到云原生数据计算平台 PieCloudDB 可以动态创建虚拟数
  • VTK相机类vtkCamera原理及用法

    vtk是著名的开源三维渲染库 在三维渲染过程中的一个非常重要的内容就是相机即vtkCamera类的设置 在VTK中 相机的实质是一个观测点 VTK的官方Doc对vtkCamera写的十分简略 暗坑很多 在学习和使用vtkCamera的过程中
  • PostgreSQL报pg_dump: no matching tables were found错误

    刚导出表时 发现找不到这个表 但是表是存在的 所以找了一圈 发现是要加 才行 例如 T TABLES
  • python中input()和raw_input()的区别

    两者均是python的内置函数 通过读取控制台的输入与用户实现交互 raw input 将所有输入作为字符串看待 不管用户输入什么类型的都会转变成字符串 raw的含义就是 生的 未加工的 gt gt gt s1 raw input abc
  • Cadence学习篇(1) Cadence原理图工程以及原理图库的创建

    文章目录 前言 一 创建原理图库 1 1新建工程 1 2 设置原理图板框 1 3 设置原理图栅格 二 添加多个原理图 2 1 原理图重命名 2 2 原理图编页码 三 放置元器件 3 1 添加库 3 2 连线 四 保存工程文件 4 1 新建原
  • Larave5.7使用Mailable发送邮件

    现在很多网站都有发送邮件验证身份的功能 所以介绍一下Laravel中邮件发送的方法 Laravel框架中为我们绑定了Mailable服务 我们只需要配置好参数 然后使用该服务即可 配置邮件服务器 我们发送邮件需要有一个stmp服务器 现在有
  • Sublime实现自动排版

    sublime功能很强大 但是使用sublime就可以实现代码自动重新缩进 使代码缩进重排 方法 Ctrl A选中全部内容 然后在菜单中选择Edit gt Line gt Reindent
  • 苹果发布AirTag新固件更新:增加了反跟踪增强功能

    Apple今天发布了专为AirTags设计的1 0 27 固件的新版本 这是对 6 月份提供的更新的修订 新的 AirTags 1 0 276 固件的内部版本号为 1A287b 而旧固件的内部版本号为 1A276d 6 月份发布的 1 0
  • k8s dashboard 报错 Error: 'dial tcp 172.168.56.2:9090: getsockopt: connection refused'

    访问web http 192 168 56 101 8080 ui Error dial tcp 172 17 26 2 9090 getsockopt connection refused 排查方法 1 需要检查apiserver的地址设
  • hive多窗口遇到java.sql.SQLException 异常

    hive多窗口遇到java sql SQLException 异常 多打开一个客户端窗口启动 hive 会产生 java sql SQLException 异常 文章目录 hive多窗口遇到java sql SQLException 异常
  • 【沉浸式腾讯云服务器部署安装docker】

    重置密码 sudo passwd root lighthouse VM 12 2 centos sudo passwd root Changing password for user root New password Retype new
  • asp.net zero 8.2 学习-11-Metronic替换google字体,加速网页加载速度

    asp net zero 8 2使用的前端模板是Metronic6 0以上版本 官网的Metronic下载下来 打开很慢主要是加载googole字体耗费时间 这是我之前写的如何在Metronic中替换google字体 Metronic是一款
  • 使用STM32F4XX自带数学库“arm_math.h“

    使用STM32F4XX自带数学库 arm math h STM32 F4属于Cortex M4F构架 这与M0 M3的最大不同就是具有FPU 浮点运算单元 支持浮点指令集 因此在处理数学运算时能比M0 M3高出数十倍甚至上百倍的性能 但是要
  • 什么是低信噪比图像及处理方法

    信号处理领域的信噪比即SNR Singal to Noise Ration 又称讯噪比 即放大器的输出信号的电压与同时输出的噪声电压的比 常常用分贝数表示 设备的信噪比越高表明它产生的杂音越少 一般来说 信噪比越大 说明混在信号里的噪声越小
  • python (一维、二维)列表的初始化

    一维列表的初始化 初始一个长度为5的列表 方式1 a 0 5 0 0 0 0 0 方式2 a 0 for in range 5 0 0 0 0 0 二维列表的初始化 初始一个2 5的列表 方式1 b 0 5 for in range 2 0
  • Hibernate环境搭建(小实例)

    Hibernate是一个开源的对象关系映射框架 在学习之前 首先让我们先了解一下Hibernate环境是如何搭建的 废话不多说 直接进入正题 建项目 引Jar包 首先 我们需要创建一个Java项目 创建好项目之后 就需要引入与Hiberna
  • unity的HDR效果

    http blog csdn net wolf96 article details 44057915 文章开始先放两组效果 文章结尾再放两组效果 本文测试场景资源来自浅墨大神 shader效果为本文效果 HDR 人们有限的视觉系统 只支持1
  • 【DS】单链表@线性表 —— 增删查改

    目录 0 引 1 链表的概念和结构 2 链表的分类 3 链表的实现 3 1 打印 申请新节点 销毁 3 1 1 打印 3 1 2 申请新节点 3 1 3 销毁 3 2 尾插 尾删 3 2 1 尾插 3 2 2 尾删 3 3 头插 头删 3
  • 物联网场景中,我们如何选择时序数据库 ?

    如今时序数据的应用场景十分广泛 许多类型的数据都是时间序列数据 金融市场交易 传感器测量 水冷 高温 地震 服务器监控 CPU 内存 磁盘 资源消耗 能源 电力 人体健康 心率 血氧浓度 网络访问 通过保留数据固有的时间序列性质 我们可以记
Powered by Hwhale