基于云原生多模数据库 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 进行访问,可以参考官网上所推出的使用文档去连接使用

相关文章
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
2767 98
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
543 13
|
运维 Cloud Native 安全
云原生技术在现代企业中的应用与挑战####
本文探讨了云原生技术在现代企业IT架构中的关键作用,分析了其带来的优势和面临的主要挑战。通过实际案例分析,揭示了如何有效应对这些挑战,以实现业务敏捷性和技术创新的平衡。 ####
|
Cloud Native 持续交付 开发者
云原生技术在现代企业中的应用与实践####
本文深入探讨了云原生技术的核心概念及其在现代企业IT架构转型中的关键作用,通过具体案例分析展示了云原生如何促进企业的敏捷开发、高效运维及成本优化。不同于传统摘要仅概述内容,本部分旨在激发读者对云原生领域的兴趣,强调其在加速数字化转型过程中的不可或缺性,为后续详细论述奠定基础。 ####
|
存储 弹性计算 Cloud Native
云原生数据库的演进与应用实践
随着企业业务扩展,传统数据库难以应对高并发与弹性需求。云原生数据库应运而生,具备计算存储分离、弹性伸缩、高可用等核心特性,广泛应用于电商、金融、物联网等场景。阿里云PolarDB、Lindorm等产品已形成完善生态,助力企业高效处理数据。未来,AI驱动、Serverless与多云兼容将推动其进一步发展。
692 8
|
Kubernetes Cloud Native 物联网
云原生技术在现代软件开发中的应用与挑战####
本文探讨了云原生技术的兴起背景、核心理念及其在现代软件开发中的广泛应用。通过具体案例分析,揭示了云原生架构如何促进企业数字化转型,并指出了在实施过程中面临的主要挑战及应对策略。 ####
|
Cloud Native Serverless 流计算
云原生时代的应用架构演进:从微服务到 Serverless 的阿里云实践
云原生技术正重塑企业数字化转型路径。阿里云作为亚太领先云服务商,提供完整云原生产品矩阵:容器服务ACK优化启动速度与镜像分发效率;MSE微服务引擎保障高可用性;ASM服务网格降低资源消耗;函数计算FC突破冷启动瓶颈;SAE重新定义PaaS边界;PolarDB数据库实现存储计算分离;DataWorks简化数据湖构建;Flink实时计算助力风控系统。这些技术已在多行业落地,推动效率提升与商业模式创新,助力企业在数字化浪潮中占据先机。
998 12
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
存储 人工智能 Cloud Native
NAS深度解析:面向云原生应用的文件存储
本文深入解析了面向云原生应用的文件存储NAS,由阿里云专家分享。内容涵盖Cloud Native与AI浪潮下的技术创新,包括高性能、弹性伸缩、成本优化及数据安全等方面。针对云原生应用的特点,NAS在Serverless生态中不断演进,提供多种产品规格以满足不同需求,如极速型NAS、归档存储等,确保用户在高并发场景下获得稳定低延时的存储体验。同时,通过优化挂载参数和容器访问策略,提升整体性能与可用性。
890 11
|
Cloud Native JavaScript Docker
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的航船,引领企业驶向创新与效率的新海域。本文将深入探索云原生技术的核心价值,揭示其如何重塑软件开发、部署和运维模式,同时通过一个简易代码示例,展现云原生应用的构建过程,让读者领略到云原生技术的魅力所在。

相关产品

  • 物联网平台