amazon-web-services - 大型非结构化数据集与弹性搜索集成的数据库建议
问题描述
我们在数据库中保存了数百万条记录的场景,目前我使用 dynamodb 来保存元数据(并对对象进行写入、更新和删除操作),S3 用于存储文件(例如:文件可以是图像,其中关联的元数据存储在 dynamoDb) 和 elasticsearch 中用于索引和搜索。但是由于一行(单个对象)的 dynamodb 限制为 400kb,保存数据是不够的。我想过在 dynamodb 本身中保存不同版本的对象,但这太复杂了。所以我正在考虑用更好的存储替换 dynamodb:
- AWS 文档数据库
- S3 也用于保存元数据以及目标文件
因此,在您的意见和原因中,哪一个是更好的选择,这也是具有成本效益的。(也很容易与 elasticsearch 同步,但是这种 ES 同步并不是什么大问题,因为两者都可能)如果你有比这两个更好的建议,你也可以告诉我。
解决方案
我建议根据您的用例在 Amazon S3 上查看 DocumentDB,原因如下:
- 存储数据的定价将是
$0.023
标准和$0.0125
每月每 GB 的不频繁访问(而 Document DB 是$0.10
每月每 GB),这取决于您的大小,这可能会大大增加。如果您使用IA
,请注意您的检索成本可能会大大增加。 - 虽然您不会直接获取数据,但您可以使用 Athena 或 S3 Select 进行过滤。根据查询的数据大小,可能需要几秒钟到几分钟(不是您请求的毫秒)。
对于 S3 中的非结构化数据存储以及围绕它的查询技术,更针对用于分析的数据湖。而 DocumentDB 更注重实时应用程序的性能(毕竟它是 MongoDB 兼容的数据存储)。
推荐阅读
- 3d - 如何将相机发送到默认铯
- java - Java:如何回到循环的开头
- javascript - 使用 Apollo 本地状态存储返回数据的不同表示是否合适
- ffmpeg - 使用 FFMPEG 捕获视频而没有冻结图像效果
- typo3 - TYPO3 带数字的 Extbase 字段名称
- ajax - 将 wav 文件从浏览器上传到 AWS S3 返回空文件
- java - 没有 BiometricDialog 的 Android Biometric Auth
- c# - 提高性能异步 Parallel.Foreach
- php - 将数据从 Nova Resource 传递到 FormField
- r - 在 R 中指定起始集群中心时出现 kmeans 错误?