繁体   English   中英

DynamoDBMapper 的 query() 方法是否仅适用于复合主键?

Does DynamoDBMapper's query() method only work for primary keys that are composite?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

在 DynamoDBMapper 的 query() 方法的文档中,它说如下:

查询表或二级索引。 只有具有复合主键(分区键和排序键)的表或索引才能查询。

https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/DynamoDBMapper.Methods.html#DynamoDBMapper.Methods.query

如果表的主键只有一个分区键会怎样? 读取是否最终变得一致? 会出错吗?

1 个回复

该文档错误地说明了这一点,我已提交反馈以对其进行更新。 您可以将 Query 用于只有 PK 而没有任何含义的表,它应该完全按照您的预期工作。

你能更新你问题中的最后一句话吗? 我不是很关注。

我有很多不需要排序键的表,因此可以省略。 所有表必须至少有 1 个分区键(主键)。 这是您可以查询的唯一索引。 如果您需要多个索引,您可以添加一个全局二级索引 (GSI),然后您可以对其进行查询。

所以如果你的桌子看起来像这样

[PK, SK, name, date, ...]

我现在可以查询PK (分区键)并按SK (排序键)过滤。 我无法按namedate或表格中的其他内容进行查询。

但是,如果您的表是这样的结构

[PK, SK, name(GSI), date, ...]

我现在也可以通过全局二级索引name进行查询。 https://docs.aws.amazon.com/amazondynamodb/latest/APIReference/API_Query.html

所以我认为答案是否定的。 您的分区键必须是唯一的。 如果您尝试再次添加相同的项目,它将失败,除非您使用 update 方法,如果现有项目存在则更新该项目,如果不存在则创建一个新项目。

编辑:虽然我的回答并非完全错误,但数据库中项目的实际密钥是基于 PK 和 SK 的组合。 因此,您可以拥有多个主键为Iowa且辅助键为123 456789的项目,并且在您的查询中,您必须同时包含 PK 和 SK 以获得您正在寻找的确切项目。

[
 IOWA (PK), 123 (SK),...,
 IOWA (PK), 456 (SK),...,
]

https://aws.amazon.com/blogs/database/choosing-the-right-dynamodb-partition-key/

3 mysql中如何查询多个复合主键?

假设我有一个包含 A 列、B 列和 C 列的表,它们构成了一个复合主键。 现在假设这些主键有 10,000 个值。 前任。 (1, 2, 3), (4, 5, 6), (7, 8, 9)... 等 (A, B, C) 我希望每个主键引用的每一行。 最好的方法是什么? I know naivel ...

4 数据库复合主键中的顺序重要吗?

我最近提出了以下问题:顺序在数据库主键中重要吗? 即如果我有一个 R(a,b,c,d,e) 关系并且我将 (a,b) 作为复合主键,那么 (b,a) 是否考虑相同的主键? 作为跟进:如果 R(a,b,c,d,e) 是一个关系并且 (a,b,c) 是一个主键,则是 (a,b,c,d,e) 和 (a ...

6 复合(主)键应如何在Sync Framework中用作外键?

我目前正在重新设计数据库以与Sync Framework一起使用。 根据到目前为止我读过的文章,我的主键(一种身份类型)会导致Sync发生冲突。 因此,我决定添加一个称为ClientId(int类型)的列,以便可以将该新列和现有的主键列作为复合主键。 此ClientId将用于标识哪个客 ...

7 休眠复合主键

我在使用复合主键的实体休眠集中遇到麻烦。 我们的应用程序中有一个“目标”概念。 目标ID应该是其他三个表(实体)主要ID的组合。 Target也有一个int标签。 员工应有一系列目标。 SQL看起来像这样: 此SQL可以正常工作,并且只要applicationperiodi ...

8 复合主键的用法

可以说我有一个要记录用户名的表。 该表至少应具有两列: UserID和Name 。 通常,我看到人们在UserID上放置了一个主键,然后打开了自动递增功能并将其命名为day。 但是,这对我来说似乎是错误的,键不应该是两列之间的组合键吗? 因为我们不希望用户名重复。 我们还希望保留U ...

9 复合外键和主键

我想创建两个表,一个表包含City和Country的唯一值,另一个表包含City,Country,timestamp和VisitedDays的值。 城市和国家/地区将是表1中的复合主键。 我的以下脚本有一个问题,就是我无法输入之前已添加到表2中的城市和国家/地区值的新行。换句话说,我无法 ...

10 可互换的复合主键

我有一个表foo ,它只有两个字段: fooIdA和fooIdB (两者都属于同一类型)。 这些是复合主键,因此: 考虑到这一点,如何使键的所有排列都相同? 也就是说, (fooIdA, fooIdB) = (fooIdB, fooIdA) 。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM