Lindorm Ganos轨迹点快速聚合能力简介

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 Tair(兼容Redis),内存型 2GB
简介: 本文介绍了Ganos时空数据库在Lindorm流引擎上的全新能力与最佳实践,帮助客户解决车辆网场景中轨迹点实时聚合生成轨迹线的能力。Lindorm Ganos实现了Lindorm宽表、流、计算等引擎在时空领域的打通,支持原生时空类型与多种时空算子,支持多种不同的时空索引,不仅可用于传统的周边查询,还面向了历史轨迹的查询分析、实时地理围栏查询、点面查询等更加复杂的业务需求。

关于Lindorm Ganos

Lindorm是阿里云推出的云原生超融合多模数据库,提供了宽表、时序、搜索、文件等多种引擎。目前,Lindorm已经深度融合了由阿里云数据库产品事业部研发的时空数据库引擎Ganos(下文统称为Lindorm Ganos),可以解决海量移动对象存储、管理和查询需求,弥补了各类NoSQL在时空数据处理方面的不足。

关于Lindorm Ganos的特点与优势,可以参考《基于Lindorm Ganos的车辆实时行为分析》一文中第一部分。

应用场景

车联网领域存在大量实时写入的轨迹点数据,在数据存储到数据库之前,根据后续业务的需求可以将车辆上报的 GPS 点数据聚合成一套轨迹线数据,便于后续开展更为复杂的业务。

需求分析

在这类场景中,我们可以定期(如每小时、每天)将用户输入的 GPS 点按车辆 id 分组并按时间顺序拼接为轨迹。这样不仅可以减少数据库的写压力,而且轨迹数据在计算和分析上更为直观。

技术实现

1. 开通Lindorm Ganos服务

Lindorm Ganos时空服务是Lindorm宽表引擎和流引擎的一个组件,服务开通后仅收取Lindorm宽表引擎和流引擎费用。本文介绍通过云原生多模数据库Lindorm控制台开通Ganos时空服务的方法。

前提条件

已创建Lindorm实例并开通宽表引擎,具体操作请参见创建实例

操作步骤

  1. 登录Lindorm管理控制台
  2. 在页面左上角,选择实例所属的地域。
  3. 实例列表页,单击目标实例ID或者目标实例所在行操作列的管理
  4. 在左侧导航栏,选择宽表引擎
  5. Ganos时空服务页签中,单击立即开通

2. 创建结果表

首先,通过 lindorm-cli 工具连接到宽表引擎,并创建一张围栏表和两张结果保存表,详细用法见:如何通过Lindorm-cli连接并使用宽表引擎

3. 接入流数据

这一步通过流引擎客户端连接流引擎并写入流数据。可以通过 Kafka API 写入数据到指定的 topic 中,见通过开源Kafka客户端写入Lindorm流引擎数据,或通过开源Kafka脚本工具连接Lindorm流引擎,并写入数据。

4. 提交流引擎计算任务

这一步使用 Flink SQL 提交流引擎计算任务,读取 Kafka topic 中的数据并结合宽表数据做计算。

连接到流引擎

请参考下列链接连接到流引擎:使用客户端连接并使用Lindorm流引擎。建议在与流引擎同一个可用区的 ECS 环境下运行,运行前请将 ECS 的 IP 地址添加到访问控制白名单。请将ld-xxx替换成您的实例 ID:

./lindorm-sqlline -url jdbc:streamsql:url=http://ld-xxx-proxy-stream.lindorm.rds.aliyuncs.com:30060

创建计算任务

注意:

  1. Kafka的连接地址properties.bootstrap.servers,请使用 Lindorm Stream Kafka 私有网络地址;
  2. 宽表的连接地址seedServer,请使用 Lindorm 宽表 SQL 私有网络地址及 30020端口。
轨迹聚合计算任务

下面的计算任务将流入 Kafka 的点根据给定的时间窗口和顺序拼接为轨迹:

  1. 首先,加载 ganos 函数模块。
  2. 随后创建数据源表 tdrive、数据结果表resultAgg
  3. 最后创建流任务,使用 ST_MakeLine_Agg函数将点拼接为轨迹。该函数不会对点进行排序,若要保证点的顺序,请用 ORDER BY排序。

请将ld-xxx替换成您的实例 ID

CREATE FJOB lineAgg (
  LOAD MODULE ganos;
  -- create stream table
  CREATE TABLE tdrive(
    cid INT,
    ts TIMESTAMP(0),
    lng DOUBLE,
    lat DOUBLE,
    WATERMARK FOR ts AS ts-INTERVAL '10' MINUTES --set watermark delay
  ) WITH (
    'connector'='kafka',
    'topic'='tdrive',
    'scan.startup.mode'='earliest-offset',
    'properties.bootstrap.servers'='ld-xxx-proxy-stream.lindorm.rds.aliyuncs.com:30080',
    'format'='json',
    'json.ignore-parse-errors'='true'
  );
  -- order data by timestamp
  CREATE VIEW orderedDrive AS SELECT * FROM tdrive ORDER BY ts;
  -- create result table
  CREATE TABLE resultAgg(
    cid INT,
    stt TIMESTAMP(0),
    edd TIMESTAMP(0),
    line STRING,
    PRIMARY KEY(cid,stt) NOT ENFORCED
  ) WITH (
    'connector'='lindorm',
    'seedServer'='ld-xxx-proxy-lindorm.lindorm.rds.aliyuncs.com:30020',
    'userName'='username',
    'password'='password',
    'tableName'='resultAgg',
    'namespace'='default');
  );
  -- aggregate points
  INSERT INTO resultAgg 
    SELECT 
      cid, 
      window_start AS stt,
      window_end AS edd, 
      ST_AsText(ST_MakeLine_Agg(ST_MakePoint(lng,lat))) AS line 
    FROM TABLE(TUMBLE(TABLE orderedDrive, DESCRIPTOR(ts), INTERVAL '1' HOUR))
    WHERE lng IS NOT NULL AND lat IS NOT NULL AND ST_IsEmpty(ST_MakePoint(lng,lat))=false 
    GROUP BY window_start,window_end,cid;
);

如果希望输出的结果包含点的时间戳信息,可使用 LISTAGG函数拼接时间戳,具体用法如下:

INSERT INTO resultAgg 
    SELECT 
    cid, 
    window_start AS startTime,
    window_end AS endTime, 
    ST_AsText(ST_MakeLine_Agg(ST_MakePoint(lng,lat))) AS line,
    LISTAGG(CAST(ts AS VARCHAR)) AS timeseries, 
    FROM TABLE(TUMBLE(TABLE tdrive, DESCRIPTOR(ts), INTERVAL '1' HOUR))
    WHERE lng IS NOT NULL AND lat IS NOT NULL AND ST_IsEmpty(ST_MakePoint(lng,lat))=false
    GROUP BY window_start,window_end,cid;

5. 查看结果

在宽表中,通过 SQL 语句查看对应的计算结果,下面展示部分结果:

包含时间戳的结果如下:

将车辆 1 从 2008-02-02 到 2008-02-03 的轨迹可视化:

后续场景

在获取聚合的轨迹后,可以基于Ganos的相关能力进行一系列的后续时空数据挖掘操作。主要的应用场景有:

  • 轨迹展示:轨迹存入数据库后,可以将指定车辆在指定时间段内的轨迹绘制在地图上
  • 轨迹相似度分析:车队有部分车辆偏离位置,可能是驶入了错误的路线,导致物流延迟风险。可以根据多个车辆轨迹的相似情况,寻找异常轨迹,及时发现可能的风险
  • 轨迹预测:根据车辆历史轨迹,可以通过相关的算法预测车辆一段时间内的行进路线
  • 轨迹停留点分析:运输车辆往往需要中途休息,为了避免驾驶员开夜车可能造成的安全隐患,需要监管车辆是否存在夜间停留点(大量的轨迹没有空间位置上的移动)。如果夜间时间段内没有停留点产生,则说明驾驶员一直在开夜车,需要提醒驾驶员尽快休息。

总结

Lindorm Ganos实现了Lindorm宽表、流、计算等引擎在时空领域的打通,支持原生时空类型与多种时空算子,支持多种不同的时空索引,不仅可用于传统的周边查询,还面向了历史轨迹的查询分析、地理围栏查询、点面查询等更加复杂的业务需求。相较于传统的Geomesa、ElasticSearch等NoSQL时空方案,Ganos在多种场景下性能均有3-5倍以上的提升,同时兼容适配Flink、Spark引擎进一步降低了客户技术方案的复杂性,结合Lindorm在写入、压缩等方面的优势,Lindorm Ganos在海量时空数据管理分析领域构建出了既能满足客户功能与性能需求,又可大幅度降低存储计算成本的全新方案。

相关文章
|
3月前
|
SQL 存储 并行计算
Lindorm Ganos 一条 SQL 计算轨迹
Lindorm Ganos 针对轨迹距离计算场景提供了内置函数 ST_Length_Rows,结合原生时空二级索引和时空聚合计算下推技术,能够高效过滤数据并并行执行运算任务。该方案通过主键索引和时空索引快速过滤数据,并利用多Region并行计算轨迹点距离,适用于车联网等场景。具体步骤包括根据车辆识别代码和时间戳过滤数据、范围过滤轨迹点以及并行计算距离。使用限制包括只支持点类型列聚合运算及表中轨迹点需按顺序排列等。测试结果显示,Lindorm Ganos 在不同数据量下均能实现秒级响应。
32 3
|
3月前
|
消息中间件 存储 SQL
关于Lindorm Ganos
Lindorm 是阿里云推出的云原生超融合多模数据库,集成了宽表、时序、搜索、文件等多种引擎。深度融合的 Lindorm Ganos 时空数据库引擎,能够高效处理海量移动对象的存储、管理和查询需求,弥补了 NoSQL 数据库在时空数据处理上的不足。Ganos 具备原生时空数据类型、多层级索引能力和广适应兼容性,支持标准 SQL 语法,显著提升了计算效率和查询性能。相较传统方案,Ganos 在多种场景下性能提升 3-5 倍,并大幅降低存储计算成本。
90 0
|
7月前
|
存储 Cloud Native 搜索推荐
Lindorm Ganos
Lindorm Ganos 是阿里云推出的一款云原生超融合多模数据库,它集成了流引擎、宽表引擎、对象引擎、搜索引擎等多种功能,可用于解决海量数据的存储和查询问题。其中,Ganos 时空引擎是 Lindorm 的一个重要组件,主要负责处理时空数据。
83 3
|
7月前
|
存储 SQL 达摩院
Lindorm Ganos轨迹点
Lindorm Ganos 是阿里云推出的一款云原生超融合多模数据库,它集成了达摩院空天数据库引擎 Ganos
75 1
|
存储 Java 数据挖掘
阿里云时序数据库简介和购买使用流程
阿里云时序数据库(Lindorm Time Series Database,简称TSDB)是阿里云原生多模数据库Lindorm中的核心组件,专门负责处理时序数据。它具有许多优势,包括高并发写入、高压缩比存储、实时时序指标聚合、统计、预测以及ML/AI计算等强大功能。 时序数据是指表示物理设备、系统、应用过程或行为随时间变化的数据,这类数据在物联网、工业物联网、基础运维系统等场景中有着广泛的应用。阿里云TSDB可以解决大规模时序数据的可靠写入问题,显著降低数据存储成本,并且能够实时灵活地完成业务数据的聚合分析。 TSDB针对不同应用场景,支持多元数据存储与索引,具有高效的写入性能和实时数据分析能
|
存储 消息中间件 SQL
基于Lindorm Ganos的车辆实时行为分析
本文介绍了Ganos时空数据库在Lindorm流引擎上的全新能力与最佳实践,帮助客户解决车辆网场景中实时时空数据分析的需求。Lindorm Ganos实现了Lindorm宽表、流、计算等引擎在时空领域的打通,支持原生时空类型与多种时空算子,支持多种不同的时空索引,不仅可用于传统的周边查询,还面向了历史轨迹的查询分析、地理围栏查询、点面查询等更加复杂的业务需求。
|
SQL 消息中间件 监控
阿里云云原生多模数据库Lindorm简介和购买流程
Lindorm是面向物联网、互联网、车联网等设计和优化的云原生多模超融合数据库,支持宽表、时序、文本、对象、流、空间等多种数据的统一访问和融合处理,并兼容SQL、HBase/Cassandra/S3、TSDB、HDFS、Solr、Kafka等多种标准接口和无缝集成三方生态工具,是日志、监控、账单、广告、社交、出行、风控等场景首选数据库
|
6月前
|
存储 SQL 多模数据库
多模数据库Lindorm再升级:对接Dataphin,打通数据治理“最后一公里”
Lindorm通过与Dataphin的深度整合,进一步解决了数据集成和数据治理的问题,为企业提供更加高效和更具性价比的方案。
多模数据库Lindorm再升级:对接Dataphin,打通数据治理“最后一公里”
|
5月前
|
安全 数据管理
DataphinV4.1大升级:支持Lindorm开启高性价比数据治理,迎来“公共云半托管”云上自助新模式
DataphinV4.1大升级:支持Lindorm开启高性价比数据治理,迎来“公共云半托管”云上自助新模式
|
6月前
|
数据采集 安全 API
DataphinV4.1大升级: 支持Lindorm开启高性价比数据治理,迎来“公共云半托管”云上自助新模式
Dataphin 是阿里巴巴旗下的一个智能数据建设与治理平台,旨在帮助企业构建高效、可靠、安全的数据资产。在V4.1版本升级中,Dataphin 引入了Lindorm等多项新功能,并开启公共云半托管模式,优化代码搜索,为用户提供更加高效、灵活、安全的数据管理和运营环境,提升用户体验,促进企业数据资产的建设和价值挖掘。
1580 3
DataphinV4.1大升级: 支持Lindorm开启高性价比数据治理,迎来“公共云半托管”云上自助新模式
下一篇
DataWorks