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

Indexing 构造具有许多可搜索属性的大型DynamoDB表?,indexing,amazon-dynamodb,secondary-indexes,Indexing,Amazon Dynamodb,Secondary Indexes,我一直在努力寻找构造我的桌子的最佳方法。它的目的是要有很多很多GB的数据(我还没有得到更详细的估计)。该表将是claims data(),分区键是resourceType,排序键是id(尽管这些可能会更改)。最终用户应能够通过多个属性(机构、提供商、收款人等,共15个)进行搜索 为了在后端实现这一功能,我一直在尝试将全局索引和局部索引结合起来。构造表的最佳方法是什么,以允许用户根据这些属性中的一个或多个以任意组合搜索数据?如果使用resourceType作为分区键,则实际上是在抛弃DynamoD

我一直在努力寻找构造我的桌子的最佳方法。它的目的是要有很多很多GB的数据(我还没有得到更详细的估计)。该表将是claims data(),分区键是resourceType,排序键是id(尽管这些可能会更改)。最终用户应能够通过多个属性(机构、提供商、收款人等,共15个)进行搜索


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

如果使用
resourceType
作为分区键,则实际上是在抛弃DynamoDB提供的现成的水平缩放功能

对数据进行分区的原因是,为了能够在不造成性能损失的情况下进行扩展,您可以将数据分布在多个节点上

听起来您希望将所有索赔文档放在一个分区中,这样您就可以按任意属性进行“搜索”

您最好将DynamoDB表与ElasticSearch之类的工具结合起来,以实现快速、任意的搜索功能


请记住,DynamoDB在单个分区中只能容纳大约10GB的数据,并且单个分区每秒最多只能读取3000次,每秒最多只能写入1000次(reads+3*writes如果使用
resourceType
作为分区键,那么实际上就是在抛弃DynamoDB提供的现成的水平缩放功能

对数据进行分区的原因是,为了能够在不造成性能损失的情况下进行扩展,您可以将数据分布在多个节点上

听起来您希望将所有索赔文档放在一个分区中,这样您就可以按任意属性进行“搜索”

您最好将DynamoDB表与ElasticSearch之类的工具结合起来,以实现快速、任意的搜索功能


请记住,DynamoDB在单个分区中只能容纳大约10GB的数据,并且单个分区每秒最多只能读取3000次,每秒最多只能写入1000次(对于DynamoDB/ElasticSearch建议,读+3*写+1。另外,如果您正在寻找更简单的解决方案,您可以尝试极光。它有64TB的数据限制,这对您来说可能就足够了。好吧,我也在想类似的事情……使用ElasticSearch与AWS CloudSearch之类的东西相比,有什么优点/缺点?我不确定所有的比较。)tails,但值得一提的是,ElasticSearch最近更受欢迎,AWS也提供托管ElasticSearch服务。DynamoDB/ElasticSearch建议+1。此外,如果您正在寻找更简单的解决方案,您可以尝试极光。它有64TB的数据限制,这对您来说可能就足够了。好的,我也在考虑类似的问题。。。与AWS CloudSearch相比,使用ElasticSearch的优缺点是什么?我不确定所有的比较细节,但值得一提的是,ElasticSearch近年来更受欢迎,AWS也提供了一个托管的ElasticSearch服务。