【问题标题】:Load large amount of data (10000 signals - time series)加载大量数据(10000 个信号 - 时间序列)
【发布时间】:2016-07-05 04:49:09
【问题描述】:

我正在分析如何每秒存储超过 10000 个信号 50 次。可能我会从记忆中阅读它们。每个信号都有一个时间戳(8 个字节)和一个双精度(8 个字节)。此过程将每周 1 天运行 4 小时。那么:

10000 x 50 x 16 = 8 MBS / 秒。

8 x 3600 x 4 = 115 GBS/周。

我应该使用什么数据库(或其他选项,如文件)来快速存储这些数据。 MondoDB 或 Cassandra 是不错的选择吗?什么语言会好? Java 是否足够快以从内存中读取数据并存储在数据库中,还是 C 是更好的选择?

需要集群解决方案吗?

谢谢。

【问题讨论】:

  • 50,000 次更新/秒是很多——但如果有足够的硬件绝对可行。但是,存储数据的位置的选择实际上取决于您以后要如何使用它。例如,为什么不直接将其连接到平面文件中?
  • 有多少用户将使用这个数据库?您需要您的数据库可以通过网络访问吗?
  • 数据库不需要是网络可访问的。平面文件可能是一个不错的选择,谢谢。
  • 您可以研究压缩数据的方法。每个信号的时间戳可能几乎相同。可能是最高位压缩得很好。尝试将数据放入 zip 存档中作为第一个测试。此外,您可能不需要所有时间戳。存储 1 个时间戳然后存储 1024 个信号就足够了吗?这将使存储的数据量减半。
  • @EspenBrekke,我建议尝试 Sqlite。它非常快速且占用空间小。

标签: mysql mongodb cassandra large-data database


【解决方案1】:

根据您的描述,我建议使用 Sqlite 数据库。它比 MySQL 和 MongoDb 非常轻巧且速度更快。

在此处查看benchmark

【讨论】:

    【解决方案2】:

    每天大约有 700~800 MB 的数据 - 所以如果您需要查询它 - 一个月后 - 将扫描 25 GB。

    在这种情况下,您可能需要集群/分片解决方案来拆分负载。

    由于数据会不断增长 - 您需要有一个动态解决方案,该解决方案可以使用 mongoDB 分片和副本集来跨越加载和管理数据分布。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-29
      • 2021-07-24
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      相关资源
      最近更新 更多