构建具有许多可搜索属性的大型DynamoDB表?

时间:2017-07-10 17:32:54

标签: indexing amazon-dynamodb secondary-indexes

我一直在努力用最好的方式来构建我的桌子。它打算拥有许多GB的数据(我还没有得到更详细的估算)。该表将是声明数据(example here),其中分区键是resourceType,排序键是id(尽管这些可能会被更改)。最终用户应该能够通过多种属性(机构,提供商,收款人等)进行搜索,总数约为15。

为了在后端实现此功能,我一直在尝试将全局和本地索引结合起来。构建表的最佳方法是什么,以允许用户根据这些属性中的一个或多个以基本上任何组合搜索数据?

1 个答案:

答案 0 :(得分:2)

如果您使用resourceType作为分区键,则基本上会丢弃DynamoDB提供的水平扩展功能。

对数据进行分区的原因是,您可以将其分布在多个节点上,以便能够扩展而不会导致性能下降。

听起来您希望将所有声明文档放入单个分区,以便您可以按任意属性进行“搜索”。

您可能最好将DynamoDB表与ElasticSearch结合使用,以获得快速,随意的搜索功能。

请记住,DynamoDB只能在单个分区中容纳大约10GB的数据,并且单个分区限制为每秒最多3000次读取,每秒最多1000次写入(读取+ 3 *写入< = 3000)。

最后,您可以考虑将索赔文档直接存储到ElasticSearch中。