如何在Amazon DynamoDB中保存实时和历史车辆位置数据

时间:2017-07-01 04:29:52

标签: python amazon-web-services amazon-dynamodb geohashing

我正在尝试处理和存储DynamoDB中约30万辆汽车的位置信息。

  • 每辆车每10秒钟会存储实时信息。
  • 它将被处理为直播单车
  • 该信息还将用于获得给定点和半径的附近车辆。
  • 我将使用python代码

我遵循以下策略:

历史记录表保存设备历史信息

  • 数据将是:deviceid(分区键),lat,lon,timestamp(sortkey),geohash

直播表保存实时信息

  • 数据将是:deviceid(分区键),lat,lon,timestamp,geohash(sortkey)

  • geo hash有助于搜索附近的车辆

  • 将更新表格信息,以便仅显示30k数据,在给定时间每个车辆一个。

如何改进Hist和Live表的读取和写入读取,写入每10秒完成一次?

1 个答案:

答案 0 :(得分: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用户在收到限制错误后使用Amazon SQS队列临时存储数据,后端进程读取后端进程这些消息并将它们插入DynamoDB。这允许为平均吞吐量而非峰值吞吐量配置表。

底线:您应该可以通过提高表的吞吐量来避免大多数扩展问题。其他技术(如上面详述的那些技术)可以提供更大的规模。