【问题标题】:Would Amazon S3 work as storage for sensor data streaming in from millions of endpoints?Amazon S3 是否可以存储从数百万个端点流入的传感器数据?
【发布时间】:2011-12-15 06:52:13
【问题描述】:

我正在寻找可靠(和快速)存储少量传感器数据的选项,这些数据将来自(这里变得乐观)数百万个端点。 我所说的规模是 1M 个端点,每个端点每分钟发送 100 个字节。这些数据需要在此之后不久用于分析。 此外,这些数据将保留几年,总存储量可能会超过 100TB。

S3 是解决这个问题的方法吗,还是我最好托管我自己的 NoSQL 集群,比如 Cassandra/MongoDB 等?

如果我没有指定任何信息,请告诉我。

【问题讨论】:

    标签: amazon-s3 cassandra sensors


    【解决方案1】:

    是的,你可以。但是,在 S3 中没有查询机制,也没有任何方法可以在一个请求中读取多个对象。您也没有任何机制在数据写入之前对其进行检查。

    这可能是一个更好的主意:

    • 让客户端将传感器数据写入 SQS 队列
    • 您的应用程序从队列中读取消息并将数据写入 SimpleDB 或其他数据存储中

    它将数据接收与任何数据加载/存储阶段分离。

    请注意,许多亚马逊服务都按请求收费。对于 SQS,它是 $0.01/10000 个请求。如果您想让 100 万客户每分钟写一条消息,仅请求费用每月就会超过 40,000 美元。考虑阅读消息时加倍。

    (((1000000 * (60*24*30)) / 10000) * $0.01) * 2 = $86,400
    

    对于 S3,POST(客户端写入)为 0.01/1000 美元,GET(读取)为 0.01/10000 美元。对于 100 万客户,仅您的每次请求费用就可以轻松达到每月 500,000 美元。

    最终,如果有 100 万客户,您可能需要运行自己的接收端点,这仅仅是因为经济因素。

    【讨论】:

    • 关于经济学的要点。 OP 的要求当然是可行的,但获得最优成本是另一种只有经验才能遇到的途径。
    • 感谢您的洞察力。如果我只是在没有每次写入成本(传入数据免费)的基于 ec2 的基础架构上收集数据,这样做的成本似乎非常高。但是 S3 是否甚至支持一种方式,即附加到我正在为单个用户收集数据的数据块?或者我是否需要为收到的每个数据样本创建一个文件?那会让气球失去控制..评论?
    • @user393144 S3 是简单的 blob 存储:没有“附加”到现有文件的方法。如果您的数据是结构化的,我希望您将其存储在数据库中会更好;传统的关系或非 SQL(例如 SimpleDB)。
    • 我刚刚读到能够使用由 S3 支持的 HBase 作为文件系统。现在,如果 S3 没有类似文件追加的能力,那么 HBase 如何将它用作文件系统?例如当我向 HBase 添加一个新列时,S3 层会发生什么?
    • @user393144 这对 HBase 社区来说是个好问题。但是这个事实仍然存在:您不像传统的“文件系统”那样与 S3 交互。 S3 是一个通过 HTTP 访问的键值对 blob 存储。
    猜你喜欢
    • 1970-01-01
    • 2015-07-23
    • 1970-01-01
    • 2018-03-20
    • 2014-04-30
    • 2013-06-25
    • 2012-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多