首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Android的DynamoDB性能问题

使用Android的DynamoDB性能问题
EN

Stack Overflow用户
提问于 2015-12-21 05:33:31
回答 1查看 115关注 0票数 0

我正在使用DynamoDB作为安卓平台的后端。我们能够创建该表并对其执行查询。我看到从表中获取数据需要花费时间在android端。我想在这里分享关于表模式的更多细节。

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

  1. 视频表模式如下:

  1. 分类表:

我们有不同的分类。即每周节目、流行节目等,每一节都包含视频表中的视频标识。

在android方面,集成了AWS移动SDK。我可以共享获取数据所需时间的查询代码片段。

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

代码语言:javascript
复制
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的入门级,这可能是理解它的问题所在。

更新:表上是否有任何读写能力单元需要设置以提高性能?

谢谢。巴夫底

EN

回答 1

Stack Overflow用户

发布于 2015-12-21 09:22:53

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

  1. 如何定义表上的键,特别是分类表。您说类别id与视频ID组合为主键,但您的意思是一个是哈希键,另一个是范围键?如果将category_id用作分区键,则为如果没有足够的随机分布就会产生问题。
  2. 你说得对,读写能力可能是一个瓶颈。您应该能够在AWS控制台上看到您正在消费的这些东西。但是,正如上面的链接所指出的,如果您的记录不是随机分布在各个分区中,那么一个分区可能会被不成比例地击中。这可能导致瓶颈,而不显示总容量正在消耗。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34389511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档