MRS IoTDB时序数据库的架构设计与实现(上)

本文涉及的产品
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
云原生大数据计算服务MaxCompute,500CU*H 100GB 3个月
简介: MRS IoTDB是近年来最新推出的时序数据库产品,其领先的设计理念在时序数据库领域展现出越来越强大的竞争力,得到了越来越多的用户认可。为了大家更好地了解MRS IoTDB,本文将会系统地为大家介绍MRS IoTDB的来龙去脉和功能特性,重点为大家介绍MRS IoTDB时序数据库的架构设计与实现,这次先为大家介绍MRS IoTDB的整体架构设计,后续系列文章会为大家逐步展开细节介绍。

MRS IoTDB是近年来最新推出的时序数据库产品,其领先的设计理念在时序数据库领域展现出越来越强大的竞争力,得到了越来越多的用户认可。为了大家更好地了解MRS IoTDB,本文将会系统地为大家介绍MRS IoTDB的来龙去脉和功能特性,重点为大家介绍MRS IoTDB时序数据库的架构设计与实现,这次先为大家介绍MRS IoTDB的整体架构设计,后续系列文章会为大家逐步展开细节介绍。

1、什么是时序数据库

时序数据库是时间序列数据库的简称,指的是专门对带时间标签(按照时间的顺序变化,即时间序列化)的数据进行存储、查询、分析等处理操作的专用数据库系统。通俗来说,时序数据库就是专门用来记录例如物联网设备的温度、湿度、速度、压力、电压、电流以及证券买入卖出价等随着时间演进不断变化的各类数值(测点、事件)的数据库。

当前,随着大数据技术发展和应用的不断深入,以物联网IoT(Internet Of Things)、金融分析为代表的两类数据,表现出随着时间的演进连续不断地产生大量传感器数值或事件数据。时间序列数据(time series data)就是以数据(事件)发生的时刻(时间戳)为时间轴形成的连续不断的数值序列。例如某物联网设备不同时刻的的温度数据构成一个时间序列数据:

image.png

无论是机器产生的传感器数据,还是人类活动产生的社会事件数据,都有一些共同的特征:

(1)采集频率高:每秒采集几十次、上百次、十万次乃至百万次;

(2)采集精度高:最少支持毫秒级采集,有些需要支持微秒级和纳秒级采集;

(3)采集跨度大:7*24小时持续不断地连续采集几年、乃至数十年数据;

(4)存储周期长:需要支持时序数据的持久存储,甚至对有些数据需要进行长达上百年的永久存储(例如地震数据);

(5)查询窗口长:需要支持从毫秒、秒、分钟、小时到日、月、年等不同粒度的时间窗口查询;也需要支持万、十万、百万、千万等不同粒度的数量窗口查询;

(6)数据清洗难:时间序列数据存在乱序、缺失、异常等复杂情况,需要专

用算法进行高效实时处理;

(7)实时要求高:无论是传感器数据还是事件数据,都需要毫秒级、秒级的实时处理能力,以确保对实时响应和处理能力;

(8)算法专业强:时间序列数据在地震、金融、电力、交通等不同领域,都有很多垂直领域的专业时序分析需求,需要利用时序趋势预测、相似子序列分析、周期性预测、时间移动平均、指数平滑、时间自回归分析以及基于LSTM的时序神经网络等算法进行专业分析。

根据时序数据的共同特征可以看出,时间序列特殊的场景需求给传统的关系数据库存储和大数据存储都带来了挑战,无法是采用关系数据库进行结构化存储,还是采用NoSQL数据库进行存储,都无法满足海量时序数据高并发实时写入和查询的需求。因此,迫切需要一种专门用于存储时间序列数据的专用数据库,时序数据库的概念和产品就这样诞生了。

需要注意的是:时序数据库不同于时态数据库和实时数据库。时态数据库(Temporal Database)是一种能够记录对象变化历史,即能够维护数据的变化经历的数据库,比如TimeDB。时态数据库是对传统关系数据库中时间记录的时间状态进行细粒度维护的系统,而时序数据库完全不同于关系数据库,只存储不同时间戳对应的测点值。有关时序数据库与时态数据库的更详细对比,后续将会发文专门介绍,在此不再详述。

时序数据库也不同于实时数据库。实时数据库诞生于传统工业,主要是因为现代工业制造流程及大规模工业自动化的发展,传统关系数据库难以满足工业数据的存储和查询需求。因此,在80年代中期,诞生了适用于工业监控领域的实时数据库。由于实时数据库诞生早,在扩展性、大数据生态对接、分布式架构、数据类型等方面存在局限,但是也有产品配套齐全、工业协议对接完整的优势。时序数据库诞生于物联网时代,在大数据生态对接、云原生支持等方面更有优势。

时序数据库与时态数据库、实时数据库的基本对比信息如下:

image.png

2、什么是MRS IoTDB时序数据库

   MRS IoTDB是FusionInsight MRS大数据套件中的时序数据库产品,在深度参与Apache IoTDB社区开源版的基础上推出的高性能企业级时序数据库产品。IoTDB顾名思义,是针对IoT物联网领域推出的专用时序数据库软件,是由清华大学发起的国产Apache开源软件。自IoTDB诞生之初,华为就深度参与IoTDB的架构设计和核心代码贡献,对IoTDB集群版的稳定性、高可用和性能优化投入了大量人力并提出了大量的改进建议和贡献了大量的代码。

   IoTDB在设计之初,全面分析了市面上的时序数据库相关产品,包括基于传统关系数据库的Timescale、基于HBase的OpenTSDB、基于Cassandra的KariosDB、基于时序专属结构的InfluxDB等主流时序数据库,借鉴了不同时序数据在实现机制方面的优势,形成了自己独特的技术优势:

(1)支持高速数据写入

独有的基于两阶段LSM合并的tLSM算法有效保障了IoTDB即使在乱序数据存在的情况下也能轻松实现单机每秒千万测点数据的并发写入能力。

(2)支持高速查询

支持TB级数据毫秒级查询

(3)功能完备

  支持CRUD等完整的数据操作(更新通过对同一设备同一时间戳的测点数据覆盖写入来实现,删除通过设置TTL过期时间来实现),支持频域查询,具备丰富的聚合函数,支持相似性匹配、频域分析等专业时序处理。

(4)接口丰富,简单易用

   支持JDBC接口、Thrift API接口和SDK等多种接口。采用类SQL语句,在标准SQL的语句上增加了对于时间滑动窗口的统计等时序处理常用的功能,提供了系统使用效率。Thrift API接口支持Java、C\C++、Python、C#等多语言接口调用。

(5)低存储成本

 IoTDB独立研发的TsFile时序文件存储格式,专门针对时序处理处理做了优化,基于列式存储,支持显式的数据类型声明,不同数据类型自动匹配SNAPPY、LZ4、GZIP、SDT等不同的压缩算法,可实现1:150甚至更高的压缩比(数据精度进一步降低的情况下),极大地降低了用户的存储成本。例如某用户原来用9台KariosDB服务器存储的时序数据,IoTDB用1台同等配置的服务器即可轻松实现。

(6)云边端多形态部署

  IoTDB独有的轻量级架构设计保障了IoTDB可以轻松实现“一套引擎打通云边端,一份数据兼容全场景”。在云服务中心,IoTDB可以采用集群部署,充分发挥云的集群处理优势;在边缘计算位置,IoTDB可以在边缘服务器上部署单机IoTDB,也可以部署少量节点的集群版,具体视边缘服务器配置而定;在设备终端,IoTDB可以TsFile文件的形态直接嵌入到终端设备的本地存储中,并直接被设备终端的直接读写TsFile文件,不需要IoTDB数据库服务器的启动运行,极大地减少了对终端设备处理能力的要求。由于TsFile文件格式开放,终端任意语言和开发平台可以直接读写TsFile的二进制字节流,也可以利用TsFile自带的SDK进行读写,对外甚至可以通过FTP将TsFile文件发送到边缘或云服务中心。

(7)查询分析一体化

  IoTDB一份数据同时支持实时读写与分布式计算引擎分析,TsFile与IoTDB引擎的松耦合设计保障了一方面IoTDB可以利用专有的时序数据处理引擎对时序数据进行高效写入和查询,同时TsFile也可以被Flink、Kafka、Hive、Pulsar、RabbitMQ、RocketMQ、Hadoop、Matlab、Grafana、Zeepelin等大数据相关组件进行读写分析,极大地提升了IoTDB的查询分析一体化能力和生态扩展能力。

image.png

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
3月前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
3月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与最佳实践
在微服务架构中,数据库访问的效率直接影响到系统的性能和可扩展性。本文探讨了优化微服务架构中数据库访问的策略与最佳实践,包括数据分片、缓存策略、异步处理和服务间通信优化。通过具体的技术方案和实例分析,提供了一系列实用的建议,以帮助开发团队提升微服务系统的响应速度和稳定性。
|
25天前
|
存储 SQL Apache
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
Apache Doris 是一个基于 MPP 架构的高性能实时分析数据库,以其极高的速度和易用性著称。它支持高并发点查询和复杂分析场景,适用于报表分析、即席查询、数据仓库和数据湖查询加速等。最新发布的 2.0.2 版本在性能、稳定性和多租户支持方面有显著提升。社区活跃,已广泛应用于电商、广告、用户行为分析等领域。
Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库
|
26天前
|
缓存 关系型数据库 MySQL
高并发架构系列:数据库主从同步的 3 种方案
本文详解高并发场景下数据库主从同步的三种解决方案:数据主从同步、数据库半同步复制、数据库中间件同步和缓存记录写key同步,旨在帮助解决数据一致性问题。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
高并发架构系列:数据库主从同步的 3 种方案
|
6月前
|
存储 关系型数据库 MySQL
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
MySQL数据库进阶第六篇(InnoDB引擎架构,事务原理,MVCC)
|
3月前
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与实践
随着微服务架构的普及,如何高效管理和优化数据库访问成为了关键挑战。本文探讨了在微服务环境中优化数据库访问的策略,包括数据库分片、缓存机制、异步处理等技术手段。通过深入分析实际案例和最佳实践,本文旨在为开发者提供实际可行的解决方案,以提升系统性能和可扩展性。
|
3月前
|
存储 负载均衡 数据库
探索后端技术:从服务器架构到数据库优化的实践之旅
在当今数字化时代,后端技术作为支撑网站和应用运行的核心,扮演着至关重要的角色。本文将带领读者深入后端技术的两大关键领域——服务器架构和数据库优化,通过实践案例揭示其背后的原理与技巧。无论是对于初学者还是经验丰富的开发者,这篇文章都将提供宝贵的见解和实用的知识,帮助读者在后端开发的道路上更进一步。
|
4月前
|
XML 分布式数据库 数据库
【计算机三级数据库技术】第13章 大规模数据库架构--附思维导图
文章概述了分布式数据库、并行数据库、云计算数据库架构和XML数据库的基本概念、目标、体系结构以及与传统数据库的比较,旨在提供对这些数据库技术的全面理解。
46 1
|
4月前
|
存储 缓存 关系型数据库
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
Django后端架构开发:缓存机制,接口缓存、文件缓存、数据库缓存与Memcached缓存
73 0
|
4月前
|
存储 前端开发 关系型数据库
Linux 技术架构:前端、后端与数据库的完美融合
【8月更文挑战第25天】本文深入剖析了Linux操作系统的技术架构,重点介绍了前端、后端及数据库三大核心组成部分。Linux前端技术不仅涵盖了图形用户界面(GUI),包括GNOME、KDE等桌面环境,还涉及HTML、CSS、JavaScript等Web前端技术及其相关框架。后端技术则聚焦于Python、Java等多种编程语言、Apache和Nginx等Web服务器以及MySQL、PostgreSQL等数据库管理系统。Linux数据库技术覆盖了关系型和非关系型数据库,如MySQL、MongoDB等,并提供了多种数据库管理工具。
102 0