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

Structuring a large DynamoDB table with many searchable attributes?

我一直在努力寻找构建我的 table 的最佳方式。它打算拥有很多很多 GB 的数据(我没有得到更详细的估计)。 table 将是声明数据 (example here),分区键是 resourceType,排序键是 id(尽管这些可能会被更改)。最终用户应该能够通过多个属性(机构、提供者、收款人等总共约 15 个)进行搜索。

我一直在尝试结合全局和本地索引,以便在后端实现此功能。构造 table 以允许用户根据这些属性中的 1 个或多个基本上以任意组合搜索数据的最佳方式是什么?

如果您使用 resourceType 作为分区键,您实际上是在丢弃 DynamoDB 开箱即用的水平缩放功能。

对数据进行分区的原因在于,您可以将数据分布在多个节点上,以便能够在不影响性能的情况下进行扩展。

听起来您希望将所有索赔文件放入一个分区中,这样您就可以 "searches" 任意属性。

您最好将 DynamoDB table 与 ElasticSearch 等软件结合使用,以实现快速、任意的搜索功能。

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

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