我有一个长达一周的wifi设备协会的原始日志到我的学院的wifi路由器。
截至目前,我计划将其放入数据库中,如下所示:
一个有列的大表:
将仅查询数据库以检索特定设备在一周内的连接历史记录。
记录变为一周后,它将被删除或移动到其他地方。
现在设备的数量可能介于800到2000之间。因此,为每个设备分别设置一个表是没有意义的,还是这样?
我相信wifi路由器的数量大约是<40。
最后,一周的日志将小于1 GB。
我现在正在使用一个SQL数据库(真的坚持这个,不想改变,但如果它有显着的改进,请提一个替代方案。)
现在我的问题是(一个表)方法有效时间 - 查询执行和返回结果的时间。 空间和冗余不是问题,只是查询返回的速度*。
还评论可以采取哪些可能的措施/修改来使这样的系统可扩展。
* 它不应该太复杂,难以维护。
答案 0 :(得分:1)
我认为没有理由你需要以任何其他方式拆分它。如果您的唯一目的是使用日期时间戳存储路由器和设备地址,那么您真的没有其他任何需要做的事情。一张桌子可以做到。
规范化背后的整个想法(是的,我在这里简化它)是你永远不必在多个表中反复重复相同的数据。
例如,假设你想存储它:
Router | Mac Address | Device Type | IP Address | Device Model | Device Serial Number
最好有一个路由器/设备表来指定所有这些并具有特定的DeviceID
和一个说出
DeviceID | TimeStamp
您可以这样做,这样您就不必每次都为每个日志条目重复所有信息。
希望这会有所帮助......
答案 1 :(得分:1)
由于您存储和删除数据的方式,我的建议是创建一个按时间戳划分的单个表。这种方法的好处:
除此之外,您还可以使用专门设计的索引对多个列进行索引,以快速检索查询数据。由于没有DDL,样本数据或查询(可能是后续问题),因此目前无法说出这些索引的样子。 使用CLUSTERed索引也可以提供帮助,因为您有静态数据(WORM)。
如果您需要对INET类型进行快速查找(如果内置网络数据类型不够快),他们会查看IP4R数据类型:http://pgfoundry.org/projects/ip4r/