基于云原生多模数据库 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 关系型数据库 分布式数据库
《阿里云产品四月刊》—瑶池数据库云原生化和一体化产品能力升级
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
18天前
|
Cloud Native 数据库 开发者
云原生数据库2.0问题之帮助阿里云数据库加速技术更新如何解决
云原生数据库2.0问题之帮助阿里云数据库加速技术更新如何解决
|
20天前
|
Cloud Native 关系型数据库 分布式数据库
云原生关系型数据库PolarDB问题之PolarDB相比传统商用数据库的优势如何解决
云原生关系型数据库PolarDB问题之PolarDB相比传统商用数据库的优势如何解决
23 1
|
1月前
|
存储 SQL 运维
“震撼发布!PolarDB-X:云原生分布式数据库巨擘,超高并发、海量存储、复杂查询,一网打尽!错过等哭!”
【8月更文挑战第7天】PolarDB-X 是面向超高并发、海量存储和复杂查询场景设计的云原生分布式数据库系统
85 1
|
3月前
|
存储 SQL 多模数据库
多模数据库Lindorm再升级:对接Dataphin,打通数据治理“最后一公里”
Lindorm通过与Dataphin的深度整合,进一步解决了数据集成和数据治理的问题,为企业提供更加高效和更具性价比的方案。
多模数据库Lindorm再升级:对接Dataphin,打通数据治理“最后一公里”
|
2月前
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库使用问题之如何将ADB中的数据导出到自建的MySQL数据库
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
2月前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
259 2
|
2月前
|
开发框架 OLAP atlas
云原生数据仓库问题之LangChain支持向量数据库如何解决
云原生数据仓库问题之LangChain支持向量数据库如何解决
46 0
|
3月前
|
存储 关系型数据库 MySQL
云原生数据仓库AnalyticDB产品使用合集之是否支持rdb数据库实时同步
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
169 4
|
4月前
|
Cloud Native 物联网 持续交付
未来科技浪潮:区块链、物联网与虚拟现实的融合创新云原生技术:重塑IT架构的未来
【5月更文挑战第31天】在信息技术飞速发展的今天,新兴技术如区块链、物联网和虚拟现实等正成为推动社会进步的重要力量。本文将探讨这些技术的发展趋势及其在各领域的应用前景,揭示它们如何相互融合,共同塑造一个智能化、互联的未来世界。 【5月更文挑战第31天】本文深入探讨了云原生技术的兴起及其对传统IT架构的颠覆性影响。通过分析云原生的核心概念,如微服务、容器化、以及持续集成/持续部署(CI/CD),文章揭示了这些技术如何促进更高效、灵活和可扩展的软件开发实践。同时,本文还讨论了企业在采用云原生技术时面临的挑战与机遇,并展望了云原生技术在未来IT领域的发展趋势。

相关产品

  • 物联网平台
  • 推荐镜像

    更多