基于云原生多模数据库 Lindorm 构建物联网应用赛题解析 | 学习笔记

简介: 快速学习基于云原生多模数据库 Lindorm 构建物联网应用赛题解析

开发者学堂课程【第八届大学生创新创业大赛阿里命题数据库命题解析基于云原生多模数据库 Lindorm 构建物联网应用赛题解析学习笔记,与课程紧密连接,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/1045/detail/15279


基于云原生多模数据库 Lindorm 构建物联网应用赛题解析


内容介绍:

一、 Lindorm 云原生多模数据库介绍

二、 Lindorm 使用入门

三、 案例介绍

通过这节课,首先可以了解到 Lindorm 一个整体的介绍,然后学习到如何去使用Lindorm 去进行数据的建模和使用。


一、Lindorm 云原生多模数据库介绍

首先 Lindorm 是面向物联网、互联网、车联网等场景来设计和优化的云原生多模超融合数据库,它支持宽表、时序、文本、对象等多种数据的统一的访问和融合处理,在接口上面兼容标准的 SQL 协议,并且兼容各种不同的第三方的协议,比如HBRSE、cassandra、OPENTSDB、SOLR等等,可以无缝集成第三方生态工具,适用于日志、监控、账单、广告、社交、出行、风控等多种场景,Lindorm 也是阿里巴巴核心业务支撑的数据库之一image.png

从产品架构上来看,Lindorm是基于存储计算分离、多模共享融合的一个云原生架构,在底层通过云原生分布式存储系统Lindorm BFS来实现统一的存储管理,并提供冷热分层,还有多副本以及自适应压缩这样的能力,为上层的多模引擎提供统一的存储,在多模引擎方面,通过实现宽表引擎、时序引擎、搜索引擎,还有文件引擎,流引擎等多种不同的引擎来达到统一融合的处理。在上面通过SQL引擎,还有计算引擎提供统一的计算能力,对外暴露SQL的标准访问接口,以及兼容第三方开源的协议。image.png

通过这样一个体系,可以将我们不同模型的数据存储到不同的引擎里面多种不同的模型,通过通过统一的计算来进行数据的融合处理。宽表引擎是负责宽表和对象数据的统一管理和服务,它主要具备全局的二级索引、多维检索、动态链、TDL等能力,一般适用于原数据、订单、账单、画像、日志等等场景。持续引擎主要是负责持续数据的管理和服务,主要面向于工业IOT、监控等领域的测量数据在持续引擎。时序引擎主要是负责时序数据的管理和服务,主要面向于工业I ot、监控等领域的测量数据。针对于时序数据的设计的压缩算法,在压缩率上面可以高达15 : 1,支持海量数据的多维查询和聚合计算,同时也支持时序数据的预降残量和连续查询。

搜索引擎主要是负责多模数据的检索分析的加述,它主要是基于列存和倒排等核心技术,具备全文索引、聚合计算、复杂多维查询等等能力,一般适用于日志、账单、画像等等场景,兼容CQ等标准开源的协议。文件引擎主要是负责文件数据的管理和服务,向上提供宽表持续搜索引擎的这个底层的共项存储的服务化能力。计算引擎主要是与联动的计算引擎的深度融合,基于云原生架构提供的分布式计算的能力,满足用户在数据生产、交互式分析、机器学习和图计算等等场景的一些计算需求,它兼容开源的18个标准协议。image.png

通过下面这个例子,可以来介绍一下在实际的应用场景中的一些应用,在比如这里IoT或者APM这样的场景来看,原数据可以存储在关系型的数据库里,在运行过程中所产生的一些轨迹数据,还有日志数据可以存在宽表型的数据里面,因为它会产生大量的数据,对于运行过程中所产生的有时序特性的数据,可以存储在时序型的数据库里,可以选择InfluxDB。设备关系这样的数据可以存在图形数据库里面,最后如果说我们有数据分析的需求,可以把数据转到ElasticSearch里进行检索分析。image.png

有了Lindorm之后,可以用Lindorm一套的数据库来替代刚才所看到的多套数据库,这样可以降低我们的开发成本,减少运维负担,提高访问效率,同时也是可以做到极致的资源成本的优化。


二、Lindorm 使用入门

主要是从宽表和时序两个引擎去看如何去对于实际的应用场景进行建模以及使用。这个过程中会涉及到一些基本概念的一些介绍,一般来说,对于一款数据库的使用,首先需要知道这款数据库的数据的模型,这样可以基于应用场景去先去进行数据的建模,那在这个建模过程中需要去确定创建数据表,所以有必要先了解一下宽表数据模型的一些基本的概念。

首先是一个table即表名,需要去把数据存到表里面去,那其次是Rowkey一般是代表的是唯一的一行,也叫主键Primary key,在底层存储的时候,数据是按照Rowkey去排序存储,其次,数据存储上面也会有Column Family即列族,一般都是代表一系列的一个集合。这些列一般在集成文件存储上是进行集中存储的,如果在读取一行的内容的时候,如果所读取的这些列都是属于同一个列族,那么在读取效率上面是会有比较高的效率的。

其次是在列组上面会有多个列,那这个列也是具体的存储每一列的数据,在底层是以统一的byte数来去进行存储,那每一列可以有多个版本,每个版本是通过写入数据的一个时间戳去标示的,默认是最新的这个时间戳是默认最新的一个数据,一般常见的查询比如说有图片查询,就是给定一个组件去查询这一行的数据,其次是给定一个范围即主键的开始到结束,同时我们也可以去指定一些过滤条件,去对数据结果去进行过滤,在访问上面可以提供多种语言的访问,一般通过使用SQL去进行访问。

image.png

这边有一个SQL访问的一个例子主要展示的建表、写入,还有基本的一些查询。

建表语句指定了三列

create table tb (id varchar,

name varchar, address varchar,

primary key(id, name)) ;

通过primary key指定ID和name为主键,

然后在写入数据的时候,

upsert into tb (id, name, address)

values ('001', 'jack', 'hz');

只需要把我们的值对应这些列,然后就可以写入到这张表里去,

在查询的时候查询引擎会自动匹配条件。

select * from tb where id='001';

通过时序模型的介绍,可以了解到数据模型怎样进行建模,首先了解一下时序数据的特性,以风力发电机举例子,风力发电机作为一个数据产生的来源,有两个传感器,一个是功率传感器,还有一个是风速传感器,传感器会按照时间的推移在固定的时间会产生不同的数据,对于风力发电机的属性上面有各种不同的标签,比如这里有ID标签,ID可以用来标示风力发电机的这个唯一性,然后还有型号和厂商的标示,从风力发电机这个例子上可以看到对于一个持续的数型数据的特性,有几个关键点,第一个是有标签也称为tag,比如风力发电机的ID、型号和厂商,是它的三个tag;其次它有两个传感器叫它们field,叫功率和风速,然后它在某一个具体的时间点会产生的数据点称之为Data Point,对于每个设备的每个传感器在不同的时间所产生的数据,可以把它称之为时间线。image.png

了解这些基本的这些概念之后,来了解一下时序模型的建模具体是什么样子的,在了解了实序数据的特点之后,接下来就需要针对于时序数据进行建模,建完模之后,就可以将产生的时序数据写入到所建模的这张数据表里面去。首先要先确定什么样是一张表,通常认为它是代表一类设备的一个集合,它们会有相同的标签、相同的传感器,我们在建模的时候需要去识别出来哪些数据是属于标签数据,哪些数据是属于个值数据,值数据一般都是代表传感器所产生的数据,标签数据一般都是标示数据产生的数据源。image.png

当时序模型建立好且数据写入到时序数据引擎之后,需要去看需要做什么样的查询操作。首先需要去问一下自己,需要查询哪些数据源,哪些设备的在什么时间段的数据,以及包括这个数据是哪个指标,对这个指标的数据,在这个时间段之内具体要做什么样的操作,一般来说可能需要去求这个时间,在这个时间段内之内的数据的比如说最大最小,或者求平均这样的一些操作。同时,可以在时间线密度去进行一个降采样的操作。什么是降采样?比如原始产生的数据是一秒一个数据点,这个时候可以把一秒给它降采样也就是降精度到一分钟力度,那么这一分钟力度就会有60个时间点。对于60个时间点,可以去做一些降采样之后的一些操作,比如求这60个时间点的最大值,最小值、平均或者是求总和,image.png

同样时序模型也提供了标准的SQL访问的入口,这里总结几条最常用的一些操作,比如说创建时间时序表,

CREATE TABLE SeNSor (

device id     VARCHAR TAG,

region       VARCHAR TAG,

time         TIMESTAMP,

temperature  DOUBLE,

humidity     DOUBLE,

PRIMARY KEY (device id));

那创建时序表的时候,要特别注意的是,去指定哪些列属于tag将其标识出来,也需要有一个固定的以TIMESTAMP的类型所标注的一个时间列,其他的就把它当做正常的值的一列。同时也可以通过PRIMARY KEY来指定分区key。

写入数据

INSERT INTO sensor (device id, region,

time,temperature,humidity)

VALUES (F07A1260, north-cn,

1619076780000,12.1,45);

是通过标准的INSERT INTO的语句来进行数据写入.

基本查询

SELECT avg(humidity) FROM sensor

WHERE device id=xxx

AND time > t1 AND time<t2;

通常需要去制定时间范围,比如说time > t1,并且time<t2,然后再针对查询数据去进行一些聚合的操作。

时序降采样查询

SELECT avg(f1) FROM sensor

WHERE device id=xxx

AND time > t1 AND time<t2

SAMPLE BY 5m;

引入了一个持续特性的一个SQL语句,这里叫SAMPLE BY,SAMPLE BY后面指定。

降采样的精度,此例是制定以五分钟为降采样之后的一个精度去进行数据的查询聚合,这个地方需要去指定降采样的算值,以平均数,平均值为一个算值去计算。

时序最新值查询,

SELECT latest(f1) FROM sensor

WHERE device id=xxx;

通过latest去查询设备的这个最新值。


三、案例介绍

上面主要是介绍了宽表模型和持续模型的基本的建模和使用,还有概念。更多的建议去官网去查阅,那接下来带来一些案例的分享。通过这些案例可以看到针对不同的平台的数据是怎么样去使用Lindorm去进行开发和存储。

首先第一个是物联网平台,可以看到最左边是针对一些IOT的一些设备,它里面会有一些传感器会产生一系列的数据,比如说它会产生一些设备原数据,那这些原数据可以使用宽表引擎去进行存储,在设备运行中会产生一些数据,可以去选择用Lindorm的时序引擎去进行存储。如果这些传感器会产生视频,图片等这样一些大文件,可以去选择使用Lindorm的文件引擎去进行存储;如果有设备检索的需求的话,可以使用Lindorm的搜索引擎去进行存储,当数据存储到Lindorm的引擎之后,可以去使用第三方的一些分析工具,比如Spark、MaxCompute、Flink这样的工具去进行数据分析。image.png

第二个例子是车联网数据的存储和分析,一般针对这个场景,比如新能源或者是重型车、商用车、企业用车等所产生的一些监控数据,它会及时的上报到Lindorm进行存储,然后数据上报到Lindorm存储之后,会对这些车辆进行监控,还有一些车况的一些分析,或者是驾驶行为以及轨迹的分析,然后针对数据上报到Lindorm存储之后的话,主要是会对这些车辆进行监控,还有一些车况的一些分析,或者是驾驶行为,以及轨迹的一些分析。image.png

云原生应用统一监控的例子,一般来说所采集的数据、应用通过Prometheus来进行监控数据的采集,然后Prometheus通过Remote Write协议写到Lindorm TSDB,通过Lindorm TSDB提供的PromQL兼容的查询能力去对外进行数据查询,然后可以使用Grfana通过PromQL这样一个插件去进行的数据的查询和展示。image.png

最后一个案例是工业边云一体时序存储,在工业最边缘的厂房,它可能会产生边缘的一些数据,通过边缘数据采集器,可以将数据上报到边缘的Lindorm TSDB里,最后通过边缘同步通道,将边上所产生的时序数据同步到云端的时序数据进行统一的存储,然后再通过集中式的分析的一些主键去进行数据的分析image.png

接下来讲一下在使用购买上面的一些注意事项,首先在这个购买页面,推荐在商品类型可以选择按量付费,这样就是按照时长来去付费的,然后开发设置完了之后,可以把这个车程实力进行释放。在部署方案上面选择单可用区,地域选择一个自己想购买的地域。特别注意这里有个专用网络,如果没有的话点击免费创建。image.png

在这个购买页面的下面,在存储类型上面可以选,选择标准型云存储,在数据引擎上,如果选择使用宽表引擎或者是时序持续引擎,可以将宽表引擎的数量和时序引擎的数量相加,最少的节点数量是两个,对于存储空间以及冷存,可以去按照自己的实际使用情况进行购买。image.png

点击购买之后,就会显示开通完成image.png

开通完成之后,在实例列表的页面里面会显示正在创建中,大概等个十几分钟实例就会创建好。image.png

然后如果要去进行连接访问,可以去点一下这个数据库连接的特别页,选在切换到自己的这个所选择的引擎上面,针对每一个引擎去单独去进行开通,如果需要在本地去访问,建议选择开通外网访问地址,然后选择Lindorm-cli这样一个访问工具下载之后可以去进行使用。image.png

点击开通外网之后这个就可以看到红框标识出来的一个例子,然后通过刚才下载的Lindorm-cli这样一个访问工具去连接使用。image.png

是连接、使用的例子

连接:

/lindorm-cli -url

jdbc:lindorm:table:url=http://ld-uf6jq50i1a411shd1-proxy-

lindorm-pub.lindormrdsaliyuncs.com:30060 username root -password root

使用:

create table tb(id varchar, name varchar, address varchar, primary key(idname));

upsert into tb(id, name, address) walues ('ee1', 'jack', 'hz');

select * from tb;

如果是持续引擎的话,操作方法也是类似的。

连接:

/lindorm-cli -url

idbc:lindorm:tsdb:url=http://ld-uf6ia50i1a411shd1-proxy-

tsdb-pub.lindorm.rds.aliyuncs.com:8242

使用:

CREATE TABLE Sensor(

device id VARCHAR TAG. region YARCHAR TAG. time TIMESTAMP

temperature DOUBLE humidity BIGINT.

PRIMARY KEY(device_id));

insert into sensor(device_id,regiontime,temperaturehumidity)

values (F0741260 north-cn"2021-24-22 15:33:00 12.1.45)

('F07A1260’ north-cn’"2021-04-22 15:33:10' 13.2.47),(F07A1260." north-cn"2021-04-2215:33:2010.6.46)

(F07A1261."south-cn""2021-04-22 15:33:00' 18.1,44)

(F07A1261"south-cn’"2021-04-22 15:33:10' 19.7.44):

select device id,regiontimetemperaturehumidity from sensor where device id ='F07A1268’and tine pe'2821-04-22 15:33:80’and timecs2021-84-22 15:33:20'

select device id,region,time,max(temperature) as max temperature from sensar where device_id ='F07A1260' ind time >="2021-04-22 15:33:00’and time <=2021-64-22 15:33:20 sanole by 20:

最后如果使用 SQL 进行访问,可以参考官网上所推出的使用文档去连接使用

相关文章
RS-485网络中的标准端接与交流电端接应用解析
RS-485,作为一种广泛应用的差分信号传输标准,因其传输距离远、抗干扰能力强、支持多点通讯等优点,在工业自动化、智能建筑、交通运输等领域得到了广泛应用。在构建RS-485网络时,端接技术扮演着至关重要的角色,它直接影响到网络的信号完整性、稳定性和通信质量。
|
11天前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!
|
11天前
|
自然语言处理 并行计算 数据可视化
免费开源法律文档比对工具:技术解析与应用
这款免费开源的法律文档比对工具,利用先进的文本分析和自然语言处理技术,实现高效、精准的文档比对。核心功能包括文本差异检测、多格式支持、语义分析、批量处理及用户友好的可视化界面,广泛适用于法律行业的各类场景。
|
13天前
|
安全 编译器 PHP
PHP 8新特性解析与实践应用####
————探索PHP 8的创新功能及其在现代Web开发中的实际应用
|
5天前
|
存储 供应链 物联网
深入解析区块链技术的核心原理与应用前景
深入解析区块链技术的核心原理与应用前景
|
5天前
|
存储 供应链 安全
深度解析区块链技术的核心原理与应用前景
深度解析区块链技术的核心原理与应用前景
12 0
|
9天前
|
SQL 监控 安全
员工上网行为监控软件:SQL 在数据查询监控中的应用解析
在数字化办公环境中,员工上网行为监控软件对企业网络安全和管理至关重要。通过 SQL 查询和分析数据库中的数据,企业可以精准了解员工的上网行为,包括基础查询、复杂条件查询、数据统计与分析等,从而提高网络管理和安全防护的效率。
21 0
|
11天前
|
前端开发 中间件 PHP
PHP框架深度解析:Laravel的魔力与实战应用####
【10月更文挑战第31天】 本文作为一篇技术深度好文,旨在揭开PHP领域璀璨明星——Laravel框架的神秘面纱。不同于常规摘要的概括性介绍,本文将直接以一段引人入胜的技术剖析开场,随后通过具体代码示例和实战案例,逐步引导读者领略Laravel在简化开发流程、提升代码质量及促进团队协作方面的卓越能力。无论你是PHP初学者渴望深入了解现代开发范式,还是经验丰富的开发者寻求优化项目架构的灵感,本文都将为你提供宝贵的见解与实践指导。 ####
|
4天前
|
监控 Java 应用服务中间件
高级java面试---spring.factories文件的解析源码API机制
【11月更文挑战第20天】Spring Boot是一个用于快速构建基于Spring框架的应用程序的开源框架。它通过自动配置、起步依赖和内嵌服务器等特性,极大地简化了Spring应用的开发和部署过程。本文将深入探讨Spring Boot的背景历史、业务场景、功能点以及底层原理,并通过Java代码手写模拟Spring Boot的启动过程,特别是spring.factories文件的解析源码API机制。
16 2
|
1月前
|
缓存 Java 程序员
Map - LinkedHashSet&Map源码解析
Map - LinkedHashSet&Map源码解析
67 0

相关产品

  • 物联网平台
  • 推荐镜像

    更多