【发布时间】:2020-09-28 11:57:14
【问题描述】:
我的 Lambda 函数向 JSON api 发出 get 请求,并将数据放入 DynamoDB。但是,运行时间太长,因为 JSON 非常大。如何调整代码以减少运行时间?或者我可以调整我的 DynamoDB 设置以加快写入过程吗?
exports.handler = async (event) => {
try {
const data = await httprequest();
for (var i = 0; i < data.d.results.length; i++){
var iden = Date.now();
var identifier = iden.toString();
var params = {
Item: {
ID: identifier,
journal: data.d.results[i].journal
},
TableName: ''test"
};
await docClient.put(params).promise();
}
console.log('Document inserted.');
return JSON.stringify(data);
} catch(err) {
console.log(err);
return err;
}
};
【问题讨论】:
-
DynamoDB 读/写容量是可配置的,因此您可以提高表的写入性能。希望您的分区键是日志,而不是时间戳。当然,还可以使用批量写入。
-
@jarmod 谢谢,会的!使用时间戳作为分区键有什么问题?
-
时间戳倾向于聚集,导致读/写在 NoSQL 数据库的分片中分布不均。具有更均匀的分区键分布允许更大的并行化。另外,您通常不能查询时间戳。并且对于多个非常接近时间的连续写入可能会意外地具有相同的时间戳,这意味着如果您在这些多个项目中使用的排序键没有更改,那么您实际上是在更新现有项目而不是写入新项目。
标签: javascript node.js amazon-web-services aws-lambda amazon-dynamodb