1

我目前正在编写一个从各种传感器接收数据的 Java 应用程序。这种情况发生的频率各不相同,但我相信我的应用程序每天会收到大约 10 万次信号。每次应用程序接收到信号时,我都想记录从传感器接收到的数据。因为应用程序不仅仅记录传感器数据,所以性能是一个问题。我正在寻找记录数据的最佳和最快的方法。因此,我可能不使用数据库,而是写入文件并每天保留 1 个文件。

那么什么是更快的呢?使用数据库还是记录到文件?毫无疑问,使用什么日志软件也有很多选择。如果记录到文件是最佳选择,那么哪个最适合我的目的?

存储的数据可能会在以后用于分析目的,因此请记住这一点。

4

3 回答 3

1

廉价 PC 上的免费数据库应该能够轻松地每秒记录 10 条记录。

好的系统上的优化数据库或廉价 PC 上的记录器应该能够轻松地每秒写入 100 条记录/行。

一个经过调整的记录器应该能够轻松地每秒写入 1000 行。

快速二进制记录器每秒可以轻松执行 100 万条记录(取决于记录的大小)

您的要求是每个信号每秒大约 1.2 条记录,这应该能够实现您喜欢的任何方式。我假设您希望能够查询您的数据,因此您最终希望将其存储在数据库中,因此我将其放在那里。

于 2012-09-19T09:02:51.483 回答
1

我建议您首先使用 log4j(或任何其他日志记录框架)。您可以使用写入数据库的 jdbc 附加程序或写入文件的任何类型的文件附加程序。关键是您的代码将足够通用,如果您愿意,以后可以更改...

一般来说,文件比数据库访问快得多,但这里有一个优化的地方。如果性能很关键,您可以对日志基础设施使用批处理/异步调用。

于 2012-09-19T08:34:32.307 回答
0

啊嵌入式系统的世界。在使用气垫船时,我遇到了类似的问题。我在局域网上用一台单独的计算机(你可以用一个单独的程序来解决这个问题)解决了这个问题,它只是坐下来作为我发送给它的日志的服务器。FileWriter 程序是用 C++ 编写的。这必须解决你的两个问题。首先是写入日志时明显的性能提升。其次,Java 程序完全无需编写任何日志(但将充当代理),并且可以专注于性能关键任务。除非您使用 SQLite,否则为此使用数据库将是一种过度杀伤力。

祝你好运!

于 2012-09-19T08:33:54.503 回答