mongodb - 查询数据以在AWS中实现最小延迟的最佳方法

标签 mongodb amazon-web-services elasticsearch amazon-s3 amazon-dynamodb

我需要以下用例的建议。
我在s3存储桶中有大约50 GB的json数据,具有大约200个属性。
现在,我想使用带有一些过滤器的REST API访问此数据。
我尝试将数据存储在DynamoDB中,但是它的局限性在于,我们只能基于键过滤数据,并基于新键进行过滤,我们需要首先为其创建全局二级索引。这也慢慢地满足了请求。
我想提出有关如何改善对这些数据的搜索的建议。
可用的选项有:

  • AWS中的MongoDB / DocumentDB
  • ElasticSearch
  • RDS
  • 雅典娜
  • Redshift

  • 如果还有其他更好的选择,请提出建议。
    我正在尝试以毫秒为单位实现延迟。
    同样最适合此类用例的是什么。
    任何帮助表示赞赏。

    最佳答案

    尽管我在Elasticsearch性能方面拥有丰富的经验,但我曾提到过大多数其他流行的系统,并且IMO最好在这种情况下使用Elasticsearch,以防Mongo和DynamoDB过滤器昂贵且RDBMS不能快速处理复杂的过滤查询和创建索引RDBMS中的SQL开销很大,并且在现有列上添加新索引需要大量开销。
    虽然Elasticsearch对数据进行标记化并将其添加到反向索引中以加快搜索和检索的速度,但是200 GB对于Elastic scale而言毫无意义,它易于设置和扩展,并且适用于像您这样的简单用例。
    最重要的是,默认情况下,过滤器是在Elasticsearch端缓存的,因此您不必像Redis那样实现其他缓存,有关更多详细信息,请引用filter context

    关于mongodb - 查询数据以在AWS中实现最小延迟的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62777734/

    相关文章:

    amazon-web-services - Amazon API Gateway 中的 stage 部署从何而来?

    java - 执行多个请求 Elasticsearch

    java - 带有 $in 运算符的 mongodb find() 是顺序的还是并行的?

    mongodb - 如何将 MongoDb atlas 数据库与 Jaspersoft studio 连接

    java - Spring Data MongoDB 索引(唯一=真)

    mongodb - 如何在 MongoDB 的单个集合中查找文档之间的集合交集?

    tomcat - 使用 AWS Load Balancer 和 tomcat 6 实例切换到 HTTPS 时 session 失效

    amazon-web-services - 使用cloudformation创建route53地理位置记录

    elasticsearch - 容器化WebApp的日志不会通过Serilog.Sinks.Elasticsearch发送到Elasticsearch

    spring - 带有Shield的Spring Data Elasticsearch