Nosql 是否使用并非所有项目共享的属性进行全局二级索引?

Nosql 是否使用并非所有项目共享的属性进行全局二级索引?,nosql,amazon-dynamodb,Nosql,Amazon Dynamodb,DynamoDB怎么可能创建一个由分区键(和排序键)组成的全局二级索引,而不是表中的所有项都共享? 我无法将一个项放入一个没有适当主键结构的表中,因此,我无法使用表中并非所有项都具有的属性作为分区键来创建GSI 假设我有一张有10个项目的桌子。5项是用户。2项是我销售的产品。其余3项是已创建的订单 我们还可以说,尝试使用这种NoSQL风格是全心投入的,只是理解了一半,给我们留下了这些项目及其相应的属性- 用户项目:id、电子邮件、电话、地址、名、姓 产品项目:id、说明、标题、价格 订单项目:i

DynamoDB怎么可能创建一个由分区键(和排序键)组成的全局二级索引,而不是表中的所有项都共享? 我无法将一个项放入一个没有适当主键结构的表中,因此,我无法使用表中并非所有项都具有的属性作为分区键来创建GSI

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

我们还可以说,尝试使用这种NoSQL风格是全心投入的,只是理解了一半,给我们留下了这些项目及其相应的属性-

用户项目:id、电子邮件、电话、地址、名、姓

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

订单项目:id、用户id、产品id、数量、创建日期

此表的分区键是
id


然后,当我尝试使用
creation\u date
作为分区键创建GSI时,它允许我。。。有人能向我解释一下为什么这样做吗?

没有创建日期属性的项目将不包括在GSI中。重要的是,所有具有
创建\u日期
的项目都具有
id
。在本例中,GSI的思想是,您可以通过
creation\u date
查询您的项目/数据,否则您无法查询,因为该属性不是分区键的一部分

特别是:

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