5
数十亿行数据的最佳数据库和表设计
我正在编写一个需要存储和分析大量电气和温度数据的应用程序。 基本上,我需要存储过去几年以及成千上万个位置以后很多年的每小时小时用电量测量值,然后以一种不太复杂的方式分析数据。 我现在需要存储的信息是位置ID,时间戳(日期和时间),温度和用电量。 关于需要存储的数据量,这是一个近似值,但遵循以下原则: 20000多个位置,每月720条记录(每小时测量,每月大约720小时),120个月(十年前) )以及未来的很多年。简单计算得出以下结果: 20 000个位置x 720条记录x 120个月(10年前)= 1 728 000 000条记录。 这些是过去的记录,新记录将每月导入,因此大约每月20000 x 720 = 14400 000新记录。 总地点也将稳定增长。 对于所有这些数据,将需要执行以下操作: 检索某个日期和时间段内的数据:某个特定位置ID的所有记录,这些记录介于日期01.01.2013和01.01.2017之间以及07:00和13:00之间。 在特定日期和时间范围内进行简单的数学运算,例如,在07:00至13:00之间的5年中,某个位置ID的MIN,MAX和AVG的温度和用电量。 数据将每月写入一次,但会(至少)不断被数百个用户读取,因此读取速度显得尤为重要。 我没有使用NoSQL数据库的经验,但是从我的经验来看,它们是在此处使用的最佳解决方案。我已经阅读了最流行的NoSQL数据库,但是由于它们完全不同,并且还允许非常不同的表体系结构,因此我无法决定使用哪种最佳数据库。 我的主要选择是Cassandra和MongoDB,但由于我的知识非常有限,并且在涉及大数据和NoSQL方面没有实际经验,因此我不确定。我还阅读到PostreSQL也可以很好地处理此类数据。 我的问题如下: 我是否应该将NoSQL数据库用于如此大量的数据。如果不能,我可以坚持使用MySQL吗? 我应该使用哪个数据库? 我应该将日期和时间保留在单独的索引索引(如果可能)列中,以便在特定的时间和日期期限内快速检索和处理数据,还是可以通过将时间戳记保留在单个列中来完成此操作? 时间序列数据建模方法在这里是否合适,如果不合适,您能否为我提供良好表设计的指导? 谢谢。