안녕하세요~ txt파일을 DB에 저장 시키는 모듈을 개발하려고 합니다.
MinA
안녕하세요~ 조언좀 얻고자 이렇게 글을 쓰게 되었습니다.
txt파일을 DB에 저장 시키는 모듈을 개발하려고 합니다. (DB : 오라클 10g, 개발언어 : JABA)
txt 파일 은 FTP로 전송이 되고요.. txt파일의 내용은 주로 기상데이터가 들어옵니다.
(txt파일내용) 27.3 27.3 27.3 27.3 27.3 27.4 27.4 27.4 27.4 27.4 27.5 27.5 27.5 27.5 27.6 27.6 27.6 27.7 27.7 27.7 27.8 27.8 .....
27.3 27.3 27.3 27.3 27.3 27.3 27.4 27.4 27.4 27.4 27.4 27.5 27.5 27.5 27.6 27.6 27.6 27.7 27.7 27.7 27.8 ....
이런식으로 구분자는 공백으로 들어오고요.. 각데이터는 가로 149개 세로(줄) 256 줄이 들어옵니다. 이값을 DB에 좌표값과
온도를 저장시키려고 합니다. (DB에는 X,Y좌표, 온도 이렇게 3컬럼에 [0,0,27.3] [1,0,27.3] 이런 식으로 저장을 해야하죠..)
그런데 문제는 이런 txt파일 1개안에 약 3만7천개의 온도가 들어오고.. 기타 여러기상정보들을 담은 파일들이 3시간 간격으로 FTP
로 전송이 됩니다. 파일안의 데이터 양은 약 3시간단위로 870만건의 데이터가 DB로 전송이되는데... 테스트 해본결과 약 1시간 30
분에서 2시간정도가 걸릴것으로 예측이 됩니다. 파일을 열어서 백터나 해시테이블로 에러없시 저장을 할수 있을지도 의문이고..
DB에 인서트 시킬때도 에러없시 전송이 가능할지도 의문입니다... 혹시 좋은 방법이 없을까요? 고수 개발자 여러분께 조언을
듣고자 합니다. 많은 조언과 가이드를 부탁드리겠습니다.
-
사과
많은 조언 감사드립니다..ㅠ.ㅠ 아~ 앞이 보이질 아나~~ 흥흥흥~~
-
칸나
NIO서적등 보셔서 파일과 메모리상의 매핑시간도 줄여보세요^^
대용량 DB를 경험할 수 있는 경우가 그리 많지 않은데 좋은 경험이 되실것 같습니다.
나중에 습득한 노하우 공유 부탁드려용*^_^* -
환찬
ㅎㅎㅎ... 3시간마다 870만건이라면 하루에 약 7천만건의 ROW가 쌓이는건데-_-;;;
GIS정보와 파싱시킨다는게 어떤 의미인지 몰라서..^^
또한, 3시간 텀으로 데이터가 올라온다고 했을때..
저 많은 데이터가 실시간(?)으로 처리된 결과가 반영되어야 하는지도 좀 애매하네요..
앞단(DB에 Insert) 작업마져도 부하가 엄청 나다면...
뒷단(Insert된 데이터를 가공) 작업은 별도의 서버에서 처리하는 등..
튜닝을 해줘야 될 수 도 있을듯 -
다옴
Text파일을 읽고 쓸때에는 RandomAccessFile(Mapped IO)을 사용하여 읽어들이면,
처리하는 메모리 용량이나, 속도 면에서 많은 도움을 얻을 수 있지 않을까 생각해 봅니다. -
아잉형님
loader도 생각을 해보았는데요.. 데이터를 GIS정보랑 파싱을 시켜야 하는 작업이 포함되어있서서요..
DB에 넣고 파싱시키는것보단 파싱시킨정보를 넣는게 낳을거 같아서요..;; 아~ 난감하네요..;;
이렇게 많은 데이터를 다뤄본적이 없서서..ㅠ.ㅠ 모듈을 짜본적도 없공.;;; 왜 초급자한테 이런걸 시키는지.. -
볼1매그녀
FTP로 올라갈 데이터가 모두 같다면...
윗분 말씀처럼 로더로 돌리시는게 가장 무난할 듯 싶네요^^
처리될 파일의 양이 많으면서 텀이 짧다면 로더가 가장 무난합니다.
유닉스계열이면 작업도 어렵지 않을거예요.
굳이 JDBC를 이용해서 처리하시려면 건단위로 인서트하지 마시고 배치처리하세요.
DB는 초기에는 빨라도...
데이터는 계속 누적되는지라 DB설정 등에 따라서 시간이 지나면 지날수록 느려집니다.
특히 인덱스 등이 걸려있다면 주기별로 테이블이나 -
피리
입력 데이터의 건수가 많다면 SQL*Loader가 어떨까요?