我认识到2G / 3G / 4G数据检索项目是我学习的一部分。 我必须存储这些数据,并对其进行查询。 我的表:[freq {float},dbm {float},timestamp {init}] 我每天收到大约15GB的数据,从每分钟100000到200000个条目,以及6天的数据。
我可以使用简单的DBMS(MySQL / Postgre),但我担心性能不存在。我尝试使用InfluxDB,但每分钟记录的行数少于我的需求。
你有其他解决方案吗?
非常感谢, J-V
答案 0 :(得分:2)
我使用你提到的所有数据库。对于这个负载,我可以推荐MySQL或PostgreSQL,因为我已经在PostgreSQL上使用了更高的负载。但MySQL也会做同样的工作 - 甚至可能更好,因为它是从高插入负载开始设计的。
我使用的PostgreSQL上的解决方案用于存储来自电信网络的系统消息,并且能够在一台机器上每天收集大约300GB的数据而没有问题。但是你需要适当的硬件架构。
您需要至少具有8个CPU的计算机,但更多更好,并且您需要具有多个插入队列。使用Java或C中的加载程序或具有更多并行威胁的golang,并使用COPY命令对每个威胁进行批量插入,以便在一个批量中使用~10000条记录。您必须使用连接池,因为PostgreSQL开放新连接的开销较高。
它还可以帮助您在单独的物理磁盘上的每个表空间的更多表空间上分发数据,或者更好地在单独的物理磁盘阵列上分发数据。如果可能,请不要在原始数据上使用索引。将原始数据与汇总结果分开。
我们有另一个解决方案,使用PostgreSQL的pl / proxy扩展和几个物理机器来分割按时间划分的原始数据。该系统每天至少可以收集1TB,但使用适当数量的从属数据库甚至更多。
但是你必须明白,要真正处理这么多数据,你需要适当配置的硬件。没有神奇的数据库可以在某些笔记本上做奇迹,比如配置" ...
InfluxDB是非常棒的时间序列数据库,我们将其用于监控。我相信有足够的CPU和非常多的内存你也可以使用它。我估计你需要至少64 GB的RAM,因为插入内存更昂贵。因此,使用更多的插入队列,数据库将需要更多的内存,因为它将所有内容存储在内存中并自动对标记进行索引。