大容量XML文件处理如何解决性能问题
需求:每天有一个非常大的XML文件过来,我需要将它解析入库,现在是单线程,性能不行,每天的文件处理不完,堆了很多
想法:我的想法是能不能把它拆分成多个小XML文件,然后交给多个线程去解析入库肯定比一个线程处理要快,问题是如果拆分?
请banq和各位高手给以建议或者提示一下如何解决这个需求?
[该贴被thinkjava于2009-12-02 14:29修改过]
[该贴被thinkjava于2009-12-02 14:30修改过]
你这个需求没有最终一致性要求,所以分割异步还是很方便的。
所以说我考虑现在的程序有可能是拆分性能不高,想问一下如何拆分性能高,或者说换一种思路解决此性能问题
[该贴被xysniper于2009-12-03 13:32修改过]
看看Map/reduce算法是否符合你要求,是一种切分计算的算法。
[该贴被banq于2009-12-03 13:44修改过]
楼主把各个阶段的性能数据都贴上来, 自己应该就能找到一个合理的解决办法了。 有问题不可怕, 可怕的是不知道问题是什么。
顺便问一下,你们公司怎么会有这种设计? 每天来一个40G的XML? 个人感觉良好的设计应该避免使用单一的过大的文件交换数据。数据上的设计也是很重要的设计, 将来如果业务增长十倍,是不是会更加麻烦?
[该贴被chabulier于2009-12-04 02:31修改过]
呵呵,不用一组计算机,其实你用两台双核便宜的PC机就可以了,我的意思表示这个方案的可伸缩性。你把会形成性能瓶颈的地方都分开执行,这样,不至于塞车,也是一种异步设计吧,不应该算复杂,实际生活中例子很多。