DynamoDB不使用主键进行查询的最佳解决方案

2024-09-28 20:15:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我在DyamoDB中有一个类似的表:

StaffID, Name,          Email,              Office
1514923  Winston Smith, SmithW@company.com, 101

它只有大约100行。在

我正在试用Amazon的Alexa,并尝试将其用于基于语音的查询,例如

'Where is Winston Smith?'

问题是,当使用Alexa函数从表中提取结果时,它永远不会通过主键StaffID-因为用户不会问:

'Where is 1514923?'

据我所知,查询非主键值的速度非常慢。。。在DynamoDB中使用Python时,是否有合适的解决方案?在

我知道只有100行,这是可以忽略不计的,但是我想用正确的,行业标准的方式来做事情。或者,对于这种情况,最好的解决方案是,简单地扫描表,当表太大时将它们拆分为不同的用户组?在


Tags: namecomamazonisemail解决方案wherecompany
1条回答
网友
1楼 · 发布于 2024-09-28 20:15:52

根据您的应用,这里有两种方法:

  1. 如果您只想通过Name字段查询此表,请更改该表,使其分区键为Name,而不是StaffID。DynamoDB不是SQL-没有必要将所有的东西都键入ID字段,除非您实际使用它。(请注意,实际上不能“更改”现有DynamoDB表上的分区键-必须重新构建表)。在
  2. 如果您想通过StaffIDName高效地查询,请使用Name字段为表创建一个global secondary index。请注意,全局二级索引需要它们自己提供的吞吐量和存储空间,这两者当然是等价的。在

次要问题:这与您使用Python接口无关,它适用于所有DynamoDB访问。在

相关问题 更多 >