当前位置: 首页 > 知识库问答 >
问题:

AWS DynamoDB无分区键排序

谭研
2023-03-14

我有一个带有分区键(UUID)的DynamoDB表,其中有几个属性(如名称、电子邮件、创建日期等)。创建日期是项目中的一个属性,其格式为YYYY-MM-DD。但现在有一个要求更改-我必须根据创建日期对其进行排序,并提供整个数据(也就是说,我不能只将数据放在某个特定分区上,而是以排序方式将所有分区中的所有数据都放在一起。我知道这可能需要DynamoDB花费时间从所有分区中提取数据并在之后进行排序。我的问题是:

  1. 当前设计是否可以进行查询?我可以看到查询中需要分区键,这就是为什么我感到困惑,因为我不能在这里提供分区键
  2. 有没有更好的方法来为这样的用例重新设计表

提前谢谢。

共有1个答案

卫君博
2023-03-14

由于您的表存在,您现在无法更改结构,即使您想更改,您也将依赖UUID作为分区键。

但是,有一个功能可以为DynamoDB表创建全局二级索引。

通过使用GSI,您可以重新排列数据表示形式,将创建日期作为表的分区键包含在内。

分区键之所以重要,是因为DynamoDB数据中的数据分布在多个节点上,每个分区共享同一个节点。通过执行查询,只与一个分区通信更有效,因为不需要等待其他分区返回结果。

 类似资料:
  • 我试图使用batchGetItem从表中返回多个项的属性,但似乎它只适用于分区键和范围键的组合,但是如果我只想通过主键识别请求的项,该怎么办?唯一的方法是创建不带范围键的表吗? 根据官方留档: http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/HowItWorks.Partitions.html 如果表有一个复合主键(分

  • 与主键、复合键和候选键相比,dynamodb中的分区键和排序键是什么?

  • 我在Cassandra中创建了一个表,用于监控应用程序的插入。我的分区键是一个int,由年月日组成,我的集群键是一个时间戳,之后是我的用户名和其他一些字段。 我想显示最后5个插入,但似乎分区键位于“order by desc”之前。 怎样才能得到正确的结果?正常的聚类键归纳顺序,为什么我会得到这个结果?(提前致谢) 信息: 结果: 通缉:< br > 我的表:

  • 假设我有一个名为“student_course”的Dynamo DB表。我想存储每个学生在大学学习的课程。一个学生可以一次学习多个课程,一个课程可以一次有多个学生。所以基本上它是一个多映射。 我的数据访问模式只有一个用例- 一次获取一个学生和一门课程的记录,即获取每个学生ID和CourseId组合的数据。它保证对于学生ID和课程ID组合,只有一条记录可用。 为了实现这一点,我可以通过以下两种方式存

  • 我试图查询具有分区键和排序键的表(但是分区键和排序键是1:1,我只想使用分区键[仅返回一项]进行查询)。 这是我尝试过的代码,但没有成功(testId是分区键名,1234567890是字符串形式的分区键值);你们都知道我可以只使用分区键进行查询的方法吗?记住,由于分区键和排序键是1:1,所以只会返回一个项?提前非常感谢您。[这是我的第一篇堆栈溢出帖子-很抱歉,如果我用词不当,我很乐意回答关于我的措

  • 我正在DynamoDB中设计一个表,它将包含大量记录,每个记录都有一个唯一的ID和一个时间戳。我需要检索一组位于两个日期之间的记录,而不管所有其他属性值如何。 为时间戳字段添加全局辅助索引似乎是一个合乎逻辑的解决方案,但这并不简单。 DynamoDB中的Query命令需要一个KeyConditionExpression参数,该参数确定查询返回的结果。从DynamoDB开发人员指南: 要指定搜索条件