关闭

Java千万级别数据生成文件思路和优化

发表于:2012-4-25 09:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:jlins    来源:51Testing软件测试网采编

  一年前写过一个百万级别数据库数据生成配置xml文件的程序,程序目的是用来把数据库里面的数据生成xml文件.程序可以配置多少文件生成到一个文件中去。

  程序刚开始设计的时候说的是最多百万级别数据,最多50W数据生成到一个xml文件里面去,所以在做测试的时候自己也只是造了100W的数据并没有做过多数据量的测试,然后问题就来了....由于程序使用的局点数据量巨大,需要生成xml文件的客户资料接近千万级别的程度,而现场对程序的配置大约是100W条数据生成一个xml文件里面去,程序在这样的大数据量下面偶尔会有崩溃。

  最近几天现场催的比较紧,最近抽空把这个问题处理了一下,在解决问题的过程中我把解决的步骤和方法记录了下来,正好和大家共享一下。

  现场提的问题概况:

  数据量:生成xml,每个文件100W+ 条的数据

  内存控制:最好不要超过512M

  问题详情:在处理70W左右的时候内存溢出

  一、先来看一下程序要生成的xml文件的结构

  1. <File>  
  2.   <FileType>1</FileType>  
  3.   <RType>12</RType>  
  4.   <Version>03</Version>  
  5.   <BNo>004</BNo>  
  6.   <FileQ>5</FileQ>  
  7.   <FNo>0006</FNo>  
  8.   <RecordNum>1000000</RecordNum>  
  9.   <!-- 上面是文件头  下面是百万个<RecordList>  -->  
  10.   <RecordList>  
  11.     <Msisdn>10350719507</Msisdn>  
  12.     <State>1</State>  
  13.     <StartDate>20110303</StartDate>  
  14.     <Date>20110419</Date>  
  15.     <Balance>45000</Balance>  
  16.   </RecordList>  
  17.    ...  <!-- 可能百万个  <RecordList> 块-->  
  18.  </File>

  二、给大家说一下如何把大数据生成xml文件

  1、小数据量的情况下 < 1W条数据

  比较好用的方法是使用开源框架,比如XStream 直接把javabean 生成 xml

  优点:api操作简单,方便维护

  缺点:数据量大的情况下太消耗内存

  2、大数据量生成一个xml文件(本程序采用的方法)

  自己做的一个可以使用极少的内存生成无限制大的xml文件框架由3部分生成xml文件

  第一部分:生成文件头

  例如:xxx.toXML(Object obj, String fileName)

  第二部分:通过每次向文件里面追加3000(可配置)条数据的形式生成文件块

  例如:xxx.appendXML(Object object); //object 可以是ArrayList 或者一个单独的javaBean

31/3123>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号