【问题标题】:Storing the lat long information of a moving object in DynamoDB在 DynamoDB 中存储移动对象的经纬度信息
【发布时间】:2017-12-01 23:08:54
【问题描述】:

我正在编写一个跟踪大约 30k 的大量设备的软件。 (与 Uber 类似,但位置信息来自不同类型的 GPS 设备)

  1. 我每 5 秒获取一次设备的位置信息
  2. 现在我需要将所有信息保存在数据库中,以便用于跟踪任何设备或查找您附近的设备。

这是我的计划:

  1. 我在 Dynamo db 中有一个名为 Livetrack 的表,用于保存每个设备的最新位置信息
  2. 数据包含 deviceid、tiestamp、纬度、经度

我应该如何设计 DynamoDb 表,使其每 5 秒可以处理 30000 次写入/60000 次读取

  • 我的读写容量单位应该是多少。
  • 一旦开发完成,我将使用 aws cloud DynamoDB
  • 我应该不使用 DynamoTable 并使用像 redis 这样的缓存吗?

在本地 dynamodb 安装中,如果我无法每 5 秒写入 6 个设备数据并同时读取设备数据

我的 Livetrack 数据创建为:

from __future__ import print_function # Python 2/3 compatibility
import boto3

dynamodb = boto3.resource('dynamodb', region_name='us-west-2', endpoint_url="http://localhost:8000")


table = dynamodb.create_table(
    TableName='LocationOne',
    KeySchema=[
        {
            'AttributeName': 'deviceid',
            'KeyType': 'HASH'  #Partition key
        }
       
    ],
    AttributeDefinitions=[
        {
            'AttributeName': 'deviceid',
            'AttributeType': 'S'
        }
    ],
    ProvisionedThroughput={
        'ReadCapacityUnits': 10,
        'WriteCapacityUnits': 10
    }
)

【问题讨论】:

    标签: amazon-dynamodb dynamo-local


    【解决方案1】:

    您可能需要使用本地 Dynamodb 上可能不可用的 DynamoDB Autoscaling 功能。 DynamoDB 自动扩展有助于扩展和防止出现限制问题。

    DynamoDB Auto Scaling 使用 AWS Application Auto Scaling 服务 代表您动态调整预置的吞吐量容量,在 对实际流量模式的响应。这使表或全局 二级索引,以增加其预置的读取和写入容量 处理突然增加的流量,而不进行节流。当。。。的时候 工作负载减少,Application Auto Scaling 降低吞吐量 这样您就不必为未使用的预置容量付费。

    最佳实践:-

    作为最佳实践,请确保deviceid 不是连续的。这样数据就会分散在分区中。这有助于确保所有读/写不使用上述用例所需的相同分区。

    Refer this blog for designing the best partition key

    【讨论】:

      猜你喜欢
      • 2023-04-09
      • 1970-01-01
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多