首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用全局和本地辅助索引将数据加载到Dynamo表??

如何使用全局和本地辅助索引将数据加载到Dynamo表??
EN

Stack Overflow用户
提问于 2015-04-27 06:17:40
回答 2查看 1.6K关注 0票数 1

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

现在的问题是如何使用java的AWS在这些表中加载数据。我阅读了Dynamo的开发人员指南(http://docs.aws.amazon.com/amazondynamodb/latest/developerguide/Introduction.html),但是当您的表具有全局辅助索引时,我找不到如何加载数据。

用数据加载表的代码是:

代码语言:javascript
复制
  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);

现在,假设在我的表中,如果我将视图定义为全局附议索引。所以,相同的代码可以工作,还是有一些不同的方法来处理这种用例?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-28 12:29:55

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

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

有时候,您会将数据从其他数据源加载到DynamoDB中。通常,DynamoDB在多台服务器上对表数据进行分区。当将数据上载到表时,如果同时将数据上载到所有分配的服务器,则会获得更好的性能。例如,假设您希望将用户消息上载到DynamoDB表。您可以设计一个表,它使用哈希和范围类型的主键,其中UserID是散列属性,MessageID是范围属性。

关于在数据上传过程中分发写入活动的更多细节

在这里,您可以找到一些关于二级索引的其他信息,以补充您已经知道的信息:

为了有效地访问表中的数据,Amazon为主键属性创建和维护索引。这允许应用程序通过指定主键值来快速检索数据。然而,许多应用程序可能会受益于拥有一个或多个辅助(或备用)密钥,从而允许有效地访问具有主键以外的属性的数据。要解决这个问题,可以在表上创建一个或多个辅助索引,并针对这些索引发出查询或扫描请求。 辅助索引是一种数据结构,它包含表中的属性子集,以及支持查询操作的备用键。使用辅助索引,查询不再局限于表主键;您还可以使用辅助索引定义的备用键检索数据。表可以有多个辅助索引,这使应用程序能够访问许多不同的查询模式。 辅助索引中的数据由从表到索引的投影或复制的属性组成。创建辅助索引时,可以定义索引的备用键以及希望在索引中投影的任何其他属性。DynamoDB将这些属性与表中的主键属性一起复制到索引中。然后,可以查询或扫描索引,就像查询或扫描表一样。

在DynamoDB中利用二次指标改进数据访问一节应该提供一些有用的细节,说明如何正确定义GSI(包括投影等概念)。

票数 1
EN

Stack Overflow用户

发布于 2015-04-28 03:42:58

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

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29888494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档