大型非结构化数据集与 elasticsearch 集成的数据库建议
Database suggestion for large unstructured datasets to integrate with elasticsearch
一个场景,我们有数百万条记录保存在数据库中,目前我使用dynamodb保存元数据(同时对对象进行写,更新和删除操作),S3用于存储文件(例如:文件可以是图像,其关联的元数据存储在 dynamoDb 中)和用于索引和搜索的 elasticsearch。但是由于一行(单个对象)的 dynamodb 限制为 400kb,因此保存数据是不够的。我考虑过在 dynamodb 本身中为不同版本的对象保存,但这太复杂了。
所以我在考虑用更好的存储替换 dynamodb:
- AWS 文档数据库
- S3 还用于保存元数据以及目标文件
所以您认为哪一个是更好的选择以及为什么,这也具有成本效益。 (也很容易与 elasticsearch 同步,但是这个 ES 同步不是什么大问题,因为两者都有可能)
如果你有比这两个更好的建议也可以告诉我。
出于以下原因,我建议根据您的用例查看 Amazon S3 上的 DocumentDB:
- 标准存储数据的定价为
[=10=].023
,不经常访问的定价为每月每 GB [=11=].0125
(而文档数据库为每月每 GB [=12=].10
),具体取决于你的尺码加起来会很大。如果您使用 IA
请注意,您的检索成本可能会增加很多。
- 虽然您不会直接获取数据,但您可以使用 Athena 或 S3 Select 进行过滤。根据查询的数据大小,可能需要几秒到几分钟(不是您请求的毫秒数)。
对于 S3 中的非结构化数据存储及其周围的查询技术,更多的是针对用于分析的数据湖。而 DocumentDB 在实时应用程序中更受性能驱动(毕竟它是 MongoDB 兼容的数据存储)。
一个场景,我们有数百万条记录保存在数据库中,目前我使用dynamodb保存元数据(同时对对象进行写,更新和删除操作),S3用于存储文件(例如:文件可以是图像,其关联的元数据存储在 dynamoDb 中)和用于索引和搜索的 elasticsearch。但是由于一行(单个对象)的 dynamodb 限制为 400kb,因此保存数据是不够的。我考虑过在 dynamodb 本身中为不同版本的对象保存,但这太复杂了。 所以我在考虑用更好的存储替换 dynamodb:
- AWS 文档数据库
- S3 还用于保存元数据以及目标文件
所以您认为哪一个是更好的选择以及为什么,这也具有成本效益。 (也很容易与 elasticsearch 同步,但是这个 ES 同步不是什么大问题,因为两者都有可能) 如果你有比这两个更好的建议也可以告诉我。
出于以下原因,我建议根据您的用例查看 Amazon S3 上的 DocumentDB:
- 标准存储数据的定价为
[=10=].023
,不经常访问的定价为每月每 GB[=11=].0125
(而文档数据库为每月每 GB[=12=].10
),具体取决于你的尺码加起来会很大。如果您使用IA
请注意,您的检索成本可能会增加很多。 - 虽然您不会直接获取数据,但您可以使用 Athena 或 S3 Select 进行过滤。根据查询的数据大小,可能需要几秒到几分钟(不是您请求的毫秒数)。
对于 S3 中的非结构化数据存储及其周围的查询技术,更多的是针对用于分析的数据湖。而 DocumentDB 在实时应用程序中更受性能驱动(毕竟它是 MongoDB 兼容的数据存储)。