【发布时间】: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