如何在 Amazon DynamoDB 中保存实时和历史车辆位置数据
Posted
技术标签:
【中文标题】如何在 Amazon DynamoDB 中保存实时和历史车辆位置数据【英文标题】:How to save Live and Historical Vehicle Location data in Amazon DynamoDB 【发布时间】:2017-12-05 01:20:21 【问题描述】:我正在尝试在 DynamoDB 中处理和存储大约 3 万辆汽车的位置信息。
每 10 秒将存储每辆车的实时信息。 会被处理成Live track单车 该信息还将用于获取给定点和半径的附近车辆。 我会用python代码我遵循以下策略:
Hist table 保存设备历史信息
数据将是:deviceid(分区键)、lat、lon、timestamp(排序键)、geohash实时表格保存实时信息
数据为:deviceid(分区键)、lat、lon、timestamp、geohash(sortkey)
地理哈希有助于搜索附近的车辆
将更新表格信息,以便仅显示 30k 数据,在给定时间为每辆车提供一个数据。在每 10 秒完成一次写入的情况下,如何改进 Hist 和 Live 表读取和写入的缩放?
【问题讨论】:
您目前遇到了哪些扩展问题? 【参考方案1】:您可以在创建时指定 DynamoDB 表的Read and Write throughput,并且可以在以后根据需要修改吞吐量。另外,DynamoDB 允许bursting beyond these defined throughput limits。
要获得表的全部吞吐量,use a wide range of Partition Keys 以便将请求分发到许多不同的服务器。
DynamoDB 现在also supports Auto Scaling,因此它可以根据使用情况自动扩展。
为了改进最终一致读取的缩放,您还可以使用In-Memory Acceleration with DAX。
在突发写入(写入吞吐量可能不足)的情况下,一些 AWS 用户在收到 Throttling 错误后使用 Amazon SQS 队列临时存储数据,并使用稍后读取的后端进程这些消息并将它们插入到 DynamoDB 中。这允许为表提供 平均 吞吐量,而不是 峰值 吞吐量。
底线:您应该能够通过增加表的吞吐量来避免大多数扩展问题。其他技术(如上文详述的技术)可以提供更大的规模。
【讨论】:
以上是关于如何在 Amazon DynamoDB 中保存实时和历史车辆位置数据的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Lambda从Amazon AWS中提取和转换单个dynamodb元素
如何在 Node 中使用 Amazon 的 Dynamodb Local?
Amazon DynamoDB 是不是支持查询结果的流式传输
如何使用 java 对 Amazon dynamodb 中的数据进行排序