mongodb - 在 AWS 中查询数据以实现最小延迟的最佳方式
问题描述
我需要以下用例的建议。
我在 s3 存储桶中有大约 50 GB 的 json 数据,大约有 200 个属性。
现在我想使用带有一些过滤器的 REST api 访问这些数据。
我尝试将数据存储在 DynamoDB 中,但它有一个限制,即我们只能基于键过滤数据并过滤新键,我们需要首先为其创建全局二级索引。这也缓慢地满足了请求。
我想就如何改进对这些数据的搜索提出建议。
可用选项有:
- AWS 中的 MongoDB/DocumentDB
- 弹性搜索
- RDS
- 雅典娜
- 红移
如果有其他更好的选择,请提出建议。
如果可能,我正在尝试以毫秒为单位实现延迟。
还有什么最适合这种用例。
任何帮助表示赞赏。
解决方案
尽管我在弹性搜索性能方面拥有丰富的经验,但曾与提到的大多数其他流行系统合作过,IMO 最好在这种情况下使用 Elasticsearch,因为 Mongo 和 DynamoDB 过滤器成本高昂,RDBMS 对于复杂的过滤查询和创建索引并不快在 RDBMS 中的成本很高,并且在现有列上添加新索引需要大量开销。
虽然 Elasticsearch 将数据标记化并将它们添加到倒排索引以加快搜索和检索速度,但 200 GB 对于 Elastic 规模来说不算什么,它易于设置和扩展,适用于像您这样的简单用例。
最重要的是过滤器默认缓存在 elasticsearch 端,因此您不必像 Redis 那样实现额外的缓存,请参阅过滤器上下文以获取更多详细信息。
推荐阅读
- scala - 为什么Scala Future在映射到迭代器时顺序运行
- java - 尝试根据列数据类型设置值时出现 NullPointerException
- java - 使用 Layout Inflater 方法为动态创建的 EditText 创建 TextView
- python - 整数列表中的最大距离
- drupal-8 - 文件从 Drupal 上传到 Box
- c# - 电流停止后如何更改视频?
- android - R8:不进行类型检查,将被假定为不可访问
- postgresql - flyway迁移后弹簧数据不计算SERIAL列的行数
- python - 如何求解具有任意常数的 ODE
- google-sheets - 动态地对每行中的 5 个最大数字求和