2

我正在编写一个 C# 程序集,它应该存储和检索基于时间的数据,因此数据由尺寸为 500 x 2000 的二维双数组组成。

每隔 10 - 100 秒,我就会得到一组数据,这些数据应该存储大约 2 年。检索应该足够快,以便在几秒钟内获得一组约 5000 个数组。

此外,应该以某种方式删除例如超过 6 个月的数据,即每小时只有一个阵列可用。

现在有几种可能性,我已经检查过了:

  • “经典”数据库,例如 MS SQL。我正在创建一个数据库结构,它将数组与时间数据分开存储,因此我可以查询时间数据并仅获取我真正需要的数组。优点是对数据的很好的处理(插入/删除/选择)。问题是,您需要对数据库进行一定程度的维护,我无法随时保证。

  • 键值数据库,例如 REDIS。运行良好,(必须对数组进行序列化 + 压缩),但我担心由于数组大小,这对于这种存储来说不是正确的。另一件事是,它应该是一个持久存储,而不仅仅是在内存中可用。

有人知道其他可能性吗?

4

1 回答 1

0

我怀疑数据的消费者会按顺序需要它。如果是用于处理或查看,可能不需要一次拥有所有阵列。也许你可以实现一种数组流。你可以这样做:

  • 将它们存储在文件系统中,并逐个读取和发送文件。您可以保存 SQL 数据库中文件的索引,其中时间戳是聚集的主索引。
  • 使用数据库(SQL 很好),您可以在其中保存按时间戳索引和排序的数组,并将数组保存为 blob 数据。这可以促进快速有序读取。
于 2013-11-21T19:40:36.887 回答