我目前正在编写一个Java应用程序,它接收来自各种传感器的数据。这种情况发生的频率各不相同,但我相信我的应用程序每天会收到大约10万次信号。我想在每次应用程序收到信号时记录从传感器接收的数据。由于应用程序不仅仅记录传感器数据,因此性能也是一个问题。我正在寻找记录数据的最佳和最快的方法。因此,我可能不会使用数据库,而是写入文件并每天保留1个文件。
那么什么更快?使用数据库还是记录到文件?毫无疑问,使用哪种日志记录软件还有很多选择。如果记录到文件是最好的选择,哪个最适合我的目的?
存储的数据可能会在以后用于分析目的,因此请记住这一点。
答案 0 :(得分:1)
我建议您首先使用log4j(或任何其他日志框架)。 您可以使用写入db的jdbc appender或写入文件的任何类型的文件追加器。关键是你的代码将是通用的,如果你愿意,可以在以后更改......
一般文件比db访问快得多,但这里有优化的地方。 如果性能至关重要,则可以对日志记录基础结构使用批处理/异步调用。
答案 1 :(得分:1)
廉价PC上的免费数据库应该能够轻松地每秒记录10条记录。
良好系统上的调优数据库或廉价PC上的记录器应该能够轻松地每秒写入100条记录/行。
经过调整的记录器应该能够轻松地每秒写入1000行。
快速二进制记录器可以轻松地每秒执行100万条记录(取决于记录的大小)
您的要求是每个信号每秒大约1.2条记录,应该能够达到您喜欢的任何方式。我假设你希望能够查询你的数据,所以你最终想要它在数据库中,所以我会把它放在那里。
答案 2 :(得分:0)
嵌入式系统的世界啊。使用气垫船时我遇到了类似的问题。我用一台单独的计算机解决了这个问题(你可以用一个单独的程序来完成)通过局域网来解决这个问题,它只是作为我发送给它的日志服务器SIT和LISTEN。 FileWriter程序是用C ++编写的。这必须解决你的两个问题。首先是在编写日志时显而易见的性能提升。其次,Java程序完全可以编写任何日志(但将充当代理)并且可以专注于性能关键任务。除非您使用的是SQLite,否则使用数据库将是一种过度杀伤力。
祝你好运!