我正在使用移动设备构建资产跟踪应用程序,该应用程序能够将其坐标定期发布到Azure中的Event Grid
。
目标:
Asset
的位置为此,我打算创建一个Azure function
来首先注册该设备并为其提供一个Asset Id
,该设备将包含在事件的coordinates
中。引发事件时,我想在多个Azure function
上订阅此主题,一个主题针对资产ID记录事件,另一个主题查询附近的个人,以随着资产的临近而得到通知。假设资产每15秒发布一次事件。
我在这里过度简化了架构,以给出我将要捕获的信息类型的想法
Asset-Info:
AssetId : String
AssetType: Integer [Track-Movement= 0 , To-Be-Informed = 1]
RegisteredAddress : String
ZipCode : String
MobileNo: String
APIKey: String
CurrentLocation: Point
Asset-Movement:
MovementId : String
AssetId : String
MovementCode: Integer
StartTime : DateTime
EndTime : DateTime
Asset-Location:
AssetId: String
TimeStamp: DateTime
Location: Point
我正在寻找有关将数据存储到Azure的最佳选择的帮助,因为有多种选择,例如CosmosDB(文档+表),Azure表,Data Lake等。有人可以建议最佳的存储方案,可以最大限度地降低我的总体运行成本。还有如何最好地对我的模式进行分片/分区以获得最佳性能。
答案 0 :(得分:0)
由于您提到主要是要进行地理空间查询,因此我建议将Cosmos DB用于存储部分,因为它对这些查询有很好的支持:https://docs.microsoft.com/en-us/azure/cosmos-db/geospatial
此外,对于执行批处理分析(例如在Azure Databricks中),Cosmos DB也有一个Spark连接器:https://docs.microsoft.com/en-us/azure/cosmos-db/spark-connector