用于资产位置跟踪的 Azure 存储架构设计
Azure storage schema design for Asset Location Tracking
我正在使用移动设备构建资产跟踪应用程序,该应用程序能够定期将其坐标发布到 Azure 中的 Event Grid
。
目标:
- 跟踪此
Asset
在任何给定时间点的位置
- 记录其随时间的移动以供将来分析
- 当资产接近他们时通知相关人员,比如不到 1 公里。
- 将运营成本保持在最低水平。
为此,我计划创建一个 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(文档 + Table)、Azure Table、 Data Lake 等。有人可以针对这样的要求提出最佳存储模式,以最大限度地降低我的总体 运行 成本。还有如何最好地对我的架构进行分片/分区以获得最佳性能。
既然你提到你主要想做 geo-spatial 查询,我建议你使用 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
我正在使用移动设备构建资产跟踪应用程序,该应用程序能够定期将其坐标发布到 Azure 中的 Event Grid
。
目标:
- 跟踪此
Asset
在任何给定时间点的位置 - 记录其随时间的移动以供将来分析
- 当资产接近他们时通知相关人员,比如不到 1 公里。
- 将运营成本保持在最低水平。
为此,我计划创建一个 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(文档 + Table)、Azure Table、 Data Lake 等。有人可以针对这样的要求提出最佳存储模式,以最大限度地降低我的总体 运行 成本。还有如何最好地对我的架构进行分片/分区以获得最佳性能。
既然你提到你主要想做 geo-spatial 查询,我建议你使用 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