因此,我正在开发一个可高度搜索的应用程序-表格中几乎每个字段都是可查询的。让我们将表格称为“工作”。用伪代码看起来像这样:
jobID: string
accountID: string
type: string
keywords: Array<string>
salaryLow: number
salaryHigh: number
numberOfApplications: number
numberOfViews: number
title: string
postedDate: string
description: string
location: Location
因此在此应用程序中,我希望能够通过所有这些字段进行订购/查询。但是,我对为所有这些字段创建全局二级索引持谨慎态度,因为这似乎是一种反模式。如果我为这些字段中的每一个添加索引,我相信每个写操作最终都将花费一些时间。
当前,我将jobID设置为分区键,将关键字作为排序键,但这在不借助全表扫描的情况下查询其他字段时并不十分灵活。
有人可以对此提供建议吗? Dynamodb的新手。谢谢!
答案 0 :(得分:2)
同样,如果您想使用一项服务,DynamoDB并不是最佳解决方案。但是,如果将它与ElasticSearch甚至AWS CloudSearch一起使用,它可能是一个很棒的解决方案。
您可以创建DynamoDB流,以将表中的数据更新直接转发到CloudSearch。然后,您只需要使用CloudSearch端点进行查询,然后恢复哈希键,甚至直接从CloudSearch中显示所有值。
我不确定,但也许CloudSearch的价格会低于所有计划的索引...
答案 1 :(得分:0)
正如评论中提到的那样,Dynamo并不是解决问题的理想数据库。根据排序键和分区键,您甚至可能会覆盖大量数据。
查看列,理想的情况是使用诸如Mongo之类的东西,并在需要频繁查询的列上创建索引。