gpt4 book ai didi

amazon-web-services - DynamoDB中的可选二级索引

转载 作者:行者123 更新时间:2023-12-04 01:47:03 24 4
gpt4 key购买 nike

我正在将我的持久层从Riak迁移到DynamoDB。我的数据模型包含一个可选的业务标识符字段,希望能够查询该字段作为 key 的替代方案。

似乎DynamoDB二级索引不能是null且需要范围键,因此尽管与Riak二级索引的名称相似,但使它看起来像是一个完全不同的野兽。

是否有一种优雅的方法可以有效地查询我的可选字段,而无需将数据扔到外部搜索索引中?

最佳答案

当您问这个问题时,DynamoDB没有全局二级索引:http://aws.amazon.com/about-aws/whats-new/2013/12/12/announcing-amazon-dynamodb-global-secondary-indexes/

现在,确实如此。

最好使用本地二级索引,并将其用作二级范围键。 @andreimarinescu是正确的:您仍然必须通过项的哈希键来查询,仍然只有二级索引才能在该范围键上使用DynamoDB查询的比较运算符的有限子集(例如,大于,等于,小于等) 。)因此,您仍然需要知道要在哪个“哈希存储桶”中执行比较。

全局二级索引有点不同。它们更像是表的辅助版本(并且Amazon在预配置吞吐量方面向您收取类似费用)。您可以将表的非主键属性用作全局二级索引中索引的主键属性,并进行相应的查询。

例如,如果您的表如下所示:

|**Hash key**: Item ID | **Range Key**: Serial No | **Attribute**: Business ID |
--------------------------------------------------------------------------------
| 1 | 12345 | 1A |
--------------------------------------------------------------------------------
| 2 | 45678 | 2B |
--------------------------------------------------------------------------------
| 3 | 34567 | (empty) |
--------------------------------------------------------------------------------
| 3 | 12345 | 2B |
--------------------------------------------------------------------------------

然后,使用 Business ID上的本地二级索引,您可以执行以下查询:“查找所有哈希键为 3且业务ID等于 2B的项目”,但是您无法执行“查找所有业务ID等于的项目。 2B“,因为二级索引需要一个哈希键。

如果要使用业务ID添加全局二级索引,则可以执行此类查询。实际上,您将为该表提供备用主键。您可以执行如下查询:“查找所有业务ID等于 2B的项目,并获得 2-456783-12345项目作为响应。

稀疏索引可与DynamoDB配合使用;完全可以允许并非所有项目都具有业务ID,并且可以使索引上的预配置吞吐量保持低于表的索引,这取决于您预期具有业务ID的项目数。

关于amazon-web-services - DynamoDB中的可选二级索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18715002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com