【问题标题】:DynamoDB vs S3 flat files?DynamoDB 与 S3 平面文件?
【发布时间】:2016-09-21 02:07:15
【问题描述】:

我正在存储 TB 的点击流类型用户事件数据。它需要按日期进行索引或分区,以便可以合理快速地查询狭窄的日期范围。我希望能够对此运行聚合作业和查询。我希望在 Amazon EMR 或类似的东西中使用 Spark。

一个选项是按天+小时分区的 S3 平面文件,例如:

s3://my-bucket/20160503_00/data.txt
s3://my-bucket/20160503_01/data.txt
s3://my-bucket/20160503_02/data.txt

我更可能使用 Parquet 列式存储而不是原始文本,例如:

s3://my-bucket/20160503_00/data.parquet
s3://my-bucket/20160503_01/data.parquet
s3://my-bucket/20160503_02/data.parquet

另一种选择是完整的 Amazon DynamoDB?

各有什么优缺点?

【问题讨论】:

  • 不确定 SO 是 pro/con 的最佳来源 - 但是:如果您使用 s3,请压缩存储内容以节省大量空间和 IO 周期(因为您有效地存储文本,所以它是会很好地压缩。)另外,保持您的记录与文件的比率较低(即,不是每个文件每秒 1 条记录,将它们聚合到每个文件一分钟的价值,或者任何适当的 - 如果可能的话)。当我很久以前做这样的事情时,我们会每秒同步到 s3,但每 5 分钟返回一次并将每秒数据聚合成更大的块..)

标签: amazon-s3 amazon-dynamodb parquet bigdata nosql


【解决方案1】:

您可以通过 AWS Kinesis Firehose 从 AWS Kinesis 流式传输数据,以缓冲您的数据并将其保存到 S3 中较小的 128MB or 15 minute chunks。 Firehose 会自动将您的块放置在子文件夹中,以启用您需要的基于范围的查找。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 2012-08-26
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 2011-10-14
    • 2023-03-24
    相关资源
    最近更新 更多