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

相关文章
|
3月前
|
边缘计算 Cloud Native 安全
构建灵活高效的下一代应用架构 随着企业数字化转型的加速,云原生技术正逐渐成为构建现代化应用程序的关键支柱。
随着企业数字化转型加速,云原生技术逐渐成为构建现代化应用的关键。本文探讨了云原生的核心概念(如容器化、微服务、DevOps)、主要应用场景(如金融、电商、IoT)及未来发展趋势(如无服务器计算、边缘计算、多云架构),并分析了面临的挑战,如架构复杂性和安全问题。云原生技术为企业提供了更灵活、高效的应用架构,助力数字化转型。
87 4
|
23天前
|
人工智能 缓存 异构计算
云原生AI加速生成式人工智能应用的部署构建
本文探讨了云原生技术背景下,尤其是Kubernetes和容器技术的发展,对模型推理服务带来的挑战与优化策略。文中详细介绍了Knative的弹性扩展机制,包括HPA和CronHPA,以及针对传统弹性扩展“滞后”问题提出的AHPA(高级弹性预测)。此外,文章重点介绍了Fluid项目,它通过分布式缓存优化了模型加载的I/O操作,显著缩短了推理服务的冷启动时间,特别是在处理大规模并发请求时表现出色。通过实际案例,展示了Fluid在vLLM和Qwen模型推理中的应用效果,证明了其在提高模型推理效率和响应速度方面的优势。
云原生AI加速生成式人工智能应用的部署构建
|
3天前
|
人工智能 Cloud Native 大数据
DataWorks深度技术解读:构建开放的云原生数据开发平台
Dateworks是一款阿里云推出的云原生数据处理产品,旨在解决数据治理和数仓管理中的挑战。它强调数据的准确性与一致性,确保商业决策的有效性。然而,严格的治理模式限制了开发者的灵活性,尤其是在面对多模态数据和AI应用时。为应对这些挑战,Dateworks进行了重大革新,包括云原生化、开放性增强及面向开发者的改进。通过Kubernetes作为资源底座,Dateworks实现了更灵活的任务调度和容器化支持,连接更多云产品,并提供开源Flowspec和Open API,提升用户体验。
|
23天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
17天前
|
Cloud Native
邀您参加云原生高可用技术沙龙丨云上高可用体系构建:从理论到实践
云原生高可用技术专场,邀您从理论到实践一起交流,探索云上高可用体系构建!
|
28天前
|
Cloud Native JavaScript Docker
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的航船,引领企业驶向创新与效率的新海域。本文将深入探索云原生技术的核心价值,揭示其如何重塑软件开发、部署和运维模式,同时通过一个简易代码示例,展现云原生应用的构建过程,让读者领略到云原生技术的魅力所在。
|
3天前
|
运维 监控 Cloud Native
云原生之运维监控实践:使用 taosKeeper 与 TDinsight 实现对 时序数据库TDengine 服务的监测告警
在数字化转型的过程中,监控与告警功能的优化对保障系统的稳定运行至关重要。本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品之一,详细介绍了如何利用 TDengine、taosKeeper 和 TDinsight 实现对 TDengine 服务的状态监控与告警功能。作者通过容器化安装 TDengine 和 Grafana,演示了如何配置 Grafana 数据源、导入 TDinsight 仪表板、以及如何设置告警规则和通知策略。欢迎大家阅读。
18 0
|
2月前
|
运维 Cloud Native Docker
云端漫步:构建你的第一个云原生应用
在这篇文章中,我们将一起踏上一段激动人心的旅程,探索如何从零开始构建一个云原生应用。我们将深入理解云原生的核心概念,并通过实际代码示例,学习如何利用云平台的强大功能来部署和管理应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的指导和启发。让我们一起开启这场云端之旅,发现云原生应用的魅力吧!
40 3
|
2月前
|
Kubernetes Cloud Native Ubuntu
庆祝 .NET 9 正式版发布与 Dapr 从 CNCF 毕业:构建高效云原生应用的最佳实践
2024年11月13日,.NET 9 正式版发布,Dapr 从 CNCF 毕业,标志着云原生技术的成熟。本文介绍如何使用 .NET 9 Aspire、Dapr 1.14.4、Kubernetes 1.31.0/Containerd 1.7.14、Ubuntu Server 24.04 LTS 和 Podman 5.3.0-rc3 构建高效、可靠的云原生应用。涵盖环境准备、应用开发、Dapr 集成、容器化和 Kubernetes 部署等内容。
73 5
|
3月前
|
运维 监控 Cloud Native
构建行业应用生态:云原生应用市场简化企业软件安装
在移动互联网时代,尽管手机应用市场为用户带来了极大的便利,但企业级软件的安装和管理仍面临诸多挑战,包括安装复杂、交付效率低、应用兼容性差等问题。为此,基于云原生技术的企业级应用市场Rainstore应运而生,旨在简化企业软件的安装和管理,提升交付效率,增强应用兼容性,支持远程管理和个性化定制,构建开放的行业应用生态,助力企业数字化转型。
构建行业应用生态:云原生应用市场简化企业软件安装

热门文章

最新文章

相关产品

  • 物联网平台