在Dynamodb中设计具有多个访问点的表的最佳实践是什么?

时间:2018-08-13 01:22:03

标签: sql database amazon-web-services nosql amazon-dynamodb

因此,我正在开发一个可高度搜索的应用程序-表格中几乎每个字段都是可查询的。让我们将表格称为“工作”。用伪代码看起来像这样:

  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的新手。谢谢!

2 个答案:

答案 0 :(得分:2)

同样,如果您想使用一项服务,DynamoDB并不是最佳解决方案。但是,如果将它与ElasticSearch甚至AWS CloudSearch一起使用,它可能是一个很棒的解决方案。

您可以创建DynamoDB流,以将表中的数据更新直接转发到CloudSearch。然后,您只需要使用CloudSearch端点进行查询,然后恢复哈希键,甚至直接从CloudSearch中显示所有值。

我不确定,但也许CloudSearch的价格会低于所有计划的索引...

答案 1 :(得分:0)

正如评论中提到的那样,Dynamo并不是解决问题的理想数据库。根据排序键和分区键,您甚至可能会覆盖大量数据。

查看列,理想的情况是使用诸如Mongo之类的东西,并在需要频繁查询的列上创建索引。