我正在使用Node.js和DynamoDB JavaScript SDK进行开发。
我有一个表,其中使用“ ID”作为分区键(哈希键)和“时间”作为排序键(范围键)。而且我想从多个分区键中获取最新的N个数据。
i.e.
Table:
ID | time
01 | 2018-10-01 01:00:00
02 | 2018-10-01 02:00:00
01 | 2018-10-01 04:00:00
03 | 2018-10-01 03:00:00
1. Get the latest 2 data from all partition key
result:
ID | time
01 | 2018-10-01 04:00:00
03 | 2018-10-01 03:00:00
1. Get the latest 2 data from partition key 01 & 02
result:
ID | time
01 | 2018-10-01 04:00:00
02 | 2018-10-01 02:00:00
我可以使用查询从分区键中获取最新的N个数据。
var docClient = new AWS.DynamoDB.DocumentClient();
var params = {
TableName: 'tablename',
ScanIndexForward: false,
ExpressionAttributeNames: {
'#id': 'id'
},
ExpressionAttributeValues: {
':id': '01'
},
KeyConditionExpression: '#id = :id',
Limit: 2
};
docClient.query(params, function (err, data) {
...
});
但是我不知道如何从多个分区键中获取最新的N个数据。如果要从10个分区键中获取数据,应该查询10次吗?
答案 0 :(得分:0)
是的,您需要为每个分区键进行一次查询。如果您有足够的读取容量,则可以并行启动所有查询,并且总延迟等于一个查询。
答案 1 :(得分:0)
尝试动力发电机batchget
var docClient = new AWS.DynamoDB.DocumentClient();
var params = {
RequestItems: {
'tablename': {
Keys: [
{'id': {N: '01'}},
{'id': {N: '02'}},
{'id': {N: '03'}}
]
}
}
};
docClient.batchGet(params,(err, data)=>{...})