数据库设计 – 数十亿行数据的最佳数据库和表格设计[已关闭]
我正在编写一个需要存储和分析大量电气和温度数据的应用程序. 基本上我需要在过去几年中存储大量的每小时用电量测量值,并且需要在数十万个位置存储大量的每小时用电量,然后以非常复杂的方式分析数据. 我需要存储的信息(目前)是位置ID,时间戳(日期和时间),温度和电力使用情况. 关于需要存储的数据量,这是一个近似值,但是沿着这些方向:
这些是过去的记录,每月将导入新记录,因此每月约有20 000 x 720 = 14 400 000条新记录. 总的位置也将稳步增长. 在所有这些数据上,需要执行以下操作: >检索特定日期和时间段的数据:日期01.01.2013和01.01.2017之间以及07:00和13:00之间某个位置ID的所有记录. 数据将按月编写,但将由数百名用户(至少)不断阅读,因此读取速度更为重要. 我没有NoSQL数据库的经验,但从我收集的数据来看,它们是在这里使用的最佳解决方案. 我的主要选择是Cassandra和MongoDB,但是由于我的知识非常有限,而且在大数据和NoSQL方面没有真正的经验我不太确定.我还读到Po??streSQL也能很好地处理这么多数据. 我的问题如下: >我应该使用NoSQL数据库来处理如此大量的数据.如果没有,我可以坚持MySQL吗? 谢谢. 解决方法这正是我每天所做的,除了使用每小时数据,我使用5分钟数据.我每天下载大约2亿条记录,所以你在这里谈论的数量不是问题. 5分钟的数据大小约为2 TB,我的天气数据按位置按小时水平回溯50年.那么让我根据我的经验回答你的问题:>不要使用NoSQL.数据结构高度适合 一般提示:我将大部分数据存储在两个数据库之间,第一个是直接时间序列数据并进行了规范化.我的第二个数据库非常规范化并包含预先聚合的数据.与我的系统一样快,我并不是因为用户甚至不想等待30秒才能加载报告这一事实 – 即使我个人认为30秒内处理2 TB的数据也非常快. 要详细说明为什么我建议将小时与日期分开存储,以下是我这样做的几个原因: >电子数据的呈现方式是按小时结束 – 因此,01:00实际上是前一小时的电力平均值,00:00是小时结束24小时.(这很重要,因为您实际上必须搜索两个日期包括24小时值 – 您要查找的日期加上第二天的第一个标记.)但是,天气数据实际上是以前向方式显示的(实际和下一小时的预测值).根据我对这些数据的经验,消费者希望分析天气对电价/需求的影响.如果您使用直接日期比较,您实际上将比较前一小时的平均价格与下一小时的平均温度,即使时间戳相同.将日期与日期分开存储允许您将转换应用于时间,而不会将性能影响应用于将计算应用于DATETIME列. 正如我上面所说的,这完全取决于我的个人经历,让我告诉你,经历了几年艰苦的工作并且进行了大量的重新设计.不要做我做的事情,从错误中吸取教训并确保在决定数据库时让系统的最终用户(或开发人员,报告作者等……)参与进来. (编辑:青岛站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |