首页 > 解决方案 > 在 AWS 中查询数据以实现最小延迟的最佳方式

问题描述

我需要以下用例的建议。

我在 s3 存储桶中有大约 50 GB 的 json 数据,大约有 200 个属性。

现在我想使用带有一些过滤器的 REST api 访问这些数据。

我尝试将数据存储在 DynamoDB 中,但它有一个限制,即我们只能基于键过滤数据并过滤新键,我们需要首先为其创建全局二级索引。这也缓慢地满足了请求。

我想就如何改进对这些数据的搜索提出建议。

可用选项有:

  1. AWS 中的 MongoDB/DocumentDB
  2. 弹性搜索
  3. RDS
  4. 雅典娜
  5. 红移

如果有其他更好的选择,请提出建议。

如果可能,我正在尝试以毫秒为单位实现延迟。

还有什么最适合这种用例。

任何帮助表示赞赏。

标签: mongodbamazon-web-serviceselasticsearchamazon-s3amazon-dynamodb

解决方案


尽管我在弹性搜索性能方面拥有丰富的经验,但曾与提到的大多数其他流行系统合作过,IMO 最好在这种情况下使用 Elasticsearch,因为 Mongo 和 DynamoDB 过滤器成本高昂,RDBMS 对于复杂的过滤查询和创建索引并不快在 RDBMS 中的成本很高,并且在现有列上添加新索引需要大量开销。

虽然 Elasticsearch 将数据标记化并将它们添加到倒排索引以加快搜索和检索速度,但 200 GB 对于 Elastic 规模来说不算什么,它易于设置和扩展,适用于像您这样的简单用例。

最重要的是过滤器默认缓存在 elasticsearch 端,因此您不必像 Redis 那样实现额外的缓存,请参阅过滤器上下文以获取更多详细信息。


推荐阅读