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


我们有不同的分类。即每周节目、流行节目等,每一节都包含视频表中的视频标识。
在android方面,集成了AWS移动SDK。我可以共享获取数据所需时间的查询代码片段。
查询:根据分类获取视频列表。分类表包含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的入门级,这可能是理解它的问题所在。
更新:表上是否有任何读写能力单元需要设置以提高性能?
谢谢。巴夫底
发布于 2015-12-21 09:22:53
代码看起来相当合理,因为您使用的是查询而不是扫描。我有两个最初的想法,都是在Dynamo方面,而不是在客户端,它们是:
category_id用作分区键,则为如果没有足够的随机分布就会产生问题。https://stackoverflow.com/questions/34389511
复制相似问题