몇십만건 대량업로드시 궁금한게 있습니다~(poi vs jxl)

3,613 views
Skip to first unread message

훼동이

unread,
Sep 18, 2012, 12:52:56 AM9/18/12
to ks...@googlegroups.com
안녕하세요~

poi와 jxl 놓고 한판 뜨고 있습니다.

poi만 써봐서 이걸로 하려고보니 몇십만건을 입력해야되는데 jxl보다 현저히 속도가 낮더라구요.

특히 2007로 xlsx을 다루는 XSSF를 쓰니 속도가 너무 느려서, 2003,2007모두 호환 가능한 코드로 짜놓고, jxl로도 짜놓고 jxl로 해야겠다, 했는데 지금도 고민입니다.

구글링해도 최근거를 찾을 수 없어서 jxl보다 poi가 낫다! 라는 얘기도 전혀 없더라구요.(과거꺼에는 jxl이 낫다고 하더라구요)

신명나는 답변을 찾아주세요!!



YongHyuk Lee

unread,
Sep 18, 2012, 1:21:27 AM9/18/12
to ks...@googlegroups.com
흐음..
몇십만건을 엑셀로 사용자가 받을 일이... 있는건가요..?
그거 엑셀로 받아서 뭐하는지 정말 궁금하군요..!!

엑셀이란건.. 몇십만건을 보기 위한 문서는 사실 아닌데 말이죠..

그 몇십만건을 의미있는 데이타로 가공한.. 단 몇장의 엑셀문서를 출력해주는게..
IT가 할 일이 아닐까.. 하는 생각이 갑자기 들어.. 이렇게 몇자 적습니다.

... 그리고 개인적인 생각을 적자면..
... 그걸 로컬에 스트림으로 떨구는거 보다는..
... 서버의 특정 위치에 떨구고(NAS장비같은..)
... 로컬에서는 그걸 다운받을 수 있는 화면으로 리다이렉트 시켜버리는게..(아이프레임으로 던지던가..)
... 어떨까 합니다.
... 실 다운로드는 웹서버가 static으로 처리하게 하는거지요. 그리고 하루 한번정도 해당폴더 비워주고..
... 지금 그 몇십만건 들어간 문서를 로컬유져가 내려받아야 하는거지요..?
... poi든 jxl이든 뭐든 잘되는걸로 하시고..


2012년 9월 18일 오후 1:52, 훼동이 <cutejin...@gmail.com>님의 말:



--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
웹에서 이 토론을 보려면 https://groups.google.com/d/msg/ksug/-/h7fuJqEPHAIJ을(를) 방문하세요.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.



--
----------------------------------------
itemBay 개발실 개발2팀
과장 / 이용혁
Mobile: 010.8425.9004
서울시 양천구 목2동 524-1

최영목

unread,
Sep 18, 2012, 1:33:36 AM9/18/12
to ks...@googlegroups.com
저도 몇십만건을 엑셀로 받아서 고객분께서 무엇을 하시려는지 궁금하네요.

엑셀은 하나의 워크시트(탭)에 최대 row는 65535인 것으로 알고 있습니다.

몇십만건이면 하나의 워크시트도 아니고, 몇 개의 워크시트로 구성될텐데 그것을 가지고 무엇을 하는지 확인하고, 다른 방법을 찾는 것이 좋지 않을까 합니다.

ps. 저도 작년쯤 모 고객사에서 비슷한 요건을 받은 적이 있습니다. 
분석을 위해서 웹 화면에 40만 row를 출력해주고, 엑셀다운로드 달아달라고 했다는;;;; (그것도 고객사분께서 예전에 IT를 하셨던 분이심에도!!!)
물론 당시에 구현 안했습니다;;; (그냥 욕심이었을 뿐이죠. 실제로 안 쓸 기능이었습니다.)


2012년 9월 18일 오후 2:21, YongHyuk Lee <unlogi...@gmail.com>님의 말:



--
- 올바른 성장과 따뜻한 나눔
- 넥스트리소프트(주) 최영목


Sungchul Park

unread,
Sep 18, 2012, 3:00:11 AM9/18/12
to ks...@googlegroups.com
대량 데이터로 엑셀로 다운 받는 문제라면 이 글을 참고하십시오.

https://groups.google.com/forum/#!searchin/ksug/excel/ksug/mlnMiIVwiZ0/2-bAmZBfsGYJ

결론은 OOXML...

근데 질문은 데이터를 엑셀 포멧으로 내려 받는 게 아니고 서버에 올리는 거 아닌가요? -_-)a

12. 9. 18. 오후 2:33, 최영목 쓴 글:
저도 몇십만건을 엑셀로 받아서 고객분께서 무엇을 하시려는지 궁금하네요.

엑셀은 하나의 워크시트(탭)에 최대 row는 65535인 것으로 알고 있습니다.

몇십만건이면 하나의 워크시트도 아니고, 몇 개의 워크시트로 구성될텐데 그것을 가지고 무엇을 하는지 확인하고, 다른 방법을 찾는 것이 좋지 않을까 합니다.

ps. 저도 작년쯤 모 고객사에서 비슷한 요건을 받은 적이 있습니다. 
분석을 위해서 웹 화면에 40만 row를 출력해주고, 엑셀다운로드 달아달라고 했다는;;;; (그것도 고객사분께서 예전에 IT를 하셨던 분이심에도!!!)
물론 당시에 구현 안했습니다;;; (그냥 욕심이었을 뿐이죠. 실제로 안 쓸 기능이었습니다.)


2012년 9월 18일 오후 2:21, YongHyuk Lee <unlogi...@gmail.com>님 의 말:
흐음..
몇십만건을 엑셀로 사용자가 받을 일이... 있는건가요..?
그거 엑셀로 받아서 뭐하는지 정말 궁금하군요..!!

엑셀이란건.. 몇십만건을 보기 위한 문서는 사실 아닌데 말이죠..

그 몇십만건을 의미있는 데이타로 가공한.. 단 몇장의 엑셀문서를 출력해주는게..
IT가 할 일이 아닐까.. 하는 생각이 갑자기 들어.. 이렇게 몇자 적습니다.

... 그리고 개인적인 생각을 적자면..
... 그걸 로컬에 스트림으로 떨구는거 보다는..
... 서버의 특정 위치에 떨구고(NAS장비같은..)
... 로컬에서는 그걸 다운받을 수 있는 화면으로 리다이렉트 시켜버리는게..(아이프레임으로 던지던가..)
... 어떨까 합니다.
... 실 다운로드는 웹서버가 static으로 처리하게 하는거지요. 그리고 하루 한번정도 해당폴더 비워주고..
... 지금 그 몇십만건 들어간 문서를 로컬유져가 내려받아야 하는거지요..?
... poi든 jxl이든 뭐든 잘되는걸로 하시고..


2012년 9월 18일 오후 1:52, 훼동이 <cutejin...@gmail.com>님 의 말:

안녕하세요~

poi와 jxl 놓고 한판 뜨고 있습니다.

poi만 써봐서 이걸로 하려고보니 몇십만건을 입력해야되는데 jxl보다 현저히 속도가 낮더라구요.

특히 2007로 xlsx을 다루는 XSSF를 쓰니 속도가 너무 느려서, 2003,2007모두 호환 가능한 코드로 짜놓고, jxl로도 짜놓고 jxl로 해야겠다, 했는데 지금도 고민입니다.

구글링해도 최근거를 찾을 수 없어서 jxl보다 poi가 낫다! 라는 얘기도 전혀 없더라구요.(과거꺼에는 jxl이 낫다고 하더라구요)

신명나는 답변을 찾아주세요!!



--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
웹에서 이 토론을 보려면 https://groups.google.com/d/msg/ksug/-/h7fuJqEPHAIJ을 (를) 방문하세요.
이 그룹에 게시하려면 ks...@googlegroups.com(으) 로 이메일을 보내세요.

그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에 서 그룹을 방문하세요.



--
----------------------------------------
itemBay 개발실 개발2팀
과장 / 이용혁
Mobile: 010.8425.9004
서울시 양천구 목2동 524-1

--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으) 로 이메일을 보내세요.

그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에 서 그룹을 방문하세요.



--
- 올바른 성장과 따뜻한 나눔
- 넥스트리소프트(주) 최영목


Outsider (JeongHoon Byun)

unread,
Sep 18, 2012, 3:19:29 AM9/18/12
to ks...@googlegroups.com
제목은 업로드인데 답변은 다 다운로드네요...
몇십만건 엑셀을 올리면 데이터읽어서 처리하는건지 디비에서 읽어서 몇십만건짜리 데이터를 내려주는건지가
명확치 않아보입니다.

그리고 과거 엑셀은 최영목님 말씀처럼 65천건이 최대라서
시트별로 나눠서 처리해야할꺼구요
xlsx라면 100만건정도까진 들어가는데(한계가 있긴 있는데 기억이 안나네요.)
갠적으로는 이정도양이면 csv로 타협보시는게 좋지 않을까 싶은데요...

2012/9/18 Sungchul Park <gyu...@gmail.com>



--
/************************************************
Outsider (JeongHoon Byun)
Programmer & Hacker

Twitter : @Outsideris
*************************************************/

YongHyuk Lee

unread,
Sep 18, 2012, 3:22:57 AM9/18/12
to ks...@googlegroups.com
그러게요.. 업로드네요..^^ 
ㅇㅎㅎㅎ

... 역시.. 특정폴더에 업로드시켜놓고..
... Task 만들어서 백업으로 진행..
... 저는 보통 이렇게.. ^^


2012년 9월 18일 오후 4:19, Outsider (JeongHoon Byun) <outsi...@gmail.com>님의 말:

최영목

unread,
Sep 18, 2012, 3:27:29 AM9/18/12
to ks...@googlegroups.com
저는 보통 엑셀업로드는 다운로드와 함께 제공된다고 판단해서 말씀드렸습니다 .^^;;;

물론 엑셀업로드만 별개로 제공하는 경우도 많지요.

대용량 데이터를 엑셀업로드로 하는 경우 이 작업이 리얼타임으로 처리되어야 하는 것인지 아니면 배치성으로 돌려야 하는 작업인지를 판단해야 합니다.

리얼타임의 경우 NRT(Near Real Time)성으로 배치를 실행하는 것도 고려해봐야겠지요. 
일반적인 파일업로드와 함께 데이터가 바로 올라가는 것은 응답시간관점에서도 문제가 되지 않을까 합니다.

그리고 jxl의 경우 2007를 못 읽지 않나요? ^^;; 그럼 POI외에는 답이 없을 것 같습니다;;;

물론 2003은 jxl로 처리해도 되겠지만 처음 언급하신 것처럼 명확한 퍼포먼스 결과를 찾기란 힘들고, 대략적으로 jxl이 좀 더 빠르다라는 내용은 간혹 검색이 되네요 ^^;;;

엑셀파일을 다른 형식으로 변환해서 처리하는 것은 더더욱 아닐꺼 같구요 ^^;;

참고로 모 화재에서 대량의 데이터입력을 엑셀업로드를 통해서 하는 것이 있었는데 NRT (NRT서버가 별도로 존재)로 처리했습니다. 실시간 처리를 하지 않았죠.


2012년 9월 18일 오후 4:00, Sungchul Park <gyu...@gmail.com>님의 말:

Outsider (JeongHoon Byun)

unread,
Sep 18, 2012, 3:32:24 AM9/18/12
to ks...@googlegroups.com

질문자체는 JXL냐 POI냐 이니까...

보셨는지 모르겠지만 다음 링크가 도움이 되시지 않을가 합니다.

JExcelAPI vs Apache POI, which is better?




2012/9/18 최영목 <davi...@nextree.co.kr>



--

KwonNam Son

unread,
Sep 18, 2012, 7:19:47 AM9/18/12
to ks...@googlegroups.com
문제 해결을 굳이 엑셀이라는 것에 집착할 필요는 없습니다.
단적인면에 집착하면 별로 좋은 해결책이 안나옵니다.

저라면 그냥 CSV로 만들어라 할 것 같네요.

다른 방법으로 서버의 부담을 덜기위해 Java Applet이나 혹은 Excel용 플러그인을 만들어 제공해서 거기서 CSV로 뽑거나 혹은 최종적으로 데이터베이스에 필요한 포맷으로 변형해서 서버에 대한 부담을 최소화한 데이터 포맷으로 서버에 날리도록 할것 같습니다.

딴소리 하자면, 저는 질문자와는 반대로 수십만 셀의 엑셀 다운로드를 요구사항으로 받은적이 있습니다.
그래서 군소리 없이 만들어줬고, 그 요구사항을 냈던 사람은 경악을 했죠.

수십만 셀의 엑셀파일을 받아서 자기 PC에서 제대로 읽거나 분석하는 작업이 거의 안됐거든요.
사실 그 사람한테 필요한건 최종 통계인것인데 자기 의사표현을 제대로 못하고 그냥 엑셀로 수십만셀짜리 달라고 한거죠.

모든 소프트웨어 공학책에 나올 것 같은데요.
사용자는 자기 요구사항을 제대로 표현하지 못합니다.

프로그래머가 그걸 잘 잡아내고 설득해서 스펙을 최소화 해야하죠.

해달란다고 해서 그냥 생각없이 다 해주는 것은 프로그래머와 사용자 모두를 고통스럽게 만듭니다.


2012년 9월 18일 오후 4:32, Outsider (JeongHoon Byun) <outsi...@gmail.com>님의 말:



--
* 까먹지말자! http://kwon37xi.egloos.com

Jason Hong

unread,
Sep 18, 2012, 10:09:07 AM9/18/12
to ks...@googlegroups.com
안녕하세요

저도 비슷한 경험이 있는데요...속도도 속도지만 POI는 DOM방식으로 모두 메모리에 넣고 처리를 하다보니 heap 메모리가 감당이 안되더군요...서버에서 작업했는데도요...

결국 cvs포멧으로 변경해서 올려달라 사용자쪽에 요청했습니다.

아래분 말씀처럼 SAX방식으로도 하는 방식이 있긴 하던데 파싱이 좀 빡시더라구요(xlsx포멧)


2012년 9월 18일 화요일 오후 1시 52분 56초 UTC+9, 훼동이 님의 말:
Reply all
Reply to author
Forward
0 new messages