我正在使用Node。js和DynamoDB JavaScript SDK开发。
我有一个表,它使用“ID”作为分区键(散列键),使用“time”作为排序键(范围键)。我想从多分区密钥中获取最新的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
我可以使用Query从分区键获取最新的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次吗?
尝试dynamodb 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)=>{...})
是的,每个分区键需要一个查询。如果有足够的读取容量,可以并行启动所有查询,总延迟相当于一个查询。
我有一个带有主键和排序键的表;因为这是一个复合键,所以我有多个主键与不同的排序键映射。 如何获取与特定主键关联的所有排序键? 我尝试使用“Get”操作,但这似乎也需要排序键(尽管我正在寻找这些键)。我还研究了“BatchGet”操作,但这是针对多个不同的键,而不是针对具有多个不同排序键的单个主键。 我也尝试过“查询”,但没有成功,但我对这一点了解较少,所以这可能就是解决方案——是这样吗?我还知道,
我必须经常在那里做两件事:1。给定一个category#域,获取所有匹配项。2.给定grouptype#groupname,获取所有匹配项。 这两种操作都相当频繁,所以我不想使用扫描。在DynamoDB中有没有一种有效的方法可以做到这一点?是否有更好的方法来设计模式(更多的表、辅助索引等)?任何建议都是有帮助的。有人建议使用全局辅助索引,但我的问题是,我能否将主表的范围键作为GSI的哈希键?我知道
我试图使用batchGetItem从表中返回多个项的属性,但似乎它只适用于分区键和范围键的组合,但是如果我只想通过主键识别请求的项,该怎么办?唯一的方法是创建不带范围键的表吗? 根据官方留档: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.Partitions.html 如果表有一个复合主键(分
我有一张dynamodb桌子。 它有主分区键IdType(String)和主排序键Id(String) 由于它是哈希范围模式,IdType不是唯一的,一个键可以多次使用。我需要找到所有唯一的ID类型。 我们如何找到它?一种可能的解决方案是使用扫描和处理所有客户端来获取所有IdType,并使用我们自己的代码找到唯一的。但扫描成本很高,每次扫描只能扫描1MB的数据,因此扫描是不可行的,因为表中的数据已
我有一个带有分区键(UUID)的DynamoDB表,其中有几个属性(如名称、电子邮件、创建日期等)。创建日期是项目中的一个属性,其格式为YYYY-MM-DD。但现在有一个要求更改-我必须根据创建日期对其进行排序,并提供整个数据(也就是说,我不能只将数据放在某个特定分区上,而是以排序方式将所有分区中的所有数据都放在一起。我知道这可能需要DynamoDB花费时间从所有分区中提取数据并在之后进行排序。我
受此启发,如何从DynamoDB获取每个主分区键的最新数据? 我在迪纳摩有一张桌子。它存储帐户统计信息。帐户统计数据可能每天更新几次。因此,表记录可能如下所示: ------------ -------------- ------- ------- |account_id|record_id|视图|星| ------------ -------------- ------- ------- |3|