[파일처리] 순차 화일

Jnary·2023년 8월 21일
0

File Structure

목록 보기
4/9
post-thumbnail
  • 레코드 저장 기준에 의한 종류
    1. 입력 순차 화일 : 레코드가 입력되는 순서대로 저장
    2. 키 순차 화일 : 레코드의 특정 필드 값 순서에 따라 저장

4.1 스트림 화일

  • 특성
    1. 연속된 바이트 스트림으로 구성
    2. 레코드가 화일에 저장되어있는 순서에 따라 데이터 접근
  • 종류
    1. 순차 접근 스트림 화일 : 순차접근만
    2. 임의 접근 스트림 화일 : 임의 접근 허용
  • 순차 접근 스트림 화일 C언어로 스트림 화일 생성하기
    #include <stdio.h>
    
    int main() {
    	FILE *fp;
    	char str[] = "Hello, world!";
    	fp = fopen("output.txt", "w");
    	if (fp == NULL)
    		printf("파일 열기 실패\n");
    	for (int i = 0; str[i] != '\0'; i++)
    		fputc(str[i], fp);
    	
    	fclose(fp);
    	return 0;
    }
  • 임의 접근 스트림 화일
    • offset값 이용하여 이전의 바이트를 접근하지 않고 직접 접근

    • 임의 접근을 위한 함수
      1. fseek(filepointer, offset,WhereForm) : 인덱스 변경
      2. ftell(filepointer) : 현재 위치의 인덱스를 알기 위해 사용

      #include <stdio.h>
      
      int main() {
      	FILE *in_file, *out_file;
      	char ch;
      	in_file = fopen("input.txt", "r");
      	out_file = fopen("output.txt", "w");
      	if (in_file == NULL || out_file == NULL)
      		printf("파일 열기 실패\n");
      	
      	//처음 5byte 읽어서 쓰기
      	for (int i = 0; i < 5; i++) {
      		ch = fgetc(in_file);
      		if (feof(in_file)) break;
      		fputc(ch, out_file);
      	}
      	
      	//파일 포인터 이동
      	fseek(in_file, 2, SEEK_CUR);

4.2 순차 화일의 유형

  • 입력 순차 화일 (:= heap file, pile file)
    1. 특징
      • 레코드에 대한 분석, 분류, 표준화 과정 X
      • 필드의 순서, 길이 제한 X, 레코드의 길이 타입 일정 X
      • 레코드는 <필드, 값> 쌍들로 구성
    2. 삽입 작업
      • 데이터가 입력되는 순서대로 저장
    3. 검색 작업
      • 탐색 매개변수의 값과 이에 대응하는 화일 레코드 필드값을 화일 시작부터 비교
      • 키 필트 : 탐색 매개변수와 대응되는 데이터 필드
      • 탐색 키 필트드 : 탐색 매개변수의 필드
    4. 삭제, 변경 작업
      • 새로운 순차 화일을 생성하여 기존의 순차화일을 복사하는 방식으로
    5. 응용
      • 데이터 처리 전 임시 수집
      • 화일 용도 결정 X
  • 키 순차 화일
    1. 특징
      • 키 필드값에 따라 정렬
      • 모든 레코드는 똑같은 순서의 데이터 필드(한번만 저장)로 구성
      • 하나의 순차 화일은 단 하나의 정렬 순서만 만족
      • 대화식 처리(interactive) < 일괄(batch)처리에 유리
    2. 장점
      • 차위 레코드의 접근 신속

4.3 순차 화일의 설계 및 생성

  • 설계 고려 사항
    1. 레코드 내의 필드 배치 어떻게?
      • 활동 화일 / 비활동 화일 분리
      • 고정 길이 레코드 / 가변 길이 레코드
    2. 키 필드는 어느 것으로?
      • 키 값은 순차화일에서 레코드 접근 순서를 결정
    3. 적정 블로킹 인수는 얼마?
      • 순차 화일의 디스크 저장
        • 섹터 주소 기법 : 블록 크기를 섹터 크기와 같게
        • 실린더 주소 기법 : 블록 크기를 트랙 크기와 같게

4.4 순차 화일의 갱신

  • 순차 화일에서의 검색
    1. 레코드의 저장 순서에 따라 연속적으로 검색
    2. 레코드 검색 순서에 따라 레코드 입력 순서를 결정
  • 순차 화일에 대한 질의
    1. 구조상 연속적이고 레코드 전체에 대한 접근이 필요한 검색의 경우 효율적
    2. 화일의 질의 적중 비율
      • = 질의응답을 위해 접근해야하는 레코드 수 / 전체 레코드 수
      • 높으면 입력 순차 화일 구조가 적합
  • 키 순차 화일의 갱신
  • 순차 마스터 화일의 갱신
    1. 갱신 트랜잭션을 트랜잭션 화일에 모아서 일괄 처리

    2. 갱신 프로그램은 오류 보고서 생성

      → 수행하지 못한 모든 트랜잭션의 내용, 이유 출력

    3. 마스터 화일의 갱신 빈도

      • 화일 활동 비율 = 일련의 트랜잭션에 의해 영향을 받는 화일의 레코드 수 / 화일의 총 레코드 수
profile
숭실대학교 컴퓨터학부 21

0개의 댓글