Java 如何使用全局和本地二级索引将数据加载到Dynamo DB表??

Java 如何使用全局和本地二级索引将数据加载到Dynamo DB表??,java,amazon-web-services,amazon-dynamodb,Java,Amazon Web Services,Amazon Dynamodb,我使用AWS控制台在Dynamo DB中创建了一些表,并定义了一些全局索引和辅助索引 现在的问题是如何使用java的AWS SDK在这些表中加载数据。 我浏览了Dynamo DB的开发者指南(),但是我找不到当您的表具有全局二级索引时如何加载数据 用数据加载表的代码为: Table table = dynamoDB.getTable(tableName); Item item = new Item().withPrimaryKey("Name", "Amazon DynamoDB")

我使用AWS控制台在Dynamo DB中创建了一些表,并定义了一些全局索引和辅助索引

现在的问题是如何使用java的AWS SDK在这些表中加载数据。 我浏览了Dynamo DB的开发者指南(),但是我找不到当您的表具有全局二级索引时如何加载数据

用数据加载表的代码为:

  Table table = dynamoDB.getTable(tableName);
  Item item = new Item().withPrimaryKey("Name", "Amazon DynamoDB")
                        .withString("Category", "Amazon Web Services")
                        .withNumber("Threads", 2)
                        .withNumber("Messages", 4)
                        .withNumber("Views", 1000);
  table.putItem(item);
现在假设在我的表中,我已经将视图定义为全局Secondar索引。
因此,相同的代码将起作用,或者有一些不同的方法来处理此类用例???

您不能直接写入GSIs,即使它们是为表定义的


相反,DynamoDB将根据每个GSI中设置的
ProjectionType
自动将项目插入、更新和删除传播到GSI。只要您在
CreateTable
操作中定义了GSI,或者在
UpdateTable
操作中添加了GSI,GSI就会反映您放入基表中的项目,具体取决于
ProjectionType

,如果您的表具有二级索引(本地或全局)在表本身中插入数据时,将自动创建/维护它们。DynamoDB将自动管理索引,确保它们与表中的内容一致

但是,另一个完全不同的问题(您应该小心)是如何正确地将数据加载到DynamoDB表中:

有时您会将来自其他数据源的数据加载到 发电机B。通常,DynamoDB将表数据划分到多个分区上 服务器。将数据上载到表时,如果 您可以同时将数据上载到所有分配的服务器。对于 例如,假设要将用户消息上载到DynamoDB表。 您可以设计一个使用哈希和范围类型主键的表 其中UserID是散列属性,MessageID是范围 属性

更多详情

在这里,您可以找到一些有关辅助索引的附加信息,以补充您已经知道的内容:

为了高效地访问表中的数据,Amazon DynamoDB创建并 维护主键属性的索引。这允许 通过指定主键快速检索数据的应用程序 价值观但是,许多应用程序可能会从一个或多个应用程序中受益 更多辅助(或备用)键可用,以实现高效 使用主键以外的属性访问数据。解决 这样,您可以在一个表上创建一个或多个二级索引,并且 针对这些索引发出查询或扫描请求

二级索引是一种数据结构,它包含 表中的属性,以及支持查询的备用键 操作。使用二级索引,查询不再受限制 到表主键;您还可以使用 由辅助索引定义的备用键。一张桌子可以有 多个辅助索引,使您的应用程序能够访问 许多不同的查询模式

二级索引中的数据由以下属性组成: 从表中投影或复制到索引中。当您创建 二级索引,定义索引的备用键,以及 与要在索引中投影的任何其他属性。 DynamoDB将这些属性与 表中的主键属性。然后,您可以查询或扫描 索引就像查询或扫描表一样


本节应提供有关如何正确定义GSI(包括投影等概念)的有用详细信息。

您所说的“`*”是什么意思?相同的代码将起作用“*?你是说给GSI写信吗?是的。。我是说sameHey,我是迪纳摩DB的新手。我没有完全理解你的答案。我不理解投影属性的概念。你能解释一下吗?据我所知,投影属性是我们可以通过使用二级索引查询得到的属性。描述了GSIs中的投影和LSIs中的投影。您的理解是正确的,您投影的属性显示在二级索引中。