我正在建一个网站来监控一堆物联网设备。例如,每个设备的在线/离线状态以及它可能报告的某些设备特定信息、IP地址、温度等--这将是不同的。FYI这些设备通过处理器/计算机向我的站点报告,该处理器/计算机对这些设备进行极坐标,然后报告返回(最多255个设备,但在大多数情况下在10-100个设备之间)。
到目前为止,我的方法是为每个处理器创建一个新的表,其中只包含处理器设备。然而,在与一位同事的讨论中,他表示这可能不是最好的方法,因为这并不是特别有效,以后可能会有问题,例如,如果您想稍后添加另一列,则必须将其添加到可能的50+不同处理器表中,等等。
相反,由于所有这些表都具有相同的结构,例如相同的列数量等,所以设备的数量(例如行)会有所不同,那么一个包含所有这些行的大表是否是一个更好的方法呢?
我知道,用MySQL术语来说,“扫描”是一种昂贵的操作,如果有了一个大表,我会认为需要进行更多的扫描,因为我必须每次接受一个大数据集,然后将其过滤到视图中,例如针对5000+行和许多小的100行表的处理器或位置。另外,我认为这个表中的数据将被写入分配,例如,每当设备脱机时,脱机标志就会更新,所以我不确定这是否使它更适合于单个表和一个大表。
适当的有很多不同的方法来处理这件事,我只是不想掉进一个兔子洞,然后后悔。如果有什么重要的话,前端将是PHP。
*最初张贴在堆栈溢出,在这里重新张贴,因为问题需要“意见为基础的答案”。
发布于 2020-04-14 14:09:10
有这么多行的一张大桌子是个更好的选择吗?
是的,绝对
有了适当的表结构和索引,MySQL将轻松地处理任何表中的数百万行。“每人一桌?”模型从来都不是一个好主意,总是会回来缠着你(通常是当您需要对所有这些表进行总结时)。
https://dba.stackexchange.com/questions/264945
复制相似问题