Mongodb 存储数以百万计的数据段

Mongodb 存储数以百万计的数据段,mongodb,cassandra,cloud,bigdata,database,Mongodb,Cassandra,Cloud,Bigdata,Database,我正在研究的系统需要全天候存储设备发送的字符串流。 例如,id为“id”的设备每10秒发送一个不同的字符串。 因此,我需要存储以下数据项: ('ID', t, t+10, somestring) 我们谈论的是成千上万的设备,也就是说,数亿个数据集 最重要的查询是: Query(id, start, end) ==> list of strings 您建议如何存储数据? 您建议使用哪种数据库?这是timeSeries数据,Cassandra可能非常适合timeSeries类型的数据。按i

我正在研究的系统需要全天候存储设备发送的字符串流。 例如,id为“id”的设备每10秒发送一个不同的字符串。 因此,我需要存储以下数据项:

('ID', t, t+10, somestring)
我们谈论的是成千上万的设备,也就是说,数亿个数据集

最重要的查询是:

Query(id, start, end) ==> list of strings
您建议如何存储数据?
您建议使用哪种数据库?

这是timeSeries数据,Cassandra可能非常适合timeSeries类型的数据。按id、开始(降序)、结束(降序)将数据作为主键存储在Cassandra中。您的写入和读取速度很快,并且可以线性扩展以提高性能。
注意:Cassandra将分区的值限制为20亿,如果不想为旧数据设置TTL,则应考虑向分区添加另一个键以限制该值。这还将使您能够在只有少数ID不断发送数据的情况下将数据分布到集群中。

这是timeSeries数据,Cassandra可能非常适合timeSeries类型的数据。按id、开始(降序)、结束(降序)将数据作为主键存储在Cassandra中。您的写入和读取速度很快,并且可以线性扩展以提高性能。
注意:Cassandra将分区的值限制为20亿,如果不想为旧数据设置TTL,则应考虑向分区添加另一个键以限制该值。这还将使您能够在只有少数ID不断发送数据的情况下,将数据分散到集群中。

对于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/天将有一个分区(你不能让它们无限增长)。这意味着在你的查询中,如果开始/结束跨越一天,你可能需要阅读多次。

对于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/天将有一个分区(你不能让它们无限增长)。这意味着在查询中,如果开始/结束跨越一天,则可能需要多次读取