我将从MQ获取大量xml文件(每隔几分钟编号数万个)。 xml文件不是很大。我必须提取信息并将其保存到数据库中。不幸的是我不能使用第三方库(除了apache commons)。在这种情况下通常使用哪些策略/技术? java或apache中是否有可以很好地处理这种情况的xml解析器?
我可能还会补充说我正在使用jdk 1.4
答案 0 :(得分:1)
基于围绕此主题的评论和讨论 - 我想提出一个综合解决方案。
使用SAX解析XML文件 - 正如@markspace所提到的,你应该去 内置SAX并具有良好的性能。
如果可能,请使用BULK INSERTS - 因为您打算插入一个大的 数据量考虑您正在阅读的类型数据 存储到数据库中。所有XML文件都包含相同的内容 schema(这意味着它们对应于中的单个表) 数据库)或者他们代表不同的对象(这意味着你 最终会将数据插入多个表格。)
如果需要插入所有XML文件的模式 数据库中的同一个表,然后考虑批处理这些数据 对象并将它们批量插入数据库。这将会 在时间和资源方面肯定表现更好 (您只打开一个连接以将批次持久化为 与每个对象的多个连接相对)。你当然知道 需要花一些时间来调整批量大小 决定批量插入的错误处理策略(丢弃 全部 v / s 丢弃错误)
如果XML文件的架构不同,那么考虑使用clubbing 类似的XML成组,以便您可以BULK INSERT这些组 后面。
最后 - 这很重要:确保你释放所有
一旦你有资源,如文件句柄,数据库连接等
完成处理或遇到错误。简单来说
单词在正确的位置使用try-catch-finally
。
虽然不完整,但希望这个答案为您提供一组在编写可扩展的性能代码时需要考虑的关键检查点