我正在研究的系统需要存储设备24/7发送的字符串流。 例如,ID为“ID”的设备每10秒发送一个不同的字符串。 所以,我需要存储以下数据项:
('ID', t, t+10, somestring)
我们谈论的是成千上万的设备,意思是数以亿计的数据集。
最重要的查询是:
Query(id, start, end) ==> list of strings
您如何建议存储数据? 你会推荐哪个数据库?
答案 0 :(得分:2)
对于Cassandra来说,这非常简单。
Dim wkbDest, wkbSource As Workbook
ret = ("<insert file path here>")
If ret = False Then
Set wkbDest = Workbooks.Open("<insert file path here>")
Else
Set wkbDest = Workbooks("<insert file name here>")
End If
Set wkbSource = ThisWorkbook
Dim f As Range, rwNum
Set f = wkbDest.Worksheets("Exhibit C").Range("B:B").Find(What:=wkbSource.Worksheets("ReferenceData1").Range("S3"), lookat:=xlWhole)
If Range("C19").Value = "Pass" Then
wkbDest.Worksheets("Exhibit C").Cells(f.Row, "E").Value = Range("B19").Value
ElseIf Range("C19").Value = "Fail" Then
End If
这意味着每个ID /日将有一个分区(你不能让它们无限制地增长)。这意味着在您的查询中,如果开始/结束跨越一天,您必须多次读取。
答案 1 :(得分:0)
这是timeSeries数据,而Cassandra可能非常适合TimeSeries类数据。将数据按id,开始(降序),结束(降序)存储为Cassandra中的主键。您的写入和读取速度很快,可以线性扩展以提高性能。 注意:Cassandra将分区值的数量限制为2亿,如果您不想为旧数据设置TTL,则应考虑向分区添加另一个密钥以限制该值。如果只有少量ID不断发送数据,这也可以让您在整个集群中传播数据。