【问题标题】:DynamoDB Performance issue using Android AWS SDK使用 Android AWS SDK 的 DynamoDB 性能问题
【发布时间】:2015-12-21 05:33:31
【问题描述】:

我使用 DynamoDB 作为 android 平台的后端。我们能够创建表并对其执行查询。我看到在 android 端从表中获取数据需要时间。我想在这里分享有关表架构的更多详细信息。

我们有两个表 1) 视频 2) 分类。我们想根据给定的分类来获取视频列表。

  1. 视频表架构如下所示:

  1. 分类表:

我们有不同的分类。即每周节目、热门节目等。每个部分都包含来自视频表的视频 ID。

在 android 端集成了 AWS 移动 SDK。我可以共享查询代码 sn-p 需要时间来获取数据。

查询:根据分类获取视频列表。分类表包含video_id

List<VideosData> mVideosList = new ArrayList<>();
DynamoDBMapper dynamoDBMapper = new DynamoDBMapper(voids[0]);
DynamoDBQueryExpression<Classification> classificationQuery = new DynamoDBQueryExpression<>();
classificationQuery.withHashKeyValues(new Classification().setClassification_id(mType));
List<Classification> classifications = dynamoDBMapper.query(Classification.class, classificationQuery);
if (classifications != null && classifications.size() > 0) {
    for (Classification rows : classifications) {
        DynamoDBQueryExpression<VideosData> videosExpression = new DynamoDBQueryExpression<>();
        videosExpression.withHashKeyValues(new VideosData().setVideoId(rows.getVideo_id()));
        List<VideosData> tempDatas = dynamoDBMapper.query(VideosData.class, videosExpression);
        mVideosList.addAll(tempDatas);
    }

}

任何建议都会感谢优化。我是 DynamoDB AWS 的入门级,这可能是理解它的问题。

更新:表的读写容量单位是否需要设置以提高性能?

谢谢。 巴夫迪普

【问题讨论】:

    标签: android amazon-web-services amazon amazon-dynamodb


    【解决方案1】:

    代码看起来相当合理,因为您使用的是查询而不是扫描。我最初的两个想法,都是在 Dynamo 方面而不是在客户端,是:

    1. 您如何定义表上的键,尤其是分类表。您说类别 id 与视频 ID 组合为主键,但您的意思是一个是哈希键,一个是范围键?如果将category_id 用作分区键,则此could cause problems if it's not randomly distributed enough.

    2. 您说得对,读写能力可能是一个瓶颈。您应该能够在 AWS 控制台上看到您对这些整体的消费情况。但是,如上面链接中所述,如果您的记录不是随机分布在整个分区中,那么一个分区可能会受到不成比例的影响。这可能会导致瓶颈,而不会显示正在消耗的整体容量。

    【讨论】:

      猜你喜欢
      • 2016-04-10
      • 1970-01-01
      • 2018-11-22
      • 2019-07-20
      • 2019-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-16
      相关资源
      最近更新 更多