关于大数据量

lang3879 2009-06-28 10:00:03
面试的时候问到一个问题,就是xml文件中有差不多10W个节点要读取(一个节点读取成一个对象);
读取之后保存到数据库。
我自己的想法是:dom4j解析,解析一条保存一条,不知道这样会不会内存溢出,总之思路很不清楚吧,来请教一下高人。
...全文
72 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
lang3879 2009-07-01
  • 打赏
  • 举报
回复
10W个节点,一个节点的内容就20个字符差不多,用dom4j内存溢出,
用sax解析然后使用4,8楼兄弟们说的batch,可行。。。。
ycnanevol 2009-06-30
  • 打赏
  • 举报
回复
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?

a: 两种形式 dtd schema,b: 本质区别:schema本身是xml的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),c:有DOM,SAX,STAX等
DOM:处理大型文件时其性能下降的非常厉害。这个问题是由DOM的树结构所造成的,这种结构占用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存,适合对XML的随机访问
SAX:不现于DOM,SAX是事件驱动型的XML解析方式。它顺序读取XML文件,不需要一次全部装载整个文件。当遇到像文件开头,文档结束,或者标签开头与标签结束时,它会触发一个事件,用户通过在其回调事件中写入处理代码来处理XML文件,适合对XML的顺序访问
STAX:Streaming API for XML (StAX)
keyboardsun 2009-06-30
  • 打赏
  • 举报
回复
晕倒,10W 个节点,也就10万个记录而已,直接搞定就行了。 哪有那么麻烦,现在主机以及数据库都那么强悍了。
我以前把20多万个组织表全部(树结构的),全转化成 横的,LEVEL1,LEVEL2,LEVEL3。。。这种形式。直接java,直接搞定,用的内存差不多150M,几分钟就搞定了。 如果担心数据库事务太长,可以用batch来做。不过insert 的sql语句是很快的。
tfsict2008 2009-06-30
  • 打赏
  • 举报
回复
估计就是考你 dom解析和sax解析的区别吧
zhouzongjiu 2009-06-30
  • 打赏
  • 举报
回复
UP
捏造的信仰 2009-06-30
  • 打赏
  • 举报
回复
楼主你试过没?没试过就试一下。
awusoft 2009-06-30
  • 打赏
  • 举报
回复
保存的时候使用batch吧
lang3879 2009-06-29
  • 打赏
  • 举报
回复
有更好的办法吗??
lang3879 2009-06-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xyz20003 的回复:]
100,000节点,100byte一个节点的话,10,000,000byte,也就是10M。不是很大哦。
要是一个节点占1k的话,就是100m了,试一下一个节点能占多少空间吧。10m还没到内存溢出的地步。


如果dom的方式不可行,就考虑sax吧。
[/Quote]
一边解析一边保存??
临远 2009-06-28
  • 打赏
  • 举报
回复
100,000节点,100byte一个节点的话,10,000,000byte,也就是10M。不是很大哦。
要是一个节点占1k的话,就是100m了,试一下一个节点能占多少空间吧。10m还没到内存溢出的地步。


如果dom的方式不可行,就考虑sax吧。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧