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

是否使用不是所有项都共享的属性的全局辅助索引?

丁震博
2023-03-14

DynamoDB怎么可能创建一个包含分区键(和排序键)的全局辅助索引,而不是表中的所有项都共享该索引呢?我无法将一个项放入一个没有正确主键结构的表中,因此,使用一个属性作为分区键来创建一个GSI对我来说是没有意义的,而不是表中的所有项都有。

假设我有一张有10件物品的桌子。5项为用户。2项是我销售的产品。剩余的3个项目是已创建的订单。

我们还可以说,尝试接近这种NoSQL风格是全身心的和半理解的,留给我们的是这些项目和它们相应的属性-

用户项:id、电子邮件、电话、地址、first_name、last_name

产品项:id、说明、标题、价格

订单项:id,user_id,product_id,quantity,creation_date

这个表的分区键是id

然后,当我尝试使用creation_date作为分区键创建GSI时,它让我...谁能给我解释一下为什么这行得通?

共有1个答案

贲凌
2023-03-14

不具有creation_date属性的项不会包含在GSI中。重要的是,所有具有creation_date的项都具有id。在本例中,GSI的思想是,您可以通过creation_date查询项目/数据,否则就不能查询,因为该属性不是分区键的一部分。

以下是关于GSIs的更多内容

特别是:

如果表中包含一个未定义特定属性的项,但该属性被定义为索引分区键或排序键,则DynamoDB不会将该项的任何数据写入索引

 类似资料:
  • 我有一个具有以下属性的dynamo表: ID(数字-主键) 标题(字符串) created_at(数字长) 标记(StringSet-包含一组标记,例如android、ios等,) 我想要能够通过标签查询-让我所有的项目标签Android。我怎么能在Dynamodb里做到这一点呢?似乎只能在ScalarDataTypes(即Number和String)上构建全局辅助索引,而不能在集合内的项上构建全

  • 我们可以仅用全局辅助索引更新dynamodb项吗? 在上面的代码中,我想要替换键节,并使用一个全局辅助索引更新项,即user_id。

  • 问题内容: 考虑以下简单代码: 当child增加myvar时,该值是否与父亲共享(如pthread)? 问题答案: 不,是的。 不,它们不会以程序员可见的任何方式共享;进程可以独立地修改自己的变量副本,并且它们将在不影响其他进程(例如fork()父,兄弟姐妹或后代)的情况下进行更改。 但是,是的,OS实际上最初确实共享页面,因为fork实现了写时复制功能,这意味着只要没有任何进程修改页面,就可以共

  • Q1:这里的“disabled”是否被认为是一个属性 问题2: 是否所有html禁用按钮都有一个disabled属性,如:

  • 我正在使用Cognito用户池,我想知道我们是否有办法创建一个可供所有用户使用的自定义全局属性?我之所以要创建此属性,是因为我们希望以后只使用一个时间和地点更新属性。

  • 我有一个现有的表,它有两个字段-主键和全局辅助索引: 既然attributeA作为全局辅助索引,我可以通过为全局辅助索引指定一个值来删除所有项吗?例如,我想删除所有属性为id1的记录-这在Dynamo中是可能的吗? Dynamo提供了关于删除索引本身的文档,但没有特别说明是否可以使用GSI删除多个项