C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[7618] Re:1회성의 방대한 자료를 저장 하는 가장 최적의 방법은 어떤걸까요?
박지훈.임프 [cbuilder] 959 읽음    2003-08-08 11:35
질문은 Q/A 게시판에!
Q/A에 올리셨다가 답변이 없으니 자유게시판에 다시 올리신 거던데... 답답하셨으니까 그러셨겠지만,
그럴 거 같으면 포럼에 게시판은 단 하나만 있으면 되지 않겠습니까. 당장 포럼의 모든 게시판을 통합해
놓으면 아마 강영준님을 포함해 모든 회원분들이 불편을 겪게 되겠지요?
에티켓은 스스로를 포함해 모든 구성원들이 편하자고 만들어 놓은 것입니다.

그건 그렇고...
일회성이고 주로 write만 하는 데이터라고 하셨지요.
그렇다면 두가지 솔루션이 있을 거 같습니다. (왜 다른 분들이 생각을 하시지 못하셨는지 모르겠습니다만.)

1. 데이터베이스를 쓰시면 어떠실지?
데이터베이스를 쓰면 아주 간단히 해결될 거 같은데요.
파라독스나 액세스 테이블로 만들어놓고 쓰신다든지.. 혹은 그마저도 안정성이 의심된다면 아예 공짜
RDBMS인 파이어버드를 깔아놓고 쓰시든지요. 사용하기도 쉽고 신경도 거의 쓸 필요가 없으니 가장 좋은
솔루션이 아닌가 싶습니다.

2. 메모리 맵드 파일을 쓰시면 어떠실지?
메모리 맵드 파일을 쓰면, 당장 해당 프로세스의 메모리 소모는 파일 크기만큼 나오게 됩니다. 하지만
윈도우 기본 가상메모리를 먹지 않으므로 페이지 오류가 거의 발생하지 않습니다. 또 전체 메모리 사용량은
전혀 증가하지 않고 그대로 있게 됩니다.
메모리를 많이 먹어서 문제가 생긴다고 하신 것은, 사용하는 가상 메모리가 물리적인 메모리 한계를 넘어서서
그 때문에 페이지 오류가 많이 발생하기 때문입니다. 페이지 오류가 많이 발생하면 당근 시스템 전체가
버벅이게 됩니다.

뭐 글을 쓰기 전에 테스트삼아 메모리맵드 파일로 예제를 하나 만들어서 돌리면서 글을 쓰고 있는데요.
먼저 500메가 바이트의 텍스트 파일을 만들어서 메모리에 매핑해놓고, 그 메모리에 500메가만큼의 데이터를
써넣고 있습니다. 상태를 보려구 20바이트마다 Application->ProcessMessage()를 돌렸더니 속도는
많이 느립니다만... 현재 350메가 바이트 정도를 write하는 중이군요. CPU 타임은 엄청 먹고 있습니다만
시스템은 거의 버벅거리지 않습니다. 위에서 말했다시피 페이지 오류가 거의 발생하지 않으니까요.

그럼...


강영준 님이 쓰신 글 :
: 올초 부터 계속 부닥치는 문제인데요..
: 경험이 부족한 관계로 .. 대충 설명 하자면...
: 타이머를 이용해서 일정 시간 마다 6개의 데이타를 읽어 옵니다. 그기다 날짜와 시간 데이타가 추가 되고요.
:
: 그럼 청 7개의 데이타가 되겠죠.. 그중 3개는 실수형 나머지 3개는 정수형입니다.
:
: 현제 저는 스트링그리드를 동적 생성해서 순차적으로 데이타를 저장 합니다.
:
: 그리고 나중에 필요할때 스트링그리드의 내용을 엑셀 파일로 바꿉니다. 물론 스트링그리드에 내용은
:
: 그대로 유지를 합니다.
:
: 그렇게 계속 자료를 저장 하다 보면.. 4만 라인까지 가드군요 RowCount 가 4만2천.. 까지
:
: 그러니깐 메모리는 200,000kb를 넘어 서더군요.. 모든 프로그램이 버벅 대기 시작 하드군요.
:
: 그래서 말인데요.. 4만 라인이 됬든 10만이 됬든..
:
: 컴퓨터에 무리가 가지 않는 자료 저장 방법은 어떤 방식을 사용하는게 좋은가요?
:
: 문제는 데이타를 엑셀 파일로 저장 하기 전에는 저장된 데이타는 1회성이라는 겁니다.
:
: 사용자가 필요할경우에만 엑셀파일로 저장을 할테니깐요..
:
: 그리고 프로그램도 계속 몇일 몇날을 돌리고 있겠죠.. 그럴경우.. 최적의 방법은..
:
: 저로선 어떤 방법이 좋을지 모르겠군요..
:
: 제발 알려주세요.. 시간이 얼마 남지 않았습니다. 징징~~~
수야!╋ [sooya23]   2003-08-08 12:06 X
임프님을 사랑해요~ ㅡ0ㅡ

+ -

관련 글 리스트
7606 1회성의 방대한 자료를 저장 하는 가장 최적의 방법은 어떤걸까요? 강영준 1436 2003/08/07
7618     Re:1회성의 방대한 자료를 저장 하는 가장 최적의 방법은 어떤걸까요? 박지훈.임프 959 2003/08/08
7616     사과 드립니다. ㅠ.ㅠa 박정모 1051 2003/08/07
7626         Re:사과 드립니다. ㅠ.ㅠa 국진(Ghost) 888 2003/08/08
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.