【问题标题】:Storing hundres of millions data segments存储数亿数据段
【发布时间】:2016-10-13 21:03:54
【问题描述】:

我正在开发的系统需要存储设备 24/7 发送的字符串流。 例如,具有 id 'ID' 的设备每 10 秒发送一个不同的字符串。 所以,我需要存储以下数据项:

('ID', t, t+10, somestring)

我们谈论的是成千上万的设备,也就是数亿数据集。

最重要的查询是:

Query(id, start, end) ==> list of strings

您建议如何存储数据? 你会推荐哪个数据库?

【问题讨论】:

    标签: mongodb cassandra cloud bigdata database


    【解决方案1】:

    对于 Cassandra,这非常简单。

    CREATE TABLE device_strings (
      id text,
      year_month_day text,
      start timestamp,
      end timestamp,
      value text,
      PRIMARY KEY ((id, year_month_day), start, end)
    );
    

    这意味着每个 ID/day 都会有一个分区(你不能让它们无限增长)。这意味着在您的查询中,如果开始/结束跨越一天,您可能需要多次阅读。

    【讨论】:

      【解决方案2】:

      这是 timeSeries 数据,Cassandra 可能非常适合 TimeSeries 类型的数据。在 Cassandra 中按 id、start(descending)、end(descending) 作为主键存储数据。您的写入和读取将很快,并且可以线性扩展以提高性能。 注意:Cassandra 将 partition 的 value 数量限制为 20 亿,如果您不想为旧数据设置 TTL,您应该考虑在 partition 中添加另一个 key 来限制 value。如果只有少数 ID 不断发送数据,这也将使您能够在集群中传播数据。

      【讨论】:

        猜你喜欢
        • 2010-11-15
        • 1970-01-01
        • 2014-04-08
        • 2012-04-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-15
        相关资源
        最近更新 更多