基于PolarDB Ganos的实时时空计算:电子围栏篇

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
简介: 文章着重介绍了PolarDB Ganos如何应用于实现实时电子围栏计算。这是一种依赖于位置技术来创建虚拟地理边界的解决方案,广泛应用于交通安全、应急管理、营销推广等多个领域。通过与阿里云实时计算Flink版产品的集成,PolarDB Ganos能够高效地进行空间计算和数据分析,显著提高了地理围栏应用的实时性和准确性。文章还提供了使用Ganos进行电子围栏计算的实际步骤、性能测试及优化建议,并强调了PolarDB Ganos在提高数据处理效率和降低成本方面的优势。

前言

PolarDB是阿里云自研的云原生关系型数据库,在存储计算分离架构下,利用了软硬件结合的优势,为用户提供具备极致弹性、高性能、海量存储、安全可靠的数据库服务。其中,PolarDB PostgreSQL 版100%兼容 PostgreSQL,高度兼容Oracle语法。Ganos是PolarDB PostgreSQL版提供的新一代云原生时空数据库引擎,在100%兼容PostGIS开源空间数据库基础上,同时具备几何、栅格、轨迹、表面网格、体网格、3D实景、点云、路径、地理网格、快显10大核心引擎完整能力,为数据库构建了面向物理世界时空多模多态数据的混合存储、查询、分析一体化能力。

本文介绍的Ganos实时电子围栏计算能力,依托阿里云云原生关系型数据库PolarDB PostgreSQL版建设输出。

业务场景

什么是电子围栏

电子围栏是一种基于位置的技术。电子围栏不是真正的围栏,而是一些使用多边形或折线定义的虚拟的地理边界,当使用全球定位系统 ( GPS )、射频识别 ( RFID )、Wi-Fi或蜂窝数据移动的应用程序或设备在进入或离开该边界时,会触发有针对性的活动。这个边界被称为电子地理围栏。电子围栏可以围绕地理位置进行创建,小到建筑物、商店或商场,大到城市或整个国家。

电子围栏应用

电子围栏在现实生活中有很多实际应用:

在交通物流行业中,电子围栏可以用于车辆运行状态监控,当司机偏离指定路线时,电子围栏可以向系统发出警示,便于及时处理风险情况;当车辆进入到某些指定区域,可以进行车辆驶入提醒或用于盲区会车提醒服务等。

在禁行/禁飞区域管理中:如机场周围一定范围内设置为无人机禁飞区,当有无人机进入该区域时,电子围栏自动发出风险预警,预防航空危险事件发生。应急事件:台风、龙卷风等恶劣天气下,触发恶劣天气周边的电子围栏系统,当车辆或船只进入恶劣天气影响区域时,自动进行告警。在营销场景中:当客户进入商家设置的电子围栏时,可以自动进行营销活动的推送,如优惠券推送等,提升营销效率。

             

电子围栏其他场景还包括:

  • 物联网安防类:需要监护的儿童或老人离开预先设置的电子围栏时,进行报警操作,防止走丢。
  • 执法:如果被监控的个人未经事先授权离开住所,设备可以向当局发出警报。
  • 家庭自动化或智能家居: 当房主的智能手机进入房屋的电子围栏范围时,恒温器可以自行调节到预定的温度或灯可以自动打开。
  • 动物追踪:宠物主人和农民可以设置电子围栏,当动物离开边界时发出警报,从而让他们能够追踪动物。
  • 资产管理:公司网络管理员可以在公司设备离开场所时设置警报,以便他们能够找到其位置并将其锁定,以防止未经授权的用户(例如小偷)滥用。
  • 人力资源安全管理:如果员工试图进入未经授权的地理围栏区域,员工的智能卡可以向安全部门发送警报。

总之,实时电子围栏技术为企业和开发者提供了一种强大的工具,能够更好地管理和利用地理空间数据,提高与位置相关的决策效率和准确性。

最佳实践

技术实现

Ganos 实时电子围栏依托于阿里云实时计算Flink版产品,通过增加Flink引擎中相关的空间计算函数以及内存空间索引,来实现高性能,实时的电子围栏运算。

数据源可使用Flink数据源,如Kafka等。

电子围栏表预先存储在PolarDB中,可定期进行刷新操作。电子围栏运算结果也写回到PolarDB中。

准备工作

为了使用阿里云实时计算Flink版相关产品,需要在阿里云控制台中开通相关服务。

为了允许Flink的工作空间访问PolarDB数据库,需要确保Flink和PolarDB处于同一个region中,并将Flink工作空间的网段地址注册为PolarDB的白名单。

注册空间计算函数

Ganos空间计算相关能力封装在一个jar包中,该功能正在邀测中,请提工单进行获取。

获取jar包后,在Flink工作空间中进行上传操作(如图中+号位置),Flink会自动注册相关的函数,并展示在左侧的函数列表中。

电子围栏表

电子围栏表是预先定义好的电子围栏,如禁停区,禁行区等,数据以几何对象的方式存储在PolarDB中。

生成电子围栏

在PolarDB中生成10000随机多边形电子围栏。生成的方式为先生成10000随机点,并以这些随机点为中心,进行半径为0.01的缓冲区生成。

-- 生成随机浮点数
CREATE OR REPLACE FUNCTION test_random_float(low float, high float)
    RETURNS float AS $$
BEGIN
    RETURN random() * (high-low) + low;
END;
$$ LANGUAGE 'plpgsql' STRICT;
-- 生成随机点
CREATE OR REPLACE FUNCTION test_random_geogpoint(lowx float, highx float,
                                            lowy float, highy float)
    RETURNS geometry AS $$
BEGIN
    RETURN st_setsrid(st_point(test_random_float(lowx, highx), test_random_float(lowy, highy)),4326);
END;
$$ LANGUAGE 'plpgsql' STRICT;
-- 电子围栏表
CREATE TABLE IF NOT EXISTS geofencings (
    name VARCHAR(100) PRIMARY KEY,
    geofencing Geometry
);
-- 插入10000条随机电子围栏
INSERT INTO geofencings SELECT 'g_' || s, test_random_geogpoint(129, 130, 49, 50) FROM generate_series(1, 10000) s;
-- 生成半径大约1公里的缓冲区
Update geofencings set geofencing = st_buffer(geofencing, 0.01);

注册为Flink维表

在Flink SQL中将PolarDB中表注册为Flink的围栏表。

电子围栏的信息来源于PolarDB中的geofencings 表。

根据Flink的语法,在进行join操作时指定了等号操作的谓词为包含(CONTAINS)。

CREATE TEMPORARY TABLE geofencings (
  name STRING NOT NULL,
  geofencing STRING NOT NULL,
  PRIMARY KEY (name) NOT ENFORCED
) WITH (
  'connector' = 'polardb',
  'jdbcUrl' = 'jdbc:postgresql://pc-2zei5iq60*********.rwlb.rds.aliyuncs.com:1921/ganos',
  'username' = 'ganos',
  'password' = '******',
  'query' = 'SELECT name, ST_AsText(geofencing) FROM geofencings;',
  'join.columnName' = 'geofencing',
  'join.predicate' = 'CONTAINS'
);

计算结果

实时电子围栏的计算结果同样存到PolarDB中。

计算结果表

在PolarDB中创建电子围栏计算的结果表,记录符合电子围栏要求的点的id,围栏名称以及点坐标信息。

CREATE TABLE IF NOT EXISTS point_in_geofencing (
  id serial PRIMARY KEY, -- 主键
  point_id VARCHAR(100), -- 点id
  geofencing_name VARCHAR(100), -- 围栏名称
  point Geometry -- 点
);

注册为Flink表

在Flink SQL中将PolarDB中结果表注册为Flink的结果表。

查询结果以SQL的方式写入到PolarDB中。

CREATE TEMPORARY TABLE point_in_geofencing (
  point_id STRING NOT NULL,
  geofencing_name STRING NOT NULL,
  point STRING NOT NULL
) WITH (
  'connector' = 'polardb',
  'jdbcUrl' = 'jdbc:postgresql://pc-2zei5iq60*********.rwlb.rds.aliyuncs.com:1921/ganos',
  'username' = 'postgres',
  'password' = '*****',
  'query' = 'insert into point_in_geofencing(point_id,geofencing_name,point) values(?,?,ST_GeomFromText(?));',
    'batchSize' = '100' -- 每批插入100条记录
);

模拟数据源

以下示例以datagen作为数据源表,每秒产生10万条记录,记录包含随机id,随机经度,随机纬度和时间戳。

CREATE TEMPORARY TABLE points (
  id STRING not null,
  lng DOUBLE not null, -- 经度
  lat DOUBLE not null, -- 纬度
  proctime AS PROCTIME(), -- 时间戳
  PRIMARY KEY (id) NOT ENFORCED
) WITH (
  'connector' = 'datagen',
  'rows-per-second' = '100000',
  'fields.lng.kind' = 'random',
  'fields.lng.min' = '129',
  'fields.lng.max' = '130',
  'fields.lat.kind' = 'random',
  'fields.lat.min' = '49',
  'fields.lat.max' = '50',
  'fields.id.kind' = 'random',
  'fields.id.length' = '5'
);

电子围栏计算

在Flink SQL中执行Join操作,JOIN的谓词(preidacte)在创建表定义时被设置为CONTAINS,即执行 geofencings.geofencing CONTAINS ST_MakePoint(lng,lat) 判断,结果写入到PolarDB point_in_geofencing 表中:

INSERT INTO point_in_geofencing  
SELECT points.id, geofencings.name, ST_MakePoint(lng,lat) 
FROM points 
JOIN geofencings FOR SYSTEM_TIME AS OF points.proctime 
ON geofencings.geofencing = ST_MakePoint(lng,lat);

计算性能

在以上场景中,监控显示数据库写入TPS大约为300/秒(即每秒30000条记录),对于一个2c4g的PolarDB企业版实例CPU使用率约10%,负载压力仍有余量。

总结

本文重点介绍了PolarDB Ganos实时电子围栏计算场景。相较于传统中间键或业务代码实现电子围栏方式,Ganos从实时计算层为大规模移动对象提供标准时空处理框架,计算效率与综合成本均有大规模改善。未来Ganos还将提供更多高效的面向移动对象的实时计算分析能力,推动相关领域的空间信息应用全面走向“在线化”。

试用体验

欢迎访问PolarDB免费试用页面,选择试用“云原生数据库PolarDB PostgreSQL版”,体验PolarDB Ganos的实时时空计算能力。

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
相关文章
|
6月前
|
存储 关系型数据库 分布式数据库
【PolarDB开源】深入PolarDB内核:探究存储计算分离架构的设计哲学
【5月更文挑战第20天】PolarDB是阿里巴巴的云原生分布式数据库,以其存储计算分离架构为核心,解决了传统数据库的扩展性和资源灵活性问题。该架构将数据存储和计算处理分开,实现高性能(通过RDMA加速数据传输)、高可用性(多副本冗余保证数据可靠性)和灵活扩展(计算资源独立扩展)。通过动态添加计算节点以应对业务流量变化,PolarDB展示了其在云时代应对复杂业务场景的能力。随着开源项目的进展,PolarDB将持续推动数据库技术发展。
225 6
|
2月前
|
关系型数据库 分布式数据库 PolarDB
PolarDB Ganos的实时时空计算
PolarDB是阿里云自主研发的云原生关系型数据库,提供极致弹性、高性能、海量存储及安全可靠的数据库服务。PolarDB PostgreSQL版100%兼容PostgreSQL和Oracle语法,集成Ganos——新一代云原生时空数据库引擎,具备几何、栅格、轨迹等十大核心引擎能力,支持物理世界时空多模数据的混合存储与分析。本文介绍的Ganos实时电子围栏计算基于PolarDB PostgreSQL版,适用于交通物流、禁飞区管理、营销等多种场景,通过Flink实时计算实现高效的空间数据处理。
34 1
|
2月前
|
关系型数据库 分布式数据库 PolarDB
基于PolarDB Ganos的实时时空计算:电子围栏篇
PolarDB是阿里云自主研发的云原生关系型数据库,提供极致弹性、高性能、海量存储及高安全性的数据库服务。PolarDB PostgreSQL版100%兼容PostgreSQL与Oracle语法,集成Ganos云原生时空数据库引擎,支持几何、栅格、轨迹等多种核心功能,实现物理世界时空数据的混合存储与分析。本文介绍的Ganos实时电子围栏计算依托PolarDB PostgreSQL版,展示了其在交通物流、安防、营销等多个领域的应用场景和技术实现细节,包括数据源配置、空间计算函数注册、电子围栏表生成及计算结果存储等步骤。通过Flink实时计算框架,Ganos实现了高效、实时的电子围栏运算
79 0
|
4月前
|
存储 关系型数据库 分布式数据库
PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题
【7月更文挑战第3天】PolarDB,阿里云的云原生分布式数据库,以其存储计算分离架构为核心,解决传统数据库的扩展性问题。此架构让存储层专注数据可靠性,计算层专注处理SQL,提升性能并降低运维复杂度。通过RDMA加速通信,多副本确保高可用性。资源可独立扩展,便于成本控制。动态添加计算节点以应对流量高峰,展示了其灵活性。PolarDB的开源促进了数据库技术的持续创新和发展。
298 2
|
5月前
|
存储 关系型数据库 分布式数据库
PolarDB产品使用合集之计算包是用来干什么的
PolarDB是阿里云推出的一种云原生数据库服务,专为云设计,提供兼容MySQL、PostgreSQL的高性能、低成本、弹性可扩展的数据库解决方案,可以有效地管理和优化PolarDB实例,确保数据库服务的稳定、高效运行。以下是使用PolarDB产品的一些建议和最佳实践合集。
269 7
|
6月前
|
存储 并行计算 关系型数据库
使用 PolarDB 开源版 部署 PostGIS 支撑时空轨迹|地理信息|路由等业务
背景PolarDB 的云原生存算分离架构,,具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理;;PolarDB与计算算法结合,,将实现双剑合璧,推动业务数据的价值产出,将数据变成生产力。本文将介绍使用 PolarDB 开源版 部署 PostGIS 支撑时空轨迹|地理信息|路...
146 0
|
6月前
|
存储 关系型数据库 分布式数据库
PolarDB 开源版 通过rdkit 支撑生物、化学分子结构数据存储与计算、分析
背景PolarDB 的云原生存算分离架构, 具备低廉的数据存储、高效扩展弹性、高速多机并行计算能力、高速数据搜索和处理; PolarDB与计算算法结合, 将实现双剑合璧, 推动业务数据的价值产出, 将数据变成生产力.本文将介绍PolarDB 开源版 通过rdkit 支撑生物、化学分子结构数据存储与计...
211 0
|
1月前
|
关系型数据库 MySQL 分布式数据库
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶,邀请好友完成更有机会获得​小米Watch S3、小米体重称​等诸多好礼!
零基础教你用云数据库PolarDB搭建企业网站,完成就送桌面收纳桶!
|
2月前
|
关系型数据库 MySQL Serverless
探索PolarDB MySQL版:Serverless数据库的灵活性与性能
本文介绍了个人开发者对阿里云PolarDB MySQL版,特别是其Serverless特性的详细评测体验。评测涵盖了产品初体验、性能观测、Serverless特性深度评测及成本效益分析等方面。尽管试用过程中遇到一些小问题,但总体而言,PolarDB MySQL版表现出色,提供了高性能、高可用性和灵活的资源管理,是个人开发者和企业用户的优秀选择。
|
17天前
|
关系型数据库 分布式数据库 数据库
锦鲤附体 | PolarDB数据库创新设计赛,好礼不停!
锦鲤附体 | PolarDB数据库创新设计赛,好礼不停!

相关产品

  • 云原生数据库 PolarDB