带标签的 AWS S3、DynamoDB、Redshift?

Posted

技术标签:

【中文标题】带标签的 AWS S3、DynamoDB、Redshift?【英文标题】:AWS S3 w/ tags, DynamoDB, Redshift? 【发布时间】:2018-01-08 20:30:17 【问题描述】:

我正在比较具有某些“属性”要查询的大量文件的云存储。现在它大约有 2.5TB 的文件并且增长很快。我需要高吞吐量的写入和查询。我将首先编写要存储的文件和属性,然后查询汇总属性(计数等),另外查询属性以提取一小组文件(按日期、名称等)。

我已将 Google Cloud Datastore 作为 noSQL 选项进行了探索,但试图将其与 AWS 服务进行比较。

一种选择是使用“标签”将文件存储在 S3 中。我相信您可以使用 REST API 查询这些,但要考虑性能。我也看到了连接 Athena 的建议,但不确定这是否会引入标签和正确的用例。

另一种选择是使用 Dynamo 之类的东西,或者可能是大型 RDS? Redshift 说它是针对 PB 规模的,而我们还没有做到这一点......

对最佳 AWS 存储解决方案的想法?定价是一个考虑因素,但更关注未来的最佳解决方案。

【问题讨论】:

【参考方案1】:

您不想将文件本身存储在 RDS 或 Redshift 等数据库中。您绝对应该将文件存储在 S3 中,但您可能应该将元数据存储或复制到更可索引和可​​搜索的位置。

我建议在 S3 中设置一个新的对象触发器,每当有新文件上传到 S3 时,它就会触发一个 Lambda 函数。 Lambda 函数可以获取文件位置、大小、任何标签等,并将该元数据插入 Redshift、DynamoDB、Elastic Search 或 Aurora 等 RDS 数据库,然后您可以在其中针对该元数据执行查询。除非您在谈论数百万个文件,否则元数据将相当小,您可能不需要 Redshift 的规模。您选择用于存储元数据的确切数据库将取决于您的用例,例如您要执行的特定查询。

【讨论】:

谢谢@mark-b。我在当前使用文件系统和带有索引的 mysql 的解决方案中考虑了这种 ETL 方法。我想这就是我喜欢 Google 的一站式云数据存储的原因 :) 我猜 AWS 不匹配 Google 的存储与搜索层? 您具体指的是什么 Google 服务?这? cloud.google.com/datastore 我相信这可以直接与 DynamoDB 相媲美。您也不想将原始文件存储在该 Google 服务中。在 google 上,您可能希望使用它来存储实际文件:cloud.google.com/storage,这将与 Amazon 的 S3 进行比较。

以上是关于带标签的 AWS S3、DynamoDB、Redshift?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 AWS DynamoDB 表导出到 S3 存储桶?

使用 AWS Datapipeline 将 DynamoDB 导出到 S3 数据

AWS Data管道从S3到DynamoDB的CSV数据

将dynamoDB表复制到另一个没有S3的aws帐户

AWS Data Pipeline DynamoDB 到 S3 到 Redshift,包括 JsonPaths

在AWS s3中保存图像