Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java日志文件解析器_Java_Database_Performance_Parsing_Design Patterns - Fatal编程技术网

Java日志文件解析器

Java日志文件解析器,java,database,performance,parsing,design-patterns,Java,Database,Performance,Parsing,Design Patterns,我正在尝试为我的应用程序设计日志文件解析器。我有数千个日志文件具有相同的数据模式,我的目标是首先解析数据并将其存储在数据库中- a=some_value_1 b=some_value_2 c=some_value_3 d=some_value_4 a=some_value_5 b=some_value_6 c=some_value_7 d=some_value_8 a=some_value_9 b=some_value_10 c=some_value_11 d=some_value_12 a=s


我正在尝试为我的应用程序设计日志文件解析器。我有数千个日志文件具有相同的数据模式,我的目标是首先解析数据并将其存储在数据库中-

a=some_value_1 b=some_value_2 c=some_value_3 d=some_value_4
a=some_value_5 b=some_value_6 c=some_value_7 d=some_value_8
a=some_value_9 b=some_value_10 c=some_value_11 d=some_value_12
a=some_value_13 b=some_value_14 c=some_value_15 d=some_value_16


我最初的想法是使用
InputStreamReader
逐行读取所有文件,并为每行中的每个文件选择数据并将其提取到数据库。对于某些文件来说似乎不错,但就性能而言,我需要改进我的设计。有人能为同样的设计提出更好的设计模型/架构吗?

我建议最好使用
BufferedReader
而不是
InputStreamReader
。您任务的解析部分现在似乎不太难。

我建议最好使用
BufferedReader
而不是
InputStreamReader
。现在,任务的解析部分似乎并不困难。

模式很好,但只有在它们有意义时才应该使用它们。这里不需要特殊的模式:只需迭代文件;对于每个文件,读取它,并根据需要进行插入。使用main[]方法的单个文件/类中,程序占用的行数不应超过50行。小而干净的代码要比复杂而大的代码好得多。

模式很好,但只有在它们有意义时才应该使用它们。这里不需要特殊的模式:只需迭代文件;对于每个文件,读取它,并根据需要进行插入。使用main[]方法的单个文件/类中,程序占用的行数不应超过50行。小而干净的代码比复杂而大的代码要好得多。

默认的Java IO不被认为是快速的…您的限制是什么?有多少记录,多少文件?例如,如果你有足够的内存,你可以把文件映射到内存中……你能详细说明一下吗?只是做了一个快速检查——正如gkuzmin所建议的,使用BufferedReader应该和内存映射文件一样快;的确如此simpler@tucuxi默认的Java IO也不被认为是快的…你的限制是什么?有多少记录,多少文件?例如,如果你有足够的内存,你可以把文件映射到内存中……你能详细说明一下吗?只是做了一个快速检查——正如gkuzmin所建议的,使用BufferedReader应该和内存映射文件一样快;的确如此simpler@tucuxi它也不被称为慢。有什么具体的设计模式吗?我以前也有过类似的任务。我用了BufferedReader,它很棒。应用程序的另一部分在DB交互中结束。在我的例子中,我的同事编写了一个存储过程,该过程接受一个固定格式的xml文件并将其放入DB表中,然后DB job醒来并将其解析为不同的日志记录表。实际上,读取和解析日志文件的速度足够快(每秒几百MB),但DB server在xml解析方面的速度非常慢。所以,您可以考虑使用存储过程来避免多次插入,但要注意存储过程的缓慢性。一般来说,这类任务很简单,没有基础。所以,我不知道我能向你们提出什么具体的模式来解决这个问题。是的。你是对的。那么你做了什么来加速db?对于数据库操作,你会给我什么建议?我没有做任何事情来加速数据库。这是我同事的一部分。实际上,我的程序用于监视服务器日志,当我的程序生成的巨大xml文件被发送到数据库时,这种情况非常罕见。所以没人在乎我可以建议您发现您的特定数据库功能—它是否非常适合xml解析?也许不是。也许在您的案例中不需要使用xml,您可以尝试使用另一种格式。例如,也许JSON会更好。对于不同的任务、供应商和版本,DB性能可能会有很大的差异,因此最好尝试一些东西或浏览文档/互联网。有什么具体的设计模式吗?我以前也有过类似的任务。我用了BufferedReader,它很棒。应用程序的另一部分在DB交互中结束。在我的例子中,我的同事编写了一个存储过程,该过程接受一个固定格式的xml文件并将其放入DB表中,然后DB job醒来并将其解析为不同的日志记录表。实际上,读取和解析日志文件的速度足够快(每秒几百MB),但DB server在xml解析方面的速度非常慢。所以,您可以考虑使用存储过程来避免多次插入,但要注意存储过程的缓慢性。一般来说,这类任务很简单,没有基础。所以,我不知道我能向你们提出什么具体的模式来解决这个问题。是的。你是对的。那么你做了什么来加速db?对于数据库操作,你会给我什么建议?我没有做任何事情来加速数据库。这是我同事的一部分。实际上,我的程序用于监视服务器日志,当我的程序生成的巨大xml文件被发送到数据库时,这种情况非常罕见。所以没人在乎我可以建议您发现您的特定数据库功能—它是否非常适合xml解析?也许不是。也许在您的案例中不需要使用xml,您可以尝试使用另一种格式。例如,也许JSON会更好。对于不同的任务、供应商和版本,DB的性能可能会有很大的差异,因此最好尝试一些东西或浏览文档/互联网。