我是SQL的新手,请指教。
我希望每5秒从传感器记录传入数据,以便将来进行图表绘制 在MySQL中设计数据库的最佳方法是什么?
或者我可以记录并平均每分钟,每小时,每天以减少数据库大小
在1分钟内收集数据时,是否可以使用触发功能来平均?
答案 0 :(得分:0)
答案是,它取决于您实际要记录的数据量,查询频率以及响应时间需要多快。如果它只是一个传感器,每5秒钟,你可能会继续使用永恒,而不会遇到太多的常规SQL查询问题,以便在合理的时间内取出平均值,总和等。
我会说根据经验,您可以使用SQL和时间序列数据做很多事情,但是在设计查询时必须非常小心。我曾经使用时间序列表,其中包含数十亿行和数万个单独的传感器;可以在很多时间序列行上实现非常快的执行,但是您可能花费一周的时间来尝试微调数据库。这绝对是灵活性和速度之间的权衡。
同样,为了您的目的,如果您只是谈论一个传感器,它可能不会产生太大的影响;只需编写一个常规的SQL查询。但是,如果您预计会增加几百个传感器或提高采样率,您可能需要考虑按照建议定期执行“汇总”功能。在这种情况下,我更倾向于使用NoSQL数据库(例如Cassandra,Couchbase等)编写自定义解决方案,并使用定期运行的程序来执行汇总。如果你有兴趣,我可以提供详细信息,但我真的不认为你需要走那么远。
这篇文章对于在SQL与NOSQL中存储时间序列数据进行了很好的讨论:https://dba.stackexchange.com/questions/7634/timeseries-sql-or-nosql
答案 1 :(得分:0)
您应该阅读有关RRDtool的信息。
来自RRDtool网站:
RRDtool是OpenSource行业标准的高性能数据 时间序列数据的记录和绘图系统。
http://oss.oetiker.ch/rrdtool/
如果你不想使用它(它可能太复杂,对你的应用程序来说太大等) - 看看它是如何制作的,如何存储信息等。